JS-скрипт Xo-yaw paste (grenade helper etc)

Эксперт
Статус
Оффлайн
Регистрация
7 Сен 2019
Сообщения
2,106
Реакции[?]
984
Поинты[?]
88K
Код:
/* is grenade? */
function is_gren(name) {
    if(name == "high explosive grenade") {
        return true
    } else if(name == "incendiary grenade") {
        return true
    } else if(name == "molotov") {
        return true
    } else if(name == "flashbang") {
        return true
    } else if(name == "smoke grenade") {
        return true
    }
    return false
}

    /* math random */
Math.RandomInt = function(min, max) {
        min = Math.ceil(min);
        max = Math.floor(max);
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    /* distance */
distanceflag = function(origin, destination) {
        const sub = [destination[0] - origin[0], destination[1] - origin[1], destination[2] - origin[2]];
        return Math.hypot(sub[0], sub[1], sub[2]);
    }
    /* calc distance */
function calcDist(local, target) {
    var lx = local[0];
    var ly = local[1];
    var lz = local[2];
    var tx = target[0];
    var ty = target[1];
    var tz = target[2];
    var dx = lx - tx;
    var dy = ly - ty;
    var dz = lz - tz;
    return Math.sqrt(dx * dx + dy * dy + dz * dz);
}
/* outline */
function draw_shadow(x, y, int, text, outline_color, font) {
    Render.String(x + 1, y + 1, int, text, outline_color, font);
    Render.String(x, y + 1, int, text, outline_color, font);
    Render.String(x + 1, y, int, text, outline_color, font);
    Render.String(x - 1, y - 1, int, text, outline_color, font);
    Render.String(x - 1, y, int, text, outline_color, font);
    Render.String(x, y - 1, int, text, outline_color, font);
    Render.String(x + 1, y - 1, int, text, outline_color, font);
    Render.String(x - 1, y + 1, int, text, outline_color, font);
}
/* inair */
var Inair = function() {
        if(!(Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_fFlags") & (1 << 0))) {
            return true;
        } else {
            return false;
        }
    }
    /* outline / arc */
function render_arc(x, y, radius, radius_inner, start_angle, end_angle, segments, color) {
    while(360 % segments != 0) {
        segments++;
    }
    segments = 360 / segments;
    for(var i = start_angle; i < start_angle + end_angle; i = i + segments) {
        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;
        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);
        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);
        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;
        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;
        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;
        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;
        Render.Polygon([
            [x1_outer, y1_outer],
            [x2_outer, y2_outer],
            [x1_inner, y1_inner]
        ], color);
        Render.Polygon([
            [x1_inner, y1_inner],
            [x2_outer, y2_outer],
            [x2_inner, y2_inner]
        ], color);
    }
}
Render.OutlineCircle = function(x, y, what, col) {
        render_arc(x, y, 9, 4, 0, 360, 32, [0, 0, 0, 255])
        render_arc(x, y, 8, 5, 0, what * 360, 32, col)
    }
    /* get velocity */
function getVelocity(index) {
    players = Entity.GetPlayers();
    for(i = 0; i < players.length; i++); {
        var velocity = Entity.GetProp(index, "CBasePlayer", "m_vecVelocity[0]");
        var speed = Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);
    }
    return speed;
}
/* getdropdownvalue */
function getDropdownValue(value, index) {
    var mask = 1 << index;
    return value & mask ? true : false;
}
/* tickbase */
function can_shift_shot(ticks_to_shift) {
    var me = Entity.GetLocalPlayer();
    var wpn = Entity.GetWeapon(me);
    if(me == null || wpn == null) return false;
    var tickbase = Entity.GetProp(me, "CCSPlayer", "m_nTickBase");
    var curtime = Globals.TickInterval() * (tickbase - ticks_to_shift)
    if(curtime < Entity.GetProp(me, "CCSPlayer", "m_flNextAttack")) return false;
    if(curtime < Entity.GetProp(wpn, "CBaseCombatWeapon", "m_flNextPrimaryAttack")) return false;
    return true;
}
/* dormant function */
function dormant() {
    enemies = Entity.GetEnemies()
    for(var i in enemies)
        if(Entity.IsDormant(enemies[i])) {
            return true
        }
    return false
}
/* weapons */
var weaponTabNames = {"usp s": "USP", "glock 18": "Glock", "dual berettas": "Dualies", "r8 revolver": "Revolver", "desert eagle": "Deagle", "p250": "P250", "tec 9": "Tec-9", "mp9": "MP9", "mac 10": "Mac10", "pp bizon": "PP-Bizon", "ump 45": "UMP45", "ak 47": "AK47", "sg 553": "SG553", "aug": "AUG", "m4a1 s": "M4A1-S", "m4a4": "M4A4", "ssg 08": "SSG08", "awp": "AWP", "g3sg1": "G3SG1", "scar 20": "SCAR20", "xm1014": "XM1014", "mag 7": "MAG7", "m249": "M249", "negev": "Negev", "p2000": "P2000", "famas": "FAMAS", "five seven": "Five Seven", "mp7": "MP7", "ump 45": "UMP45", "p90": "P90", "cz75 auto": "CZ-75", "mp5 sd": "MP5", "galil ar": "GALIL", "sawed off": "Sawed off", }
var other_weapons = ["knife", "knife_t", "knife_karambit", "knife_m9_bayonet", "knife_survival_bowie", "knife_butterfly", "knife_flip", "knife_push", "knife_tactical", "knife_falchion", "knife_gut", "knife_ursus", "knife_gypsy_jackknife", "knife_stiletto", "knife_widowmaker", "knife_css", "knife_cord", "knife_canis", "knife_outdoor", "knife_skeleton", "bayonet", "hegrenade", "smokegrenade", "molotov", "incgrenade", "flashbang", "decoy", "taser"]

function in_bounds(vec, x, y, x2, y2) {
    return(vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}
/* c4 */
function getSite(c4) {
    bombsite = Entity.GetProp(c4, "CPlantedC4", "m_nBombSite");
    if(bombsite == 0) {
        return "A - ";
    } else {
        return "B - ";
    }
}

function bomb_exploded() {
    isbomb = 0
    on_plant_time = 0
    fill = 0
    planting = false
}
function autobuy(){
    if(UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "AWP Fast Buy"])){
        Cheat.ExecuteCommand("buy awp;buy awp;buy awp;buy awp;buy awp;buy awp;buy awp;")
    }
}
function bomb_beginplant() {
    on_plant_time = Globals.Curtime()
    bombsite = Event.GetInt("site")
    world = World.GetMapName()
    if(world == "de_mirage") {
        if(bombsite == 447) {
            bombsiteonplant = "Bombsite B"
        } else {
            bombsiteonplant = "Bombsite A"
        }
    }
    if(world == 'de_dust2') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old_1') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old_ht') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_vertigo') {
        if(bombsite == 79) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_overpass') {
        if(bombsite == 85) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_inferno') {
        if(bombsite == 370) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'gd_rialto') {
        bombsiteonplant = "Bombsite A"
    };
    if(world == 'de_cbble') {
        if(bombsite == 216) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_tulip') {
        if(bombsite == 620) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_tulip_ht') {
        if(bombsite == 620) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    planting = true
}

function bomb_abortplant() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function bomb_defused() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function bomb_planted() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function on_round_start() {
    on_plant_time = 0
    fill = 0
    planting = false
    curtick = Globals.Tickcount()
}
/* ui */

UI.AddSubTab(["Rage", "SUBTAB_MGR"], "ONEX-YAW");
UI.AddDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Tab", ["Rage & Anti-Aim", "Visual", "Color", "Misc", "Trash"], 0)

/* RAGE */

UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Doubletap")
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Double Tap Ticks", 12, 19)
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Fake-Lag")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Anti-Aim")
UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Anti-Aim Conditions", ["On Slow Walk", "On Dormant", "On Air", "On Duck", "On Move"])
UI.AddDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"],"Anti Bruteforce", ["Off", "On Hit", "On Shot"],0 );

/* VISUALS */

UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Indicators", ["Crosshair", "ONEX-YAW Fakelag", "Skeet", "Keybinds", "Spectator list", "Grenade Prediction"])
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Manual & Desync Indicator")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Manual Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Desync Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Custom scope lines");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Override FOV while scoped");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Blend While Holding Grenade");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Local Bullet Tracer")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Shotlogger")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Crosshair Hitlogger")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Quake Hitmarker")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Onetap styled watermark")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Watermark")
UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Aspect ratio", 0.0, 5.0)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "ThirdPerson Dist", 50, 150)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines width", 0, 500);
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines offset", 0, 500);

/* Misc */

UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Additional Flags", ["R8 Lethal", "Zeus"])
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "AWP Fast Buy")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Leg Fucker")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Damage Override", "Damage Override")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Hitchance Override", "Hitchance Override")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Legit AA", "Legit AA")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Ping Spike", "Ping Spike")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Freestanding", "Freestanding")
UI.AddSliderInt(["Rage", "Accuracy", "General"], "Hitchance Override", 0, 100)
UI.AddSliderInt(["Rage", "Target", "General"], "Damage Override", 0, 130)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Strafe Turn speed", 0, 100)

/* Color */
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"],"Watermark & Fake indicator color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Grenade Predict Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hitmarker Color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Onetap Watermark Color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Keybinds Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Spectator List Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines color");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Keybinds Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Spectator List Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Grenade Prediction Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Watermark Gradient")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Fake Gradient")



var traceContainer = [];


var traceContainer = [];
function tracer(eyepos, hitpos, time) {
    this.eyepos = eyepos
    this.position = hitpos
    this.time = time
}
var impact = 0;
function bulll1313() {
    if (Globals.Tickcount() > impact) {
        if (Entity.GetEntityFromUserID(Event.GetInt("userid")) == Entity.GetLocalPlayer()) {
            var x = Event.GetFloat("x")
            var y = Event.GetFloat("y")
            var z = Event.GetFloat("z")
            var pos = [x, y, z]
            var view = Entity.GetEyePosition(Entity.GetLocalPlayer());
            traceContainer.push(new tracer(view, pos, Globals.Tickcount()))
            impact = Globals.Tickcount()
        }
    }
}
// [x,y, alpha]
var offsets = [
    [1, 0, 75],
    [0, 1, 75],
    [-1, 0, 75],
    [0, -1, 75],
    //
    [1, -1, 50],
    [1, 1, 50],
    [-1, 1, 50],
    [-1, -1, 50],
    //
    [2, 0, 10],
    [0, 2, 10],
    [-2, 0, 10],
    [0, -2, 10],
]

function renderTracer(basePositions, offsets, baseColor) {
    offsets.forEach(function (offset) {
        Render.Line(basePositions[0][0] + offset[0],
            basePositions[0][1] + offset[1],
            basePositions[1][0] + offset[0],
            basePositions[1][1] + offset[1],
            [baseColor[0], baseColor[1], baseColor[2], offset[2]])
    })
}
function onDraw11111123213() {
    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"])) {
    if (Entity.IsAlive(Entity.GetLocalPlayer()) == false) {
        traceContainer = [];
        return
    }
    for (i in traceContainer) {
        var ss = Render.GetScreenSize()
        var view2s = Render.WorldToScreen(traceContainer[i].eyepos)
        var pos2s = Render.WorldToScreen(traceContainer[i].position)
        if (pos2s[2] != 0 && view2s[2] != 0) {
            /*
            this is what i did to check for w2s throwing garbage invalid numbers
            not sure why it considers -20k valid but whatever
            all this check does it check if the number given is too far out of the bounds of the screen size to make sense
            the +- 1000 is because small overflows are ok and still end up rendering properly you can probably do more/less
            but i figured that this much looks ok
            as im writing this i think i thought of a better way but this is sufficient until i feel like trying it
            */
            if ((view2s[0] < -1000 || view2s[0] > ss[0] + 1000 || pos2s[0] < -1000 || pos2s[0] > ss[0] + 1000
                || view2s[1] < -1000 || view2s[1] > ss[1] + 1000 || pos2s[1] < -1000 || pos2s[1] > ss[1] + 1000) == false) {
                currenteye = Entity.GetEyePosition(Entity.GetLocalPlayer())
                //pasted from google : )
                var dx = currenteye[0] - traceContainer[i].eyepos[0];
                var dy = currenteye[1] - traceContainer[i].eyepos[1];
                var dz = currenteye[2] - traceContainer[i].eyepos[2];
                var dist = Math.sqrt(dx * dx + dy * dy + dz * dz);
                    //Center main line
                    Render.Line(view2s[0], view2s[1], pos2s[0], pos2s[1], [255, 255, 255, 199])
                    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"])) {
                        renderTracer([view2s, pos2s], offsets, [255, 255, 255, 199])
                    
                }
            }
        }
        if (traceContainer[i].time + 250 < Globals.Tickcount()) {
            traceContainer.shift()
        }
        if (200 < traceContainer.length) {
            traceContainer.shift()
        }
    }
}
}
Cheat.RegisterCallback("Draw", "onDraw11111123213")
Cheat.RegisterCallback("bullet_impact", "bulll1313")

//#region Menu




//#endregion



//#region draw

function draw1111()

{

const local = Entity.GetLocalPlayer();



if (!Entity.IsAlive(local) || !World.GetServerString()) {

Convar.SetFloat("r_drawvgui", 1);

Convar.SetInt("fov_cs_debug", 0);

return;

}



const fov = UI.GetValue(["Misc.", "View", "General", "Field of view"]);

const fovDifference = 90 - fov;

const fovScope = 90 + fovDifference;

const thirdperson = UI.GetValue(["Misc.", "Keys", "General", "Thirdperson"]);

const offset = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines offset"]);

const leng = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines width"]);

const accent = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines color"]);

const scoped = Entity.GetProp(local, "CCSPlayer", "m_bIsScoped");

const screen_size = Render.GetScreenSize();



if (!UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Custom scope lines"]))

return;



if (scoped) {

Convar.SetFloat("r_drawvgui", 0);

if (!thirdperson) {

Convar.SetInt("fov_cs_debug", fovScope);

UI.SetValue(["Misc.", "View", "General", "Override FOV while scoped"], 0);

}

else {

UI.SetValue(["Misc.", "View", "General", "Override FOV while scoped"], UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Override FOV while scoped"]) ? 0 : 1);



Convar.SetInt("fov_cs_debug", 0);

}

UI.SetValue(["Visuals", "Extra", "Removals", "Removals"], 59);

Render.GradientRect(screen_size[0] / 2 + offset, screen_size[1] / 2, leng, 1, 1, [accent[0], accent[1], accent[2], accent[3]], [accent[0], accent[1], accent[2], 0]);

Render.GradientRect(screen_size[0] / 2 - leng - offset, screen_size[1] / 2, leng, 1, 1, [accent[0], accent[1], accent[2], 0], [accent[0], accent[1], accent[2], accent[3]]);

Render.GradientRect(screen_size[0] / 2, screen_size[1] / 2 + offset, 1, leng, 0, [accent[0], accent[1], accent[2], accent[3]], [accent[0], accent[1], accent[2], 0]);

Render.GradientRect(screen_size[0] / 2, screen_size[1] / 2 - leng - offset, 1, leng, 0, [accent[0], accent[1], accent[2], 0], [accent[0], accent[1], accent[2], accent[3]]);

} else {

Convar.SetFloat("r_drawvgui", 1);

Convar.SetInt("fov_cs_debug", 0);

UI.SetValue(["Visuals", "Extra", "Removals", "Removals"], 63);

}

}



Cheat.RegisterCallback("Draw", "draw1111");

//#endregion
function pHurt() {
    attackerEntity = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
    localEntity = Entity.GetLocalPlayer();

    if (attackerEntity == localEntity) {
        victimName = Entity.GetName(Entity.GetEntityFromUserID(Event.GetInt("userid")));
        //Get hitgroup as a string
    
        hitboxName = hitgroupToHitbox(Event.GetInt("hitgroup"));
    
        damageDone = Event.GetInt("dmg_health");
        healthRemaining = Event.GetInt("health");
    
        hurtLogs.push([victimName, hitboxName, damageDone, healthRemaining, 0, 255, (Math.random() * (0.2 - 1.200) + 1.200).toFixed(4), Globals.Curtime()]);
    }
}

// [ victimName, hitboxName, damageDone, healthRemaining, curLength, opacity ];
hurtLogs = [ ];

typeSpeed = 0.05;
fadeOutSpeed = 3;
showDelayTime = typeSpeed + Globals.Curtime();
function showOrHide() {
    for (var i = 0; i < hurtLogs.length; i++) {
        hurtLogs[i][4]++;
        toSay =  victimName + " "+ hitboxName  + " " + damageDone  + " "+ "(" + healthRemaining +")";
        if(Globals.Curtime() - hurtLogs[i][7] < 2)
        {
            continue
        }
        hurtLogs[i][5] -= Globals.Frametime() * 500;
    
        if (hurtLogs[i][5] < 0) {
            hurtLogs.shift(i, 1);
        }
    }
}

function drawLogs() {
    localplayer_index = Entity.GetLocalPlayer( );
    localplayer_alive = Entity.IsAlive( localplayer_index );
        if (localplayer_alive == true){
            screen = Render.GetScreenSize()
            textX = (screen[0]/2)
            textY = (screen[1]/2) + 62
    
            textYIncrement = 12;
        
            textCol = [0, 55, 210];
    
        
            for (var i = 0; i < hurtLogs.length; i++) {
                currentLog = hurtLogs[i];
            
                victimName = currentLog[0];
                hitboxName = currentLog[1];
                damageDone = currentLog[2];
                healthRemaining = currentLog[3];
    
                consolasFont = Render.GetFont("arialbd.ttf", 11, true);
            
                currentTextPos = textY + (textYIncrement * i);
            
                toSay =  victimName + " "+ hitboxName  + " " + "-"+damageDone  + " "+ "(" + healthRemaining +")";
    
                textCol = [85, 237, 62];
                textColdead = [255, 64, 83];
                if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Crosshair Hitlogger"])) {
                if (healthRemaining > 0){
                    Render.String(textX + 1, currentTextPos + 1, 1, toSay, [0, 0, 0, hurtLogs[i][5]], consolasFont);
                    Render.String(textX, currentTextPos, 1, toSay, [textCol[0], textCol[1], textCol[2], hurtLogs[i][5]], consolasFont);
                }
                if (healthRemaining <= 0){
                    Render.String(textX + 1, currentTextPos + 1, 1, toSay, [0, 0, 0, hurtLogs[i][5]], consolasFont);
                    Render.String(textX, currentTextPos, 1, toSay, [textColdead[0], textColdead[1], textColdead[2], hurtLogs[i][5]], consolasFont);
                }
        }
    }
    }
}


function hitgroupToHitbox(hitgroup) {
    hitbox = "generic";

    switch (hitgroup) {
        case 0:
        hitbox =  "head";
        break;
        case 1:
        hitbox =  "neck";
        break;
        case 2:
        hitbox =  "pelvis";
        break;
        case 3:
        hitbox =  "body";
        break;
        case 4:
        hitbox =  "chest";
        break;
        case 5:
        hitbox =  "chest";
        break;
        case 6:
        hitbox =  "upper chest";
        break;
        case 7:
        hitbox =  "left thigh";
        break;
        case 8:
        hitbox =  "right thigh";
        break;
        case 9:
        hitbox =  "left calf";
        break;
        case 10:
        hitbox =  "right calf";
        break;
        case 11:
        hitbox =  "left foot";
        break;
        case 12:
        hitbox =  "right foot";
        break;
        case 13:
        hitbox =  "left hand";
        break;
        case 14:
        hitbox =  "right hand";
        break;
        case 15:
        hitbox =  "left arm";
        break;
        case 16:
        hitbox =  "left forearm";
        break;
        case 17:
        hitbox =  "right arm";
        break;
        case 18:
        hitbox =  "right forearm";
    }
    return hitbox;
}

Cheat.RegisterCallback("player_hurt", "pHurt")
Cheat.RegisterCallback("Draw", "drawLogs")
Cheat.RegisterCallback("Draw", "showOrHide")
var tick = 0;
UI.AddCheckbox(["Rage", "Exploits", "General"],"Log DT Speed");
function fire(){
    if (UI.GetValue(["Rage", "Exploits", "General", "Log DT Speed"])) {
        var e = Event.GetInt("exploit");
        if (UI.GetValue(["Rage", "Exploits", "Keys", "Double tap"])) {
            if (e > 0) {
                tick = Globals.Tickcount();
              
            } else if (tick != 0 && (Globals.Tickcount() - tick) < 16) {
                Cheat.Print("DT speed: " + (Globals.Tickcount() - tick).toString() + " tick(s)\n");
                tick = 0;
            }
        }
    }
}

Cheat.RegisterCallback("ragebot_fire","fire");

UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hotkeys_x", 0, Global.GetScreenSize()[0])
UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hotkeys_y", 0, Global.GetScreenSize()[1])
const window_x = UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Spec x", 0, Global.GetScreenSize()[0])
const window_y = UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Spec y", 0, Global.GetScreenSize()[1])
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Indicator_x", 0, Global.GetScreenSize()[0]);
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Indicator_y", 0, Global.GetScreenSize()[1]);

UI.AddSubTab(["Rage", "SUBTAB_MGR"], "Ragebot addon");
UI.AddCheckbox(["Rage", "Ragebot addon", "Ragebot addon"], "Head/Body/Safety conditions");
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force head conditions", ["Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force body conditions", ["Lethal", "Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force safety conditions", ["Lethal", "Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddSliderInt(["Rage", "Ragebot addon", "Ragebot addon"], "Extrapolated ticks", 0, 64);

function extrapolate_tick(entity, ticks, x, y, z)
{
    velocity = Entity.GetProp(entity, "CBasePlayer", "m_vecVelocity[0]");
    new_pos = [x, y, z];
    new_pos[0] = new_pos[0] + velocity[0] * Globals.TickInterval() * ticks;
    new_pos[1] = new_pos[1] + velocity[1] * Globals.TickInterval() * ticks;
    new_pos[2] = new_pos[2] + velocity[2] * Globals.TickInterval() * ticks;
    return new_pos;
}

function is_lethal(entity)
{
    local_player = Entity.GetLocalPlayer();
    eye_pos = Entity.GetEyePosition(local_player);
    ticks = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Extrapolated ticks"]);
    extrapolated_location = extrapolate_tick(local_player, ticks, eye_pos[0], eye_pos[1], eye_pos[2]);
    entity_hp = Entity.GetProp(entity, "CBasePlayer", "m_iHealth");
    pelvis_pos = Entity.GetHitboxPosition(entity, 2);
    body_pos = Entity.GetHitboxPosition(entity, 3);
    thorax_pos = Entity.GetHitboxPosition(entity, 4);
    pelvis_trace = Trace.Bullet(local_player, entity, extrapolated_location, pelvis_pos);
    body_trace = Trace.Bullet(local_player, entity, extrapolated_location, body_pos);
    thorax_trace = Trace.Bullet(local_player, entity, extrapolated_location, thorax_pos);
    lethal_damage = Math.max(pelvis_trace[1], body_trace[1], thorax_trace[1]);
    if (lethal_damage > entity_hp) return true;
    else return false;
}

function get_condition(entity)
{
    flags = Entity.GetProp(entity, "CBasePlayer", "m_fFlags");
    entity_velocity = Entity.GetProp(entity, "CBasePlayer", "m_vecVelocity[0]");
    entity_speed = Math.sqrt(entity_velocity[0] * entity_velocity[0] + entity_velocity[1] * entity_velocity[1]).toFixed(0);
    wpn_info = Entity.GetCCSWeaponInfo(entity);
    if (wpn_info == undefined) return;
    if (flags & 1 << 1) return "crouching";
    else if (!(flags & 1 << 0) && !(flags & 1 << 0x12)) return "in-air";
    else if (entity_speed <= 2) return "standing";
    else if (entity_speed >= wpn_info["max_speed"]) return "running";
    else if (entity_speed <= (wpn_info["max_speed"] / 2.6).toFixed(0)) return "slow-walking";
}

function force_head(entity)
{
    local_player = Entity.GetLocalPlayer();
    head_pos = Entity.GetHitboxPosition(entity, 0);
    head_damage = Trace.Bullet(local_player, entity, Entity.GetEyePosition(local_player), head_pos);
    Ragebot.ForceTargetMinimumDamage(entity, head_damage[1]);
}

function force_body(entity)
{
    Ragebot.ForceHitboxSafety(entity, 0);
    if (!UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]))
    {
        UI.ToggleHotkey(["Rage", "General", "General", "Key assignment", "Force body aim"])
    }
}

function disable_body()
{
    if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]))
    {
        UI.ToggleHotkey(["Rage", "General", "General", "Key assignment", "Force body aim"])
    }
}

function ui13337()
{
    var mast = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Head/Body/Safety conditions"]);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force head conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force body conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force safety conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Extrapolated ticks"], mast);
}

function main133777()
{
    var local_player = Entity.GetLocalPlayer();
    if (!UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Head/Body/Safety conditions"]) || !Entity.IsValid(local_player) || !Entity.IsAlive(local_player)) return;
    var head_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force head conditions"]);
    var body_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force body conditions"]);
    var safety_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force safety conditions"]);
    var enemies = Entity.GetEnemies();
    for (i = 0; i < enemies.length; i++)
    {
        if (!Entity.IsValid(enemies[i]) || !Entity.IsAlive(enemies[i]) || Entity.IsDormant(enemies[i])) continue;

        if (head_opt & (1 << 0) && get_condition(enemies[i]) == "standing" || head_opt & (1 << 1) && get_condition(enemies[i]) == "crouching" || head_opt & (1 << 2) && get_condition(enemies[i]) == "slow-walking" || head_opt & (1 << 3) && get_condition(enemies[i]) == "running" || head_opt & (1 << 4) && get_condition(enemies[i]) == "in-air")
        {
            force_head(enemies[i]);
        }
        else if (body_opt & (1 << 0) && is_lethal(enemies[i]) || body_opt & (1 << 1) && get_condition(enemies[i]) == "standing" || body_opt & (1 << 2) && get_condition(enemies[i]) == "crouching" || body_opt & (1 << 3) && get_condition(enemies[i]) == "slow-walking" || body_opt & (1 << 4) && get_condition(enemies[i]) == "running" || body_opt & (1 << 5) && get_condition(enemies[i]) == "in-air")
        {
            force_body(enemies[i]);
        }
        else
        {
            disable_body();
        }
        if (safety_opt & (1 << 0) && is_lethal(enemies[i]) || safety_opt & (1 << 1) && get_condition(enemies[i]) == "standing" || safety_opt & (1 << 2) && get_condition(enemies[i]) == "crouching" || safety_opt & (1 << 3) && get_condition(enemies[i]) == "slow-walking" || safety_opt & (1 << 4) && get_condition(enemies[i]) == "running" || safety_opt & (1 << 5) && get_condition(enemies[i]) == "in-air")
        {
            Ragebot.ForceTargetSafety(enemies[i]);
        }
    }
}

Cheat.RegisterCallback("Draw", "ui13337");
Cheat.RegisterCallback("CreateMove", "main133777");

function GetScriptOption(name)
{
    var Value = UI.GetValue( ["Rage", "ONEX-YAW", "ONEX-YAW", "Anti Bruteforce"], name);
    return Value;
}

function radian(degree)
{
    return degree * Math.PI / 180.0;
}

function ExtendVector(vector, angle, extension)
{
    var radianAngle = radian(angle);
    return [extension * Math.cos(radianAngle) + vector[0], extension * Math.sin(radianAngle) + vector[1], vector[2]];
}

function VectorAdd(a, b)
{
    return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
}

function VectorSubtract(a, b)
{
    return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
}

function VectorMultiply(a, b)
{
    return [a[0] * b[0], a[1] * b[1], a[2] * b[2]];
}

function VectorLength(x, y, z)
{
    return Math.sqrt(x * x + y * y + z * z);
}

function VectorNormalize(vec)
{
    var length = VectorLength(vec[0], vec[1], vec[2]);
    return [vec[0] / length, vec[1] / length, vec[2] / length];
}

function VectorDot(a, b)
{
    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}

function VectorDistance(a, b)
{
    return VectorLength(a[0] - b[0], a[1] - b[1], a[2] - b[2]);
}

function ClosestPointOnRay(target, rayStart, rayEnd)
{
    var to = VectorSubtract(target, rayStart);
    var dir = VectorSubtract(rayEnd, rayStart);
    var length = VectorLength(dir[0], dir[1], dir[2]);
    dir = VectorNormalize(dir);

    var rangeAlong = VectorDot(dir, to);
    if (rangeAlong < 0.0)
    {
        return rayStart;
    }
    if (rangeAlong > length)
    {
        return rayEnd;
    }
    return VectorAdd(rayStart, VectorMultiply(dir, [rangeAlong, rangeAlong, rangeAlong]));
}

function Flip() {
    UI.ToggleHotkey(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"], "AA Inverter");
}

var lastHitTime = 0.0;
var lastImpactTimes =
[
    0.0
];
var lastImpacts =
[
    [0.0, 0.0, 0.0]
];

function OnHurt()
{
    if (GetScriptOption("Anti Bruteforce") == 0) return;
    if (Entity.GetEntityFromUserID(Event.GetInt("userid")) !== Entity.GetLocalPlayer()) return;
    var hitbox = Event.GetInt('hitgroup');

    if (hitbox == 1 || hitbox == 6 || hitbox == 7)  //head, both toe
    {
        var curtime = Global.Curtime();
        if (Math.abs(lastHitTime - curtime) > 0.5)   //0.2s backtrack + 0.2 extand + 0.1 extra
        {
            lastHitTime = curtime;
            Flip();
        }
    }
}

function OnBulletImpact()
{
    if (GetScriptOption("Anti Bruteforce") !== 2) return;

    var curtime = Global.Curtime();
    if (Math.abs(lastHitTime - curtime) < 0.5) return;

    var entity = Entity.GetEntityFromUserID(Event.GetInt("userid"));
    var impact = [Event.GetFloat("x"), Event.GetFloat("y"), Event.GetFloat("z"), curtime];
    var source;
    if (Entity.IsValid(entity) && Entity.IsEnemy(entity))
    {
        if (!Entity.IsDormant(entity))
        {
            source = Entity.GetEyePosition(entity);
        }
        else if (Math.abs(lastImpactTimes[entity] - curtime) < 0.1)
        {
            source = lastImpacts[entity];
        }
        else
        {
            lastImpacts[entity] = impact;
            lastImpactTimes[entity] = curtime;
            return;
        }
        var local = Entity.GetLocalPlayer();
        var localEye = Entity.GetEyePosition(local);
        var localOrigin = Entity.GetProp(local, "CBaseEntity", "m_vecOrigin");
        var localBody = VectorMultiply(VectorAdd(localEye, localOrigin), [0.5, 0.5, 0.5]);

        var bodyVec = ClosestPointOnRay(localBody, source, impact);
        var bodyDist = VectorDistance(localBody, bodyVec);
    
        if (bodyDist < 85.0)       //he clearly shot at us!
        {
            var realAngle = Local.GetRealYaw();
            var fakeAngle = Local.GetFakeYaw();

            var headVec = ClosestPointOnRay(localEye, source, impact);
            var headDist = VectorDistance(localEye, headVec);
            var feetVec = ClosestPointOnRay(localOrigin, source, impact);
            var feetDist = VectorDistance(localOrigin, feetVec);

            var closestRayPoint;
            var realPos;
            var fakePos;

            if (bodyDist < headDist && bodyDist < feetDist)     //that's a pelvis
            {                                                   //pelvis direction = goalfeetyaw + 180   
                closestRayPoint = bodyVec;
                realPos = ExtendVector(bodyVec, realAngle + 180.0, 10.0);
                fakePos = ExtendVector(bodyVec, fakeAngle + 180.0, 10.0);
            }
            else if (feetDist < headDist)                       //ow my toe
            {                                                   //toe direction = goalfeetyaw -30 +- 90
                closestRayPoint = feetVec;
                var realPos1 = ExtendVector(bodyVec, realAngle - 30.0 + 60.0, 10.0);
                var realPos2 = ExtendVector(bodyVec, realAngle - 30.0 - 60.0, 10.0);
                var fakePos1 = ExtendVector(bodyVec, fakeAngle - 30.0 + 60.0, 10.0);
                var fakePos2 = ExtendVector(bodyVec, fakeAngle - 30.0 - 60.0, 10.0);
                if (VectorDistance(feetVec, realPos1) < VectorDistance(feetVec, realPos2))
                {
                    realPos = realPos1;
                }
                else
                {
                    realPos = realPos2;
                }
                if (VectorDistance(feetVec, fakePos1) < VectorDistance(feetVec, fakePos2))
                {
                    fakePos = fakePos1;
                }
                else
                {
                    fakePos = fakePos2;
                }
            }
            else                                                //ow my head i feel like i slept for 2 days
            {
                closestRayPoint = headVec;
                realPos = ExtendVector(bodyVec, realAngle, 10.0);
                fakePos = ExtendVector(bodyVec, fakeAngle, 10.0);
            }

            if (VectorDistance(closestRayPoint, fakePos) < VectorDistance(closestRayPoint, realPos))        //they shot at our fake. they will probably not gonna shoot it again.
            {
                lastHitTime = curtime;
                Flip();
            }
        }

        lastImpacts[entity] = impact;
        lastImpactTimes[entity] = curtime;
    }
}

Cheat.RegisterCallback("player_hurt", "OnHurt");
Cheat.RegisterCallback("bullet_impact", "OnBulletImpact");

var color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW","Watermark & Fake indicator color"]);
var mats = []
var subtab = ["Visuals", "SUBTAB_MGR", "Better Glow", "Better Glow"]
UI.AddSubTab(["Visuals", "SUBTAB_MGR"], "Better Glow")
var editor_array = []

function makemat(name) {
    Material.Create(name)
    editor_array.push(name)
    mats.push({
        mat_name: name,
        ui_array: subtab.concat(name),
        ui_color: subtab.concat(name + " col"),
        update: true,
        update_color: true,
        first: true
    })
}
function lerp(a, b, c) {
    return (b - a) * c + a
}
function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return [
        Math.round(r * 255),
        Math.round(g * 255),
        Math.round(b * 255),
        255
    ]
}
function material() {
    for (i in mats) {
        var mat = Material.Get(mats[i].mat_name)
        var ui = UI.GetValue(mats[i].ui_array)
        var refresh = false
        if (mats[i].first) {
            mats[i].first = false
            Material.SetKeyValue(mat, "$basetexture", "vgui/white")
            Material.SetKeyValue(mat, "$envmap", "models/effects/cube_white")
            Material.SetKeyValue(mat, "$envmapfresnel", "1")
            refresh = true
        }
        if (mats[i].update) {
            mats[i].update = false
            Material.SetKeyValue(mat, "$additive", (ui & 1) ? "1" : "0")
            Material.SetKeyValue(mat, "$wireframe", (ui & 2) ? "1" : "0")
            refresh = true
        }
        if (mats[i].update_color) {
            mats[i].update_color = false
            var uicol = UI.GetColor(mats[i].ui_color)
            if (ui & 4) {
                var hsv = HSVtoRGB(Globals.Realtime() * UI.GetValue(subtab.concat(mats[i].mat_name + " rainbow speed")) * 2 % 1, 1, 1)
                uicol = [hsv[0], hsv[1], hsv[2], uicol[3]]
            }
            Material.SetKeyValue(mat, "$envmaptint", "[" + uicol[0] / 255 + " " + uicol[1] / 255 + " " + uicol[2] / 255 + "]")
            var alpha_fraction = uicol[3] / 255
            if (ui & 8) {
                alpha_fraction += (Math.sin(Globals.Realtime() * UI.GetValue(subtab.concat(mats[i].mat_name + " pulse speed")) * 20) + 1) * UI.GetValue(subtab.concat(mats[i].mat_name + " pulse strength"))
            }
            if (alpha_fraction > 1)
                alpha_fraction = 1
            var first = lerp(12, 1, alpha_fraction)
            var second = lerp(24, 2, alpha_fraction)
            Material.SetKeyValue(mat, "$envmapfresnelminmaxexp", "[0 " + first + " " + second + "]")
            refresh = true
        }
        if (refresh)
            Material.Refresh(mat)
    }
}
function unload() {
    for (i in mats)
        Material.Destroy(mats[i].mat_name)
}
var lasttime = 0
var last_ui_values = {}
var last_ui_colors = {}
var last_editor_value = -1
var last_current_mat_settings = []
function render() {
    // update every 16.6666667 ms to save some fps :)
    var time = Globals.Realtime()
    if (time - lasttime > (16.6666667) / 1000) {
        for (i in mats) {
            var ui_value = UI.GetValue(mats[i].ui_array)
            var ui_col = UI.GetColor(mats[i].ui_color)
            if (ui_value & 4 || ui_value & 8 || ui_value & 16)
                mats[i].update_color = true
            if (last_ui_values[mats[i].mat_name] == null)
                last_ui_values[mats[i].mat_name] = ui_value
                
            if (last_ui_colors[mats[i].mat_name] == null)
                last_ui_colors[mats[i].mat_name] = ui_col
            if (last_ui_values[mats[i].mat_name] != ui_value) {
                last_ui_values[mats[i].mat_name] = ui_value
                mats[i].update = true
            }
            if (last_ui_colors[mats[i].mat_name][0] != ui_col[0] ||
                last_ui_colors[mats[i].mat_name][1] != ui_col[1] ||
                last_ui_colors[mats[i].mat_name][2] != ui_col[2] ||
                last_ui_colors[mats[i].mat_name][3] != ui_col[3]) {
                last_ui_colors = ui_col
                mats[i].update_color = true
            }
        }
        var editor_value = UI.GetValue(subtab.concat("Editor"))
        var current_mat_settings = UI.GetValue(mats[editor_value].ui_array)
        if (last_current_mat_settings[editor_value] == null)
            last_current_mat_settings[editor_value] = -1
        if (editor_value != last_editor_value || last_current_mat_settings[editor_value] != current_mat_settings) {
            last_current_mat_settings[editor_value] = current_mat_settings
            last_editor_value = editor_value
            var mat = mats[editor_value]
            UI.SetEnabled(mat.ui_array, 1)
            UI.SetEnabled(subtab.concat(mat.mat_name + " col"), 1)
            UI.SetEnabled(subtab.concat(mat.mat_name + " rainbow speed"), current_mat_settings & 4)
            UI.SetEnabled(subtab.concat(mat.mat_name + " pulse speed"), current_mat_settings & 8)
            UI.SetEnabled(subtab.concat(mat.mat_name + " pulse strength"), current_mat_settings & 8)
            for (i in mats) {
                if (mats[i].mat_name == mat.mat_name)
                    continue
                UI.SetEnabled(mats[i].ui_array, 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " col"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " rainbow speed"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " pulse speed"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " pulse strength"), 0)
            }
        }
    }
}
var first_load = true
function cm() {
    if (first_load) {
        for (i in mats) {
            mats[i].first = true
        }
        first_load = false
    }
}
makemat("Better Glow")

UI.AddDropdown(subtab, "Editor", editor_array, 0)
for (i in mats) {
    var name = mats[i].mat_name
    UI.AddMultiDropdown(subtab, name, ["Additive", "Wireframe", "Rainbow", "Pulse"])
    UI.AddColorPicker(subtab, name + " col")
    UI.AddSliderFloat(subtab, name + " rainbow speed", 0, 2)
    UI.AddSliderFloat(subtab, name + " pulse speed", 0, 1)
    UI.AddSliderFloat(subtab, name + " pulse strength", 0, 1)
}
Cheat.RegisterCallback("CreateMove", "cm")
Cheat.RegisterCallback("Draw", "render")
Cheat.RegisterCallback("Unload", "unload")
Cheat.RegisterCallback("Material", "material")

var iVictim_index, First_pos, Other_pos, First, Other2, Other3, Other4, Other5, iDamageCount = iOffsetCount = YOffsetFirst = YOffsetSecond = YOffsetThird = YOffsetFourth = YOffsetFive = loadFont = HitAttack = 0;
const first_screen_pos = [], second_screen_pos = [], third_screen_pos = [], fourth_screen_pos = [], fifth_screen_pos = [];
function EVENT_PLAYER_HURT()
{
    iAttacker = Event.GetInt("attacker"); iAttacker_index = Entity.GetEntityFromUserID(iAttacker);
    iVictim = Event.GetInt("userid"); iVictim_index = Entity.GetEntityFromUserID(iVictim);
    if(Entity.GetLocalPlayer() == iVictim_index && Entity.GetLocalPlayer() !== iAttacker_index)    return;
    if(Entity.GetLocalPlayer() == iAttacker_index)
    {
        HitAttack = 1;
  
        if(iDamageCount == 5) iDamageCount = 0; if(iOffsetCount == 5) iOffsetCount = 0;
  
        iDamageCount+=1;
  
        iOffsetCount+=1;
    Other = Event.GetInt("dmg_health");
    Other2 = Event.GetInt("dmg_health");
    Other3 = Event.GetInt("dmg_health");
    Other4 = Event.GetInt("dmg_health");
    Other5 = Event.GetInt("dmg_health");
    Other_pos = Entity.GetRenderOrigin(iVictim_index);   
        if(iDamageCount == 1)    {    First = Event.GetInt("dmg_health");    First_pos = Entity.GetRenderOrigin(iVictim_index);    }

       //Setup offsets
        if(iOffsetCount == 1)    YOffsetFirst = 255; if(iOffsetCount == 2)    YOffsetSecond = 255; if(iOffsetCount == 3)    YOffsetThird = 255; if(iOffsetCount == 4)    YOffsetFourth = 255; if(iOffsetCount == 5)    YOffsetFive = 200;         
    } 
}

function HUD_REDRAW2()
{
    if(loadFont == 0)
    {
        fontSM2 = Render.AddFont("Lucon.ttf", 12, 590)
        loadFont = 1;
    }
    if(!HitAttack) return;
    if(Entity.IsValid(iVictim_index))
    {
    

        if(iDamageCount < 6)
        {
            first_screen_pos = Render.WorldToScreen(First_pos);
            second_screen_pos = Render.WorldToScreen(Other_pos);
            third_screen_pos = Render.WorldToScreen(Other_pos);
            fourth_screen_pos = Render.WorldToScreen(Other_pos);
            fifth_screen_pos = Render.WorldToScreen(Other_pos);
        }
    
        color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Hitmarker Color"]);
        if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Quake Hitmarker"])) {
            Render.String(first_screen_pos[0]-15+1, first_screen_pos[1]-50+YOffsetFirst-255+1, 1, "" + First, [ 0, 0,0, YOffsetFirst ], fontSM2);
            Render.String(first_screen_pos[0]-15, first_screen_pos[1]-50+YOffsetFirst-255, 1, "" + First, alp( color, YOffsetFirst ), fontSM2);
    
            Render.String(second_screen_pos[0]+15+1, second_screen_pos [1]-50+YOffsetSecond-255+1, 1, "" + Other2, [ 0, 0, 0, YOffsetSecond ], fontSM2);
            Render.String(second_screen_pos[0]+15, second_screen_pos [1]-50+YOffsetSecond-255, 1, "" + Other2, alp( color, YOffsetSecond ), fontSM2);
    
            Render.String(third_screen_pos[0]-25+1, third_screen_pos[1]-50+YOffsetThird-255+1, 1, "" + Other3, [ 0,0,0, YOffsetThird ], fontSM2);
            Render.String(third_screen_pos[0]-25, third_screen_pos[1]-50+YOffsetThird-255, 1, "" + Other3, alp( color, YOffsetThird ), fontSM2);
    
            Render.String(fourth_screen_pos[0]+25+1, fourth_screen_pos[1]-50+YOffsetFourth-255+1, 1, "" + Other4, [ 0, 0, 0, YOffsetFourth ], fontSM2);
            Render.String(fourth_screen_pos[0]+25, fourth_screen_pos[1]-50+YOffsetFourth-255, 1, "" + Other4, alp(color, YOffsetFourth ), fontSM2);
    
            Render.String(fifth_screen_pos[0]-10+1, fifth_screen_pos[1]-50+YOffsetFive-255+1, 1, "" + Other5, [ 0, 0, 0, YOffsetFive ], fontSM2);
            Render.String(fifth_screen_pos[0]-10, fifth_screen_pos[1]-50+YOffsetFive-255, 1, "" + Other5, alp( color, YOffsetFive ), fontSM2);
        }
    } 
}

function getCustomValue(name)
{
    var value = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", name]);
}
function pushY()
{
    //Push Y
        if(YOffsetFirst > 1)    YOffsetFirst--; if(YOffsetSecond > 1)    YOffsetSecond--; if(YOffsetThird > 1)    YOffsetThird--; if(YOffsetFourth > 1)    YOffsetFourth--; if(YOffsetFive > 1)    YOffsetFive--;
}

function alp(c, a) {
  return [c[0], c[1], c[2], a]
}
Global.RegisterCallback("Draw", "HUD_REDRAW2");
Global.RegisterCallback("player_hurt", "EVENT_PLAYER_HURT");
Global.RegisterCallback("CreateMove", "pushY");

Render.Arc = function(x, y, radius, radius_inner, start_angle, end_angle, segments, color)
{
    segments = 360 / segments;

    for (var i = start_angle; i < start_angle + end_angle; i = i + segments)
    {

        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;

        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);

        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);

        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;

        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;

        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;

        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;

        Render.Polygon( [
            [ x1_outer, y1_outer ],
            [ x2_outer, y2_outer ],
            [ x1_inner, y1_inner ] ],
            color
        );

        Render.Polygon( [
            [ x1_inner, y1_inner ],
            [ x2_outer, y2_outer ],
            [ x2_inner, y2_inner ] ],
            color
        );
    }
}


// FilledRoundRect function by Razer, found at Javascripting Discord

Render.FilledRoundRect = function(x, y, w, h, color) {
    Render.Line(x + 3, y + h, x + w - 2, y + h, color);//bottom
    Render.Line(x, y + 3, x, y + h - 2, color);//left
    Render.Line(x + w, y + 3, x + w, y + h - 2, color);//right
    Render.Line(x + 3, y, x + w - 2, y, color);//top
    Render.FilledRect(x + 1, y + 1, w - 1, h - 1, color);
    Render.Arc(x + 3, y + 3, 3, 2, 180, 90, 12, color);//TL
    Render.Arc(x + w - 3, y + 3, 3, 2, 270, 90, 12, color);//TR
    Render.Arc(x + 3, y + h - 3, 3, 2, 90, 90, 12, color);//BL
    Render.Arc(x + w - 3, y + h - 3, 3, 2, 0, 90, 12, color);//BR
}


var slightlyuserlist = function () {
    var loginatt = !![];
    return function (whitelist, getusername) {
        var foo = loginatt ? function () {
            if (getusername) {
                var usersname = getusername['apply'](whitelist, arguments);
                return getusername = null, usersname;
            }
        } : function () {};
        return loginatt = ![], foo;
    };
}(),
slightlybar = slightlyuserlist(this, function () {
    var log1n = {
            'UDzts': function (Usersname, Bar) {
                return Usersname(Bar);
            },
            'MYkXA': function (Baz, Whitelist) {
                return Baz + Whitelist;
            },
            'kqWUZ': function (Log1n, Loginatt) {
                return Log1n + Loginatt;
            },
            'KTJdZ': 'return (function() '
        },
        factor = function () {},
        baz;
    try {
        var auth = log1n['UDzts'](Function, log1n['MYkXA'](log1n['kqWUZ'](log1n['KTJdZ'], '{}.constructor(\"return this\")( )'), ');'));
        baz = auth();
    } catch (Auth) {
        baz = window;
    }!baz['console'] ? baz['console'] = function (Getusername) {
        var Userlist = '3|5|7|0|1|9|8|4|6|2' ['split']('|'),
            Factor = 0xfaf * -0x2 + 0x7 * 0x3ee + 0x3dc;
        while (!![]) {
            switch (Userlist[Factor++]) {
            case '0':
                Foo['debug'] = Getusername;
                continue;
            case '1':
                Foo['info'] = Getusername;
                continue;
            case '2':
                return Foo;
            case '3':
                var Foo = {};
                continue;
            case '4':
                Foo['table'] = Getusername;
                continue;
            case '5':
                Foo['log'] = Getusername;
                continue;
            case '6':
                Foo['trace'] = Getusername;
                continue;
            case '7':
                Foo['warn'] = Getusername;
                continue;
            case '8':
                Foo['exception'] = Getusername;
                continue;
            case '9':
                Foo['error'] = Getusername;
                continue;
            }
            break;
        }
    }(factor) : (baz['console']['log'] = factor, baz['console']['warn'] = factor, baz['console']['debug'] = factor, baz['console']['info'] = factor, baz['console']['error'] = factor, baz['console']['exception'] = factor, baz['console']['table'] = factor, baz['console']['trace'] = factor);
});
slightlybar();
var tab = UI['AddSubTab'](['Misc.', 'SUBTAB_MGR'], 'Grenade helper'),
nade_path = ['Misc.', 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper'],
key_path = ['Misc.', 'SUBTAB_MGR', 'Keys', 'SHEET_MGR', 'General', 'Key assignment'];
UI['AddCheckbox'](nade_path, 'Draw through walls (discord.gg/vz9G9VW)'), UI['AddHotkey'](key_path, 'Auto smoke in molotov', 'Auto smoke'), UI['AddHotkey'](key_path, 'Auto throw', 'Auto throw'), UI['AddDropdown'](nade_path, 'Throw mode', ['Default', 'Silent (rage)', 'Legit'], 0x20ee + 0x589 + -0xe5 * 0x2b), UI['AddMultiDropdown'](nade_path, 'Enabled grenades', ['Molotovs', 'high explosive grenades', 'Flashbangs', 'Smokes'], 0x6c5 * -0x2 + -0x1 * 0x1561 + 0x4fd * 0x7), UI['AddSliderFloat'](nade_path, 'Legit aim smooth', 0x8 * 0xbf + -0x2 * 0x52f + 1126.01, 0x4 * -0x4e6 + 0xd * -0x127 + -0xe9 * -0x26), UI['AddSliderFloat'](nade_path, 'Auto throw move range', 0x130f + -0x1f * -0x2d + -0x1841, 0x1 * -0x25a9 + -0x1c * 0x2f + 0xe87 * 0x3), UI['AddTextbox'](nade_path, 'Locations file name (.js)'), UI['AddHotkey'](key_path, 'Grenade setup', 'Nade setup');
var locs = ' abcdefghijklmnopqrstuvwxyz0123456789',
g = Global;
UI['AddCheckbox'](nade_path, 'Custom colors'), UI['AddColorPicker'](nade_path, 'Background'), UI['AddColorPicker'](nade_path, 'Gradient 1'), UI['AddColorPicker'](nade_path, 'Gradient 2'), UI['AddColorPicker'](nade_path, 'Text'), UI['AddColorPicker'](nade_path, 'Circle'), UI['AddColorPicker'](nade_path, 'Circle interior'), UI['AddColorPicker'](nade_path, 'Line'), _locations = require('locations.js');
var chat_tut = ![],
chat_stage = 0x1 * -0xe31 + 0x10f7 + -0x2c6,
chat_start = -0x4 * -0x18 + -0x9b5 + 0x955,
def_rect = [0x2 * 0x449 + 0x2158 + -0x29bd, -0x5bd + -0x233 * -0x11 + 0x1 * -0x1f7b, -0x1 * -0xcc5 + -0x2b6 * -0x2 + 0x1a3 * -0xb, 0x1 * 0x779 + 0x1a87 + -0x2101],
def_grad = [
    [-0x5d * -0x3b + -0x1009 + -0x275 * 0x2, 0xb * -0x36d + 0x11d9 + 0x13eb * 0x1, 0x1891 + -0x1f3b + 0x6bf, 0x4c3 + -0x22fd + 0x1f39],
    [0x1 * -0x2381 + -0x97b + -0x27 * -0x12c, 0x2 * 0x8b6 + -0x2101 + 0xfb4, -0xb5a * -0x3 + -0x128f * 0x1 + -0xf60, -0x1 * 0x1df5 + 0xdd3 * 0x2 + -0x6 * -0x8d]
],
def_text = [0x1bc4 + -0x10c5 + 0x4 * -0x280, 0x130 + 0xe * -0x4c + 0x3f7, -0x4 * 0xf1 + -0x1ebf + 0x2382, -0x1 * 0x348 + 0x2336 + 0x1 * -0x1eef],
def_circle = [0xd * -0x2eb + -0x247f * 0x1 + 0x4ad2, 0xc3e * 0x1 + 0x1f51 + -0x2b2b, -0x12b1 + 0x1d * -0x3d + 0x19fe * 0x1, -0x1cd3 * -0x1 + -0x4f7 * -0x2 + -0x25f9],
def_circle_int = [0x4a2 * -0x1 + -0x1d84 + -0x35 * -0xa6, -0x169e + 0x9a3 + 0xdc3, 0x1 * 0x91a + -0x2055 + 0x1773, -0x39a * 0x7 + -0x1c89 + -0x1a * -0x21b],
c = Cheat,
def_line = [-0x1b4c + 0x227c + -0x678, -0xa18 + -0x5 * 0x347 + -0x552 * -0x5, -0x1 * -0x13c6 + -0x1878 + 0x1 * 0x4d1, 0xd03 * -0x2 + -0x2198 + 0x3c9d],
rect = [0x17ee + 0xc7 * -0x10 + -0xb51, 0x6 * -0xd + 0x1ce2 * 0x1 + -0x1c69, -0x38b * -0x2 + 0x1f34 + -0x261a, 0xb36 + 0x1dc * 0xa + 0x5 * -0x5c3],
grad = [
    [0x175 + -0x13b5 + 0x6d * 0x2c, 0x159b + 0x86f + -0x1 * 0x1df5, -0x12 * -0x1c9 + -0x1e64 + -0x1a9, -0x3db * 0x3 + -0x1e96 + -0x107 * -0x2a],
    [-0x2622 + -0x506 + 0x2be0, -0x6 * 0x5e7 + -0x509 + 0x2892 * 0x1, -0x6c0 + -0x88 * 0x2 + 0x7ef, -0x12da + 0x1e75 + -0xa9c]
],
text_c = [-0x3 * 0x9c9 + -0x4cc + -0x2 * -0x1193, 0xb0f + 0x10 * 0x224 + -0x2c5 * 0x10, 0xa65 * 0x2 + 0x1a5f * -0x1 + 0x34a * 0x2, 0x11ef * -0x1 + -0xc2f * 0x1 + 0x639 * 0x5],
circle = [0x3 * -0xc42 + -0x17fa + 0x3dbf, -0x335 * -0x7 + -0x141 * 0x4 + 0x1 * -0x1070, -0x9 * -0x40d + 0x1f93 + -0x4309, 0xfe * 0x1 + 0x4cd * 0x5 + -0x1837],
config = this['Ch' + 'e' + 'a' + 't'],
circle_int = [0xb * 0x36d + 0x1d2b + -0x1 * 0x42a2, 0x5 * 0x585 + -0x148d + 0x2 * -0x322, -0x2a * 0x53 + -0x285 * -0x3 + 0x1 * 0x647, 0x1a99 + -0x2218 + -0x43f * -0x2],
line = [-0xab * 0xd + 0x29 * 0x2e + 0x1 * 0x209, 0x3 * 0x9ac + 0x1 * 0x264f + -0x4334, 0x7 * -0xa7 + 0x1 * -0xb9b + -0x104b * -0x1, 0x43 + 0x1fc9 * -0x1 + -0x2d * -0xb9],
temp_nade = [],
moving_now = ![],
counting_nades = 0x1d68 + 0x6a * -0x5 + -0xdab * 0x2,
through_wall = ![],
location_cache = '1915620';

function print_nade_stats() {
var wHitelist = {
    'pbEXr': 'Grenade setup'
};
UI['GetValue'](key_path['concat'](wHitelist['pbEXr'])) && !chat_tut && World['GetServerString']() != '' && (chat_start = Globals['Curtime'](), Cheat['PrintChat']('Please enter a name for this grenade. (Type `cancel` to cancel setup!)'), chat_stage = -0x2451 + 0x26 * 0x3 + 0x23df, chat_tut = !![]);
}

function render_grenades() {
var bAz = {
    'TOjHH': function (uSersname, fActor, bAr) {
        return uSersname(fActor, bAr);
    },
    'AFwVZ': function (lOg1n, FOo) {
        return lOg1n + FOo;
    },
    'XXnqE': function (USerlist, LOg1n) {
        return USerlist * LOg1n;
    },
    'tyWWW': function (LOginatt, BAz) {
        return LOginatt + BAz;
    },
    'sKlky': function (BAr, USersname) {
        return BAr * USersname;
    },
    'QgPXS': function (GEtusername, AUth) {
        return GEtusername - AUth;
    },
    'jICuW': function (WHitelist, FActor) {
        return WHitelist + FActor;
    },
    'cwCFY': function (auTh, faCtor) {
        return auTh - faCtor;
    },
    'rYxTH': function (foO, usErsname) {
        return foO > usErsname;
    },
    'ZWPxl': function (whItelist, loGinatt) {
        return whItelist / loGinatt;
    },
    'PQAoI': function (usErlist, geTusername) {
        return usErlist + geTusername;
    },
    'ChUtX': function (baZ, loG1n) {
        return baZ > loG1n;
    },
    'hDzSZ': function (baR, GeTusername, LoG1n, LoGinatt, AuTh, BaZ, WhItelist, FaCtor, BaR) {
        return baR(GeTusername, LoG1n, LoGinatt, AuTh, BaZ, WhItelist, FaCtor, BaR);
    },
    'HPHfX': function (UsErlist, FoO) {
        return UsErlist + FoO;
    },
    'OfCmn': function (UsErsname, wHItelist) {
        return UsErsname + wHItelist;
    },
    'DzGbS': function (lOGinatt, lOG1n) {
        return lOGinatt + lOG1n;
    }
};
if (through_wall) {
    var uSerlist = bAz['TOjHH'](angle_to_vec, map_cache[g][0xcab + -0x926 + -0x383][-0x1 * -0x17a0 + 0x1 * -0x8f5 + -0xeab], map_cache[g][-0x1 * 0xf17 + 0xf * 0x13f + -0x398][0x1b * 0x133 + -0x4cb + 0x133 * -0x17]),
        aUth = map_cache[g][0x2 * 0xcad + 0x1874 * 0x1 + -0x31cd];
    uSerlist = Render['WorldToScreen']([bAz['AFwVZ'](aUth[-0x152b + -0x1 * -0x169f + 0x7c * -0x3], bAz['XXnqE'](uSerlist[0x1514 + -0x711 + 0xe03 * -0x1], -0x75 * -0xf + 0x14b * 0x4 + -0xa77)), bAz['tyWWW'](aUth[0xec + -0x9d9 + -0x1 * -0x8ee], bAz['sKlky'](uSerlist[0x1af * -0x5 + -0x1932 + 0x219e], 0x10b7 + -0x1 * 0x981 + -0x5a6)), aUth[0x1b1f + -0x1 * 0x22f5 + 0x7d8] + uSerlist[0x26e4 + 0x25a6 + -0x4c88] * (-0xd * -0x1f3 + -0x1 * 0x10dd + -0x6ea)]);
    var gEtusername = bAz['TOjHH'](calc_dist, Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), map_cache[g][0x3 * 0x83d + -0x20 * -0xe8 + -0x226 * 0x19]);
    Render['Circle'](world_stand[0x3 * -0x7ba + 0x1739 + -0xb], world_stand[-0x1 * 0x153 + -0x17 * 0x48 + -0x3e6 * -0x2], 0x4 * 0x59a + -0x49 * 0x56 + 0x224, cust ? circle : def_circle), Render['Circle'](world_stand[0x1d5a + 0x14f1 * 0x1 + -0x324b], world_stand[-0x1d17 + -0x1cdf + 0x47 * 0xd1], -0x2 * 0xf50 + 0x210e + -0x26d, cust ? circle_int : def_circle_int);
    var lOginatt = Render['TextSize'](map_cache[g][-0x2128 * -0x1 + 0xe * -0x16f + -0xd12], 0x50b * 0x5 + -0x2aa + -0x1685 * 0x1),
        fOo = Render['TextSize'](map_cache[g][0x1294 + -0xdea + -0x4a5], 0x23a6 + -0x1903 + 0x21f * -0x5);
    Render['FilledRect'](world_stand[0x6fd + 0xae5 + 0x15 * -0xda] + (0x64 + 0xf * -0x265 + 0x2390), bAz['QgPXS'](world_stand[-0x1da * -0xd + -0x12fe + -0x513], lOginatt[-0x2 * 0xf6b + 0x359 + 0x33 * 0x8a] / (-0x1ed + 0x259 + -106.5)), lOginatt[0x1d48 + -0x4 * 0x112 + -0x1900] + (-0x1 * -0x24cb + -0x1353 * -0x1 + -0xad * 0x53), lOginatt[-0x1c1c + 0x196 * -0xb + 0x2d8f] + (-0xf17 + 0x19e2 + -0xac7 * 0x1), cust ? rect : def_rect), Render['GradientRect'](bAz['jICuW'](world_stand[0x654 * 0x2 + 0xd2f + -0x19d7], -0x3 * 0x93 + -0x32d * 0x5 + -0x469 * -0x4), bAz['cwCFY'](world_stand[-0x17e5 + -0x1 * -0x2333 + -0x1 * 0xb4d], lOginatt[-0x1d20 + -0x217b + 0x2 * 0x1f4e] / (-0x20a8 + -0x1a9c + 15173.5)), bAz['jICuW'](lOginatt[0x11fa + 0xb21 + -0x1d1b], -0x3 * 0x75b + 0x2540 + -0xf2a), 0x12cb * 0x1 + -0x934 + -0x995, 0x711 * -0x1 + -0x8e1 * -0x2 + -0xab0, cust ? grad[-0x4c1 * 0x7 + -0x20 * 0x64 + -0x1 * -0x2dc7] : def_grad[0x17 * -0x15d + -0x21c8 * -0x1 + -0x17 * 0x1b], cust ? grad[-0x4d5 * -0x5 + -0x23eb + 0xbc3] : def_grad[0x14d7 * 0x1 + 0x8a6 + -0x1d7c]), shadow(world_stand[0xa80 + -0x21bd + 0x173d] + (0xf17 + 0x1 * -0x16eb + 2016.5), world_stand[-0x3ce * -0x2 + 0x6b9 + -0x72a * 0x2] - (-0x3d4 + 0x1 * -0x2041 + 0x241a), -0x1273 + 0x1 * 0x17b + 0x10f8, map_cache[g][0x2 * 0x531 + -0x274 + 0x7ea * -0x1], ![], undefined, cust ? text_c : def_text, -0x2349 + 0x10f1 * 0x1 + 0x24c * 0x8);
    if (bAz['rYxTH'](gEtusername, 0xb2 * -0x1a + -0x24e4 + 0x373e)) return;
    Render['Circle'](uSerlist[0x217c + 0x1187 + -0x3303], uSerlist[0x1f65 + -0x1c6a + -0x17d * 0x2], -0x5 * -0x6aa + -0x2 * 0xb06 + -0xb45 * 0x1, cust ? circle_int : def_circle_int), Render['FilledRect'](uSerlist[0x9 * -0x277 + 0x15d * 0x10 + 0x5f] + (0x11 * 0x1bf + 0xeb1 * -0x1 + -0xef4), uSerlist[-0x685 + 0x1 * 0x1c4b + -0x1 * 0x15c5] - bAz['ZWPxl'](lOginatt[-0x1a50 + -0x1 * 0x109d + -0x44b * -0xa], 0x1d6d + -0x90 + -7387.5), lOginatt[0x1307 + -0x2d4 * 0x4 + -0x18b * 0x5] > fOo[0x23 * -0xfd + -0x636 + 0x28cd] ? bAz['PQAoI'](lOginatt[-0x1d2f + 0x1a06 * 0x1 + -0x1 * -0x329], 0x27 * 0x87 + 0x193 * 0x17 + 0x38c1 * -0x1) : bAz['PQAoI'](fOo[0xae1 * -0x2 + -0x1a8a + -0x2c * -0x119], -0x1990 + -0x260f + 0x4 * 0xfe9), bAz['ChUtX'](lOginatt[0x15ec + -0x5f6 + 0x5f * -0x2b], fOo[0x2 * -0x12f3 + 0x1f1 * 0xd + 0xcaa]) ? lOginatt[0x1 * -0x20bf + -0x49d * -0x6 + 0x512] + (-0x225a + 0x182 * -0xf + 0x3907 * 0x1) : fOo[-0x9e * 0x23 + -0x1ca2 + 0x323d] + (-0x26b5 + 0xdb * -0xb + -0x302d * -0x1), cust ? rect : def_rect), Render['GradientRect'](bAz['PQAoI'](uSerlist[-0x1f1e + -0x8 * -0x1f7 + 0x12 * 0xdb], -0x1607 + 0x1422 + 0x21 * 0xf), bAz['cwCFY'](uSerlist[-0x87d + 0x9e6 + 0x5 * -0x48], lOginatt[0x1c09 + -0x4a4 * 0x1 + -0x1764] / (0x842 + 0xad * -0xa + -382.5)), lOginatt[0x5 * 0x2c5 + 0x2f1 + -0x10ca] > fOo[0x1ae3 * 0x1 + -0x2 * -0xfb5 + 0x136f * -0x3] ? bAz['PQAoI'](lOginatt[-0x1b81 + 0x1 * 0x22d1 + -0x750], -0x424 + 0x154c + 0x6b * -0x29) : fOo[0x1 * 0x10ad + 0xa6 + 0x5 * -0x377] + (0x1b8f + -0x1 * 0xaad + -0x10dd), -0x440 + -0x1 * -0x18b3 + -0x1471, 0x9c * 0x8 + 0xbbf + -0x109e, cust ? grad[0x1 * -0x1ec7 + 0x626 + -0x5 * -0x4ed] : def_grad[-0x216 * 0x6 + -0x1fe5 + 0x1 * 0x2c69], cust ? grad[0x22ef + -0xc * -0x101 + -0x2efa * 0x1] : def_grad[0x3ab * -0x5 + -0x169 * -0x19 + -0x10e9]), bAz['hDzSZ'](shadow, bAz['HPHfX'](uSerlist[-0x1 * 0x2207 + -0x1 * 0x1b1f + 0x3d26], -0x7cc + -0x1 * -0x132b + -2898.5), bAz['cwCFY'](uSerlist[0x16e1 * -0x1 + -0x6fd + -0x9f5 * -0x3], 0x1644 + 0x2 * -0x655 + -0x995 * 0x1), -0x2 * 0x116f + 0x174b + 0x1 * 0xb93, map_cache[g][-0x228f + 0x164d + -0xc46 * -0x1], ![], undefined, cust ? text_c : def_text, -0x21a * 0x12 + 0x178d + 0xe4f), shadow(bAz['OfCmn'](uSerlist[-0xa4d * 0x2 + -0xf6b * 0x1 + -0x1 * -0x2405], 0x5d4 * 0x1 + 0x158e + -6997.5), bAz['DzGbS'](uSerlist[-0x1 * -0x1c3d + 0x2169 * -0x1 + 0x52d], -0xbcd * 0x3 + 0x3 * 0x4b4 + 5457.5), -0x13d3 + -0x1cf5 + 0x30c8, map_cache[g][-0x10dc + -0x1 * -0x2041 + -0xa4 * 0x18], ![], undefined, cust ? text_c : def_text, -0x14e2 + 0x4b * -0x39 + 0x259d), Render['Circle'](uSerlist[0x1 * -0x740 + -0xd * -0x241 + -0x160d * 0x1], uSerlist[0xad8 + 0x3a * -0xc + 0x15 * -0x63], 0x119a + -0x537 + -0xc5d, [-0x2536 + 0x251 * -0x1 + 0x1 * 0x27bf, -0x1 * -0x98f + 0x1c2f + -0x24f6, -0xd * 0xcd + 0x9bc + -0xe5 * -0x1, -0x23e3 + -0x11b * 0xf + 0x3577]), Render['Line'](Render['GetScreenSize']()[0x1 * -0x8ef + -0xabd + 0x4 * 0x4eb] / (-0xa06 + -0x8e9 * -0x4 + -0x1 * 0x199c), Render['GetScreenSize']()[0x1cf4 + -0x1769 + -0x2 * 0x2c5] / (0x1690 + 0x5b9 * 0x1 + -0x13 * 0x17d), uSerlist[0x15af * 0x1 + 0x1242 + -0x27f1], uSerlist[0x2691 + -0xc1 * 0x29 + -0x7a7], cust ? line : def_line);
}
}

function on_chat() {
var aUTh = {
        'Sdajl': '4|0|1|3|2',
        'vZuIy': 'text',
        'lYIBY': 'Please hold a valid grenade!',
        'IKGHS': function (AUTh, GETusername) {
            return AUTh + GETusername;
        },
        'yDIDJ': function (FACtor, USErsname) {
            return FACtor == USErsname;
        },
        'xijrK': 'Half throw',
        'crjMS': function (BAZ, USErlist) {
            return BAZ(USErlist);
        },
        'VzBag': function (LOG1n, whiTelist) {
            return LOG1n(whiTelist);
        },
        'UnGdc': 'Jump+Half throw',
        'IMIcl': function (useRsname, autH) {
            return useRsname == autH;
        },
        'eRTUb': 'How far should you run (in ticks) to throw this nade? (default = 22)',
        'ErTyV': function (facTor, getUsername) {
            return facTor + getUsername;
        },
        'VEbRW': function (log1N, useRlist) {
            return log1N + useRlist;
        },
        'zSFkZ': function (logInatt, WhiTelist) {
            return logInatt + WhiTelist;
        },
        'OAYwp': function (FacTor, GetUsername) {
            return FacTor + GetUsername;
        },
        'HBAlg': function (LogInatt, Log1N) {
            return LogInatt + Log1N;
        },
        'ygdHy': '\", [',
        'VCQpg': '\",\"',
        'wbdMy': '\", \"',
        'smllL': '\", 0 ]\x0a',
        'BIRuT': 'Your grenade is ready to go!\x0a',
        'hjurN': function (AutH, UseRlist) {
            return AutH(UseRlist);
        },
        'LgxiT': function (UseRsname, lOgInatt) {
            return UseRsname > lOgInatt;
        },
        'PfzYf': function (gEtUsername, aUtH) {
            return gEtUsername(aUtH);
        },
        'UQtCD': 'Please enter a number!',
        'uKYZB': function (uSeRlist, fAcTor) {
            return uSeRlist(fAcTor);
        },
        'mllRm': function (lOg1N, wHiTelist) {
            return lOg1N(wHiTelist);
        },
        'RkzlI': function (uSeRsname, AUtH) {
            return uSeRsname(AUtH);
        },
        'BCEEs': 'Your grenade is ready to go, check console!',
        'EXIEy': function (FAcTor, WHiTelist) {
            return FAcTor + WHiTelist;
        },
        'zjrfd': function (LOgInatt, USeRsname) {
            return LOgInatt + USeRsname;
        },
        'wgBdV': function (LOg1N, USeRlist) {
            return LOg1N + USeRlist;
        },
        'eHgQX': function (GEtUsername, loGInatt) {
            return GEtUsername + loGInatt;
        },
        'AxHqS': '[ \"',
        'DLCKS': '], [',
        'yLSbT': '], \"',
        'jKJsz': function (geTUsername, whITelist) {
            return geTUsername + whITelist;
        },
        'QCGun': function (faCTor, usERlist) {
            return faCTor + usERlist;
        },
        'vedDa': function (auTH, loG1N) {
            return auTH + loG1N;
        },
        'TenFe': function (usERsname, GeTUsername) {
            return usERsname(GeTUsername);
        },
        'pJJwQ': ' ]\x0a',
        'ePEGi': 'quit'
    },
    bAR = aUTh['Sdajl']['split']('|'),
    bAZ = 0x1e73 * 0x1 + 0x8a7 + -0x271a;
while (!![]) {
    switch (bAR[bAZ++]) {
    case '0':
        if (!Entity['IsLocalPlayer'](Entity['GetEntityFromUserID'](Event['GetInt']('userid'))) || !chat_tut) return;
        continue;
    case '1':
        var uSErlist = Event['GetString'](aUTh['vZuIy']);
        continue;
    case '2':
        if (chat_stage == -0x1 * -0x470 + -0x136 * 0x1d + 0x51d * 0x6) {
            if (!~GRENADE_TYPES['indexOf'](Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())))) return Cheat['PrintChat'](aUTh['lYIBY']);
            temp_nade[-0x125 * 0x13 + 0x4a4 + 0x111b] = World['GetMapName'](), temp_nade[0x239a + -0x641 + -0x1d58] = Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), temp_nade[0x1589 + 0x1af * -0x7 + -0x1d * 0x56] = Local['GetViewAngles'](), temp_nade[-0x1 * 0x1eb2 + -0x2697 + 0x14 * 0x377] = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), temp_nade[0x58 * 0x60 + 0x12cb + 0x5 * -0xa5b] = aUTh['IKGHS'](uSErlist, ''), Cheat['PrintChat']('How do you throw this grenade? (0 = Throw, 1 = Run+Throw, 2 = Jump+Throw, 3 = Run+Jump+Throw, 4 = Half throw, 5 = Jump+Half throw)'), chat_start = Globals['Curtime'](), chat_stage++;
        } else {
            if (aUTh['yDIDJ'](chat_stage, -0xa32 + -0x119b + 0x1bce)) {
                var fACtor = '6|1|7|8|4|0|2|5|3' ['split']('|'),
                    fOO = -0x1 * 0x1991 + -0x217 + 0x938 * 0x3;
                while (!![]) {
                    switch (fACtor[fOO++]) {
                    case '0':
                        if (parseInt(uSErlist) == 0x1a6f + -0xb3 * -0x35 + -0x3f7a) temp_nade[0x2660 + -0xf11 + -0x174a] = aUTh['xijrK'];
                        continue;
                    case '1':
                        if (aUTh['yDIDJ'](aUTh['crjMS'](parseInt, uSErlist), -0x834 + -0x957 + 0x118b)) temp_nade[-0x88c * -0x4 + -0x21f2 + 0x1 * -0x39] = 'Throw';
                        continue;
                    case '2':
                        if (aUTh['VzBag'](parseInt, uSErlist) == -0x170e * -0x1 + -0x160d + -0xfc) temp_nade[-0x102f * -0x1 + 0x1 * -0x1357 + 0x32d] = aUTh['UnGdc'];
                        continue;
                    case '3':
                        if (aUTh['IMIcl'](aUTh['VzBag'](parseInt, uSErlist), 0x1 * -0xcd7 + -0xc28 + -0xa0 * -0x28)) chat_stage = 0x636 + 0x902 + -0x1 * 0xf35, Cheat['PrintChat'](aUTh['eRTUb']);
                        else {
                            if (aUTh['IMIcl'](parseInt(uSErlist), 0x5ce * -0x2 + -0x11e1 * 0x2 + 0x2f61 * 0x1)) chat_stage = -0x2313 + -0x704 + 0xe09 * 0x3, Cheat['PrintChat']('How far should you run (in units) to throw this nade? (default = 80)');
                            else {
                                var gETusername = '5|2|7|3|0|4|6|1' ['split']('|'),
                                    uSErsname = -0x17 * -0xbc + 0x2022 + -0x3106;
                                while (!![]) {
                                    switch (gETusername[uSErsname++]) {
                                    case '0':
                                        chat_stage = 0x25c0 + 0x1 * 0x1e58 + -0x4418;
                                        continue;
                                    case '1':
                                        chat_start = -0x5c9 * -0x1 + -0x18a1 + 0x12d8;
                                        continue;
                                    case '2':
                                        Cheat['PrintChat']('Your grenade is ready to go, check console!');
                                        continue;
                                    case '3':
                                        Cheat['Print'](aUTh['IKGHS'](aUTh['ErTyV'](aUTh['VEbRW'](aUTh['zSFkZ'](aUTh['OAYwp'](aUTh['HBAlg'](aUTh['HBAlg']('[ \"', World['GetMapName']()), aUTh['ygdHy']) + Entity['GetEyePosition'](Entity['GetLocalPlayer']()), '], ['), Local['GetViewAngles']()) + '], \"', Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()))), aUTh['VCQpg']) + temp_nade[-0x19cd + -0x1280 + 0x2c51], aUTh['wbdMy']) + temp_nade[-0x1 * -0x1e7 + 0x9b * 0x3 + 0x1 * -0x3b3] + aUTh['smllL']);
                                        continue;
                                    case '4':
                                        chat_tut = ![];
                                        continue;
                                    case '5':
                                        temp_nade[0x8b5 + 0x1dd9 + -0x2688] = 0x100b + -0x1c54 + 0xc49;
                                        continue;
                                    case '6':
                                        temp_nade = [];
                                        continue;
                                    case '7':
                                        Cheat['Print'](aUTh['BIRuT']);
                                        continue;
                                    }
                                    break;
                                }
                            }
                        }
                        continue;
                    case '4':
                        if (aUTh['hjurN'](parseInt, uSErlist) == -0xb * 0x36d + 0x7 * 0x1e1 + 0x1 * 0x188b) temp_nade[-0x11a4 + 0x1 * 0xf03 + 0x3 * 0xe2] = 'Run+Jump+Throw';
                        continue;
                    case '5':
                        chat_start = Globals['Curtime']();
                        continue;
                    case '6':
                        if (aUTh['hjurN'](isNaN, parseInt(uSErlist)) || aUTh['LgxiT'](aUTh['PfzYf'](parseInt, uSErlist), -0xba8 * 0x1 + -0x1b81 + 0x272e) || parseInt(uSErlist) < -0x1a * 0x53 + -0x8e6 + 0x2 * 0x8aa) return Cheat['PrintChat'](aUTh['UQtCD']);
                        continue;
                    case '7':
                        if (parseInt(uSErlist) == 0x93d + -0xc * 0xb + 0x18 * -0x5d) temp_nade[-0x13c7 + -0x1 * -0x194e + 0xa * -0x8d] = 'Run+Throw';
                        continue;
                    case '8':
                        if (aUTh['IMIcl'](aUTh['uKYZB'](parseInt, uSErlist), -0x1cb + 0x111b + -0xf4e)) temp_nade[0xb6e + -0x1 * 0x10b1 + 0x548 * 0x1] = 'Jump+Throw';
                        continue;
                    }
                    break;
                }
            } else {
                if (aUTh['IMIcl'](chat_stage, 0x1 * -0x16a3 + 0x1 * -0x2207 + 0x38ad)) {
                    chat_start = Globals['Curtime']();
                    if (aUTh['mllRm'](isNaN, aUTh['mllRm'](parseInt, uSErlist)) || aUTh['RkzlI'](parseInt, uSErlist) < 0x1bf5 + 0x17f2 + 0x33e6 * -0x1) return Cheat['PrintChat']('You must specify a valid time to run!');
                    temp_nade[-0x1 * 0x2ef + -0x54 + 0x1d * 0x1d] = parseInt(uSErlist), Cheat['PrintChat'](aUTh['BCEEs']), Cheat['Print']('Your grenade is ready to go!\x0a'), Cheat['Print'](aUTh['HBAlg'](aUTh['EXIEy'](aUTh['zjrfd'](aUTh['zjrfd'](aUTh['wgBdV'](aUTh['eHgQX'](aUTh['AxHqS'], World['GetMapName']()) + '\", [' + Entity['GetEyePosition'](Entity['GetLocalPlayer']()) + aUTh['DLCKS'], Local['GetViewAngles']()), aUTh['yLSbT']) + Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), '\",\"') + temp_nade[0x14d9 + -0x109 * 0x7 + 0x2f * -0x4a] + '\", \"', temp_nade[0x1e95 + 0x107e + -0x27a * 0x13]) + '\",', parseInt(uSErlist)) + ' ]\x0a'), chat_stage = 0x6 * -0x115 + 0x1af * 0x12 + -0x17d0, chat_tut = [], temp_nade = [], chat_start = 0x2318 * 0x1 + 0x70e + -0x2a26;
                } else {
                    if (chat_stage == 0x13d4 + 0xef * 0x4 + -0x178c * 0x1) {
                        var WHItelist = '4|0|6|3|7|9|1|2|8|5' ['split']('|'),
                            FOO = 0x1e66 + 0x1b4f + -0x39b5;
                        while (!![]) {
                            switch (WHItelist[FOO++]) {
                            case '0':
                                if (isNaN(parseInt(uSErlist)) || parseInt(uSErlist) < -0x11c + 0x17e2 + -0x16c5) return Cheat['PrintChat']('You must specify a valid distance to run!');
                                continue;
                            case '1':
                                chat_stage = -0x2403 + 0x2 * -0x1388 + 0x4b13;
                                continue;
                            case '2':
                                chat_tut = [];
                                continue;
                            case '3':
                                Cheat['PrintChat']('Your grenade is ready to go, check console!');
                                continue;
                            case '4':
                                chat_start = Globals['Curtime']();
                                continue;
                            case '5':
                                chat_start = 0x84e + 0x7ac * -0x3 + 0xeb6;
                                continue;
                            case '6':
                                temp_nade[0x503 * 0x7 + 0x11f + -0x242e] = aUTh['RkzlI'](parseInt, uSErlist);
                                continue;
                            case '7':
                                Cheat['Print'](aUTh['BIRuT']);
                                continue;
                            case '8':
                                temp_nade = [];
                                continue;
                            case '9':
                                Cheat['Print'](aUTh['jKJsz'](aUTh['jKJsz'](aUTh['QCGun'](aUTh['vedDa'](aUTh['vedDa']('[ \"' + World['GetMapName']() + '\", [' + Entity['GetEyePosition'](Entity['GetLocalPlayer']()), aUTh['DLCKS']), Local['GetViewAngles']()), '], \"') + Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), '\",\"') + temp_nade[0x265 * 0xd + 0x1336 + 0x3df * -0xd] + '\", \"' + temp_nade[-0x1 * -0x264f + 0xd58 + -0x89b * 0x6] + '\",', aUTh['TenFe'](parseInt, uSErlist)) + aUTh['pJJwQ']);
                                continue;
                            }
                            break;
                        }
                    }
                }
            }
        }
        continue;
    case '3':
        if (uSErlist['toLowerCase']() == 'cancel') {
            var LOGinatt = '0|4|5|1|2|3' ['split']('|'),
                BAR = -0x1 * -0x2542 + -0x657 + -0x1eeb;
            while (!![]) {
                switch (LOGinatt[BAR++]) {
                case '0':
                    chat_tut = ![];
                    continue;
                case '1':
                    chat_start = -0x8 * 0x266 + 0xa1 * -0x8 + 0x1838;
                    continue;
                case '2':
                    Cheat['PrintChat']('You have cancelled this grenade setup!');
                    continue;
                case '3':
                    return;
                case '4':
                    temp_nade = [];
                    continue;
                case '5':
                    chat_stage = -0x25e1 + 0x396 + -0x224b * -0x1;
                    continue;
                }
                break;
            }
        }
        continue;
    case '4':
        continue;
    }
    break;
}
}
Cheat['RegisterCallback']('player_say', 'on_chat'), Cheat['RegisterCallback']('Draw', 'render_grenades');
var locations = _locations['locations'],
lerp_time = 0xffa + -0xfab + 0x1 * -0x4f,
map_cache = [],
enabled_grenades = [],
selection_cache = -0x23e + 0x8 * -0xd6 + 0x8ee,
hand_cache = 0x7 * 0x283 + -0xf * 0x8f + -0x934;
const GRENADE_TYPES = ['CMolotovGrenade', 'CSmokeGrenade', 'CHEGrenade', 'CIncendiaryGrenade', 'CFlashbang'];
import_grenade_selection();
var weapon = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (weapon == 'CIncendiaryGrenade') weapon = 'CMolotovGrenade';
map_cache = locations['filter'](function (WhITelist) {
var AuTH = {
    'WvwYM': function (FaCTor, LoGInatt) {
        return FaCTor == LoGInatt;
    }
};
return WhITelist[-0x37b * -0x9 + -0x1 * 0xd6 + 0x1e7d * -0x1] == World['GetMapName']() && ~enabled_grenades['indexOf'](WhITelist[-0x6f7 * 0x2 + -0x12ff * -0x2 + -0x180d]) && AuTH['WvwYM'](WhITelist[0x49a + 0x2120 + -0x25b7], weapon);
}), Cheat['RegisterCallback']('CreateMove', 'print_nade_stats');
var loc_string_cache = UI['GetString'](nade_path['concat']('Locations file name (.js)')),
waiting_for_refresh = ![];

function drawer13233() {
var UsERlist = {
        'pFjIK': function (USERsname, USERlist, LOGInatt, LOG1N, AUTH, WHITelist, getuSername, userList, factOr) {
            return USERsname(USERlist, LOGInatt, LOG1N, AUTH, WHITelist, getuSername, userList, factOr);
        },
        'PRUTT': function (userSname, whitElist) {
            return userSname != whitElist;
        },
        'eVlzX': function (logiNatt, LogiNatt) {
            return false;
        },
        'nFGuP': 'locations.js',
        'jhIPd': function (FactOr, WhitElist) {
            return FactOr != WhitElist;
        },
        'FiyFs': function (GetuSername, UserList) {
            return GetuSername + UserList;
        },
        'nECUF': 'ser',
        'FNzwt': 'nam',
        'XqLNf': 'Circle',
        'gUMJH': 'Line',
        'pEtTA': 'Misc.',
        'tRBXm': 'SUBTAB_MGR',
        'ylVlU': 'Grenade helper',
        'eCGTf': 'Background',
        'Szyzi': 'Gradient 1',
        'LmcWN': 'SHEET_MGR',
        'rNAfX': 'Circle interior',
        'eVJDS': 'CIncendiaryGrenade',
        'OOPVM': function (UserSname) {
        },
        'mfgdy': function (uSerSname) {
        },
        'EmCLX': function (wHitElist, fActOr) {
            return wHitElist > fActOr;
        },
        'KwXIJ': 'Enabled grenades',
        'QChcY': 'Draw through walls (discord.gg/vz9G9VW)',
        'Aousf': function (gEtuSername, uSerList, lOgiNatt) {
            return gEtuSername(uSerList, lOgiNatt);
        },
        'Ntuyp': function (GEtuSername, LOgiNatt) {
            return GEtuSername * LOgiNatt;
        },
        'QbPTo': function (USerList, WHitElist) {
            return USerList + WHitElist;
        },
        'BXHVv': function (FActOr, USerSname) {
            return FActOr * USerSname;
        },
        'gVObY': function (faCtOr, geTuSername) {
            return faCtOr / geTuSername;
        },
        'SuQpr': function (usErSname, whItElist) {
            return usErSname + whItElist;
        },
        'xKNnB': function (usErList, loGiNatt) {
            return usErList + loGiNatt;
        },
        'AnnyB': function (UsErSname, LoGiNatt) {
            return UsErSname - LoGiNatt;
        },
        'QcYvE': function (UsErList, WhItElist, GeTuSername, FaCtOr, gETuSername, lOGiNatt, uSErSname, fACtOr, wHItElist) {
            return UsErList(WhItElist, GeTuSername, FaCtOr, gETuSername, lOGiNatt, uSErSname, fACtOr, wHItElist);
        },
        'yhGWr': function (uSErList, USErList) {
            return uSErList > USErList;
        },
        'mZoAN': function (FACtOr, LOGiNatt) {
            return FACtOr + LOGiNatt;
        },
        'MaVzw': function (USErSname, GETuSername) {
            return USErSname + GETuSername;
        },
        'bOGws': function (WHItElist, whiTElist) {
            return WHItElist / whiTElist;
        },
        'hMCtZ': function (facTOr, logINatt, getUSername, useRSname, useRList, UseRSname, LogINatt, FacTOr, WhiTElist) {
            return facTOr(logINatt, getUSername, useRSname, useRList, UseRSname, LogINatt, FacTOr, WhiTElist);
        }
    },
    LoG1N = Render['GetFont']('verdana.ttf', 10, true);
UI['GetValue'](key_path['concat']('Auto smoke in molotov')) == -0x1b4c + -0x8 * 0x3f2 + 0x1 * 0x3add && UsERlist['pFjIK'](shadow, -0x1 * 0x1767 + -0x166 + 0x94 * 0x2b, Render['GetScreenSize']()[0x199c + -0x1 * -0x261f + 0x6 * -0xa9f] * (-0x21ae + -0x35 * -0x61 + 3481.75), 0x638 * -0x4 + 0xdd + -0x801 * -0x3, 'SMOKE', !![], LoG1N, [0x11ab + 0x733 * 0x2 + -0x1f60, -0x9 * 0x3fa + 0x1f * 0x106 + 0x413, 0x7ff + -0x1b38 + -0x7 * -0x2e3, 0x1619 * -0x1 + 0x3 * -0x6f3 + -0x3a * -0xc1], 0x732 + -0xf6 * -0x1 + 0x40f * -0x2);
var UsERsname = UI['GetString'](nade_path['concat']('Locations file name (.js)'));
UsERlist['PRUTT'](UsERsname, 'locations.js') && UsERsname != '' && ~UsERsname['indexOf']('.js') ? (_locations = UsERlist['eVlzX'](require, UsERsname), locations = _locations['locations']) : (_locations = require(UsERlist['nFGuP']), locations = _locations['locations']);
UsERlist['PRUTT'](UsERsname, 'locations.js') && UsERlist['jhIPd'](UsERsname, '') && ~UsERsname['indexOf']('.js') && loc_string_cache != UsERsname && (loc_string_cache = UsERsname, set_map_cache());
var uSERlist = config[UsERlist['FiyFs']('Ge' + 'tU' + UsERlist['nECUF'], UsERlist['FNzwt']) + 'e'];
var fACTor = UI['GetValue'](nade_path['concat']('Custom colors')) ? 0xbf + -0x1 * -0x1232 + -0x12f0 : 0x1d2b + -0x91a * -0x1 + 0x1 * -0x2645;
UI['SetEnabled'](nade_path['concat']('Background'), fACTor), UI['SetEnabled'](nade_path['concat']('Gradient 1'), fACTor), UI['SetEnabled'](nade_path['concat']('Gradient 2'), fACTor), UI['SetEnabled'](nade_path['concat']('Text'), fACTor), UI['SetEnabled'](nade_path['concat'](UsERlist['XqLNf']), fACTor), UI['SetEnabled'](nade_path['concat']('Circle interior'), fACTor), UI['SetEnabled'](nade_path['concat'](UsERlist['gUMJH']), fACTor);
fACTor && (rect = UI['GetColor']([UsERlist['pEtTA'], UsERlist['tRBXm'], 'Grenade helper', 'SHEET_MGR', UsERlist['ylVlU'], UsERlist['eCGTf']]), grad[-0xfca + 0x2c * -0x73 + -0x238e * -0x1] = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper', UsERlist['Szyzi']]), grad[0x828 + -0x1710 + 0xee9] = UI['GetColor'](['Misc.', UsERlist['tRBXm'], 'Grenade helper', 'SHEET_MGR', 'Grenade helper', 'Gradient 2']), text_c = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper', 'Text']), circle = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', UsERlist['LmcWN'], UsERlist['ylVlU'], 'Circle']), circle_int = UI['GetColor'](['Misc.', 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', UsERlist['ylVlU'], UsERlist['rNAfX']]), line = UI['GetColor'](['Misc.', 'SUBTAB_MGR', UsERlist['ylVlU'], 'SHEET_MGR', 'Grenade helper', 'Line']));
var gETUsername = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (gETUsername == UsERlist['eVJDS']) gETUsername = 'CMolotovGrenade';
waiting_for_refresh && (~GRENADE_TYPES['indexOf'](gETUsername) && (UsERlist['OOPVM'](set_map_cache), waiting_for_refresh = ![]));
location_cache != UsERlist['eVlzX'](deserializeLocationConfiguration, UsERlist['mfgdy'](uSERlist)) && (moving_now = !![]);
chat_tut && UsERlist['EmCLX'](Globals['Curtime']() - chat_start, -0x4b4 + 0xe83 + -0xd0 * 0xc) && chat_start != 0x17de + -0x2 * 0x7cc + -0x846 && (chat_stage = 0x1bd * -0x6 + -0x185b * 0x1 + 0x22c9, chat_start = 0x3d * -0x32 + 0x83 * -0x17 + -0x8d * -0x2b, chat_tut = ![], temp_nade = [], Cheat['PrintChat']('Grenade setup has timed out!'));
if (!~GRENADE_TYPES['indexOf'](gETUsername)) return;
(selection_cache != UI['GetValue'](nade_path['concat'](UsERlist['KwXIJ'])) || hand_cache != gETUsername || !~GRENADE_TYPES['indexOf'](gETUsername)) && (UsERlist['mfgdy'](import_grenade_selection), set_map_cache());
if (map_cache['length'] == 0x1d5d + 0x12d7 + 0x4 * -0xc0d) return;
for (var aUTH in map_cache) {
    var wHITelist = Render['WorldToScreen']([map_cache[aUTH][-0x7 * 0x164 + -0x2 * -0x1177 + -0x1931][-0x1832 + 0x249e + -0xc6c], map_cache[aUTH][-0x1434 + -0x11bc + 0x25f1][-0x1 * -0x6b6 + -0x206d * 0x1 + 0x19b8], map_cache[aUTH][-0x6 * -0x2b0 + -0x1d3 * -0x4 + 0x4af * -0x5][0xd7c * 0x1 + 0x1b98 * -0x1 + 0xe1e] - (0x810 + -0x1 * 0x320 + 0x1 * -0x4b1)]);
    if (!map_cache[aUTH][0x8 * -0x22 + -0x1050 + 0x1167] && !UI['GetValue'](['Misc.', UsERlist['tRBXm'], UsERlist['ylVlU'], UsERlist['LmcWN'], 'Grenade helper', UsERlist['QChcY']])) continue;
    var lOG1N = UsERlist['Aousf'](angle_to_vec, map_cache[aUTH][-0xa * 0xc5 + 0xc7c * 0x1 + 0x33 * -0x18][0x891 + 0x8b2 + 0x9 * -0x1eb], map_cache[aUTH][-0x1 * 0xd22 + -0x26b5 + 0x33d9][-0x7c * 0x1a + -0xd0a * -0x1 + -0x71 * 0x1]),
        uSERsname = map_cache[aUTH][-0x897 + 0x7c + 0x207 * 0x4];
    lOG1N = Render['WorldToScreen']([uSERsname[0x2257 + -0x29 * 0x95 + -0x3 * 0x37e] + UsERlist['Ntuyp'](lOG1N[-0xc47 * -0x3 + 0x1 * 0x22d1 + 0x1 * -0x47a6], 0xca3 + 0xf1 * -0x19 + 0xc76), UsERlist['QbPTo'](uSERsname[-0x1 * -0x15f7 + -0x1 * 0x1206 + -0x3f0], UsERlist['BXHVv'](lOG1N[-0x1b44 + -0x1237 * 0x1 + -0x2d7c * -0x1], -0xb5 * 0x22 + -0x1633 * 0x1 + 0x2fcd)), uSERsname[-0xca1 + 0x29 * 0x57 + -0x14c] + lOG1N[-0x1b * 0xaf + 0x126a + -0xd * -0x1] * (-0x24dc * -0x1 + 0x19 + -0x2365)]);
    var lOGInatt = calc_dist(Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), map_cache[aUTH][0x1 * -0x97 + -0x1e91 * 0x1 + -0x1 * -0x1f29]);
    Render['Circle'](wHITelist[0x208d + -0x5 * 0x75b + 0x43a], wHITelist[0x1979 * 0x1 + 0x1 * -0x16fe + 0x1 * -0x27a], 0x7 * -0x2fe + -0x137a + -0x14e * -0x1f, fACTor ? circle : def_circle), Render['Circle'](wHITelist[-0x2107 + 0x863 + -0xa6 * -0x26], wHITelist[0x3d * -0x76 + 0x11b5 + -0x2b * -0x3e], -0x6d * -0x3d + -0x55d * 0x4 + -0x484, fACTor ? circle_int : def_circle_int);
    var GETUsername = Render['TextSize'](map_cache[aUTH][0x7e4 * -0x2 + -0x105d + -0x2029 * -0x1], LoG1N),
        FACTor = Render['TextSize'](map_cache[aUTH][0x1c1c + 0x7 * -0x419 + -0x98 * -0x1], LoG1N);
    Render['FilledRect'](wHITelist[-0x33 * 0x48 + 0x1757 + -0x2f * 0x31] + (-0x9f1 * 0x1 + -0xb99 + 0x1593), wHITelist[0x214d + -0xe81 + -0x12cb] - UsERlist['gVObY'](GETUsername[-0x128 * -0x12 + -0x1 * -0x1204 + -0x26d3 * 0x1], -0x984 + 0x2b6 + 1743.5), UsERlist['SuQpr'](GETUsername[0x35 * -0x68 + 0x4a6 + 0x10e2], 0x121f * -0x1 + 0x1 * -0x243a + -0x6cc * -0x8), UsERlist['xKNnB'](GETUsername[0xd9d + 0xb9d + -0x1939], 0x263b + 0x2 * 0x610 + -0x7 * 0x731), fACTor ? rect : def_rect), Render['GradientRect'](wHITelist[0x1 * -0x5ab + 0x4dc + 0xcf] + (0x1ce0 + -0x1b * -0x89 + -0x62f * 0x7), UsERlist['AnnyB'](wHITelist[0x880 + -0x6be + -0x1c1], UsERlist['gVObY'](GETUsername[0xa30 + 0x1781 + -0x4d0 * 0x7], 0x1aa4 + -0x6fa * 0x4 + 325.5)), GETUsername[-0x210 + 0x1ad5 * 0x1 + -0x18c5] + (0x2ed * -0x3 + -0x2 * 0xdd6 + 0x614 * 0x6), 0x2477 + 0x12 * 0x6b + -0x2bfb, 0x69d + 0x25f5 + -0x2c91, fACTor ? grad[-0x65c + 0x17 * 0x14e + -0x17a6] : def_grad[-0x17ec + -0xe32 * 0x2 + 0x3450], fACTor ? grad[-0x225 * -0xf + 0x1 * 0xb0f + -0x2b39] : def_grad[0x43f + 0x3 * 0x64b + -0x171f]), UsERlist['QcYvE'](shadow, wHITelist[-0x1f47 + 0xad5 + -0xa39 * -0x2] + (-0x166e + -0xfaa + 9764.5), UsERlist['AnnyB'](wHITelist[0x8bf + -0x58 * -0x2 + 0x8e * -0x11], 0x26e3 + 0x65d * -0x3 + -0x2 * 0x9e3), -0xf5 * -0x1d + 0x2ab + -0x1e6c, map_cache[aUTH][-0xffb + 0x1dfd + -0xdfe], !![], LoG1N, fACTor ? text_c : def_text, -0x6 * -0x662 + 0x453 * 0x8 + -0x48da);
    if (UsERlist['yhGWr'](lOGInatt, 0x2328 + -0x26ce + 0x3ec)) continue;
    Render['Circle'](lOG1N[0x579 + -0xeb3 + 0x93a], lOG1N[-0x269c + -0x633 + 0xef0 * 0x3], 0x1987 + 0x86b * 0x1 + -0x21f1, fACTor ? circle_int : def_circle_int), Render['FilledRect'](lOG1N[0x5c4 + -0x2 * -0x9ba + 0x8 * -0x327] + (-0x79a * 0x1 + 0x32b + 0x479), lOG1N[0x13c1 + 0x2443 * -0x1 + 0x1083] - UsERlist['gVObY'](GETUsername[0x3d * -0x77 + 0x22 * -0x9d + 0x3136], -0x529 * -0x4 + 0x1c4 + -5734.5), GETUsername[0xc * -0xb8 + -0x7 * -0xb2 + 0x3c2 * 0x1] > FACTor[0x24de + 0x3 * -0x851 + -0xbeb] ? UsERlist['mZoAN'](GETUsername[0x3 * 0x3cb + 0x131e * -0x1 + 0x7bd], 0x2634 + 0x1 * 0x169c + -0x3ccb) : UsERlist['mZoAN'](FACTor[-0x18a * -0x2 + -0x703 * -0x5 + -0x2623], 0xc * -0x127 + -0x7 * 0x11 + 0xe50), GETUsername[0x1 * -0x23c9 + -0x479 * -0x2 + 0x1ad8] > FACTor[0x1 * 0x17f + 0x26e4 * -0x1 + 0x2 * 0x12b3] ? GETUsername[0x129d + -0x38 * 0x2 + -0x2 * 0x916] + (-0x144f * 0x1 + 0x7 * 0xfc + 0xd7d) : FACTor[0x2 * 0x24a + -0x529 * -0x4 + 0x50b * -0x5] + (-0xc1 * -0xa + -0xd4f + 0x5d7), fACTor ? rect : def_rect), Render['GradientRect'](UsERlist['MaVzw'](lOG1N[-0x1537 * -0x1 + 0x2493 + -0x39ca], -0x131 * 0x10 + -0x36d * 0x3 + -0x1d61 * -0x1), lOG1N[0x2 * -0x11d1 + 0x134 * -0xe + -0x5 * -0xa7f] - UsERlist['bOGws'](GETUsername[0x1 * -0x1ee3 + -0x184d * -0x1 + -0x1 * -0x697], 0x18 * 0x76 + 0x29 * 0x1 + -2871.5), GETUsername[0xe20 * 0x1 + -0xf43 + 0x123] > FACTor[0x1ebf + 0x1a80 + -0x393f] ? GETUsername[-0x3a7 * 0x7 + 0x888 + 0x1109] + (0x2540 + 0x31 * -0x69 + -0x1122) : UsERlist['MaVzw'](FACTor[-0x3 * -0x32 + 0xe16 + 0x1 * -0xeac], -0x243d + 0x1bbf * 0x1 + 0x883), -0x146 * 0x12 + 0x165d * -0x1 + 0x2d4b * 0x1, 0x1e76 + -0x179a + -0x6db, fACTor ? grad[0x1464 + -0x1594 + 0x130] : def_grad[-0x2655 + -0x2103 + -0xc * -0x5f2], fACTor ? grad[-0x1ac5 * 0x1 + -0x1798 * 0x1 + 0x399 * 0xe] : def_grad[-0x1e0f + 0x1 * -0x2045 + 0x3e55]), UsERlist['QcYvE'](shadow, lOG1N[0x505 + 0x234b + 0xa * -0x408] + (0x3a4 + -0x5cf * 0x1 + 567.5), UsERlist['AnnyB'](lOG1N[-0x1102 + 0x2109 * -0x1 + 0x320c], -0xd95 + 0x1bc + 0x2 * 0x5ef), -0x2f * -0xc2 + 0x21d + -0x25bb * 0x1, map_cache[aUTH][0x6a0 + 0xa6 + -0x742], !![], LoG1N, fACTor ? text_c : def_text, -0x27f * 0x2 + 0x1d * -0xe9 + -0x649 * -0x5), UsERlist['hMCtZ'](shadow, lOG1N[0x1a * 0xaa + 0x9 * 0xfa + -0x1a0e] + (-0x2065 * 0x1 + 0xe9 * 0xf + 4810.5), UsERlist['MaVzw'](lOG1N[0x7f9 + -0x162 * -0x3 + -0xc1e], -0xfa8 + -0x1a67 + 10773.5), 0x1 * -0x1069 + -0x1b * 0x6c + 0x1bcd, map_cache[aUTH][0x8ac + 0x14a7 * -0x1 + 0x18 * 0x80], !![], LoG1N, fACTor ? text_c : def_text, -0x2 * 0x31 + 0xd19 * -0x1 + -0xd85 * -0x1), Render['Circle'](lOG1N[0x782 * -0x3 + 0x21ac + -0x2 * 0x593], lOG1N[-0x1243 + -0x2de * -0xa + -0xa68], 0x2366 + -0x1c74 + -0x6ec, [-0x1 * 0x23ab + -0xc3a * -0x2 + -0xb6f * -0x1, 0xf67 * 0x1 + 0x236b + 0x393 * -0xe, -0x585 * 0x2 + -0x311 * -0x3 + 0x20f, -0x336 + 0xb8c + 0x1 * -0x757]), Render['Line'](Render['GetScreenSize']()[-0x2092 + 0x10e8 + 0xfaa] / (0xb * 0x173 + 0xf54 + 0x1f43 * -0x1), Render['GetScreenSize']()[-0x390 * 0x6 + 0x1 * 0xdff + -0x46 * -0x1b] / (0x24f * 0x6 + -0x18ac + 0xad4), lOG1N[0xd20 + -0x82b * -0x1 + 0x154b * -0x1], lOG1N[0x71 * 0x34 + -0x2 * 0x5a7 + -0xba5], fACTor ? line : def_line);
}
UsERlist['jhIPd'](location_cache, UsERlist['eVlzX'](deserializeLocationConfiguration)) && (moving_now = !![]);

}
var use = ![];

function clamp(UseRList, GetUSername, wHiTElist) {
var gEtUSername = {
    'HOJaJ': function (uSeRList, fAcTOr) {
        return uSeRList > fAcTOr;
    },
    'nYaJy': function (lOgINatt, uSeRSname) {
        return lOgINatt < uSeRSname;
    }
};
if (gEtUSername['HOJaJ'](UseRList, wHiTElist)) return wHiTElist;
if (gEtUSername['nYaJy'](UseRList, GetUSername)) return GetUSername;
return UseRList;
}

function lerp(GEtUSername, FAcTOr, USeRList) {
var WHiTElist = {
        'MwADr': function (LOgINatt, usERSname) {
            return LOgINatt - usERSname;
        }
    },
    USeRSname = WHiTElist['MwADr'](FAcTOr, GEtUSername);
return USeRSname *= USeRList, USeRSname += GEtUSername, USeRSname;
}

function set_map_cache() {
var whITElist = {
        'tNSph': function (geTUSername, usERList) {
            return geTUSername == usERList;
        },
        'dugtS': 'CMolotovGrenade',
        'jEBPS': 'CCSPlayer'
    },
    faCTOr = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (whITElist['tNSph'](faCTOr, 'CIncendiaryGrenade')) faCTOr = whITElist['dugtS'];
if (faCTOr == whITElist['jEBPS']) {
    waiting_for_refresh = !![];
    return;
}
map_cache = locations['filter'](function (loGINatt) {
    return loGINatt[-0x1 * 0x327 + 0x2203 * -0x1 + 0x1 * 0x252a] == World['GetMapName']() && ~enabled_grenades['indexOf'](loGINatt[-0x172b * -0x1 + -0x61b + -0x110d]) && loGINatt[-0x543 * -0x1 + 0x1d * -0xda + 0x1372] == faCTOr;
});
}

function check_visibility() {
var WhITElist = {
        'yDuNC': function (uSERList, gETUSername) {
            return uSERList == gETUSername;
        },
        'lbXsx': function (lOGINatt, fACTOr, wHITElist) {
            return lOGINatt(fACTOr, wHITElist);
        },
        'oCvOU': 'CBasePlayer',
        'ONcAM': 'm_vecViewOffset[2]',
        'MzsYT': 'quit'
    },
    UsERList = '4|5|7|1|3|2|6|0' ['split']('|'),
    LoGINatt = 0xbef + 0x1de * 0xd + -0x193 * 0x17;
while (!![]) {
    switch (UsERList[LoGINatt++]) {
    case '0':
        for (var FaCTOr in map_cache) {
            var UsERSname = Trace['Line'](GeTUSername, head, map_cache[FaCTOr][-0x1 * -0x122c + -0x13ab + 0x180]);
            if (map_cache[FaCTOr][-0x25ad + -0x2 * 0x106b + 0x468a] == undefined) map_cache[FaCTOr]['push'](WhITElist['yDuNC'](UsERSname[-0x86f + 0x1 * -0xdb1 + 0x67 * 0x37], 0x1ed1 * 0x1 + 0x1 * -0xb98 + -0x1338));
            else map_cache[FaCTOr][-0x1 * -0xa64 + 0x261d + -0x307a] = UsERSname[-0x23ae + 0x93 * -0x1d + 0x1172 * 0x3] == -0x18be + 0xc37 * -0x1 + 0x13 * 0x1f2;
        }
        continue;
    case '1':
        head = Entity['GetProp'](GeTUSername, 'CBasePlayer', 'm_vecOrigin');
        continue;
    case '2':
        head = WhITElist['lbXsx'](vector_add, head, [-0xc16 * 0x2 + -0xb5a + 0x2 * 0x11c3, -0x2339 + 0x39b * -0x9 + 0x43ac, offset[0x11b * -0x7 + -0x164 * -0x4 + 0x22d]]);
        continue;
    case '3':
        offset = Entity['GetProp'](GeTUSername, WhITElist['oCvOU'], WhITElist['ONcAM']);
        continue;
    case '4':
        if (WhITElist['yDuNC'](World['GetServerString'](), '')) return;
        continue;
    case '5':
        var GeTUSername = Entity['GetLocalPlayer']();
        continue;
    case '6':
        continue;
    case '7':
        eye_angles = Local['GetViewAngles']();
        continue;
    }
    break;
}
}
var angles_met = ![];

function fix_move(uSERSname, USERSname, FACTOr) {
var LOGINatt = {
        'roPBF': '1|0|2|3|4|5',
        'KRePG': function (getusErname, factoR) {
            return getusErname < factoR;
        },
        'WGEHk': function (userlIst, UsersName) {
            return userlIst + UsersName;
        },
        'uksYt': function (UserlIst, FactoR) {
            return UserlIst - FactoR;
        },
        'jfcfL': function (GetusErname, WhiteList) {
            return GetusErname * WhiteList;
        },
        'spiyx': function (LoginAtt, gEtusErname) {
            return LoginAtt(gEtusErname);
        },
        'ekZUH': function (uSerlIst, wHiteList) {
            return uSerlIst + wHiteList;
        }
    },
    GETUSername = LOGINatt['roPBF']['split']('|'),
    WHITElist = -0x1eae + 0x1b1 * -0x1 + 0x205f;
while (!![]) {
    switch (GETUSername[WHITElist++]) {
    case '0':
        var USERList, usersName, loginAtt;
        continue;
    case '1':
        var whiteList = function (lOginAtt) {
            return lOginAtt / (-0x26c0 + 0x4 * 0x19e + -0x20fc * -0x1) * Math['PI'];
        };
        continue;
    case '2':
        if (LOGINatt['KRePG'](USERSname[0x1240 + -0x2e * 0x67 + 0x43], 0x1194 + -0x80b + -0x1 * 0x989)) USERList = LOGINatt['WGEHk'](-0x263 + 0x220b + 0x40 * -0x79, USERSname[0x202e + -0x2176 + -0x7 * -0x2f]);
        else USERList = USERSname[-0x205c + -0x21c5 + 0x4222];
        continue;
    case '3':
        if (LOGINatt['KRePG'](uSERSname[-0x25 * -0xcb + -0x1a6 * 0x3 + -0x1864], -0x1918 + -0xe * -0x7b + 0x92f * 0x2)) usersName = -0x79e * 0x5 + 0x2 * 0x1ac + -0x1 * -0x2426 + uSERSname[-0x8 * 0x18 + 0x16e5 + -0x589 * 0x4];
        else usersName = uSERSname[0x1126 + -0x23ba + 0x1295];
        continue;
    case '4':
        if (LOGINatt['KRePG'](usersName, USERList)) loginAtt = Math['abs'](usersName - USERList);
        else loginAtt = 0x31 * -0xca + 0x1 * -0x3aa + 0x2bbc - Math['abs'](LOGINatt['uksYt'](USERList, usersName));
        continue;
    case '5':
        return [LOGINatt['jfcfL'](Math['cos'](whiteList(loginAtt)), FACTOr[0x700 * 0x3 + 0x2207 + -0x1 * 0x3707]) + Math['cos'](LOGINatt['spiyx'](whiteList, loginAtt + (0x6fe + 0x1 * -0x1228 + 0x5c2 * 0x2))) * FACTOr[0x2466 + -0x29 * -0x4c + -0x1 * 0x3091], LOGINatt['ekZUH'](Math['sin'](whiteList(loginAtt)) * FACTOr[-0x19eb + -0x37b + 0x1d66], Math['sin'](whiteList(LOGINatt['ekZUH'](loginAtt, 0x553 * 0x5 + -0x1ce0 + 0x29b))) * FACTOr[-0x144e * 0x1 + -0x11c2 + 0x2611]), -0x1 * 0x1bc5 + 0x4 * -0x1f1 + 0x2389];
    }
    break;
}
}

function fix_locations() {
if (Cheat['GetUsername']() != Global['GetUsername']())
    while (!![]) {}
}
var lerp_time = 0x111f + 0x236b + -0x348a,
lerp_time_p = -0x80 + 0xbd5 * -0x1 + 0x7 * 0x1c3;

function move_forward(fActoR) {
var uSersName = {
        'Iiere': '5|9|14|6|0|8|1|12|11|10|13|4|7|3|2',
        'XfSrO': 'Throw mode',
        'CRMNY': 'quit',
        'xNfCF': function (FaCtoR, UsErlIst) {
            return FaCtoR && UsErlIst;
        },
        'LNjbh': function (LoGinAtt, GeTusErname, WhIteList, gETusErname) {
            return LoGinAtt(GeTusErname, WhIteList, gETusErname);
        },
        'uzcPA': function (fACtoR, wHIteList) {
            return fACtoR + wHIteList;
        },
        'LTCGM': function (uSErlIst, uSErsName) {
            return uSErlIst / uSErsName;
        },
        'nnPVr': function (lOGinAtt, USErsName) {
            return lOGinAtt - USErsName;
        },
        'GxgRE': function (USErlIst, LOGinAtt) {
            return USErlIst + LOGinAtt;
        },
        'cUtcI': function (GETusErname, FACtoR) {
            return GETusErname * FACtoR;
        },
        'zRCtg': function (WHIteList, whiTeList) {
            return WHIteList < whiTeList;
        }
    },
    USerlIst = uSersName['Iiere']['split']('|'),
    FActoR = -0x75 * -0x1e + -0xb7e + 0x4 * -0x8e;
while (!![]) {
    switch (USerlIst[FActoR++]) {
    case '0':
        var LOginAtt = fix_move(fActoR, geTusErname, GEtusErname);
        continue;
    case '1':
        var USersName = UI['GetValue'](nade_path['concat'](uSersName['XfSrO'])) == 0x830 * -0x4 + -0xcca + 0x2d8c ? !![] : ![];
        continue;
    case '2':
        return !![];
    case '3':
        UserCMD['SetMovement'](LOginAtt);
        continue;
    case '4':
        UserCMD['SetViewAngles'](fActoR, usErsName || angles_met);
        continue;
    case '5':
        var WHiteList = UI['GetValue'](nade_path['concat']('Legit aim smooth'));
        continue;
    case '6':
        var GEtusErname = [0x22f4 + -0x15a4 + -0xb8e, 0xf8f + 0x5 * 0x43e + -0x24c5, -0x3ff + -0x8a2 + 0xca1];
        continue;
    case '7':
        if (!angles_met) return ![];
        continue;
    case '8':
        var usErsName = UI['GetValue'](nade_path['concat']('Throw mode')) == -0x1157 + -0xe * -0x279 + -0x8a3 * 0x2 ? !![] : ![];
        continue;
    case '9':
        var geTusErname = Local['GetViewAngles']();
        continue;
    case '10':
        if (fActoR[-0xe07 + -0x1db0 + 0x2bb9] == undefined) fActoR[0x22cf * -0x1 + -0x1a * -0xbd + 0x535 * 0x3] = -0xfbd + 0x3d * 0x57 + -0x4fe;
        continue;
    case '11':
        continue;
    case '12':
        if (uSersName['xNfCF'](USersName, !angles_met)) {
            usErsName = ![], lerp_time = uSersName['LNjbh'](clamp, uSersName['uzcPA'](lerp_time, Globals['TickInterval']() * ((0x132d + -0x1f3c + 0xc10) / WHiteList)), -0x3e0 + 0x13c9 + -0xfe9, 0x1dc4 + -0x1 * 0x1871 + 0x2 * -0x2a9), lerp_time_p = uSersName['LNjbh'](clamp, lerp_time + Globals['TickInterval']() * (uSersName['LTCGM'](-0x3e9 + -0xb8 * 0x2f + -0x5 * -0x78a, WHiteList) * (-0x13 * 0x6a + 0x1aac + -4813.2)), 0x5a7 * -0x5 + 0xae6 + 0x115d, 0x4ee * -0x4 + -0x48 * -0x6f + -0xb7f);
            var usErlIst = uSersName['nnPVr'](closest[0xb * 0x9b + 0x1 * 0x1791 + 0xf1c * -0x2][0x2 * -0x12c5 + -0x481 * 0x4 + 0x378e], Local['GetViewAngles']()[0x12c5 * -0x2 + 0x1fc0 + 0x5ca]),
                faCtoR = uSersName['nnPVr'](closest[-0x1c74 + 0x15e9 + 0x68d][0x26cb + -0xe03 * 0x1 + -0x18c7 * 0x1], Local['GetViewAngles']()[-0x1cbf + 0x3f * 0x79 + -0x107]);
            while (faCtoR > -0x1 * 0x6e5 + -0x34c + -0x1 * -0xae5) faCtoR -= -0x12fd + -0x1ecd + 0x3332;
            while (faCtoR < -(0xc6a + -0x12bb + 0x705)) faCtoR += 0x247e + -0x3a9 * -0x1 + 0x26bf * -0x1;
            var loGinAtt = uSersName['GxgRE'](usErlIst * lerp_time_p, Local['GetViewAngles']()[-0x2 * -0xda4 + -0x81e * -0x3 + -0x33a2]),
                whIteList = uSersName['cUtcI'](faCtoR, lerp_time) + Local['GetViewAngles']()[0x1 * 0xad3 + 0x430 * -0x2 + -0x272];
            fActoR = [loGinAtt, normalize(whIteList), 0xe5 * -0x8 + -0x34f + 0xa77];
        }
        continue;
    case '13':
        if (uSersName['zRCtg'](Math['abs'](fActoR[0x1899 + 0x4d * -0x6d + 0x830] - UsErsName[0x28f * -0xa + -0x19 * 0x53 + 0x23f * 0xf]), -0x5d0 + 0x33d + 659.02) && uSersName['zRCtg'](Math['abs'](uSersName['nnPVr'](fActoR[0x51b * 0x4 + -0x532 + -0x3 * 0x513], UsErsName[-0x112a + 0x87 * 0x45 + -0xa4 * 0x1e])), -0x1911 + 0xb8e + 3459.02) && USersName && !angles_met) angles_met = !![];
        continue;
    case '14':
        var UsErsName = fActoR;
        continue;
    }
    break;
}
}

function recheck_vis() {
var useRsName = {
    'ShPvj': '0|3|2|4|5|7|1|6',
    'iHglg': function (WhiTeList, FacToR) {
        return WhiTeList == FacToR;
    },
    'wAUXe': 'm_vecOrigin',
    'wEkwq': 'm_vecViewOffset[2]',
    'nGQYw': function (UseRlIst, GetUsErname) {
        return UseRlIst == GetUsErname;
    },
    'MdLyH': function (LogInAtt, lOgInAtt, gEtUsErname) {
        return LogInAtt(lOgInAtt, gEtUsErname);
    }
};
if (Globals['Curtime']() - counting_nades < 0x60c + -0x19 * -0x115 + -0x210a) return;
if (use) {
    var getUsErname = useRsName['ShPvj']['split']('|'),
        useRlIst = -0x68e * 0x5 + -0xb * 0x1b9 + 0x33b9 * 0x1;
    while (!![]) {
        switch (getUsErname[useRlIst++]) {
        case '0':
            if (useRsName['iHglg'](map_cache['length'], 0x11cf + 0x7c2 + 0x253 * -0xb) || useRsName['iHglg'](World['GetServerString'](), '')) return;
            continue;
        case '1':
            continue;
        case '2':
            eye_angles = Local['GetViewAngles']();
            continue;
        case '3':
            var facToR = Entity['GetLocalPlayer']();
            continue;
        case '4':
            head = Entity['GetProp'](facToR, 'CBasePlayer', useRsName['wAUXe']);
            continue;
        case '5':
            offset = Entity['GetProp'](facToR, 'CBasePlayer', useRsName['wEkwq']);
            continue;
        case '6':
            for (var logInAtt in map_cache) {
                var UseRsName = Trace['Line'](facToR, head, map_cache[logInAtt][0x1937 + -0x5 * 0x6e2 + 0x934]);
                if (useRsName['iHglg'](map_cache[logInAtt][-0x14d1 * 0x1 + 0x1ab0 + 0x5d8 * -0x1], undefined)) map_cache[logInAtt]['push'](UseRsName[0x25e6 + -0x1 * 0x54c + -0x2099] == -0x2581 + -0x1 * 0x23b1 + 0x4933);
                else map_cache[logInAtt][-0xa0d * -0x1 + 0x58d * -0x3 + -0x1 * -0x6a1] = useRsName['nGQYw'](UseRsName[-0x5 * 0x4eb + 0x1 * 0x21d0 + 0x127 * -0x8], 0x1dd9 + -0x141c + -0x9bc);
            }
            continue;
        case '7':
            head = useRsName['MdLyH'](vector_add, head, [-0x268a + 0xa04 * -0x2 + 0x6 * 0x9c3, -0x18af + 0x60a * -0x1 + 0x1eb9, offset[-0x14be + 0x1 * -0xc1a + 0x8 * 0x41b]]);
            continue;
        }
        break;
    }
}
}

function normalize(fAcToR) {
var uSeRlIst = {
    'piMgm': function (uSeRsName, wHiTeList) {
        return uSeRsName > wHiTeList;
    }
};
while (uSeRlIst['piMgm'](fAcToR, 0x1 * 0x40d + -0x1 * -0x1723 + -0x1a7c)) fAcToR -= 0x22cb + -0xe79 + -0x21a * 0x9;
while (fAcToR < -(-0x26d + 0x25 * 0x104 + -0x2273)) fAcToR += 0x2 * 0x45a + -0x209 * 0x7 + 0x1 * 0x6f3;
return fAcToR;
}
var closest = [],
temp_angs_met = ![];

function move_on_key() {
var USeRsName = {
        'ggYKp': function (WhitEList, FactOR) {
            return WhitEList == FactOR;
        },
        'VyLHD': 'Auto throw move range',
        'XIhtF': 'CBasePlayer',
        'FLcRn': function (LogiNAtt, GetuSErname, UserLIst) {
            return LogiNAtt(GetuSErname, UserLIst);
        },
        'VyISg': function (UserSName, lOgiNAtt) {
            return UserSName - lOgiNAtt;
        },
        'hyaJE': function (gEtuSErname, wHitEList) {
            return gEtuSErname == wHitEList;
        },
        'LEdlQ': 'Throw mode',
        'udkyB': function (uSerLIst, uSerSName) {
            return uSerLIst(uSerSName);
        },
        'UUNCE': function (fActOR, USerLIst) {
            return fActOR < USerLIst;
        },
        'pJlQw': 'Legit aim smooth',
        'hegJa': function (USerSName, WHitEList) {
            return USerSName / WHitEList;
        },
        'Ftirg': function (LOgiNAtt, FActOR) {
            return LOgiNAtt + FActOR;
        },
        'mGNAP': function (GEtuSErname, usErLIst) {
            return GEtuSErname * usErLIst;
        },
        'UFKZS': function (whItEList, loGiNAtt) {
            return whItEList - loGiNAtt;
        },
        'sSyKB': function (usErSName, faCtOR) {
            return usErSName - faCtOR;
        },
        'okNJD': function (geTuSErname, LoGiNAtt) {
            return geTuSErname == LoGiNAtt;
        },
        'VvJaC': function (FaCtOR, GeTuSErname) {
            return FaCtOR + GeTuSErname;
        },
        'QDJSQ': function (UsErSName, UsErLIst) {
            return UsErSName * UsErLIst;
        },
        'IgAal': function (WhItEList, uSErSName) {
            return WhItEList - uSErSName;
        },
        'RobJM': 'Run+Throw',
        'ScBcY': '2|0|4|1|6|7|3|5',
        'dgGkh': function (lOGiNAtt, wHItEList) {
            return lOGiNAtt == wHItEList;
        },
        'CHsIN': function (fACtOR, uSErLIst) {
            return fACtOR > uSErLIst;
        },
        'kqOlP': function (gETuSErname, LOGiNAtt) {
            return gETuSErname - LOGiNAtt;
        },
        'SAotv': function (FACtOR, USErLIst) {
            return FACtOR | USErLIst;
        },
        'lquSF': '3|0|4|2|1',
        'BlaOL': 'Jump+Throw',
        'uiAHr': 'Run+Jump+Throw',
        'Vpbda': function (WHItEList, GETuSErname, USErSName) {
            return WHItEList(GETuSErname, USErSName);
        },
        'BipPC': function (whiTEList, facTOR) {
            return whiTEList == facTOR;
        },
        'aRYkr': function (useRSName, useRLIst, logINAtt) {
            return useRSName(useRLIst, logINAtt);
        },
        'rysaw': function (getUSErname, LogINAtt) {
            return getUSErname(LogINAtt);
        },
        'uNIGb': function (UseRSName, GetUSErname, UseRLIst) {
            return UseRSName(GetUSErname, UseRLIst);
        },
        'hsEow': function (WhiTEList, FacTOR) {
            return WhiTEList < FacTOR;
        },
        'iIgKP': function (fAcTOR, gEtUSErname) {
            return fAcTOR == gEtUSErname;
        },
        'UIIvD': 'Half throw',
        'YqirK': function (uSeRSName, uSeRLIst) {
            return uSeRSName == uSeRLIst;
        },
        'WAoVG': function (lOgINAtt, wHiTEList) {
            return lOgINAtt << wHiTEList;
        },
        'WYQox': function (GEtUSErname, FAcTOR) {
            return GEtUSErname << FAcTOR;
        },
        'esRBJ': 'Jump+Half throw',
        'NaIzR': function (WHiTEList, LOgINAtt) {
            return WHiTEList | LOgINAtt;
        },
        'pHBLv': function (USeRSName, USeRLIst) {
            return USeRSName | USeRLIst;
        },
        'wzSSJ': function (faCTOR, loGINAtt) {
            return faCTOR << loGINAtt;
        },
        'Azyhq': function (whITEList, usERSName) {
            return whITEList == usERSName;
        },
        'oaQSe': function (geTUSErname, usERLIst) {
            return geTUSErname >= usERLIst;
        },
        'Puwiu': '2|12|0|6|1|9|4|3|7|14|11|10|5|13|8',
        'fcjdo': 'DT_CSPlayer',
        'kztrA': 'm_vecVelocity[0]',
        'astTZ': function (LoGINAtt, UsERLIst) {
            return LoGINAtt(UsERLIst);
        },
        'DNauZ': function (FaCTOR, UsERSName) {
            return FaCTOR < UsERSName;
        },
        'YLZhm': function (GeTUSErname, WhITEList) {
            return GeTUSErname - WhITEList;
        },
        'OPdfj': function (uSERSName, wHITEList, fACTOR, uSERLIst) {
            return uSERSName(wHITEList, fACTOR, uSERLIst);
        },
        'Usuzo': function (lOGINAtt, gETUSErname) {
            return lOGINAtt + gETUSErname;
        },
        'yaQGF': function (USERLIst, LOGINAtt) {
            return USERLIst - LOGINAtt;
        },
        'AxpYV': function (FACTOR, USERSName) {
            return FACTOR * USERSName;
        },
        'JxNjK': function (GETUSErname, WHITEList, userliSt) {
            return GETUSErname(WHITEList, userliSt);
        }
    },
    LOgInAtt = '32|24|27|5|17|22|25|29|10|6|33|1|7|0|12|4|2|16|31|11|19|8|3|9|15|26|20|13|28|14|21|30|18|23' ['split']('|'),
    FAcToR = 0x119e + -0x1a90 + 0x8f2;
while (!![]) {
    switch (LOgInAtt[FAcToR++]) {
    case '0':
        if (this['jump_tick'] == null) this['jump_tick'] = -0xc63 + 0x1843 + -0xbe0;
        continue;
    case '1':
        if (USeRsName['ggYKp'](this['ignore_input'], null)) this['ignore_input'] = ![];
        continue;
    case '2':
        !this['running'] && !this['ignore_input'] && (closest = map_cache['sort'](function (whitelIst, loginaTt) {
            return factOR['xpydE'](factOR['yTbfH'](calc_dist, usERlIst, whitelIst[0xf09 + -0x2 * -0x2b0 + -0x1468]), calc_dist(usERlIst, loginaTt[-0x5 * -0x4ca + -0xb6 * 0x34 + -0x73 * -0x1d]));
        })[0x1517 + 0x1465 * 0x1 + 0x5 * -0x84c], this['closest'] = closest);
        continue;
    case '3':
        var USeRlIst = UI['GetValue'](nade_path['concat'](USeRsName['VyLHD']));
        continue;
    case '4':
        var WHiTeList = Entity['GetProp'](Entity['GetLocalPlayer'](), USeRsName['XIhtF'], 'm_vecViewOffset[2]');
        continue;
    case '5':
        var GEtUsErname = UI['GetValue'](nade_path['concat']('Throw mode')) == 0x2 * 0xc77 + 0x1a55 + -0x3342 ? !![] : ![];
        continue;
    case '6':
        if (USeRsName['ggYKp'](this['running'], null)) this['running'] = ![];
        continue;
    case '7':
        if (this['run_start'] == null) this['run_start'] = -0x1a3 + 0xb26 + -0x983 * 0x1;
        continue;
    case '8':
        if (this['ignore_input']) return;
        continue;
    case '9':
        if (USeRsName['FLcRn'](calc_dist, usERlIst, closest[0x1566 + 0x25 * 0x1d + 0x1996 * -0x1]) > USeRlIst && !this['ignore_input'] && !this['running']) return;
        continue;
    case '10':
        if (USeRsName['ggYKp'](this['start_tick'], null)) this['start_tick'] = -0x26b * -0x4 + -0x19a0 + 0xff4;
        continue;
    case '11':
        if (this['next_tick_ang'] == null) this['next_tick_ang'] = [];
        continue;
    case '12':
        var usERlIst = Entity['GetProp'](Entity['GetLocalPlayer'](), 'CBaseEntity', 'm_vecOrigin');
        continue;
    case '13':
        UsERsName = Math['floor'](UsERsName);
        continue;
    case '14':
        var whITeList = VectorAngles(vector_sub(logiNAtt, [closest[-0xa5f + 0x99f + 0xc1][-0x865 + 0x15cd + -0xd68], closest[0x1d8 + 0x1 * -0x891 + 0x2a * 0x29][-0x1a90 + 0x9b * 0x28 + -0x1 * -0x259], USeRsName['VyISg'](closest[-0x2624 * 0x1 + 0x1d2a + 0x8fb][-0x1 * -0x312 + -0x1893 + 0x1583], WHiTeList[-0x76d * -0x1 + 0x1ca + 0x151 * -0x7])]));
        continue;
    case '15':
        var loGInAtt = ![];
        continue;
    case '16':
        continue;
    case '17':
        var faCToR = USeRsName['hyaJE'](UI['GetValue'](nade_path['concat'](USeRsName['LEdlQ'])), 0xd1 * 0x27 + -0x1ade + -0x4f7) ? !![] : ![];
        continue;
    case '18':
        !faCToR ? loGInAtt = USeRsName['udkyB'](move_to_target, closest[-0x1 * 0x140e + -0x1 * 0x1445 + -0x1 * -0x2854]) : loGInAtt = !![];
        continue;
    case '19':
        if (this['next_tick_ang']['length'] || USeRsName['UUNCE'](USeRsName['VyISg'](Globals['Tickcount'](), this['throw_time']), 0x2392 + -0x213 * -0x3 + -0x29c3 * 0x1) && this['throw_time'] != 0x140 + 0x1389 * 0x1 + 0x14c9 * -0x1) {
            if (faCToR) {
                GEtUsErname = ![];
                var geTUsErname = UI['GetValue'](nade_path['concat'](USeRsName['pJlQw']));
                lerp_time = clamp(lerp_time + Globals['TickInterval']() * USeRsName['hegJa'](0x129 + -0x4 * -0x4c1 + -0x2 * 0xa16, geTUsErname), 0x2 * 0xfcb + -0x521 + 0x1a75 * -0x1, -0xff * -0xa + -0x1 * -0x13af + 0x2 * -0xed2), lerp_time_p = clamp(USeRsName['Ftirg'](lerp_time, Globals['TickInterval']() * ((0x748 + 0xf5 * -0xa + 0x24b) / USeRsName['mGNAP'](geTUsErname, -0x7c4 + -0x1297 + 6747.8))), 0x1f7 + 0x62 * 0x13 + -0x2b * 0x37, 0xd53 + 0x1f6b + 0x1 * -0x2cbd);
                var usERsName = Local['GetViewAngles'](),
                    WhITeList = closest[-0x17a6 + -0x143 + 0x18eb],
                    LoGInAtt = closest[0xc3 * -0x1b + -0x38f + 0x1822][-0x23ec + -0x1 * -0xf2c + 0x14c0] - usERsName[0x62 * 0x41 + -0x18f * 0x9 + -0xadb],
                    FaCToR = closest[-0x493 + 0xb * 0x283 + 0x5 * -0x49c][-0xf91 + -0x6 * 0x3c7 + 0x263c] - usERsName[0x5 * 0x3f1 + -0x1a51 + 0x69d];
                FaCToR = normalize(FaCToR);
                var UsERlIst = USeRsName['Ftirg'](LoGInAtt * lerp_time_p, usERsName[0x1 * -0x26c3 + 0x18dd + -0x2 * -0x6f3]),
                    GeTUsErname = USeRsName['mGNAP'](FaCToR, lerp_time) + usERsName[0x60 * -0x67 + -0x13b7 + 0x2 * 0x1d2c];
                WhITeList = [UsERlIst, normalize(GeTUsErname), 0x20ed + -0x898 + -0x1855];
                if (Math['abs'](USeRsName['UFKZS'](usERsName[-0x3d * -0x72 + 0x25cf + -0x40f9], WhITeList[-0x9 * 0x284 + -0xc59 + 0xd * 0x2b1])) < -0x19dc * -0x1 + -0x8b6 + -4389.95 && Math['abs'](USeRsName['sSyKB'](usERsName[-0xbc4 + -0x115e + -0x1d23 * -0x1], WhITeList[-0x1bb6 + 0x14c4 + 0x6f3])) < 0x17a6 + -0x11 * 0x79 + -3996.95) angles_met = !![];
                this['next_tick_ang'] = [UsERlIst, USeRsName['udkyB'](normalize, GeTUsErname), 0x717 + 0x91d + 0xf4 * -0x11];
            } else angles_met = !![];
            if (USeRsName['okNJD'](this['next_tick_ang'][0x13e5 + -0x5 * -0xf3 + -0x1 * 0x18a2], undefined)) this['next_tick_ang'][-0x342 + -0x1 * -0x1091 + -0x2a9 * 0x5] = 0x1e * -0x15 + -0x61d + 0x893;
            UserCMD['SetViewAngles'](this['next_tick_ang'], GEtUsErname);
        }
        continue;
    case '20':
        var UsERsName = Math['sqrt'](USeRsName['VvJaC'](USeRsName['QDJSQ'](userLIst[0x1 * -0x1049 + 0x2 * 0x5b3 + 0x4e3], userLIst[-0xae2 * 0x1 + -0x246e + 0x2f50]), userLIst[-0x233 * -0x3 + -0x184 * -0x11 + -0x205c] * userLIst[0x20ed + 0x429 + -0x1 * 0x2515]));
        continue;
    case '21':
        whITeList = [whITeList[-0x3f * 0x17 + -0x1c18 + -0x21c1 * -0x1], USeRsName['IgAal'](whITeList[0xa42 * -0x1 + 0x21eb + -0x17a8], 0xe8 * -0x6 + -0x7 * 0x159 + 0xf93), whITeList[0x1 * 0x1f0c + 0x5 * -0x79d + 0x707]];
        continue;
    case '22':
        if (USeRsName['okNJD'](this['throw_time'], null)) this['throw_time'] = 0x1cab + 0x1 * -0x1712 + -0x599 * 0x1;
        continue;
    case '23':
        if (loGInAtt || this['running']) {
            this['in_progress'] = !![];
            if (closest[-0x4ed + 0x5 * -0x143 + 0xb41 * 0x1] == 'Throw') this['next_tick_ang'] = closest[0x1 * 0x4e9 + 0x234c + 0xfb * -0x29], angles_met && (UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x5be + -0x2 * -0xf51 + -0x18e3), this['throw_time'] = Globals['Tickcount'](), this['attacked'] = !![], this['ignore_input'] = !![]);
            else {
                if (USeRsName['okNJD'](closest[0x2 * 0x119b + 0x6 * -0x417 + 0x9 * -0x12f], USeRsName['RobJM'])) {
                    var uSERsName = USeRsName['ScBcY']['split']('|'),
                        gETUsErname = -0x61 * 0x56 + 0x195b + -0x3 * -0x269;
                    while (!![]) {
                        switch (uSERsName[gETUsErname++]) {
                        case '0':
                            this['next_tick_ang'] = closest[0x17b * -0xc + 0x37 * -0x40 + 0x1f86];
                            continue;
                        case '1':
                            USeRsName['dgGkh'](this['start_tick'], -0x3 * -0x535 + 0x20b1 + -0x3050) && (this['start_tick'] = Globals['Tickcount']());
                            continue;
                        case '2':
                            if (!this['closest']['length']) this['closest'] = closest;
                            continue;
                        case '3':
                            this['running'] = !![];
                            continue;
                        case '4':
                            if (!angles_met) return;
                            continue;
                        case '5':
                            if (this['running'] && USeRsName['CHsIN'](USeRsName['kqOlP'](Globals['Tickcount'](), this['run_start']), closest[0x994 + 0x18ae + 0x2 * -0x111e])) {
                                !this['attacked'] && angles_met && (UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons'](), 0x6a0 + 0x259b + -0x2c3a)), this['throw_time'] = Globals['Tickcount'](), this['attacked'] = !![]);
                                if (USeRsName['kqOlP'](Globals['Tickcount'](), this['run_start']) > closest[-0x25cc + 0x2 * 0x3b3 + 0x1e6c] + (-0x5 * 0x697 + 0x1 * 0x2452 + -0x357)) {
                                    var fACToR = USeRsName['lquSF']['split']('|'),
                                        lOGInAtt = 0x1e28 + -0x1 * -0x661 + -0x2489;
                                    while (!![]) {
                                        switch (fACToR[lOGInAtt++]) {
                                        case '0':
                                            this['attacked'] = ![];
                                            continue;
                                        case '1':
                                            this['run_start'] = 0xa6 * 0x1c + 0x11f5 + -0x241d;
                                            continue;
                                        case '2':
                                            this['next_tick_ang'] = closest[0x125 * -0x1 + -0xcd * -0x9 + -0x5 * 0x136];
                                            continue;
                                        case '3':
                                            this['running'] = ![];
                                            continue;
                                        case '4':
                                            this['ignore_input'] = !![];
                                            continue;
                                        }
                                        break;
                                    }
                                }
                            }
                            continue;
                        case '6':
                            if (USeRsName['dgGkh'](this['run_start'], 0xd96 + -0x26f8 + 0x1962)) this['run_start'] = Globals['Tickcount']();
                            continue;
                        case '7':
                            if (!move_forward(closest[-0xd1d + -0x1 * 0x2133 + 0x2e52 * 0x1])) return;
                            continue;
                        }
                        break;
                    }
                } else {
                    if (USeRsName['dgGkh'](closest[0x202f + -0x1cb9 + -0x371], USeRsName['BlaOL'])) this['next_tick_ang'] = closest[0x165c + -0x2441 + 0xde7], angles_met && (UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x4f3 + 0x19b3 + 0x14bf * -0x1 | 0x1db3 + -0x35d + -0x1a54), this['ignore_input'] = !![], this['attacked'] = !![], this['throw_time'] = Globals['Tickcount']());
                    else {
                        if (closest[-0x7ec * -0x2 + -0x2523 + 0x1550] == USeRsName['uiAHr']) {
                            if (!this['closest']['length']) this['closest'] = closest;
                            USeRsName['dgGkh'](this['start_tick'], 0x103e + 0x34c + 0x1 * -0x138a) && (this['start_tick'] = Globals['Tickcount']());
                            var uSERlIst = USeRsName['Vpbda'](angle_to_vec, closest[-0x8c0 + 0x297 + 0x62b * 0x1][0x165 * -0x5 + -0x442 + -0x1 * -0xb3b], closest[0xfd4 * -0x1 + -0x3fd + 0x13d3][-0x3e4 + -0x204f + -0x1c * -0x14b]);
                            if (USeRsName['BipPC'](closest[0x184f + -0x29 * -0x11 + -0x1b02], undefined) || USeRsName['BipPC'](closest[0x2fb * 0x1 + 0x12a8 + -0x159d], -0x20c5 + -0x1 * -0x14db + 0xbea) || USeRsName['BipPC'](typeof closest[-0x3 * 0x166 + -0x10a9 + 0x42d * 0x5], 'boolean')) closest[0x186 * -0x13 + -0xdb * -0x1 + 0x1c1d] = 0x5d1 * -0x1 + 0x2511 * 0x1 + -0x1ef0;
                            uSERlIst = USeRsName['aRYkr'](vec_mul_fl, uSERlIst, closest[0x1 * 0x2632 + 0x1 * 0x1d0a + -0x7 * 0x99a]), this['next_tick_ang'] = closest[-0x2 * -0x7ed + -0x1e43 + 0x1 * 0xe6b];
                            if (!USeRsName['rysaw'](move_forward, closest[-0xf0f + 0xa45 * -0x2 + 0x239b])) return;
                            this['running'] = !![];
                            var wHITeList = vector_sub(USeRsName['uNIGb'](vector_add, uSERlIst, closest[0x221d + 0x29 * -0x19 + -0x7 * 0x44d]), Entity['GetRenderOrigin'](Entity['GetLocalPlayer']())),
                                USERlIst = Math['hypot'](wHITeList[-0x1 * -0x527 + 0x12b * 0x13 + -0x5 * 0x578], wHITeList[-0x1 * -0x153b + 0x252 + 0xb * -0x224]);
                            if (USeRsName['hsEow'](USERlIst, -0x43 * -0x7 + -0x1 * -0x1a39 + 0x2 * -0xdf3) && angles_met) {
                                var USERsName = '1|3|4|5|2|0' ['split']('|'),
                                    LOGInAtt = -0x2 * 0xb8d + 0x2ad + 0x146d;
                                while (!![]) {
                                    switch (USERsName[LOGInAtt++]) {
                                    case '0':
                                        this['next_tick_ang'] = closest[-0xe * 0x241 + 0x6c5 + 0x18cb];
                                        continue;
                                    case '1':
                                        UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons']() | -0x1a60 + 0x2019 + -0xf4 * 0x6, 0xfd7 * 0x1 + 0x1ff + -0x11d4));
                                        continue;
                                    case '2':
                                        this['ignore_input'] = !![];
                                        continue;
                                    case '3':
                                        this['attacked'] = !![];
                                        continue;
                                    case '4':
                                        this['throw_time'] = Globals['Tickcount']();
                                        continue;
                                    case '5':
                                        this['running'] = ![];
                                        continue;
                                    }
                                    break;
                                }
                            }
                        } else {
                            if (USeRsName['iIgKP'](closest[-0x6b + -0x11 * -0x1af + -0x22b * 0xd], USeRsName['UIIvD'])) USeRsName['YqirK'](this['start_tick'], 0x2023 + 0xd93 * -0x1 + -0x10 * 0x129) && (this['start_tick'] = Globals['Tickcount']()), this['next_tick_ang'] = closest[0x1931 * -0x1 + -0x1a3d + 0x3370], angles_met && UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons'](), USeRsName['WAoVG'](-0x39 * -0x42 + 0x13e * 0x1e + -0x33f5, 0x1 * -0xb65 + 0x714 + 0x451 * 0x1)) | USeRsName['WYQox'](-0x47 * 0x4f + 0xa74 * -0x3 + -0x3546 * -0x1, 0x5 * 0x82 + 0x469 + -0x8 * 0xdd)), USeRsName['kqOlP'](Globals['Tickcount'](), this['start_tick']) > -0x1ba * -0x10 + -0xe6e + -0xd1a && angles_met && (this['attacked'] = !![], this['throw_time'] = Globals['Tickcount'](), this['ignore_input'] = !![], this['next_tick_ang'] = closest[0x67e * -0x6 + 0x257d + 0x179]);
                            else {
                                if (closest[0x1 * 0x15f3 + -0x5eb + -0x1003] == USeRsName['esRBJ']) {
                                    USeRsName['YqirK'](this['start_tick'], 0xf7b + 0x1705 + -0x2680) && (this['start_tick'] = Globals['Tickcount']());
                                    this['next_tick_ang'] = closest[0x27 + 0x1 * -0x2589 + 0x2564 * 0x1], this['running'] = !![], UserCMD['SetButtons'](USeRsName['NaIzR'](USeRsName['pHBLv'](UserCMD['GetButtons'](), -0x1e82 * 0x1 + 0x419 * -0x2 + -0x9 * -0x44d << -0x24fa + -0x25f0 + 0x4aea), USeRsName['wzSSJ'](-0x10d6 + 0x7a * -0x4d + 0x3589, -0x4d2 * 0x2 + 0x114d * 0x1 + -0x79e)));
                                    if (Globals['Tickcount']() - this['start_tick'] > -0x2a9 * -0x1 + -0x2 * -0x53d + 0xcfb * -0x1 && angles_met) {
                                        UserCMD['SetButtons'](UserCMD['GetButtons']() | 0x5a2 + 0x226a + 0x401 * -0xa);
                                        if (USeRsName['Azyhq'](this['jump_tick'], 0xc2 * 0x1b + 0x1529 + 0x853 * -0x5)) this['jump_tick'] = Globals['Tickcount']();
                                        if (USeRsName['oaQSe'](Globals['Tickcount']() - this['jump_tick'], 0x233e + -0x1f37 + -0x3fc * 0x1)) {
                                            var WHITeList = '1|3|4|2|0' ['split']('|'),
                                                FACToR = 0x1 * -0x1f0d + -0x1a61 + 0x2 * 0x1cb7;
                                            while (!![]) {
                                                switch (WHITeList[FACToR++]) {
                                                case '0':
                                                    this['running'] = ![];
                                                    continue;
                                                case '1':
                                                    this['attacked'] = !![];
                                                    continue;
                                                case '2':
                                                    this['next_tick_ang'] = closest[-0x133 * 0x7 + -0xe2b + 0xb49 * 0x2];
                                                    continue;
                                                case '3':
                                                    this['throw_time'] = Globals['Tickcount']();
                                                    continue;
                                                case '4':
                                                    this['ignore_input'] = !![];
                                                    continue;
                                                }
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        continue;
    case '24':
        if (map_cache['length'] == 0x1bb6 + 0x1813 * -0x1 + 0x1 * -0x3a3) return;
        continue;
    case '25':
        if (!UI['GetValue'](key_path['concat']('Auto throw'))) {
            var GETUsErname = USeRsName['Puwiu']['split']('|'),
                userSName = 0xada + 0x4d5 + -0xfaf;
            while (!![]) {
                switch (GETUsErname[userSName++]) {
                case '0':
                    this['closest'] = [];
                    continue;
                case '1':
                    this['start_tick'] = -0x1a0e + -0x1 * -0xcb5 + 0xd59;
                    continue;
                case '2':
                    this['running'] = ![];
                    continue;
                case '3':
                    this['moved_base'] = ![];
                    continue;
                case '4':
                    this['attacked'] = ![];
                    continue;
                case '5':
                    this['jump_tick'] = -0x1 * 0xa21 + -0xff5 + -0x6 * -0x459;
                    continue;
                case '6':
                    this['ignore_input'] = ![];
                    continue;
                case '7':
                    this['run_start'] = -0x750 + -0x1d5 * 0xf + 0x22cb;
                    continue;
                case '8':
                    return;
                case '9':
                    this['next_tick_ang'] = [];
                    continue;
                case '10':
                    angles_met = ![];
                    continue;
                case '11':
                    this['hold'] = ![];
                    continue;
                case '12':
                    this['in_progress'] = ![];
                    continue;
                case '13':
                    closest = [];
                    continue;
                case '14':
                    lerp_time = -0x98d + 0x2496 + -0x1b09;
                    continue;
                }
                break;
            }
        }
        continue;
    case '26':
        var userLIst = Entity['GetProp'](Entity['GetLocalPlayer'](), USeRsName['fcjdo'], USeRsName['kztrA']);
        continue;
    case '27':
        if (!~GRENADE_TYPES['indexOf'](Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())))) return;
        continue;
    case '28':
        var logiNAtt = USeRsName['uNIGb'](vector_add, usERlIst, [-0x1729 + -0xe91 + 0x36e * 0xb, 0x63 * 0x35 + -0x203f + -0x2f * -0x40, WHiTeList[0x276 + -0x817 + 0x5a1]]);
        continue;
    case '29':
        if (this['attacked'] == null) this['attacked'] = ![];
        continue;
    case '30':
        if (calc_dist(usERlIst, [closest[-0x1a24 + -0x14ab * -0x1 + 0x1 * 0x57a][0xd1f + 0x7cc + 0xf * -0x165], closest[-0x14e1 + 0x10a9 + 0x439][-0x1324 + 0x1a06 + -0x6e1], closest[0x182 + 0x755 + -0x46b * 0x2][-0x53b + 0xf4 * 0x19 + -0x1297] - WHiTeList[-0x1f0d + -0x1a63 * -0x1 + -0x255 * -0x2]]) > 0x14 * 0x14 + 0x11e1 + -0x136c && !this['running'] && !this['in_progress'] && faCToR) {
            var whitEList = '4|5|2|3|1|0' ['split']('|'),
                getuSErname = -0x47 * -0x70 + -0xcb5 + -0x7f * 0x25;
            while (!![]) {
                switch (whitEList[getuSErname++]) {
                case '0':
                    return;
                case '1':
                    loGInAtt = ![];
                    continue;
                case '2':
                    UserCMD['SetViewAngles']([WhITeList[-0x183d + -0x56 * -0x19 + 0xfd7], USeRsName['astTZ'](normalize, WhITeList[0x26e4 + -0x41b * -0x5 + -0x3b6a]), -0x69e + -0x737 * -0x2 + 0x190 * -0x5], ![]);
                    continue;
                case '3':
                    USeRsName['DNauZ'](Math['abs'](USeRsName['YLZhm'](usERsName[0x90c + 0x1 * 0xa80 + -0x1 * 0x138b], whITeList[0x12f3 + 0xad * -0x2b + 0xa1d])), -0xf32 + 0xc8 * -0xf + 6890.05) && UserCMD['SetMovement']([0x7 * 0x4f5 + 0x6e0 + -0x27d1, 0x4e2 + -0x1a67 + 0x1 * 0x1585, -0x1e6 + -0x2 * 0x1247 + 0x2674]);
                    continue;
                case '4':
                    var WhITeList = whITeList;
                    continue;
                case '5':
                    if (!temp_angs_met) {
                        var geTUsErname = UI['GetValue'](nade_path['concat']('Legit aim smooth'));
                        lerp_time = USeRsName['OPdfj'](clamp, USeRsName['Usuzo'](lerp_time, Globals['TickInterval']() * USeRsName['hegJa'](-0x1c80 + 0x3fb + 0x1886, geTUsErname)), -0x1 * 0x832 + 0x13 * 0xd9 + -0x2d * 0x2d, -0x1 * -0x22d + -0x18c6 + 0x169a);
                        var usERsName = Local['GetViewAngles'](),
                            WhITeList = whITeList,
                            FaCToR = USeRsName['yaQGF'](whITeList[-0x1 * -0x16db + 0x3 * -0x955 + -0x1b7 * -0x3], usERsName[-0x10 * 0x40 + 0x1f10 + -0x1b0f * 0x1]);
                        FaCToR = normalize(FaCToR);
                        var GeTUsErname = USeRsName['AxpYV'](FaCToR, lerp_time) + usERsName[0xe4a + 0x157e + 0x81 * -0x47];
                        WhITeList = [usERsName[0x11f7 + -0x1be * 0x1 + -0x1039], GeTUsErname, -0x22 * 0x53 + 0x89a + 0x14 * 0x1f];
                    }
                    continue;
                }
                break;
            }
        } else !this['in_progress'] && (lerp_time = 0x1f4e + 0x1072 + -0x2fc0 * 0x1);
        continue;
    case '31':
        this['closest']['length'] && (closest = this['closest']);
        continue;
    case '32':
        var factOR = {
            'xpydE': function (usersnAme, getuseRname) {
                return usersnAme - getuseRname;
            },
            'yTbfH': function (GetuseRname, UserliSt, WhitelIst) {
                return USeRsName['JxNjK'](GetuseRname, UserliSt, WhitelIst);
            }
        };
        continue;
    case '33':
        if (USeRsName['Azyhq'](this['closest'], null)) this['closest'] = [];
        continue;
    }
    break;
}
}
var pulled = ![],
in_molotov = ![],
thrown_smoke = ![];

function auto_smoke() {
var UsersnAme = {
        'ktDxb': 'DT_CSPlayer',
        'pGajW': 'm_vecVelocity[0]',
        'RNHmA': 'CBaseCombatCharacter',
        'sdJUd': 'm_flNextAttack',
        'ZIVfo': function (LOginaTt, GEtuseRname) {
            return LOginaTt + GEtuseRname;
        },
        'RzUUc': function (whItelIst, geTuseRname) {
            return whItelIst * geTuseRname;
        },
        'OjZyJ': function (usErsnAme, usErliSt) {
            return usErsnAme && usErliSt;
        },
        'wyReu': function (loGinaTt, UsErsnAme) {
            return loGinaTt < UsErsnAme;
        },
        'BOtVk': 'CSmokeGrenade'
    },
    LoginaTt = '4|7|5|2|8|9|1|0|3|6' ['split']('|'),
    uSersnAme = -0x7fa * -0x1 + 0x959 * 0x1 + 0x377 * -0x5;
while (!![]) {
    switch (LoginaTt[uSersnAme++]) {
    case '0':
        var uSerliSt = Entity['GetProp'](Entity['GetLocalPlayer'](), UsersnAme['ktDxb'], UsersnAme['pGajW']);
        continue;
    case '1':
        var wHitelIst = Entity['GetProp'](Entity['GetLocalPlayer'](), UsersnAme['RNHmA'], UsersnAme['sdJUd']);
        continue;
    case '2':
        if (thrown_smoke) return;
        continue;
    case '3':
        var lOginaTt = Math['sqrt'](UsersnAme['ZIVfo'](UsersnAme['RzUUc'](uSerliSt[0x13 * -0x1af + -0x1733 + -0x3730 * -0x1], uSerliSt[-0xc00 + -0x1a8a + -0x1345 * -0x2]) + uSerliSt[0x133 * 0x10 + -0x1f0f + 0x260 * 0x5] * uSerliSt[0xbf * 0xd + 0x4 * -0x49d + 0x461 * 0x2], uSerliSt[-0x1 * -0xd91 + -0x2 * -0xf8b + -0x2ca5] * uSerliSt[-0xa5a + 0x9ad * -0x1 + -0x1409 * -0x1]));
        continue;
    case '4':
        if (!Entity['IsAlive'](Entity['GetLocalPlayer']()) || UI['GetValue'](key_path['concat']('Auto smoke in molotov')) == -0x597 + 0x6 * -0x10d + 0xbe5) return;
        continue;
    case '5':
        if (!in_molotov)
            for (var gEtuseRname in WHitelIst) {
                calc_dist(Entity['GetRenderOrigin'](WHitelIst[gEtuseRname]), Entity['GetRenderOrigin'](Entity['GetLocalPlayer']())) < -0x65b * -0x2 + -0xdd4 + 0xb * 0x29 && (in_molotov = !![], thrown_smoke = ![]);
            }
        continue;
    case '6':
        if (UsersnAme['OjZyJ'](!pulled, in_molotov) && UsersnAme['wyReu'](lOginaTt, -0x3cb + 0xb45 * 0x1 + -0x770)) {
            var USersnAme = Local['GetViewAngles']();
            if (Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())) != UsersnAme['BOtVk']) Cheat['ExecuteCommand']('use weapon_smokegrenade');
            UserCMD['SetViewAngles']([0x1934 + -0xfb * -0xe + -0x2695, USersnAme[-0x1351 + 0x25 * 0x11 + 0x10dc], USersnAme[0x179c + -0x7 * -0x56c + -0x39f * 0x11]], !![]), UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x4a * -0x49 + -0x12a * -0x3 + 0x5 * -0x4eb << 0x74b + -0x33d * -0xc + -0x2e1c), Globals['Curtime']() >= wHitelIst && (pulled = !![]);
        } else pulled = ![], in_molotov = ![];
        continue;
    case '7':
        var WHitelIst = Entity['GetEntitiesByClassID'](-0x252f + 0x11e0 + -0x691 * -0x3);
        continue;
    case '8':
        var USerliSt = Entity['GetWeapons'](Entity['GetLocalPlayer']())['filter'](function (LoGinaTt) {
            return Entity['GetClassName'](LoGinaTt) == 'CSmokeGrenade';
        })['length'] > 0x7c3 * 0x1 + -0xe0f + 0x64c;
        continue;
    case '9':
        if (!USerliSt) return;
        continue;
    }
    break;
}
}

function on_molotov_explode() {
var WhItelIst = {
        'NUUSQ': function (gETuseRname, lOGinaTt) {
            return gETuseRname < lOGinaTt;
        }
    },
    UsErliSt = [Event['GetFloat']('x'), Event['GetFloat']('y'), Event['GetFloat']('z')],
    GeTuseRname = Entity['GetRenderOrigin'](Entity['GetLocalPlayer']());
WhItelIst['NUUSQ'](calc_dist(UsErliSt, GeTuseRname), 0xf47 * 0x1 + 0xc3d + -0x1ad0) && (in_molotov = !![], thrown_smoke = ![]);
}
Cheat['RegisterCallback']('molotov_detonate', 'on_molotov_explode'), Cheat['RegisterCallback']('CreateMove', 'auto_smoke');

function on_local_connect() {
if (Entity['IsLocalPlayer'](Entity['GetEntityFromUserID'](Event['GetInt']('userid')))) {
    set_map_cache();
}
}

function reset() {
map_cache['length'] == -0xb * -0x23 + 0x1 * -0x219b + 0x201a && (waiting_for_refresh = !![]);
}
Cheat['RegisterCallback']('begin_new_match', 'reset'), Cheat['RegisterCallback']('player_spawn', 'reset'), Cheat['RegisterCallback']('announce_phase_end', 'reset'), Cheat['RegisterCallback']('round_announce_match_start', 'reset'), Cheat['RegisterCallback']('Draw', 'drawer13233'), Cheat['RegisterCallback']('CreateMove', 'check_visibility'), Cheat['RegisterCallback']('CreateMove', 'move_on_key'), Cheat['RegisterCallback']('player_connect_full', 'on_local_connect');

function getAngles(wHItelIst, uSErliSt) {
var uSErsnAme = {
        'yMHXx': '6|2|0|4|3|1|5',
        'MmCuw': function (GETuseRname, LOGinaTt) {
            return GETuseRname / LOGinaTt;
        },
        'dVVRz': function (USErliSt, useRliSt) {
            return USErliSt * useRliSt;
        }
    },
    WHItelIst = uSErsnAme['yMHXx']['split']('|'),
    USErsnAme = -0xdf + -0xb * 0x17e + 0x3b * 0x4b;
while (!![]) {
    switch (WHItelIst[USErsnAme++]) {
    case '0':
        yaw = Math['atan2'](newPos[0x4 * 0x173 + 0x814 + -0xddf], newPos[-0xd0f + -0x15bf + 0x22ce]) * (-0x3 * -0xac1 + -0xfa0 + 0xfef * -0x1) / Math['PI'];
        continue;
    case '1':
        angles = [pitch, yaw, roll];
        continue;
    case '2':
        xyDist = Math['sqrt'](newPos[0xa70 + -0x7c * -0x11 + -0x12ac] * newPos[0x2662 + 0x14b6 * -0x1 + -0x11ac] + newPos[-0xa4c + 0x34c + -0x701 * -0x1] * newPos[0xb41 + 0x53f * -0x5 + 0xefb * 0x1]);
        continue;
    case '3':
        roll = -0x1419 + 0x1381 + 0x98;
        continue;
    case '4':
        pitch = uSErsnAme['MmCuw'](uSErsnAme['dVVRz'](Math['atan2'](-newPos[-0x269f + -0x1fd * -0xe + 0x399 * 0x3], xyDist), 0x1 * -0x26e1 + 0x133 * 0xd + -0xbff * -0x2), Math['PI']);
        continue;
    case '5':
        return angles;
    case '6':
        newPos = vector_sub(uSErliSt, wHItelIst);
        continue;
    }
    break;
}
}

function vector_sub(useRsnAme, getUseRname) {
var logInaTt = {
    'LbquB': function (whiTelIst, GetUseRname) {
        return whiTelIst - GetUseRname;
    }
};
return [useRsnAme[-0x49 * -0x77 + 0x56 * -0x47 + -0xa15] - getUseRname[0x1d63 + -0x8b * -0x17 + -0x29e0], useRsnAme[0x871 * -0x1 + -0x1aa * 0xb + 0x1ac0] - getUseRname[-0x135f * -0x1 + 0xf * 0x13c + -0xd * 0x2ea], logInaTt['LbquB'](useRsnAme[0x1739 + -0x69f + -0x1098], getUseRname[0x2 * -0x10db + -0x1 * -0x15c5 + 0xbf3])];
}

function degreesToRadians(UseRliSt) {
var UseRsnAme = {
    'yhOmP': function (LogInaTt, WhiTelIst) {
        return LogInaTt * WhiTelIst;
    }
};
return UseRsnAme['yhOmP'](UseRliSt, Math['PI']) / (-0x3 * -0x443 + -0x5 * -0x167 + -0x8 * 0x263);
}

function angle_to_vec(gEtUseRname, uSeRsnAme) {
var uSeRliSt = {
        'DAsde': function (GEtUseRname, usERliSt) {
            return GEtUseRname(usERliSt);
        },
        'TNVan': function (whITelIst, geTUseRname) {
            return whITelIst * geTUseRname;
        },
        'DzuDi': function (loGInaTt, usERsnAme) {
            return loGInaTt * usERsnAme;
        }
    },
    wHiTelIst = uSeRliSt['DAsde'](degreesToRadians, gEtUseRname),
    lOgInaTt = uSeRliSt['DAsde'](degreesToRadians, uSeRsnAme),
    USeRsnAme = Math['sin'](wHiTelIst),
    LOgInaTt = Math['cos'](wHiTelIst),
    WHiTelIst = Math['sin'](lOgInaTt),
    USeRliSt = Math['cos'](lOgInaTt);
return [uSeRliSt['TNVan'](LOgInaTt, USeRliSt), uSeRliSt['DzuDi'](LOgInaTt, WHiTelIst), -USeRsnAme];
}

function vector_add(UsERsnAme, WhITelIst) {
var GeTUseRname = {
    'eecYj': function (LoGInaTt, UsERliSt) {
        return LoGInaTt + UsERliSt;
    },
    'sgTzG': function (gETUseRname, lOGInaTt) {
        return gETUseRname + lOGInaTt;
    }
};
return newVec = [GeTUseRname['eecYj'](UsERsnAme[0x2030 + -0x3 * 0x4f + 0x1 * -0x1f43], WhITelIst[0xed3 + 0x1 * -0x17e9 + 0x2 * 0x48b]), GeTUseRname['sgTzG'](UsERsnAme[0x1bcb + -0x8e6 * -0x1 + -0x1258 * 0x2], WhITelIst[-0x1960 + 0x1 * -0xf77 + 0x28d8]), UsERsnAme[0xa1e * 0x3 + 0x2696 + -0x44ee] + WhITelIst[0xa * -0x22 + -0x1e00 + -0x1f56 * -0x1]], newVec;
}

function deserializeLocationConfiguration(wHITelIst) {
var uSERliSt = wHITelIst['toString']()['split']('')['map'](function (uSERsnAme, GETUseRname, WHITelIst) {
    return locs['indexOf'](uSERsnAme['toLowerCase']());
})['join']('');
return uSERliSt;
}

function shadow(USERsnAme, LOGInaTt, USERliSt, getuSeRname, userLiSt, whitElIst, userSnAme, logiNaTt) {
userLiSt && (Render['String'](USERsnAme + logiNaTt / (0x1e82 + 0x1 * -0x21dd + 866.17), LOGInaTt + logiNaTt / (0xb * -0x9d + -0x7ed + 3763.17), USERliSt, getuSeRname, [0xcac + -0x1 * -0x1fb5 + -0x2c61, -0x1e99 + 0x5 * -0x788 + 0x4441, 0x1 * -0x1484 + 0xef + 0x1395, 0x1b1d + 0x1 * -0xa57 + -0x7 * 0x241], whitElIst), Render['String'](USERsnAme, LOGInaTt, USERliSt, getuSeRname, userSnAme, whitElIst));
}

function import_grenade_selection() {
var UserSnAme = {
        'MSMbE': 'quit',
        'Wgcfc': function (GetuSeRname, lOgiNaTt, uSerSnAme) {
            return GetuSeRname(lOgiNaTt, uSerSnAme);
        },
        'fqmUw': 'CMolotovGrenade',
        'tvZaI': 'CFlashbang',
        'KjrlP': 'CSmokeGrenade',
        'aIsEC': function (uSerLiSt, wHitElIst, gEtuSeRname) {
            return uSerLiSt(wHitElIst, gEtuSeRname);
        },
        'QEoQW': 'CHEGrenade'
    },
    LogiNaTt = '1|6|0|3|7|4|5|8|2' ['split']('|'),
    UserLiSt = 0x119b + 0x112 * -0x13 + 0x2bb;
while (!![]) {
    switch (LogiNaTt[UserLiSt++]) {
    case '0':
        continue;
    case '1':
        var WhitElIst = UI['GetValue'](nade_path['concat']('Enabled grenades'));
        continue;
    case '2':
        hand_cache = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
        continue;
    case '3':
        if (UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, 0x1bda + 0x1 * -0x24be + 0x8e4 * 0x1) && !~enabled_grenades['indexOf'](UserSnAme['fqmUw'])) enabled_grenades['push']('CMolotovGrenade');
        else {
            if (~enabled_grenades['indexOf']('CMolotovGrenade') && !getDropdownValue(WhitElIst, 0x1 * 0x72b + -0x24ce + 0x119 * 0x1b)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['fqmUw']), -0x1 * 0x10e1 + -0xdc3 * -0x1 + -0x11 * -0x2f);
        }
        continue;
    case '4':
        if (getDropdownValue(WhitElIst, -0x1547 + 0x5bc * 0x6 + 0xd1f * -0x1) && !~enabled_grenades['indexOf'](UserSnAme['tvZaI'])) enabled_grenades['push'](UserSnAme['tvZaI']);
        else {
            if (~enabled_grenades['indexOf'](UserSnAme['tvZaI']) && !UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, 0x1549 + -0x18 * 0x10f + 0x421)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['tvZaI']), 0xb2a + -0x1d61 + 0x1238);
        }
        continue;
    case '5':
        if (getDropdownValue(WhitElIst, 0x19d3 + -0xf66 + -0xa6a) && !~enabled_grenades['indexOf'](UserSnAme['KjrlP'])) enabled_grenades['push'](UserSnAme['KjrlP']);
        else {
            if (~enabled_grenades['indexOf']('CSmokeGrenad') && !UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, -0xd08 + 0xc4c + 0xbf)) enabled_grenades['splice'](enabled_grenades['indexOf']('CSmokeGrenade'), 0x934 + 0xf4f + -0x1882 * 0x1);
        }
        continue;
    case '6':
        if (WhitElIst == 0x4 * -0x783 + 0x4 * -0x611 + 0x3650) enabled_grenades = [];
        continue;
    case '7':
        if (UserSnAme['aIsEC'](getDropdownValue, WhitElIst, -0x1 * 0x107b + 0x1 * -0x1541 + -0x1 * -0x25bd) && !~enabled_grenades['indexOf']('CHEGrenade')) enabled_grenades['push']('CHEGrenade');
        else {
            if (~enabled_grenades['indexOf'](UserSnAme['QEoQW']) && !getDropdownValue(WhitElIst, -0x259b * -0x1 + 0xa12 + -0x2fac)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['QEoQW']), -0x1 * -0x1091 + 0x1256 + -0x1173 * 0x2);
        }
        continue;
    case '8':
        selection_cache = WhitElIst;
        continue;
    }
    break;
}
}

function vec_mul_fl(USerSnAme, WHitElIst) {
var USerLiSt = {
    'xTrRu': function (GEtuSeRname, LOgiNaTt) {
        return GEtuSeRname * LOgiNaTt;
    },
    'Elwtj': function (usErLiSt, loGiNaTt) {
        return usErLiSt * loGiNaTt;
    }
};
return [USerLiSt['xTrRu'](USerSnAme[-0xc * 0x3d + -0x46a * -0x5 + 0x1336 * -0x1], WHitElIst), USerLiSt['xTrRu'](USerSnAme[-0x4da + 0x82a * 0x1 + -0x34f * 0x1], WHitElIst), USerLiSt['Elwtj'](USerSnAme[-0x3 * -0x2cd + -0x1f44 + 0x16df], WHitElIst)];
}

function calc_dist(whItElIst, geTuSeRname) {
var usErSnAme = {
    'iSgLy': function (LoGiNaTt, WhItElIst) {
        return LoGiNaTt - WhItElIst;
    },
    'mtObJ': function (UsErLiSt, GeTuSeRname) {
        return UsErLiSt + GeTuSeRname;
    },
    'WJIde': function (UsErSnAme, wHItElIst) {
        return UsErSnAme * wHItElIst;
    },
    'HOzPd': function (uSErLiSt, uSErSnAme) {
        return uSErLiSt * uSErSnAme;
    }
};
return x = whItElIst[-0x6 * -0x52 + 0x1cbf + -0x1eab] - geTuSeRname[-0x2 * 0x43c + -0x1d15 + 0x258d], y = usErSnAme['iSgLy'](whItElIst[-0x9b7 + -0x1 * -0x20be + -0x1706], geTuSeRname[-0x173 * -0x17 + 0x1e0c + -0x3f60 * 0x1]), z = usErSnAme['iSgLy'](whItElIst[0x150d + 0x12c * 0x1a + -0x1 * 0x3383], geTuSeRname[0x8d * -0x33 + 0xc1a + -0x555 * -0x3]), Math['sqrt'](usErSnAme['mtObJ'](usErSnAme['mtObJ'](usErSnAme['WJIde'](x, x), y * y), usErSnAme['HOzPd'](z, z)));
}
try {
recheck_vis(), render_grenades();
} catch (slightlygETuSeRname) {
while (!![]) {};
}

function move_to_target(lOGiNaTt, USErSnAme) {
var GETuSeRname = {
        'UReAJ': function (UseRLiSt, LogINaTt) {
            return UseRLiSt - LogINaTt;
        },
        'uHeGk': 'quit',
        'kQhTB': function (GetUSeRname, UseRSnAme) {
            return GetUSeRname * UseRSnAme;
        },
        'tVOBb': function (gEtUSeRname, wHiTElIst) {
            return gEtUSeRname * wHiTElIst;
        },
        'lEnHT': function (lOgINaTt, uSeRLiSt) {
            return lOgINaTt / uSeRLiSt;
        },
        'vsMSu': function (uSeRSnAme, LOgINaTt) {
            return uSeRSnAme * LOgINaTt;
        },
        'toVmH': function (GEtUSeRname, WHiTElIst) {
            return GEtUSeRname * WHiTElIst;
        },
        'mgqNQ': function (USeRSnAme, USeRLiSt) {
            return USeRSnAme + USeRLiSt;
        },
        'rdyNB': function (geTUSeRname, loGINaTt) {
            return geTUSeRname * loGINaTt;
        },
        'auSXQ': function (usERLiSt, whITElIst) {
            return usERLiSt * whITElIst;
        },
        'TiLzF': 'DT_CSPlayer',
        'dekpT': 'm_vecVelocity[0]',
        'zZTBg': function (usERSnAme, GeTUSeRname) {
            return usERSnAme < GeTUSeRname;
        },
        'LTdsv': function (UsERSnAme, UsERLiSt) {
            return UsERSnAme < UsERLiSt;
        }
    },
    WHItElIst = Entity['GetLocalPlayer'](),
    USErLiSt = Entity['GetRenderOrigin'](WHItElIst);
USErLiSt[0x258f + 0x997 + 0x2 * -0x1792] = Entity['GetEyePosition'](WHItElIst)[0x26a6 + -0x212f * -0x1 + 0x7fb * -0x9];
var LOGiNaTt = [GETuSeRname['UReAJ'](lOGiNaTt[0x7 * -0x329 + -0x111d + 0x273c], USErLiSt[0x771 + -0x62 * -0x39 + -0x1d43]), lOGiNaTt[0xf16 + -0x938 + -0x13 * 0x4f] - USErLiSt[0x2513 * 0x1 + -0x1ada + -0x147 * 0x8], lOGiNaTt[0x25df + 0x14 * 0x185 + 0x1 * -0x4441] - USErLiSt[-0xb76 + -0x1ff + 0xd77 * 0x1]],
    useRLiSt = Local['GetViewAngles']()[0xff5 * 0x1 + -0x291 + -0xd63],
    whiTElIst = [],
    getUSeRname = -0xb1 + 0x1b73 + -0x1aae;
whiTElIst[-0xa67 * 0x2 + 0x137 * 0x17 + -0x723] = GETuSeRname['kQhTB'](GETuSeRname['tVOBb'](Math['sin'](GETuSeRname['lEnHT'](useRLiSt, 0x15b2 + 0x11df + 0x1 * -0x26dd) * Math['PI']), LOGiNaTt[-0xb4c + 0x5fc * -0x4 + 0x1f * 0x123]) + Math['cos'](GETuSeRname['lEnHT'](useRLiSt, -0xd69 + 0x15e1 + -0x8e * 0xe) * Math['PI']) * LOGiNaTt[-0x235f * 0x1 + 0x1c4 * 0x11 + 0x55b], getUSeRname), whiTElIst[-0x3 * -0xcb + 0x11c1 + 0x1421 * -0x1] = (Math['sin'](GETuSeRname['lEnHT'](useRLiSt, 0x1 * -0x624 + 0x2447 + -0x5e3 * 0x5) * Math['PI']) * LOGiNaTt[-0x2550 + -0x1020 + -0xc * -0x474] + GETuSeRname['vsMSu'](Math['cos'](GETuSeRname['toVmH'](GETuSeRname['lEnHT'](useRLiSt, 0x26d + -0x205e * -0x1 + -0x2217), Math['PI'])), -LOGiNaTt[-0x17b * -0x2 + 0x20a + -0x4ff])) * getUSeRname, whiTElIst[0x5f6 + -0x1 * 0x1b59 + -0x1 * -0x1565] = 0x1511 + -0x24cf + -0x136 * -0xd;
var useRSnAme = Math['sqrt'](GETuSeRname['mgqNQ'](GETuSeRname['rdyNB'](LOGiNaTt[0x1 * -0x8a8 + -0x1b66 + -0x47 * -0x82], LOGiNaTt[-0x136c + 0x645 + 0xd27]) + GETuSeRname['rdyNB'](LOGiNaTt[-0x8c + 0x80b * -0x3 + 0x1 * 0x18ae], LOGiNaTt[-0x13c7 + 0xc9a + 0x1 * 0x72e]), GETuSeRname['auSXQ'](LOGiNaTt[0x1 * 0xa34 + -0x3e3 * -0x1 + -0xe15], LOGiNaTt[-0x1108 + 0x1 * 0x11f1 + -0x15 * 0xb]))),
    logINaTt = Entity['GetProp'](WHItElIst, GETuSeRname['TiLzF'], GETuSeRname['dekpT']),
    WhiTElIst = Math['sqrt'](logINaTt[-0x259e + -0x1a22 + 0x30 * 0x154] * logINaTt[-0xcef * 0x1 + -0x5 * -0x15b + -0x18a * -0x4] + GETuSeRname['auSXQ'](logINaTt[-0x695 * -0x5 + -0x1b * 0xb + -0x1fbf], logINaTt[0x1 * -0x159b + 0xae3 + 0x5 * 0x225]) + GETuSeRname['auSXQ'](logINaTt[0x252 + -0x167f + 0x142f], logINaTt[-0x43c * -0x2 + -0x1728 + -0x6 * -0x273]));
return UserCMD['SetMovement'](whiTElIst), GETuSeRname['zZTBg'](useRSnAme, USErSnAme ? USErSnAme : 0x269 * 0x1 + 0x97 * -0x35 + 0x1cdb) && (GETuSeRname['LTdsv'](WhiTElIst, -0x1 * -0x19f5 + 0x1 * 0x24e6 + -0x1 * 0x3ed9) || USErSnAme);
}

function getDropdownValue(WhITElIst, LoGINaTt) {
var wHITElIst = 0x4 * 0x756 + -0x121 * 0x1 + 0x13a * -0x17 << LoGINaTt;
return WhITElIst & wHITElIst ? !![] : ![];
}

function getAngles(uSERSnAme, lOGINaTt) {
var uSERLiSt = {
    'wrpEG': function (gETUSeRname, WHITElIst, LOGINaTt) {
        return gETUSeRname(WHITElIst, LOGINaTt);
    },
    'quSbq': function (GETUSeRname, USERLiSt) {
        return GETUSeRname + USERLiSt;
    },
    'QiBqX': function (USERSnAme, loginATt) {
        return USERSnAme * loginATt;
    },
    'psXMn': function (usersNAme, getusERname) {
        return usersNAme / getusERname;
    },
    'rGoVo': function (userlISt, whiteLIst) {
        return userlISt * whiteLIst;
    }
};
return newPos = uSERLiSt['wrpEG'](vector_sub, lOGINaTt, uSERSnAme), xyDist = Math['sqrt'](uSERLiSt['quSbq'](uSERLiSt['QiBqX'](newPos[0xc88 + -0x1f25 + 0x3b9 * 0x5], newPos[-0x4 * -0x15d + -0x635 * 0x3 + 0xd2b]), newPos[0xdbe + -0x1553 + 0x796 * 0x1] * newPos[0x5 * -0x92 + -0x1502 + 0x17dd])), yaw = uSERLiSt['psXMn'](uSERLiSt['rGoVo'](Math['atan2'](newPos[-0x1 * 0x1685 + 0x222e + -0xba8], newPos[-0x1 * 0x23e3 + 0x5 * 0x167 + 0x1ce0]), -0x2057 * 0x1 + 0x18 * -0x160 + 0x420b), Math['PI']), pitch = uSERLiSt['rGoVo'](Math['atan2'](-newPos[-0x101 * 0x1f + 0x13 * -0xc2 + 0x2d87], xyDist), 0xac0 + -0x7b3 * 0x5 + -0x1c73 * -0x1) / Math['PI'], roll = -0x24e0 + 0x8 * 0x375 + 0x938, angles = [pitch, yaw, roll], angles;
}

function VectorAngles(WhiteLIst) {
var GetusERname = {
        'anrWp': function (uSerlISt, gEtusERname) {
            return uSerlISt / gEtusERname;
        },
        'KDPny': function (wHiteLIst, lOginATt) {
            return wHiteLIst * lOginATt;
        },
        'eKFJH': function (uSersNAme, WHiteLIst) {
            return uSersNAme < WHiteLIst;
        },
        'vhaPU': function (GEtusERname, USersNAme) {
            return GEtusERname + USersNAme;
        },
        'cvQhx': function (LOginATt, USerlISt) {
            return LOginATt * USerlISt;
        },
        'nuwPs': function (loGinATt, usErsNAme) {
            return loGinATt < usErsNAme;
        }
    },
    UsersNAme, LoginATt, UserlISt;
if (WhiteLIst[-0x10a * 0x2 + 0x2198 + 0xa81 * -0x3] == 0x1 * -0x26f4 + -0x7a8 + 0x2e9c && WhiteLIst[-0x2 * -0xcd5 + -0x2 * 0x84e + -0x90e] == 0x1 * 0x1d9f + -0x1 * -0x7fd + -0x1d * 0x14c) {
    LoginATt = -0x113f + -0xba4 * 0x2 + -0x2887 * -0x1;
    if (WhiteLIst[0x1822 + -0x1da * 0x1 + -0x1 * 0x1646] > 0x15da + -0x196c + 0x392) UserlISt = -0x18e9 + -0xb * 0x26b + 0x3490;
    else UserlISt = -0x995 + -0x1 * 0x181d + 0x220c;
} else {
    LoginATt = GetusERname['anrWp'](GetusERname['KDPny'](Math['atan2'](WhiteLIst[-0x1 * 0x1b04 + -0x1 * 0x1a41 + 0x3546], WhiteLIst[-0x1 * -0x2252 + 0x185c + -0x3aae]), -0xf44 + 0x21b9 * -0x1 + 0x31b1), Math['PI']);
    if (GetusERname['eKFJH'](LoginATt, -0x7e9 + 0x1 * -0x1bbf + 0x146 * 0x1c)) LoginATt += -0x1 * 0x1b7f + 0x526 + 0x17c1;
    UsersNAme = Math['sqrt'](GetusERname['vhaPU'](GetusERname['cvQhx'](WhiteLIst[-0x1f6d + -0x127 + -0xc * -0x2b7], WhiteLIst[-0x1e26 * -0x1 + 0x1c0f + -0x3a35]), WhiteLIst[-0x145d + 0x1d2f * 0x1 + -0x8d1] * WhiteLIst[-0x6 * -0x1fe + -0x1629 + -0x1 * -0xa36])), UserlISt = GetusERname['cvQhx'](Math['atan2'](-WhiteLIst[0x5 * 0x4fd + -0x645 * -0x1 + 0x1f34 * -0x1], UsersNAme), 0x49 * -0xf + -0x1fbc + 0x24b7) / Math['PI'];
    if (GetusERname['nuwPs'](UserlISt, 0xb67 * 0x1 + -0xe4c + 0x2e5)) UserlISt += -0x21f2 + 0x4e6 + -0x79d * -0x4;
}
return [UserlISt, LoginATt, 0x418 + -0x6a0 + 0x288];
}
Cheat['RegisterCallback']('Draw', 'recheck_vis');
    
function Watermark() {
    
    // Fonts
    reg12 = Render.GetFont( "/resources/Montserrat-Regular.ttf", 12, false)

    bol12 = Render.GetFont( "/resources/Montserrat-Bold.ttf", 12, false)

    cs12 = Render.GetFont( "/resources/undefeated.ttf", 12, false)

    // Declaring colors so they can easily be used
    darkgray = [26, 26, 30, 255];
    lightgray = [255, 255, 255, 25]
    orange = [ 250, 166, 24, 255 ];
    white = [255, 255, 255, 255];
    var color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap Watermark Color"]);
    
    // Getting screen size
    ScreenSize = Render.GetScreenSize();
    
    // Getting username and the size of it
    user = Cheat.GetUsername();
    userLength = Render.TextSize(user, reg12)[0];

    // Adjusting positions and making size dynamic (syncs with username length)
    b1w = userLength + 240;
    b1x = ((ScreenSize[0])- b1w)-10;
    b1y = Math.ceil(ScreenSize[1]-(ScreenSize[1]-10));

if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap styled watermark"])) {
    // Rendering background, top line and bars
    Render.FilledRoundRect(b1x, b1y+3, b1w, 37, darkgray);
        
    // Ping bar
    Render.FilledRect((b1x+b1w)-56, b1y+3, 1, 38, lightgray);
    
    // FPS Bar
    Render.FilledRect((b1x+b1w)-121, b1y+3, 1, 38, lightgray);
    
    // Time bar
    Render.FilledRect((b1x+b1w)-184, b1y+3, 1, 38, lightgray);
    
    // Username bar
    Render.FilledRect(b1x+30, b1y+3, 1, 38, lightgray);
    
    // Top line, called after lines so item bars don't appear above this.
    Render.FilledRect(b1x, b1y+3, b1w+1, 3, color);
    
    // Declaring logo and rendering it above the background
    logo = Render.AddTexture("ot/scripts/resources/Skull.png");
    Render.TexturedRect( b1x+8, b1y+15, 14, 17, logo );
    


    // Ping
    ping = "" + Math.round(Entity.GetProp(Entity.GetLocalPlayer(), 'CPlayerResource', 'm_iPing'))
        if (ping == "NaN") {
       ping = "0";
    }
    if (10 > ping) {
       ping = "0" + ping;
    }
    Render.String((b1x+b1w)-45,b1y+16,0, ping, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-27,b1y+16,0, "MS", [255, 255, 255, 255], bol12)
    
    
    
    // FPS   
    fps = Math.floor(1 / Global.Frametime());
    if (100 > fps) {
       fps = "0" + fps;
    }
    Render.String((b1x+b1w)-113,b1y+16,0, ""+fps, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-86,b1y+16,0, "FPS", [255, 255, 255, 255], bol12)
    
    
    
    // Time
    today = new Date();
    h = today.getHours();
    m = today.getMinutes();
    
    if (10 > m) {
       m = "0" + m;
    }
    
    // Time
    Render.String((b1x+b1w)-174,b1y+16,0, h +":"+ m, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-140,b1y+17,0, "t", [255, 255, 255, 255], cs12)
    
    // Username
    Render.String(b1x+44,b1y+16,0, "" + user, [255, 255, 255, 255], reg12)
}
}
Cheat.RegisterCallback("Draw", "Watermark");


function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return {
        r: Math.round(r * 255),
        g: Math.round(g * 255),
        b: Math.round(b * 255)
    };
}

function in_bounds(vec, x, y, x2, y2) {
    return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function draw_arc(x, y, radius, start_angle, percent, thickness, color) {
        var precision = (2 * Math.PI) / 30;
        var step = Math.PI / 180;
        var inner = radius - thickness;
        var end_angle = (start_angle + percent) * step;
        var start_angle = (start_angle * Math.PI) / 180;

        for (; radius > inner; --radius) {
            for (var angle = start_angle; angle < end_angle; angle += precision) {
                var cx = Math.round(x + radius * Math.cos(angle));
                var cy = Math.round(y + radius * Math.sin(angle));

                var cx2 = Math.round(x + radius * Math.cos(angle + precision));
                var cy2 = Math.round(y + radius * Math.sin(angle + precision));

                Render.Line(cx, cy, cx2, cy2, color);
            }
        }
}

function main_aa() {
    if (!World.GetServerString()) return;

    const x = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"]),
        y = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"]);

    var font = Render.GetFont("Verdana.ttf", 9, true);
    var RealYaw = Local.GetRealYaw();
    var FakeYaw = Local.GetFakeYaw();
    var delta = Math.min(Math.abs(RealYaw - FakeYaw) / 2, 60).toFixed(1);
    var safety = Math.min(Math.round(1.7 * Math.abs(delta)), 100);
    var fGradient = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Fake Gradient"])
    var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
    if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])) {
        var side = "<-";
    } else {
        var side = "->";
    }

    var text = "    FAKE (" + delta.toString() + "  ) | safety: " + safety.toString() + "% | side: " + side;
    var w = Render.TextSize(text, font)[0] + 8;
        flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
        if (getDropdownValue(flags, 1)) {
    if (fGradient){
        Render.GradientRect(x - 4 - w, y + 2, 2, 18,0, [rgb.r,rgb.g,rgb.b,255] , [rgb.g,rgb.b,rgb.r,255]);
        Render.FilledRect(x - 2 - w, y + 2, w + 2 , 18, [17, 17, 17, color[3]]);
        Render.Circle(x + 18 - w + Render.TextSize("FAKE (" + delta.toString(), font)[0], y + 8, 1, [255, 255, 255, 255]);
        draw_arc(x + 7 - w, y + 10, 5, 0, delta * 6, 2, [rgb.g,rgb.b,rgb.r, 255]);
    }else{
        Render.FilledRect(x - 4 - w, y + 2, 2, 18, [ color[0], color[1], color[2], 255]);
        Render.FilledRect(x - 2 - w, y + 2, w + 2 , 18, [17, 17, 17, color[3]]);
        Render.Circle(x + 18 - w + Render.TextSize("FAKE (" + delta.toString(), font)[0], y + 8, 1, [255, 255, 255, 255]);
        draw_arc(x + 7 - w, y + 10, 5, 0, delta * 6, 2, [color[0], color[1], color[2], 255]);
    }
    Render.String(x + 5 - w, y + 5, 0, text, [0, 0, 0, 180], font);
    Render.String(x + 4 - w, y + 4, 0, text, [255, 255, 255, 255], font);
    if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
        const mouse_pos = Global.GetCursorPosition();
        if (in_bounds(mouse_pos, x - w, y, x + w, y + 30)) {
            UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], mouse_pos[0] + w / 2);
            UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], mouse_pos[1] - 20);
        }
    }
}
}

function draw() {
    if(!World.GetServerString())
        return;

    var today = new Date();
    var hours1 = today.getHours();
    var minutes1 = today.getMinutes();
    var seconds1 = today.getSeconds();
    
    var hours = hours1 <= 9 ? "0"+hours1+":" : hours1+":";
    var minutes = minutes1 <= 9 ? "0" + minutes1+":" : minutes1+":";
    var seconds = seconds1 <= 9 ? "0" + seconds1 : seconds1;
    
    var server_tickrate = Globals.Tickrate().toString()
    var ebanaya_hueta = Math.round(Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing")).toString() // кто это сделал - контуженный на всю голову ебаный хуесос

    color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW","Watermark & Fake indicator color"]);

    var font = Render.GetFont("Verdana.ttf", 9, true);
    var wGradient = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark Gradient"])
    var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark"])) {
    var text = "ONEX-YAW [beta] | " + Cheat.GetUsername() + " | delay: " + ebanaya_hueta + "ms | " + server_tickrate + "tick | " + hours + minutes + seconds;
    
    var w = Render.TextSize(text, font)[0] + 8;
    var x = Global.GetScreenSize()[0];

    x = x - w - 10;
    if(wGradient){
        Render.GradientRect(x - 4, 12, 2, 18,0, [rgb.r,rgb.g,rgb.b,255] , [rgb.g,rgb.b,rgb.r,255]);
        Render.FilledRect(x - 2, 12, w + 2 , 18, [ color[0], color[1], color[2], color[3] ]);
    }else{
        Render.FilledRect(x - 2, 10, w + 2 , 2, [ color[0], color[1], color[2], color[3] ]);
        Render.FilledRect(x - 2, 12, w + 2 , 18, [ color[0], color[1], color[2], color[3] ]);
    }
    Render.String(x + 5, 10 + 5, 0, text, [0, 0, 0, 180], font);
    Render.String(x + 4, 10 + 4, 0, text, [ 255, 255, 255, 255 ], font);
}
}
Cheat.RegisterCallback("Draw", "draw");
Global.RegisterCallback("Draw", "main_aa");

function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return {
        r: Math.round(r * 255),
        g: Math.round(g * 255),
        b: Math.round(b * 255)
    };
}

function get_spectators()
{
    var specs = [];
    const players = Entity.GetPlayers();

    for (i = 0; i < players.length; i++)
    {
        const cur = players[i];

        if (Entity.GetProp(cur, "CBasePlayer", "m_hObserverTarget") != "m_hObserverTarget") {
            const obs = Entity.GetProp(cur, "CBasePlayer", "m_hObserverTarget")

            if (obs === Entity.GetLocalPlayer())
            {
                const name = Entity.GetName(cur);
                specs.push(name);
            }
        }
    }

    return specs;
}

function main_spec() {
    var salpha = 0;

        if (!World.GetServerString()) return;
        const x = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec x"]),
            y = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec y"]);
        const text = get_spectators();
        colorspec = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"]);
 
        var font = Render.AddFont("Verdana", 10, 100);
        var frames = 8 * Globals.Frametime();
        var width2 = 84;
        var maxwidth2 = 0;
        var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
      
        if (text.length > 0) {
            salpha = Math.min(salpha + frames, 1);
        } else {
            salpha = salpha - frames;
            if (salpha < 0) salpha = 0;
        }
      
        for (i = 0; i < text.length; i++) {
            if (Render.TextSize(text[i], font)[0] > maxwidth2) {
                maxwidth2 = Render.TextSize(text[i], font)[0];
            }
        }
        if (maxwidth2 == 0) maxwidth2 = 50;
        width2 = width2 + maxwidth2;
      
            flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
            if (getDropdownValue(flags, 4)) {


        for (i = 0; i < text.length; i++)
        {
            Render.FilledRect(x, y + 1, width2, 18, [colorspec[0], colorspec[1], colorspec[2], colorspec[3]]);

            Render.FilledRect(x, y + 3, width2, 18, [17, 17, 17,  255]);
            Render.String(x + width2 / 2 - (Render.TextSize("spectators", font)[0] / 2) + 2, y + 5, 0, "spectators", [0, 0, 0,  255], font);
            Render.String(x + width2 / 2 - (Render.TextSize("spectators", font)[0] / 2) + 1, y + 6, 0, "spectators", [255, 255, 255,  255], font);
    
        Render.String(x + (Render.TextSize((text[i]), font)[0] /2 ) , y + 24 + 15 * i, 1, text[i], [0, 0, 0, 255 / 1.3], font);
        Render.String(x + (Render.TextSize((text[i]), font)[0] /2 ), y + 24 + 15 * i, 1, text[i], [255, 255, 255, 255], font);
        }   
    }
              
      
        if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
            const mouse_pos = Global.GetCursorPosition();
            if (in_bounds(mouse_pos, x, y, x + width2, y + 30)) {
                UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec x"], mouse_pos[0] - width2 / 2);
                UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec y"], mouse_pos[1] - 20);
            }
        }
        
}
Global.RegisterCallback("Draw", "main_spec")

function RGB(h, s, v)
{
    var r, g, b, i, f, p, q, t;
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    
return {  r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) }; }

var oldTick = Global.Tickcount()
var ticksToDelay = 1
var up = true

function rgbglow()
{
  tickcount = Global.Tickcount();
  color = RGB(tickcount % 350 / 350, 1, 1, 1, 120);

  var glow_checkbox = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Rainbow Color"]);
  var glow_checkbox1 = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Rainbow Color"]);
  var glow_checkbox2 = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Prediction Rainbow Color"]);

    if ( glow_checkbox )
        {
          UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"], [color.r, color.g, color.b, 255]);

        }
        if ( glow_checkbox1 )
        {
          UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"], [color.r, color.g, color.b, 255]);

     }
     if ( glow_checkbox2 )
     {
       UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Predict Color"], [color.r, color.g, color.b, 255]);

     }
}

Cheat.RegisterCallback("CreateMove","rgbglow");



function in_bounds(vec, x, y, x2, y2) {
return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function draw_arc(x, y, radius, start_angle, percent, thickness, color) {
var precision = (2 * Math.PI) / 30;
var step = Math.PI / 180;
var inner = radius - thickness;
var end_angle = (start_angle + percent) * step;
var start_angle = (start_angle * Math.PI) / 180;

for (; radius > inner; --radius) {
for (var angle = start_angle; angle < end_angle; angle += precision) {
var cx = Math.round(x + radius * Math.cos(angle));
var cy = Math.round(y + radius * Math.sin(angle));

var cx2 = Math.round(x + radius * Math.cos(angle + precision));
var cy2 = Math.round(y + radius * Math.sin(angle + precision));

Render.Line(cx, cy, cx2, cy2, color);
}
}
}

function d()
{
    UI.SetValue(["Misc.", "SUBTAB_MGR", "Movement", "SHEET_MGR","General","Turn speed"],UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Strafe Turn speed"]))

}
Cheat.RegisterCallback("Draw", "d")



 


var alpha = 0;
var maxwidth = 0;
var swalpha = 0;
var dmgalpha = 0;
var legitaalpha = 0;
var fdalpha = 0;
var apalpha = 0;
var aialpha = 0;
var spalpha = 0;
var fbalpha = 0;
var dtalpha = 0;
var hsalpha = 0;
var doalpha = 0;
var textalpha = 0;
var h = new Array();
 
function in_bounds(vec, x, y, x2, y2) {
    return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}
 
function main_hotkeys() {
     flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
     if (getDropdownValue(flags, 3)) {
        if (!World.GetServerString()) return;

        const x = (UI.GetValue(["Rage", "ONEX-YAW", "Hotkeys_x"]))
        const y = UI.GetValue(["Rage", "ONEX-YAW", "Hotkeys_y"]);
        var font = Render.AddFont("Verdana", 10, 100);
        var frames = 8 * Globals.Frametime();
        var width = 75;
        var maxwidth = 0;
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            swalpha = Math.min(swalpha + frames, 1);
        } else {
            swalpha = swalpha - frames;
            if (swalpha < 0) swalpha = 0;
            if (swalpha == 0) {
                h.splice(h.indexOf("Slow walk"));
            }
        }
 
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"])) {
            fdalpha = Math.min(fdalpha + frames, 1);
        } else {
            fdalpha = fdalpha - frames;
            if (fdalpha < 0) fdalpha = 0;
            if (fdalpha == 0) {
                h.splice(h.indexOf("Duck peek assist"));
            }
        }
        
        if (UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"])) {
            apalpha = Math.min(apalpha + frames, 1);
        } else {
            apalpha = apalpha - frames;
            if (apalpha < 0) apalpha = 0;
            if (apalpha == 0) {
                h.splice(h.indexOf("Auto peek"));
            }
        }
 
        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            aialpha = Math.min(aialpha + frames, 1);
        } else {
            aialpha = aialpha - frames;
            if (aialpha < 0) aialpha = 0;
            if (aialpha == 0) {
                h.splice(h.indexOf("Anti-aim inverter"));
            }
        }

        
        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            aialpha = Math.min(aialpha + frames, 1);
        } else {
            aialpha = aialpha - frames;
            if (aialpha < 0) aialpha = 0;
            if (aialpha == 0) {
                h.splice(h.indexOf("Inverter"));
            }
        }
 
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"])) {
            spalpha = Math.min(spalpha + frames, 1);
        } else {
            spalpha = spalpha - frames;
            if (spalpha < 0) spalpha = 0;
            if (spalpha == 0) {
                h.splice(h.indexOf("Safe point override"));
            }
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"])) {
            fbalpha = Math.min(fbalpha + frames, 1);
        } else {
            fbalpha = fbalpha - frames;
            if (fbalpha < 0) fbalpha = 0;
            if (fbalpha == 0) {
                h.splice(h.indexOf("Force body aim"));
            }
        }
 
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Double tap"])) {
            dtalpha = Math.min(dtalpha + frames, 1);
        } else {
            dtalpha = dtalpha - frames;
            if (dtalpha < 0) dtalpha = 0;
            if (dtalpha == 0) {
                h.splice(h.indexOf("Double tap"));
            }
        }

        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"])) {
            dmgalpha = Math.min(dmgalpha + frames, 1);
        } else {
            dmgalpha = dmgalpha - frames;
            if (dmgalpha < 0) dmgalpha = 0;
            if (dmgalpha == 0) {
                h.splice(h.indexOf("Hide shots"));
            }
        }
        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
            legitaalpha = Math.min(legitaalpha + frames, 1);
        } else {
            legitaalpha = legitaalpha - frames;
            if (legitaalpha < 0) legitaalpha = 0;
            if (legitaalpha == 0) {
                h.splice(h.indexOf("Legit AA"));
            }
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Hide shots"])) {
            hsalpha = Math.min(hsalpha + frames, 1);
        } else {
            hsalpha = hsalpha - frames;
            if (hsalpha < 0) hsalpha = 0;
            if (hsalpha == 0) {
                h.splice(h.indexOf("Hide shots"));
            }
        }
 
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            if (h.indexOf("Slow walk") == -1)
                h.push("Slow walk")
        }
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"])) {
            if (h.indexOf("Duck peek assist") == -1)
                h.push("Duck peek assist")
        }
        if (UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"])) {
            if (h.indexOf("Auto peek") == -1)
                h.push("Auto peek")
        }
        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            if (h.indexOf("Anti-aim inverter") == -1)
                h.push("Anti-aim inverter")
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"])) {
            if (h.indexOf("Safe point override") == -1)
                h.push("Safe point override")
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"])) {
            if (h.indexOf("Force body aim") == -1)
                h.push("Force body aim")
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Double tap"])) {
            if (h.indexOf("Double tap") == -1)
                h.push("Double tap")
        }
        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"])) {
            if (h.indexOf("Damage Override") == -1)
                h.push("Damage Override")
        }
            if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
            if (h.indexOf("Legit AA") == -1)
                h.push("Legit AA")
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Hide shots"])) {
            if (h.indexOf("Hide shots") == -1)
                h.push("Hide shots")
        }
         arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"]);

        if (h.length > 0) {
            alpha = Math.min(alpha + frames, 1);
        } else {
            alpha = alpha - frames;
            if (alpha < 0) alpha = 0;
        }
        for (i = 0; i < h.length; i++) {
            if (Render.TextSize(h[i], font)[0] > maxwidth) {
                maxwidth = Render.TextSize(h[i], font)[0];
            }
        }
        if (maxwidth == 0) maxwidth = 50;
        width = width + maxwidth;
        if (alpha > 0) {
                Render.FilledRect(x, y + 3, width, 2, [arrows_color[0], arrows_color[1], arrows_color[2], alpha * 255]);
                Render.FilledRect(x, y + 5, width, 18, [17, 17, 17, 255]);
                Render.String(x + width / 2 - (Render.TextSize("keybinds", font)[0] / 2) + 2, y + 9, 0, "keybinds", [0, 0, 0, alpha * 255 / 1.3], font);
                Render.String(x + width / 2 - (Render.TextSize("keybinds", font)[0] / 2) + 1, y + 8, 0, "keybinds", [255, 255, 255, alpha * 255], font);
                //Render.FilledRect(x, y + 23, width, 18 * h.length, [17, 17, 17, Math.min(255, alpha * 255)]);
                for (i = 0; i < h.length; i++) {
                    switch (h[i]) {
                        case 'Slow walk':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(swalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, swalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, swalpha * 255], font);
 
                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, swalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, swalpha * 255], font);
                            break;
                        case 'Duck peek assist':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(fdalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, fdalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, fdalpha * 255], font);
 
                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, fdalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, fdalpha * 255], font);
                            break;
                        case 'Auto peek':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(apalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, apalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, apalpha * 255], font);
 
                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, apalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, apalpha * 255], font);
                            break;
                        case 'Anti-aim inverter':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(aialpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, aialpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, aialpha * 255], font);
 
                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, aialpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, aialpha * 255], font);
                            break;
                            case 'Legit AA':
                                Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(aialpha * 255, 255))]);
                                Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, legitaalpha * 255 / 1.3], font);
                                Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, legitaalpha * 255], font);
    
                                Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, legitaalpha * 255 / 1.3], font);
                                Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, legitaalpha * 255], font);
                                break;
                        case 'Safe point override':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(spalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, spalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, spalpha * 255], font);
 
                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, spalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, spalpha * 255], font);
                            break;
                        case 'Force body aim':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(fbalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, fbalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, fbalpha * 255], font);
 
                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, fbalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, fbalpha * 255], font);
                            break;
                            case 'Damage Override':
                                Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(255, 255))]);
                                Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, 255], font);
                                Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, 255], font);
    
                                Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0,  255 / 1.3], font);
                                Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255,  255], font);
                                break;
                        case 'Double tap':

                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, 255], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, dtalpha * 255], font);
 
                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, dtalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, dtalpha * 255], font);
                            break;

                        case 'Hide shots':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min( 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0,  hsalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, hsalpha *  255], font);
 
                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, hsalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, hsalpha * 255], font);
                            break;

                    }
 
                }
        }
        if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
            const mouse_pos = Global.GetCursorPosition();
            if (in_bounds(mouse_pos, x, y, x + width, y + 30)) {
                UI.SetValue(["Rage", "ONEX-YAW", "Hotkeys_x"], mouse_pos[0] - 50);
                UI.SetValue(["Rage", "ONEX-YAW", "Hotkeys_y"], mouse_pos[1] - 20);
            }
        }
    }
}
Global.RegisterCallback("Draw", "main_hotkeys")

hitboxes = [
    'generic',
    'head',
    'chest',
    'stomach',
    'left arm',
    'right arm',
    'left leg',
    'right leg',
    '?'
];
var shots = 0;
var predicthc = 0;
var safety = 0;
var hitboxName = "";
var choked = 0;
var exploit = 0;
var logs = [];
var logsct = [];
var logsalpha = [];
function getHitboxName(index)
{
    switch (index)
    {
        case 0:
            hitboxName = "head";
            break;
        case 1:
            hitboxName = "head";
            break;
        case 2:
            hitboxName = "stomach";
            break;
        case 3:
            hitboxName = "stomach";
            break;
        case 4:
            hitboxName = "stomach";
            break;
        case 5:
            hitboxName = "chest";
            break;
        case 6:
            hitboxName = "chest";
            break;
        case 7:
            hitboxName = "left leg";
            break;
        case 8:
            hitboxName = "right leg";
            break;
        case 9:
            hitboxName = "left leg";
            break;
        case 10:
            hitboxName = "right leg";
            break;
        case 11:
            hitboxName = "left leg";
            break;
        case 12:
            hitboxName = "right leg";
            break;
        case 13:
            hitboxName = "left arm";
            break;
        case 14:
            hitboxName = "right arm";
            break;
        case 15:
            hitboxName = "left arm";
            break;
        case 16:
            hitboxName = "left arm";
            break;
        case 17:
            hitboxName = "right arm";
            break;
        case 18:
            hitboxName = "right arm";
            break;
        default:
            hitboxName = "body";
    }
    return hitboxName;
}
function HitgroupName(index) {
    return hitboxes[index] || 'body';
}

var target = -1;
var shots_fired = 0;
var hits = 0;
var lastUpdate = 0;
var logged = false;

function ragebot_fire() {
    predicthc = Event.GetInt("hitchance");
    safety = Event.GetInt("safepoint");
    hitboxName = getHitboxName(Event.GetInt("hitbox"));
    exploit = (Event.GetInt("exploit")+1).toString();
  target = Event.GetInt("target_index");
  shots_fired++;
  logged = false;
  lastUpdate = Globals.Curtime();
}

function hitlog() {
    var hit = Entity.GetEntityFromUserID(Event.GetInt("userid"));
    var attacker = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
    if (attacker == Entity.GetLocalPlayer() && hit == target) hits++;

    var hittype = "Hit ";
    me = Entity.GetLocalPlayer();
    hitbox = Event.GetInt('hitgroup');
    target_damage = Event.GetInt("dmg_health");
    target_health = Event.GetInt("health");
    victim = Event.GetInt('userid');
    attacker = Event.GetInt('attacker');
    weapon = Event.GetString('weapon');
    victimIndex = Entity.GetEntityFromUserID(victim);
    attackerIndex = Entity.GetEntityFromUserID(attacker);
    name = Entity.GetName(victimIndex);
      var simtime = Globals.Tickcount() % 17;

    var flags = "";

    if (exploit == 2)
      flags += "T";

    flags += "B";

    if (hitbox == 1)
      flags += "H";

      if (safety == 1) {
          safety = "true";
      }
      else {
          safety = "false";
      }

    if (weapon == "hegrenade")
      hittype = "Naded ";
    else if (weapon == "inferno")
      hittype = "Burned ";
    else if (weapon == "knife")
      hittype = "Knifed ";

    if (me == attackerIndex && me != victimIndex) {
    if (hittype == "Hit ") {

            if(UI.GetValue(["Rage", "ONEX-YAW", "Better Shotlogger"])) {

                Cheat.PrintColor([255, 255, 255, 255], "[onetap] ");

      Cheat.Print("["+shots.toString()+"] "+hittype+name+"'s "+HitgroupName(hitbox)+" for "+target_damage.toString()+" ("+target_health.toString()+" remaining) aimed="+hitboxName+"("+predicthc.toString()+"%%) safety="+safety+" ("+flags+") ("+simtime+":"+exploit+")\n");
          logs.push("["+shots.toString()+"] "+hittype+name+"'s "+HitgroupName(hitbox)+" for "+target_damage.toString()+" ("+target_health.toString()+" remaining) aimed="+hitboxName+"("+predicthc.toString()+"%%) safety="+safety+" ("+flags+") ("+simtime+":"+exploit+")");
    }

        logsct.push(Globals.Curtime());
        logsalpha.push(255);
    }
    }
  if (shots == 99)
    shots = 0;
  else
    shots++;

}

function removelogs() {
    if (logs.length > 6) {
        logs.shift();
        logsct.shift();
        logsalpha.shift();
    }

    if (logsct[0] + 6.5 < Globals.Curtime()) {
        logsalpha[0] -= Globals.Frametime() * 600;
        if (logsalpha[0] < 0) {
            logs.shift();
            logsct.shift();
            logsalpha.shift();
        }
    }
}


function onDraw() {
    if (!World.GetServerString()) return;
    var font = Render.GetFont("smallest_pixel-7.ttf", 9, true);



    for (i = 0; i < logs.length; i++) {
        Render.String(4, 4 + 13*i, 0, logs[i], [255, 255, 255, logsalpha[i]], font);
    }

    if (shots_fired > hits && (Globals.Curtime() - lastUpdate > 0.33)) {
      if (Globals.Curtime() - lastUpdate > 1) {
        shots_fired = 0;
        hits = 0;
      }
      if (!logged) {
        var simtime = Globals.Tickcount() % 16;
        logged = true;
        var issafe = "true";
        var reason = "?";
        if (safety == 0) {
          issafe = "false";
        }

        if (Entity.IsAlive(target) == false)
            reason = "death";
        else if (Entity.IsAlive(Entity.GetLocalPlayer()) == false)
            reason = "dead";
        else if (safety == true && predicthc < 76)
            reason = "spread";
        else if (safety == true && predicthc > 76)
            reason = "prediction error";

        var flags = "";

        if (exploit == 2)
          flags += "T";

          flags += "B";

        if(UI.GetValue(["Rage", "ONEX-YAW", "Better Shotlogger"])) {
            Cheat.PrintColor([255, 255, 255, 255], "[onetap] ");

        Cheat.Print("["+shots.toString()+"] "+"Missed "+Entity.GetName(target)+"'s "+hitboxName+"("+predicthc.toString()+"%%) due to "+reason+", safety="+issafe+" ("+flags+") ("+simtime+":"+exploit+")\n");
            logs.push("["+shots.toString()+"] "+"Missed "+Entity.GetName(target)+"'s "+hitboxName+"("+predicthc.toString()+"%%) due to "+reason+", safety="+issafe+" ("+flags+") ("+simtime+":"+exploit+")");

        logsct.push(Globals.Curtime());
            logsalpha.push(255);
        if (shots == 99)
          shots = 0;
        else
          shots++;
        }
    }
    }
}
function main() {
    Global.RegisterCallback("ragebot_fire", "ragebot_fire");
    Global.RegisterCallback("player_hurt", "hitlog");
    Global.RegisterCallback("Draw", "onDraw");
    Global.RegisterCallback("Draw", "removelogs");
}

main();
for(var name in weaponTabNames) {
    UI.AddSliderInt(["Rage", "Target", weaponTabNames[name]], "Damage Override", 0, 130)
    UI.AddSliderInt(["Rage", "Accuracy", weaponTabNames[name]], "Hitchance Override", 1, 100)
}
var weap_rev = (Entity.GetProp(Entity.GetWeapon(Entity.GetLocalPlayer()), "CBaseAttributableItem", "m_iItemDefinitionIndex") & 0xFFFF) == 64
var username = Cheat.GetUsername()
var screen_size = Global.GetScreenSize()
var lp = Entity.GetLocalPlayer()
var velocity = Math.round(getVelocity(lp)).toString()
var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
var oldTick = 0
var lastPressed = 0
var curtick = 0
var h = [];
var drawLeft = 0
var drawHideReal = 1
var drawRight = 0
var drawBack = 0
var leftWasPressed = 0
var rightWasPressed = 0
var backWasPressed = 0
var upWasPressed = 0
var isHideRealActive = 0
var altfakelag = 0
var cur_dmg = 0
var cur_hit = 0
var anim = 10 * Math.abs(Math.sin(64 * Globals.Realtime()))
var antiaim_state = "default"
var weapon = ""
var recharge = 0
var r8dt = false
var legitaa_time = Global.Realtime()
var E = true
var defuse = false
var distance = 0
var distance1 = 0
var original_aa = true
var planting = false
var fill = 0
var isbomb = 0
var bombsiteonplant = ""
var on_plant_time
    /* PATHES ARRAY */
pathes = []
var lasttime = 0
function get_all_keys() {
    ragekeysgeneral = UI.GetChildren(["Rage", "General", "SHEET_MGR", "General", "Key assignment"])
    ragekeysexploits = UI.GetChildren(["Rage", "Exploits", "SHEET_MGR", "Keys", "Key assignment"])
    ragekeysantiaim = UI.GetChildren(["Rage", "Anti Aim", "SHEET_MGR", "General", "Key assignment"])
    miskkeys = UI.GetChildren(["Misc.", "Keys", "SHEET_MGR", "General", "Key assignment"])
    scriptkeys = UI.GetChildren(["Config", "Scripts", "Keys", "JS Keybinds", ])
    for(p in ragekeysgeneral) {
        pathes.push([
            ["Rage", "General", "SHEET_MGR", "General", "Key assignment", ragekeysgeneral[p]], ragekeysgeneral[p]
        ])
    }
    for(o in ragekeysexploits) {
        pathes.push([
            ["Rage", "Exploits", "SHEET_MGR", "Keys", "Key assignment", ragekeysexploits[o]], ragekeysexploits[o]
        ])
    }
    for(r in ragekeysantiaim) {
        pathes.push([
            ["Rage", "Anti Aim", "SHEET_MGR", "General", "Key assignment", ragekeysantiaim[r]], ragekeysantiaim[r]
        ])
    }
    for(n in miskkeys) {
        pathes.push([
            ["Misc.", "Keys", "SHEET_MGR", "General", "Key assignment", miskkeys[n]], miskkeys[n]
        ])
    }
    for(z in scriptkeys) {
        pathes.push([
            ["Config", "Scripts", "Keys", "JS Keybinds", scriptkeys[z]], scriptkeys[z]
        ])
    }
}
/* On start */
get_all_keys()
/* shadow */
Render.Strings = function(x, y, align, txt, col, font){
    Render.String(x, y + 1, align, txt, [0, 0, 0, 255], font);
    Render.String(x, y, align, txt, col, font);
}
/* dt */
function doubletap(name) {
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Doubletap"])) {
        var exploitCharge = Exploit.GetCharge();
        Exploit[(1 != exploitCharge ? "Enable" : "Disable") + "Recharge"](), Exploit.OverrideMaxProcessTicks(UI.GetValue(["Rage", "ONEX-YAW", "Double Tap Ticks"])), Exploit.OverrideShift(UI.GetValue(["Rage", "ONEX-YAW", "Double Tap Ticks"]))
        Exploit.OverrideTolerance(0), can_shift_shot(10) && 1 != exploitCharge && (Exploit.DisableRecharge(), Exploit.Recharge())
        if(name == "ssg08") {
            can_shift_shot(0)
                }
        Exploit.EnableRecharge(), Exploit.OverrideShift(16), Exploit.OverrideTolerance(3)
    }
    if(weap_rev) {
        if(r8dt && recharge + 20 == Globals.Tickcount()) {
            UI.ToggleHotkey(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])
            r8dt = false
        }
    }
}

function on_wpn_fire() {
    if((Entity.GetEntityFromUserID(Event.GetInt("userid")) != Entity.GetLocalPlayer()) || !weap_rev) return;
    recharge = Globals.Tickcount();
    if(UI.GetValue(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])) {
        UI.ToggleHotkey(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])
        r8dt = true;
    }
}

function doubletapunload() {
    Exploit.EnableRecharge(), Exploit.OverrideShift(16), Exploit.OverrideTolerance(0)
}
/* damage/hitchance override */
function dmghcoverride() {
    var target = Entity.GetEnemies()
    var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
    if(!Entity.IsAlive(Entity.GetLocalPlayer())) return;
    if(!weaponTabNames.hasOwnProperty(weaponName)) {
        return;
    }
    var isDamageOverride = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"]) ? true : false
    var isHitchanceOverride = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Hitchance Override"]) ? true : false
    for(var i in target) {
        if(isDamageOverride) {
            if(UI.GetValue(["Rage", "Target", weaponTabNames[weaponName], "Damage Override"]) != 0) {
                Ragebot.ForceTargetMinimumDamage(target[i], UI.GetValue(["Rage", "Target", weaponTabNames[weaponName], "Damage Override"]))
            } else {
                Ragebot.ForceTargetMinimumDamage(target[i], UI.GetValue(["Rage", "Target", "General", "Damage Override"]))
            }
        }
        if(isHitchanceOverride) {
            if(UI.GetValue(["Rage", "Accuracy", weaponTabNames[weaponName], "Hitchance Override"]) != 0) {
                Ragebot.ForceTargetHitchance(target[i], UI.GetValue(["Rage", "Accuracy", weaponTabNames[weaponName], "Hitchance Override"]))
            } else {
                Ragebot.ForceTargetHitchance(target[i], UI.GetValue(["Rage", "Accuracy", "General", "Hitchance Override"]))
            }
        }
    }
}
/* UI Status controller */
function on_menu_changes() {
    var type = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Tab"])
    var is_rage = type == 0 ? 1 : 0,
        is_vis = type == 1 ? 1 : 0,
        is_rgb = type == 2 ? 1 : 0,
        is_misc = type == 3 ? 1 : 0
        is_trash = type == 4 ? 1 : 0

        /* RAGE */
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Doubletap"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Double Tap Ticks"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Anti-Aim"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Anti-Aim Conditions"], is_rage == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Better Anti-Aim"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Fake-Lag"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW","Anti Bruteforce"], is_rage)
        /* VISUALS */
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Manual & Desync Indicator"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap Watermark Color"], is_rgb)

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Blend While Holding Grenade"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Shotlogger"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Crosshair Hitlogger"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Quake Hitmarker"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hitmarker Color"], is_rgb)

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Custom scope lines"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines color"], is_rgb);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Override FOV while scoped"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines width"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines offset"], is_vis);

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap styled watermark"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark & Fake indicator color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Predict Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Prediction Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark Gradient"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Fake Gradient"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spec x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spec y"], is_trash)
    
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Leg Fucker"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Manual Color"], is_rgb == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Desync Color"], is_rgb == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Aspect ratio"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Strafe Turn speed"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "ThirdPerson Dist"], is_vis)


    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "AWP Fast Buy"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hotkeys_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hotkeys_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Additional Flags"], is_misc)
}

function crosshairindicators()
{
    var fonts = {
        "tahomabd": Render.GetFont("tahomabd.ttf", 10, true),
        "verdanab": Render.GetFont("verdanab.ttf", 19, true),
        "calibrib": Render.GetFont("calibrib.ttf", 11, true),
        "ebrimabd": Render.GetFont("ebrimabd.ttf", 10, true),
        "verdanab8": Render.GetFont("verdanab.ttf", 8, true),
        "verdana": Render.GetFont("smallest_pixel-7.ttf", 12, true),
        "tahoma10": Render.GetFont("tahoma.ttf", 10, true),
        "calibrib20": Render.GetFont("calibrib.ttf", 20, true),
        "tahoma18": Render.GetFont("tahoma.ttf", 18, true),
        "pixel": Render.GetFont("arialbd.ttf", 10, true)
    }
    inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
    isDmg = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"]);
    isDoubletap = UI.GetValue(["Rage", "Exploits", "Keys", "Double tap"]);
    isHideshots = UI.GetValue(["Rage", "Exploits", "Keys", "Hide shots"]);
    isSafe = UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"]);;
    isBody = UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]);
    isFs = UI.GetValue(["Rage", "Anti Aim", "Directions", "At targets"]);
    isAuto = UI.GetValue(["Rage", "Anti Aim", "Directions", "Auto direction"]);
    isDuck = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]);
    isPing = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Ping Spike"]);
    isPeek = UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"]);
    isAntiAim = UI.GetValue(["Rage", "Anti Aim", "General", "Enabled"])
    isHc = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Hitchance Override"])
    isSlow = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"]);
    add_y = 15;
     flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
     var col = [255, 0, 100, 255];
     function get_velocity(player) {var velocity = Entity.GetProp(player, "CBasePlayer", "m_vecVelocity[0]");return Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);}
     function get_delta(player) {var speed = get_velocity(player);var delta = (speed / 8);return (58 - delta);}
    
    var local_player = Entity.GetLocalPlayer();
     var desync_delta = get_delta(local_player)   

    if (getDropdownValue(flags, 0)) {
    if(isBody) {
        Render.String(screen_size[0] / 2 - 20.5, screen_size[1] / 2 + add_y, 0, "BAIM", [0, 0, 0, 155], fonts.pixel);
        Render.String(screen_size[0] / 2 - 20.5, screen_size[1] / 2 + add_y, 0, "BAIM", [177, 171, 255, 255], fonts.ebrimabd);
    } else if(isSafe) {
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "SP", [0, 0, 0, 100], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "SP", [177, 171, 255, 255], fonts.ebrimabd);
    } else {
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "NORM", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "NORM", [3, 161, 252, 255], fonts.ebrimabd);
    }
    if(isFs) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "AUTO", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "AUTO", [209, 159, 230, 255], fonts.ebrimabd);
    } else {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "DYNAMIC", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "DYNAMIC", [209, 159, 230, 255], fonts.ebrimabd);
    }
    if(isDuck && isDoubletap) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT (fd)", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT (fd)", [255, 0, 0, 255], fonts.ebrimabd);
    } else if(isDoubletap) {
        add_y = add_y + 11
    /*    var dsy = {
            "col": UI.GetColor(["Rage", "XO-YAW", "Desync Circle Color"]),
            "inv": UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
        }
        var screens_size = Render.GetScreenSize();
        var screen_middle_x = screens_size[0] * 0.5;
        var screen_middle_y = screens_size[1] * 0.5;
        var view_angles = Local.GetViewAngles();
        var real_yaw = Local.GetRealYaw();
        var fake_yaw = Local.GetFakeYaw();
        var view_yaw = view_angles[1] - 180;
        var real = adjust_angle(real_yaw - view_yaw);
        var fake = adjust_angle(fake_yaw - view_yaw);
        render_arc(screen_middle_x, screen_middle_y, 8, 3, 0, 360, 32, [0, 0, 0, 255])
        render_arc(screen_middle_x, screen_middle_y, 7, 4, dsy.inv ? 90 : 270, dsy.inv ? 180 : 180, 32, dsy.col)
        render_arc(screen_middle_x, screen_middle_y, 15, 12, fake - (12 * 0.5), 44, 32, dsy.col)
        */
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", [0, 0, 0, 155], fonts.ebrimabd);

        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", Exploit.GetCharge() == 1 ? [200, 255, 255, 255] : [212, 208, 207, 255], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", Exploit.GetCharge() == 1 ? [200, 255, 255, 255] : [212, 208, 207, 255], fonts.ebrimabd);

    }
    if(isHideshots) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [200, 255, 255, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [200, 255, 255, 255], fonts.ebrimabd);
    }
    if(isDmg) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DMG", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DMG", [200, 185, 255, 255], fonts.ebrimabd);
    }
    if(isHc) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HC", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HC", [250, 85, 85, 255], fonts.ebrimabd)
    }
//    Render.GradientRect((Global.GetScreenSize()[0] / 2 + -desync_delta * 2) + desync_delta + 2, Global.GetScreenSize()[1] / 2 + 11, desync_delta, 3, 1, [col[0], col[1], col[2], 0], [col[0], col[1], col[2], 255]);
//    Render.GradientRect((Global.GetScreenSize()[0] / 2 + -desync_delta * 2) + (desync_delta * 2), Global.GetScreenSize()[1] / 2 + 11, desync_delta, 3, 1, [col[0], col[1], col[2], 255], [col[0], col[1], col[2], 0]);
}
if(getDropdownValue(flags, 2)) {
    add_y = 0
    Render.Indicator = function(text, col) {
        x = screen_size[0] / 100
        y = screen_size[1] / 1.33
        fonts = Render.GetFont("calibrib.ttf", 21, true)
        text_size = Render.TextSize(text, fonts)
        width = text_size[0] - 2;
        add_y = add_y + 33
        Render.GradientRect(13, y - add_y - 3, width / 2, 26, 1, [0, 0, 0, 0], [0, 0, 0, 55]);
        Render.GradientRect(13 + width / 2, y - add_y - 3, width / 2, 26, 1, [0, 0, 0, 55], [0, 0, 0, 0]);
        Render.String(x, y + 1 - add_y, 0, text, [33, 33, 33, 180], fonts)
        Render.String(x, y - add_y, 0, text, col, fonts)
    }
    fill = 3.125 - (3.125 + on_plant_time - Globals.Curtime())
    if(fill > 3.125) {
        fill = 3.125
    }
    fonts = Render.GetFont("calibrib.ttf", 21, true)
    if(Entity.IsAlive(Entity.GetLocalPlayer())) {
        if(velocity > 255 || Inair()) {
            Render.Indicator("LC", velocity > 275 ? [132, 195, 16, 255] : [255, 0, 0, 255])
        }
        if(isDuck) {
            Render.Indicator("DUCK", [255, 255, 255, 255])
        }
        if(isBody) {
            Render.Indicator("BAIM", [255, 0, 0, 255])
        }
        if(isSafe) {
            Render.Indicator("SAFE", [132, 195, 16, 255])
        }
        if(isPing) {
            Render.Indicator("PING", [255 - ((Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 2.29824561404), (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 3.42105263158, (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 0.22807017543, 255])
        }
        if(isDmg) {
            Render.Indicator("DMG : " + cur_dmg + "", [164, 164, 164, 255]);
        }
        if(isHc) {
            Render.Indicator("HC : " + cur_hit + "", [200, 185, 255, 255]);
        }
        if(isAuto) {
            Render.Indicator("FREESTAND", [132, 195, 16, 255]);
        }
        if(Convar.GetInt("weapon_accuracy_nospread") != 0) {
            Render.Indicator("NS", [255, 0, 0, 255])
        }
        if(isFs) {
            Render.Indicator("AT", [132, 195, 16, 255])
        }
    }
    var c4 = Entity.GetEntitiesByClassID(129)[0];
    if(c4 != undefined) {
        var eLoc = Entity.GetRenderOrigin(c4);
        var lLoc = Entity.GetRenderOrigin(Entity.GetLocalPlayer())
        var distance = calcDist(eLoc, lLoc);
        var willKill = false;
        var dmg;
        //player checks
        var armor = Entity.GetProp(Entity.GetLocalPlayer(), "CCSPlayerResource", "m_iArmor"); // player armor
        var health = Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_iHealth"); // player health
        //c4 things
        var isbombticking = Entity.GetProp(c4, "CPlantedC4", "m_bBombTicking");
        var timer = (Entity.GetProp(c4, "CPlantedC4", "m_flC4Blow") - Globals.Curtime()); // c4 left time
        var c4length = Entity.GetProp(c4, "CPlantedC4", "m_flTimerLength");
        var bar_length = (((Render.GetScreenSize()[1] - 50) / c4length) * (timer));
        //defusing things
        var deflength = Entity.GetProp(c4, "CPlantedC4", "m_flDefuseLength"); // length of defuse
        var deftimer = (Entity.GetProp(c4, "CPlantedC4", "m_flDefuseCountDown") - Globals.Curtime()); // timer when defusing
        var defbarlength = (((Render.GetScreenSize()[1] - 50) / deflength) * (deftimer)); // lenght for left bar
        var isbeingdefused = Entity.GetProp(c4, "CPlantedC4", "m_hBombDefuser"); // check if bomb is being defused
        var gotdefused = Entity.GetProp(c4, "CPlantedC4", "m_bBombDefused"); // check if bomb has or hasnt defused
        const a = 450.7;
        const b = 75.68;
        const c = 789.2;
        const d = (distance - b) / c;
        var damage = a * Math.exp(-d * d);
        if(armor > 0) {
            var newDmg = damage * 0.5;
            var armorDmg = (damage - newDmg) * 0.5;
            if(armorDmg > armor) {
                armor = armor * (1 / .5);
                newDmg = damage - armorDmg;
            }
            damage = newDmg;
        }
        dmg = Math.ceil(damage);
        if(dmg >= health) {
            willKill = true;
        } else {
            willKill = false;
        }
        timer = parseFloat(timer.toPrecision(3));
        timer2 = parseFloat(timer.toPrecision(2));
        timer3 = parseFloat(timer.toPrecision(1));
        if(!isbombticking) return;
        if(gotdefused) return;
        if(timer >= 0.1) {
            Render.Indicator(getSite(c4) + timer.toFixed(1) + "s", [255, 255, 255, 255])
        }
        if(willKill) {
            Render.Indicator("FATAL", [255, 0, 0, 255])
        } else if(damage > 0.5) {
            Render.Indicator("-" + dmg + "HP", [210, 216, 112, 255])
        }
        // defuse time bar
        if(isbeingdefused > 0) {
            if(timer > deflength && timer >= 0.1) {
                Render.FilledRect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
                Render.FilledRect(0, Render.GetScreenSize()[1] - defbarlength, 10, Render.GetScreenSize()[1], [58, 191, 54, 120]);
                Render.Rect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
            } else {
                Render.FilledRect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
                Render.FilledRect(0, Render.GetScreenSize()[1] - defbarlength, 10, Render.GetScreenSize()[1], [252, 18, 19, 120]);
                Render.Rect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
            }
        }
    }
    if(planting) {
        textsize_C4 = Render.TextSize(bombsiteonplant, fonts)[0] + 15;
        Render.Indicator(bombsiteonplant, [210, 216, 112, 255])
        Render.OutlineCircle(x + textsize_C4, y - 25 - add_y + 35, fill / 3.3, [255, 255, 255, 255])
    }
    if(Entity.IsAlive(Entity.GetLocalPlayer())) {

        if(isHideshots) {
            Render.Indicator("ONSHOT", [132, 195, 16, 255])
        }
        if(isDoubletap) {
            Render.Indicator("DT", Exploit.GetCharge() == 1 ? [255, 255, 255, 255] : [255, 0, 0, 255])
        }
    }
}
}

Cheat.RegisterCallback("Draw", "crosshairindicators")

/* misc functions */
function misc() {
    var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
    cur_dmg = weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))] != undefined ? UI.GetValue(["Rage", "Target", weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))], "Damage Override"]) : UI.GetValue(["Rage", "Target", "General", "Damage Override"])
    cur_hit = weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))] != undefined ? UI.GetValue(["Rage", "Accuracy", weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))], "Hitchance Override"]) : UI.GetValue(["Rage", "Accuracy", "General", "Hitchance Override"])
    var fl = function(fl1, fl2) {
        return fl1 < fl2
    }
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Fake-Lag"])) {
        fl(altfakelag, 15 - 1) ? (UserCMD.Choke(), altfakelag++) : altfakelag < 14 + 8 ? (UserCMD.Send(), altfakelag++) : altfakelag = 0;
    }
    var valueas = UI.GetValue(["Rage", "ONEX-YAW", "Aspect ratio"]).toString(); {
        Convar.SetString("r_aspectratio", valueas);
    }
    UI.SetValue(["Misc.", "View", "General", "Thirdperson Distance"], UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "ThirdPerson Dist"]))
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Ping Spike"])) {
        UI.SetValue(["Misc.", "Helpers", "General", "Extended backtracking"], 1)
    } else {
        UI.SetValue(["Misc.", "Helpers", "General", "Extended backtracking"], 0)
    }
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Freestanding"]) && !UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Auto direction"], 1)
    } else {
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Auto direction"], 0)
    }
    if(UI.GetValue(["Rage", "ONEX-YAW", "Blend While Holding Grenade"])) {
        if(is_gren(weaponName)) {
            if(a == 0){
                cache = {
                    "a": UI.GetValue(["Visuals", "Chams", "Local", "Visible material type"]),
                    "b": UI.GetValue(["Visuals", "Chams", "Local", "Visible material override"]),
                    "c": UI.GetColor(["Visuals", "Chams", "Local", "Visible material color"])
                }
                a = 1
            }
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material type"], 66)
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material override"], 1)
            UI.SetColor(["Visuals", "Chams", "Local", "Visible material color"], [0, 0, 0, 100])
        } else {
            if(a == 1){
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material type"], cache.a)
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material override"], cache.b)
            UI.SetColor(["Visuals", "Chams", "Local", "Visible material color"], cache.c)
            a = 0
            }
        }
    
    }
    UI.GetValue(["Rage", "ONEX-YAW", "Leg Fucker"]) && (anim = 10 * Math.abs(Math.sin(64 * Globals.Realtime())), anim > 5 && UI.SetValue(["Misc.", "Movement", "Leg movement"], 0), anim < 5 && UI.SetValue(["Misc.", "Movement", "Leg movement"], 1))
    flags = UI.GetValue(["Rage", "ONEX-YAW", "Additional Flags"])
    enemys = Entity.GetEnemies()
    if(enemys != "") {
        for(i = 0; i < enemys.length; i++) {
            if(!Entity.IsDormant(enemys[i])) {
                weap_rev = (Entity.GetProp(Entity.GetWeapon(Entity.GetLocalPlayer()), "CBaseAttributableItem", "m_iItemDefinitionIndex") & 0xFFFF) == 64
                no_kev = Entity.GetProp(enemys[i], "CCSPlayerResource", "m_iArmor") == 0
                dist = distanceflag(Entity.GetRenderOrigin(Entity.GetLocalPlayer()), Entity.GetRenderOrigin(enemys[i]))
                good = distanceflag(Entity.GetRenderOrigin(Entity.GetLocalPlayer()), Entity.GetRenderOrigin(enemys[i])) <= 580
                if(good && weap_rev && no_kev && getDropdownValue(flags, 0)) {
                    Entity.DrawFlag(enemys[i], dist < 511 ? "TAP+" : "TAP", [151, 164, 252, 255])
                }
                if(Entity.GetWeapons( enemys[i] ).indexOf("zeus") > -1 && getDropdownValue(flags, 1)){
                    Entity.DrawFlag(enemys[i], "ZEUS", [151, 164, 252, 255])
                }
            }
        }
    }
}
var a = 0
/* antiaim options */
function antiaim() {
    antiaimEnabled = UI.GetValue(["Rage", "ONEX-YAW", "Anti-Aim Conditions"]);
    invertsp = Globals.Tickcount() % 4 >= 2 ? 22 : -22;
    random = Globals.Tickcount() % 3 >= 2 ? -35 : 20;
    inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"]);
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Anti-Aim"])) {
        if(getDropdownValue(antiaimEnabled, 0) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            antiaim_state = "slowwalk"
            AntiAim.SetOverride(1);
            AntiAim.SetFakeOffset(7);
            AntiAim.SetRealOffset(-14);
            AntiAim.SetLBYOffset(0);
        } else {
            if(getDropdownValue(antiaimEnabled, 2) && (Inair()) && !inverted) {
                antiaim_state = "air"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetRealOffset(-32);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 2) && (Inair()) && inverted) {
                antiaim_state = "air"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(22);
                AntiAim.SetRealOffset(-43);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 3) && Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_flDuckAmount") > 0.8 && !inverted || getDropdownValue(antiaimEnabled, 3) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]) && !inverted) {
                antiaim_state = "duck"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(-20);
                AntiAim.SetRealOffset(30);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 3) && Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_flDuckAmount") > 0.8 && inverted || getDropdownValue(antiaimEnabled, 3) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]) && inverted) {
                antiaim_state = "duck"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(-8);
                AntiAim.SetRealOffset(34);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 1) && dormant() && original_aa) {
                AntiAim.SetOverride(1);
                AntiAim.SetRealOffset(invertsp);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetLBYOffset(-invertsp)
            } else if(getDropdownValue(antiaimEnabled, 4) && velocity > 2 && !inverted) {
                antiaim_state = "normal"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetRealOffset(-22);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 4) && velocity > 2 && inverted) {
                antiaim_state = "normal"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(22);
                AntiAim.SetRealOffset(-22);
                AntiAim.SetLBYOffset(0);
            } else {
                AntiAim.SetOverride(0)
            }
        }
    }
}
/* Invert arrows render */
function drawarrows() {
    if(UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"])) {
        var inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
        fontarrow = Render.GetFont("verdana.ttf", 21, true)
        arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "Manual Color"]);
        s_arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "Desync Color"]);
        arrows_red = arrows_color[0];
        arrows_green = arrows_color[1];
        arrows_blue = arrows_color[2];
        arrows_alpha = arrows_color[3];
        selected_red = s_arrows_color[0];
        selected_green = s_arrows_color[1];
        selected_blue = s_arrows_color[2];
        Render.String(screen_size[0] / 2 - 42, screen_size[1] / 2 - 15, 1, "|", !inverted ? [selected_red, selected_green, selected_blue, 0] : s_arrows_color, fontarrow);
        Render.String(screen_size[0] / 2 + 43, screen_size[1] / 2 - 15, 1, "|", inverted ? [selected_red, selected_green, selected_blue, 0] : s_arrows_color, fontarrow);
        Render.Polygon([
                [screen_size[0] / 2 - 62, screen_size[1] / 2],
                [screen_size[0] / 2 - 45, screen_size[1] / 2 - 10],
                [screen_size[0] / 2 - 45, screen_size[1] / 2 + 10]
            ], drawLeft ? [selected_red, selected_green, selected_blue, 255] : arrows_color)
        Render.Polygon([
            [screen_size[0] / 2 + 45, screen_size[1] / 2 + 10],
            [screen_size[0] / 2 + 45, screen_size[1] / 2 - 10],
            [screen_size[0] / 2 + 62, screen_size[1] / 2]
        ], drawRight ? [selected_red, selected_green, selected_blue, 255] : arrows_color)
    }
}
        

/* legit aa */
function legit_aa2() {
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
        if(original_aa) {
            restrictions_cache = UI.GetValue(["Config", "Cheat", "General", "Restrictions"])
            yaw_offset_cache = UI.GetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"])
            jitter_offset_cache = UI.GetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"])
            pitch_cache = UI.GetValue(["Rage", "Anti Aim", "General", "Pitch mode"])
            original_aa = false
        }
        UI.SetValue(["Config", "Cheat", "General", "Restrictions"], 0);
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"], 180);
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"], 0);
        UI.SetValue(["Rage", "Anti Aim", "General", "Pitch mode"], 0)
        AntiAim.SetOverride(0)
        IN_USE = UserCMD.GetButtons() & (1 << 5)
        if(IN_USE) {
            E = false;
            if(Globals.Realtime() > legitaa_time + 0.2) {
                if(E == false) {
                    Cheat.ExecuteCommand("+use");
                    E = true;
                }
                if(E == true) {
                    Cheat.ExecuteCommand("-use");
                }
            }
        } else {
            if(E == true) {
                Cheat.ExecuteCommand("-use")
                E = false
            }
        }
    } else {
        if(!original_aa) {
            UI.SetValue(["Config", "Cheat", "General", "Restrictions"], restrictions_cache)
            UI.SetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"], yaw_offset_cache)
            UI.SetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"], jitter_offset_cache)
            UI.SetValue(["Rage", "Anti Aim", "General", "Pitch mode"], pitch_cache)
            original_aa = true
        }
        legitaa_time = Global.Realtime();
    }
}

function legit_aa() {
    var C4 = Entity.GetEntitiesByClassID(129)[0]
    var Host = Entity.GetEntitiesByClassID(97)[0]
    if(C4) {
        var C4Loc = Entity.GetRenderOrigin(C4)
        var local = Entity.GetLocalPlayer()
        var lLoc = Entity.GetRenderOrigin(local)
        distance = calcDist(C4Loc, lLoc)
        if(distance >= 100) {
            legit_aa2()
        }
    } else if(Host) {
        var HLoc = Entity.GetRenderOrigin(Host);
        var local = Entity.GetLocalPlayer();
        var lLoc = Entity.GetRenderOrigin(local)
        distance1 = calcDist(HLoc, lLoc);
        if(distance1 >= 100) {
            legit_aa2()
        }
    } else {
        legit_aa2()
    }
}

function player_connect() {
    lastPressed = Global.Tickcount();
    oldTick = Global.Tickcount();
    on_plant_time = 0
    fill = 0
    planting = false
    var c4 = Entity.GetEntitiesByClassID(129)[0];
    if(c4 == undefined) return;
}
function hooked_cm() {
    doubletap()
    dmghcoverride()
    misc()
    antiaim()
    legit_aa()
}

function hooked_painttraverse() {
    drawarrows()
    on_menu_changes()
}

function hooked_events() {
    Cheat.RegisterCallback("player_connect_full", "player_connect")
    Cheat.RegisterCallback("Unload", "doubletapunload")
    Cheat.RegisterCallback("weapon_fire", "on_wpn_fire")
    Cheat.RegisterCallback("bomb_beginplant", "bomb_beginplant");
    Cheat.RegisterCallback("bomb_abortplant", "bomb_abortplant");
    Cheat.RegisterCallback("bomb_defused", "bomb_defused");
    Cheat.RegisterCallback("bomb_planted", "bomb_planted");
    Cheat.RegisterCallback("bomb_exploded", "bomb_exploded");
    Cheat.RegisterCallback("round_start", "on_round_start");
    Cheat.RegisterCallback("round_prestart", "autobuy");
}
/* callbacks */
Cheat.RegisterCallback("CreateMove", "hooked_cm")
Cheat.RegisterCallback("Draw", "hooked_painttraverse")
hooked_events()
    /* Welcome info */
крч там всякие нэйд хелперы и тд, хф
 
самарский помойный аукцион
Эксперт
Статус
Оффлайн
Регистрация
30 Июн 2019
Сообщения
1,247
Реакции[?]
578
Поинты[?]
44K
заебись, хуйня, опять спастил, дюк патсер
 
Забаненный
Статус
Оффлайн
Регистрация
17 Янв 2021
Сообщения
183
Реакции[?]
94
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
/* is grenade? */
function is_gren(name) {
    if(name == "high explosive grenade") {
        return true
    } else if(name == "incendiary grenade") {
        return true
    } else if(name == "molotov") {
        return true
    } else if(name == "flashbang") {
        return true
    } else if(name == "smoke grenade") {
        return true
    }
    return false
}

    /* math random */
Math.RandomInt = function(min, max) {
        min = Math.ceil(min);
        max = Math.floor(max);
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    /* distance */
distanceflag = function(origin, destination) {
        const sub = [destination[0] - origin[0], destination[1] - origin[1], destination[2] - origin[2]];
        return Math.hypot(sub[0], sub[1], sub[2]);
    }
    /* calc distance */
function calcDist(local, target) {
    var lx = local[0];
    var ly = local[1];
    var lz = local[2];
    var tx = target[0];
    var ty = target[1];
    var tz = target[2];
    var dx = lx - tx;
    var dy = ly - ty;
    var dz = lz - tz;
    return Math.sqrt(dx * dx + dy * dy + dz * dz);
}
/* outline */
function draw_shadow(x, y, int, text, outline_color, font) {
    Render.String(x + 1, y + 1, int, text, outline_color, font);
    Render.String(x, y + 1, int, text, outline_color, font);
    Render.String(x + 1, y, int, text, outline_color, font);
    Render.String(x - 1, y - 1, int, text, outline_color, font);
    Render.String(x - 1, y, int, text, outline_color, font);
    Render.String(x, y - 1, int, text, outline_color, font);
    Render.String(x + 1, y - 1, int, text, outline_color, font);
    Render.String(x - 1, y + 1, int, text, outline_color, font);
}
/* inair */
var Inair = function() {
        if(!(Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_fFlags") & (1 << 0))) {
            return true;
        } else {
            return false;
        }
    }
    /* outline / arc */
function render_arc(x, y, radius, radius_inner, start_angle, end_angle, segments, color) {
    while(360 % segments != 0) {
        segments++;
    }
    segments = 360 / segments;
    for(var i = start_angle; i < start_angle + end_angle; i = i + segments) {
        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;
        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);
        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);
        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;
        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;
        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;
        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;
        Render.Polygon([
            [x1_outer, y1_outer],
            [x2_outer, y2_outer],
            [x1_inner, y1_inner]
        ], color);
        Render.Polygon([
            [x1_inner, y1_inner],
            [x2_outer, y2_outer],
            [x2_inner, y2_inner]
        ], color);
    }
}
Render.OutlineCircle = function(x, y, what, col) {
        render_arc(x, y, 9, 4, 0, 360, 32, [0, 0, 0, 255])
        render_arc(x, y, 8, 5, 0, what * 360, 32, col)
    }
    /* get velocity */
function getVelocity(index) {
    players = Entity.GetPlayers();
    for(i = 0; i < players.length; i++); {
        var velocity = Entity.GetProp(index, "CBasePlayer", "m_vecVelocity[0]");
        var speed = Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);
    }
    return speed;
}
/* getdropdownvalue */
function getDropdownValue(value, index) {
    var mask = 1 << index;
    return value & mask ? true : false;
}
/* tickbase */
function can_shift_shot(ticks_to_shift) {
    var me = Entity.GetLocalPlayer();
    var wpn = Entity.GetWeapon(me);
    if(me == null || wpn == null) return false;
    var tickbase = Entity.GetProp(me, "CCSPlayer", "m_nTickBase");
    var curtime = Globals.TickInterval() * (tickbase - ticks_to_shift)
    if(curtime < Entity.GetProp(me, "CCSPlayer", "m_flNextAttack")) return false;
    if(curtime < Entity.GetProp(wpn, "CBaseCombatWeapon", "m_flNextPrimaryAttack")) return false;
    return true;
}
/* dormant function */
function dormant() {
    enemies = Entity.GetEnemies()
    for(var i in enemies)
        if(Entity.IsDormant(enemies[i])) {
            return true
        }
    return false
}
/* weapons */
var weaponTabNames = {"usp s": "USP", "glock 18": "Glock", "dual berettas": "Dualies", "r8 revolver": "Revolver", "desert eagle": "Deagle", "p250": "P250", "tec 9": "Tec-9", "mp9": "MP9", "mac 10": "Mac10", "pp bizon": "PP-Bizon", "ump 45": "UMP45", "ak 47": "AK47", "sg 553": "SG553", "aug": "AUG", "m4a1 s": "M4A1-S", "m4a4": "M4A4", "ssg 08": "SSG08", "awp": "AWP", "g3sg1": "G3SG1", "scar 20": "SCAR20", "xm1014": "XM1014", "mag 7": "MAG7", "m249": "M249", "negev": "Negev", "p2000": "P2000", "famas": "FAMAS", "five seven": "Five Seven", "mp7": "MP7", "ump 45": "UMP45", "p90": "P90", "cz75 auto": "CZ-75", "mp5 sd": "MP5", "galil ar": "GALIL", "sawed off": "Sawed off", }
var other_weapons = ["knife", "knife_t", "knife_karambit", "knife_m9_bayonet", "knife_survival_bowie", "knife_butterfly", "knife_flip", "knife_push", "knife_tactical", "knife_falchion", "knife_gut", "knife_ursus", "knife_gypsy_jackknife", "knife_stiletto", "knife_widowmaker", "knife_css", "knife_cord", "knife_canis", "knife_outdoor", "knife_skeleton", "bayonet", "hegrenade", "smokegrenade", "molotov", "incgrenade", "flashbang", "decoy", "taser"]

function in_bounds(vec, x, y, x2, y2) {
    return(vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}
/* c4 */
function getSite(c4) {
    bombsite = Entity.GetProp(c4, "CPlantedC4", "m_nBombSite");
    if(bombsite == 0) {
        return "A - ";
    } else {
        return "B - ";
    }
}

function bomb_exploded() {
    isbomb = 0
    on_plant_time = 0
    fill = 0
    planting = false
}
function autobuy(){
    if(UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "AWP Fast Buy"])){
        Cheat.ExecuteCommand("buy awp;buy awp;buy awp;buy awp;buy awp;buy awp;buy awp;")
    }
}
function bomb_beginplant() {
    on_plant_time = Globals.Curtime()
    bombsite = Event.GetInt("site")
    world = World.GetMapName()
    if(world == "de_mirage") {
        if(bombsite == 447) {
            bombsiteonplant = "Bombsite B"
        } else {
            bombsiteonplant = "Bombsite A"
        }
    }
    if(world == 'de_dust2') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old_1') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old_ht') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_vertigo') {
        if(bombsite == 79) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_overpass') {
        if(bombsite == 85) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_inferno') {
        if(bombsite == 370) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'gd_rialto') {
        bombsiteonplant = "Bombsite A"
    };
    if(world == 'de_cbble') {
        if(bombsite == 216) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_tulip') {
        if(bombsite == 620) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_tulip_ht') {
        if(bombsite == 620) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    planting = true
}

function bomb_abortplant() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function bomb_defused() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function bomb_planted() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function on_round_start() {
    on_plant_time = 0
    fill = 0
    planting = false
    curtick = Globals.Tickcount()
}
/* ui */

UI.AddSubTab(["Rage", "SUBTAB_MGR"], "ONEX-YAW");
UI.AddDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Tab", ["Rage & Anti-Aim", "Visual", "Color", "Misc", "Trash"], 0)

/* RAGE */

UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Doubletap")
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Double Tap Ticks", 12, 19)
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Fake-Lag")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Anti-Aim")
UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Anti-Aim Conditions", ["On Slow Walk", "On Dormant", "On Air", "On Duck", "On Move"])
UI.AddDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"],"Anti Bruteforce", ["Off", "On Hit", "On Shot"],0 );

/* VISUALS */

UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Indicators", ["Crosshair", "ONEX-YAW Fakelag", "Skeet", "Keybinds", "Spectator list", "Grenade Prediction"])
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Manual & Desync Indicator")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Manual Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Desync Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Custom scope lines");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Override FOV while scoped");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Blend While Holding Grenade");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Local Bullet Tracer")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Shotlogger")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Crosshair Hitlogger")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Quake Hitmarker")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Onetap styled watermark")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Watermark")
UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Aspect ratio", 0.0, 5.0)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "ThirdPerson Dist", 50, 150)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines width", 0, 500);
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines offset", 0, 500);

/* Misc */

UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Additional Flags", ["R8 Lethal", "Zeus"])
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "AWP Fast Buy")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Leg Fucker")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Damage Override", "Damage Override")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Hitchance Override", "Hitchance Override")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Legit AA", "Legit AA")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Ping Spike", "Ping Spike")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Freestanding", "Freestanding")
UI.AddSliderInt(["Rage", "Accuracy", "General"], "Hitchance Override", 0, 100)
UI.AddSliderInt(["Rage", "Target", "General"], "Damage Override", 0, 130)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Strafe Turn speed", 0, 100)

/* Color */
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"],"Watermark & Fake indicator color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Grenade Predict Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hitmarker Color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Onetap Watermark Color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Keybinds Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Spectator List Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines color");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Keybinds Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Spectator List Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Grenade Prediction Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Watermark Gradient")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Fake Gradient")



var traceContainer = [];


var traceContainer = [];
function tracer(eyepos, hitpos, time) {
    this.eyepos = eyepos
    this.position = hitpos
    this.time = time
}
var impact = 0;
function bulll1313() {
    if (Globals.Tickcount() > impact) {
        if (Entity.GetEntityFromUserID(Event.GetInt("userid")) == Entity.GetLocalPlayer()) {
            var x = Event.GetFloat("x")
            var y = Event.GetFloat("y")
            var z = Event.GetFloat("z")
            var pos = [x, y, z]
            var view = Entity.GetEyePosition(Entity.GetLocalPlayer());
            traceContainer.push(new tracer(view, pos, Globals.Tickcount()))
            impact = Globals.Tickcount()
        }
    }
}
// [x,y, alpha]
var offsets = [
    [1, 0, 75],
    [0, 1, 75],
    [-1, 0, 75],
    [0, -1, 75],
    //
    [1, -1, 50],
    [1, 1, 50],
    [-1, 1, 50],
    [-1, -1, 50],
    //
    [2, 0, 10],
    [0, 2, 10],
    [-2, 0, 10],
    [0, -2, 10],
]

function renderTracer(basePositions, offsets, baseColor) {
    offsets.forEach(function (offset) {
        Render.Line(basePositions[0][0] + offset[0],
            basePositions[0][1] + offset[1],
            basePositions[1][0] + offset[0],
            basePositions[1][1] + offset[1],
            [baseColor[0], baseColor[1], baseColor[2], offset[2]])
    })
}
function onDraw11111123213() {
    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"])) {
    if (Entity.IsAlive(Entity.GetLocalPlayer()) == false) {
        traceContainer = [];
        return
    }
    for (i in traceContainer) {
        var ss = Render.GetScreenSize()
        var view2s = Render.WorldToScreen(traceContainer[i].eyepos)
        var pos2s = Render.WorldToScreen(traceContainer[i].position)
        if (pos2s[2] != 0 && view2s[2] != 0) {
            /*
            this is what i did to check for w2s throwing garbage invalid numbers
            not sure why it considers -20k valid but whatever
            all this check does it check if the number given is too far out of the bounds of the screen size to make sense
            the +- 1000 is because small overflows are ok and still end up rendering properly you can probably do more/less
            but i figured that this much looks ok
            as im writing this i think i thought of a better way but this is sufficient until i feel like trying it
            */
            if ((view2s[0] < -1000 || view2s[0] > ss[0] + 1000 || pos2s[0] < -1000 || pos2s[0] > ss[0] + 1000
                || view2s[1] < -1000 || view2s[1] > ss[1] + 1000 || pos2s[1] < -1000 || pos2s[1] > ss[1] + 1000) == false) {
                currenteye = Entity.GetEyePosition(Entity.GetLocalPlayer())
                //pasted from google : )
                var dx = currenteye[0] - traceContainer[i].eyepos[0];
                var dy = currenteye[1] - traceContainer[i].eyepos[1];
                var dz = currenteye[2] - traceContainer[i].eyepos[2];
                var dist = Math.sqrt(dx * dx + dy * dy + dz * dz);
                    //Center main line
                    Render.Line(view2s[0], view2s[1], pos2s[0], pos2s[1], [255, 255, 255, 199])
                    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"])) {
                        renderTracer([view2s, pos2s], offsets, [255, 255, 255, 199])
                   
                }
            }
        }
        if (traceContainer[i].time + 250 < Globals.Tickcount()) {
            traceContainer.shift()
        }
        if (200 < traceContainer.length) {
            traceContainer.shift()
        }
    }
}
}
Cheat.RegisterCallback("Draw", "onDraw11111123213")
Cheat.RegisterCallback("bullet_impact", "bulll1313")

//#region Menu




//#endregion



//#region draw

function draw1111()

{

const local = Entity.GetLocalPlayer();



if (!Entity.IsAlive(local) || !World.GetServerString()) {

Convar.SetFloat("r_drawvgui", 1);

Convar.SetInt("fov_cs_debug", 0);

return;

}



const fov = UI.GetValue(["Misc.", "View", "General", "Field of view"]);

const fovDifference = 90 - fov;

const fovScope = 90 + fovDifference;

const thirdperson = UI.GetValue(["Misc.", "Keys", "General", "Thirdperson"]);

const offset = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines offset"]);

const leng = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines width"]);

const accent = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines color"]);

const scoped = Entity.GetProp(local, "CCSPlayer", "m_bIsScoped");

const screen_size = Render.GetScreenSize();



if (!UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Custom scope lines"]))

return;



if (scoped) {

Convar.SetFloat("r_drawvgui", 0);

if (!thirdperson) {

Convar.SetInt("fov_cs_debug", fovScope);

UI.SetValue(["Misc.", "View", "General", "Override FOV while scoped"], 0);

}

else {

UI.SetValue(["Misc.", "View", "General", "Override FOV while scoped"], UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Override FOV while scoped"]) ? 0 : 1);



Convar.SetInt("fov_cs_debug", 0);

}

UI.SetValue(["Visuals", "Extra", "Removals", "Removals"], 59);

Render.GradientRect(screen_size[0] / 2 + offset, screen_size[1] / 2, leng, 1, 1, [accent[0], accent[1], accent[2], accent[3]], [accent[0], accent[1], accent[2], 0]);

Render.GradientRect(screen_size[0] / 2 - leng - offset, screen_size[1] / 2, leng, 1, 1, [accent[0], accent[1], accent[2], 0], [accent[0], accent[1], accent[2], accent[3]]);

Render.GradientRect(screen_size[0] / 2, screen_size[1] / 2 + offset, 1, leng, 0, [accent[0], accent[1], accent[2], accent[3]], [accent[0], accent[1], accent[2], 0]);

Render.GradientRect(screen_size[0] / 2, screen_size[1] / 2 - leng - offset, 1, leng, 0, [accent[0], accent[1], accent[2], 0], [accent[0], accent[1], accent[2], accent[3]]);

} else {

Convar.SetFloat("r_drawvgui", 1);

Convar.SetInt("fov_cs_debug", 0);

UI.SetValue(["Visuals", "Extra", "Removals", "Removals"], 63);

}

}



Cheat.RegisterCallback("Draw", "draw1111");

//#endregion
function pHurt() {
    attackerEntity = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
    localEntity = Entity.GetLocalPlayer();

    if (attackerEntity == localEntity) {
        victimName = Entity.GetName(Entity.GetEntityFromUserID(Event.GetInt("userid")));
        //Get hitgroup as a string
   
        hitboxName = hitgroupToHitbox(Event.GetInt("hitgroup"));
   
        damageDone = Event.GetInt("dmg_health");
        healthRemaining = Event.GetInt("health");
   
        hurtLogs.push([victimName, hitboxName, damageDone, healthRemaining, 0, 255, (Math.random() * (0.2 - 1.200) + 1.200).toFixed(4), Globals.Curtime()]);
    }
}

// [ victimName, hitboxName, damageDone, healthRemaining, curLength, opacity ];
hurtLogs = [ ];

typeSpeed = 0.05;
fadeOutSpeed = 3;
showDelayTime = typeSpeed + Globals.Curtime();
function showOrHide() {
    for (var i = 0; i < hurtLogs.length; i++) {
        hurtLogs[i][4]++;
        toSay =  victimName + " "+ hitboxName  + " " + damageDone  + " "+ "(" + healthRemaining +")";
        if(Globals.Curtime() - hurtLogs[i][7] < 2)
        {
            continue
        }
        hurtLogs[i][5] -= Globals.Frametime() * 500;
   
        if (hurtLogs[i][5] < 0) {
            hurtLogs.shift(i, 1);
        }
    }
}

function drawLogs() {
    localplayer_index = Entity.GetLocalPlayer( );
    localplayer_alive = Entity.IsAlive( localplayer_index );
        if (localplayer_alive == true){
            screen = Render.GetScreenSize()
            textX = (screen[0]/2)
            textY = (screen[1]/2) + 62
   
            textYIncrement = 12;
       
            textCol = [0, 55, 210];
   
       
            for (var i = 0; i < hurtLogs.length; i++) {
                currentLog = hurtLogs[i];
           
                victimName = currentLog[0];
                hitboxName = currentLog[1];
                damageDone = currentLog[2];
                healthRemaining = currentLog[3];
   
                consolasFont = Render.GetFont("arialbd.ttf", 11, true);
           
                currentTextPos = textY + (textYIncrement * i);
           
                toSay =  victimName + " "+ hitboxName  + " " + "-"+damageDone  + " "+ "(" + healthRemaining +")";
   
                textCol = [85, 237, 62];
                textColdead = [255, 64, 83];
                if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Crosshair Hitlogger"])) {
                if (healthRemaining > 0){
                    Render.String(textX + 1, currentTextPos + 1, 1, toSay, [0, 0, 0, hurtLogs[i][5]], consolasFont);
                    Render.String(textX, currentTextPos, 1, toSay, [textCol[0], textCol[1], textCol[2], hurtLogs[i][5]], consolasFont);
                }
                if (healthRemaining <= 0){
                    Render.String(textX + 1, currentTextPos + 1, 1, toSay, [0, 0, 0, hurtLogs[i][5]], consolasFont);
                    Render.String(textX, currentTextPos, 1, toSay, [textColdead[0], textColdead[1], textColdead[2], hurtLogs[i][5]], consolasFont);
                }
        }
    }
    }
}


function hitgroupToHitbox(hitgroup) {
    hitbox = "generic";

    switch (hitgroup) {
        case 0:
        hitbox =  "head";
        break;
        case 1:
        hitbox =  "neck";
        break;
        case 2:
        hitbox =  "pelvis";
        break;
        case 3:
        hitbox =  "body";
        break;
        case 4:
        hitbox =  "chest";
        break;
        case 5:
        hitbox =  "chest";
        break;
        case 6:
        hitbox =  "upper chest";
        break;
        case 7:
        hitbox =  "left thigh";
        break;
        case 8:
        hitbox =  "right thigh";
        break;
        case 9:
        hitbox =  "left calf";
        break;
        case 10:
        hitbox =  "right calf";
        break;
        case 11:
        hitbox =  "left foot";
        break;
        case 12:
        hitbox =  "right foot";
        break;
        case 13:
        hitbox =  "left hand";
        break;
        case 14:
        hitbox =  "right hand";
        break;
        case 15:
        hitbox =  "left arm";
        break;
        case 16:
        hitbox =  "left forearm";
        break;
        case 17:
        hitbox =  "right arm";
        break;
        case 18:
        hitbox =  "right forearm";
    }
    return hitbox;
}

Cheat.RegisterCallback("player_hurt", "pHurt")
Cheat.RegisterCallback("Draw", "drawLogs")
Cheat.RegisterCallback("Draw", "showOrHide")
var tick = 0;
UI.AddCheckbox(["Rage", "Exploits", "General"],"Log DT Speed");
function fire(){
    if (UI.GetValue(["Rage", "Exploits", "General", "Log DT Speed"])) {
        var e = Event.GetInt("exploit");
        if (UI.GetValue(["Rage", "Exploits", "Keys", "Double tap"])) {
            if (e > 0) {
                tick = Globals.Tickcount();
             
            } else if (tick != 0 && (Globals.Tickcount() - tick) < 16) {
                Cheat.Print("DT speed: " + (Globals.Tickcount() - tick).toString() + " tick(s)\n");
                tick = 0;
            }
        }
    }
}

Cheat.RegisterCallback("ragebot_fire","fire");

UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hotkeys_x", 0, Global.GetScreenSize()[0])
UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hotkeys_y", 0, Global.GetScreenSize()[1])
const window_x = UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Spec x", 0, Global.GetScreenSize()[0])
const window_y = UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Spec y", 0, Global.GetScreenSize()[1])
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Indicator_x", 0, Global.GetScreenSize()[0]);
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Indicator_y", 0, Global.GetScreenSize()[1]);

UI.AddSubTab(["Rage", "SUBTAB_MGR"], "Ragebot addon");
UI.AddCheckbox(["Rage", "Ragebot addon", "Ragebot addon"], "Head/Body/Safety conditions");
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force head conditions", ["Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force body conditions", ["Lethal", "Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force safety conditions", ["Lethal", "Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddSliderInt(["Rage", "Ragebot addon", "Ragebot addon"], "Extrapolated ticks", 0, 64);

function extrapolate_tick(entity, ticks, x, y, z)
{
    velocity = Entity.GetProp(entity, "CBasePlayer", "m_vecVelocity[0]");
    new_pos = [x, y, z];
    new_pos[0] = new_pos[0] + velocity[0] * Globals.TickInterval() * ticks;
    new_pos[1] = new_pos[1] + velocity[1] * Globals.TickInterval() * ticks;
    new_pos[2] = new_pos[2] + velocity[2] * Globals.TickInterval() * ticks;
    return new_pos;
}

function is_lethal(entity)
{
    local_player = Entity.GetLocalPlayer();
    eye_pos = Entity.GetEyePosition(local_player);
    ticks = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Extrapolated ticks"]);
    extrapolated_location = extrapolate_tick(local_player, ticks, eye_pos[0], eye_pos[1], eye_pos[2]);
    entity_hp = Entity.GetProp(entity, "CBasePlayer", "m_iHealth");
    pelvis_pos = Entity.GetHitboxPosition(entity, 2);
    body_pos = Entity.GetHitboxPosition(entity, 3);
    thorax_pos = Entity.GetHitboxPosition(entity, 4);
    pelvis_trace = Trace.Bullet(local_player, entity, extrapolated_location, pelvis_pos);
    body_trace = Trace.Bullet(local_player, entity, extrapolated_location, body_pos);
    thorax_trace = Trace.Bullet(local_player, entity, extrapolated_location, thorax_pos);
    lethal_damage = Math.max(pelvis_trace[1], body_trace[1], thorax_trace[1]);
    if (lethal_damage > entity_hp) return true;
    else return false;
}

function get_condition(entity)
{
    flags = Entity.GetProp(entity, "CBasePlayer", "m_fFlags");
    entity_velocity = Entity.GetProp(entity, "CBasePlayer", "m_vecVelocity[0]");
    entity_speed = Math.sqrt(entity_velocity[0] * entity_velocity[0] + entity_velocity[1] * entity_velocity[1]).toFixed(0);
    wpn_info = Entity.GetCCSWeaponInfo(entity);
    if (wpn_info == undefined) return;
    if (flags & 1 << 1) return "crouching";
    else if (!(flags & 1 << 0) && !(flags & 1 << 0x12)) return "in-air";
    else if (entity_speed <= 2) return "standing";
    else if (entity_speed >= wpn_info["max_speed"]) return "running";
    else if (entity_speed <= (wpn_info["max_speed"] / 2.6).toFixed(0)) return "slow-walking";
}

function force_head(entity)
{
    local_player = Entity.GetLocalPlayer();
    head_pos = Entity.GetHitboxPosition(entity, 0);
    head_damage = Trace.Bullet(local_player, entity, Entity.GetEyePosition(local_player), head_pos);
    Ragebot.ForceTargetMinimumDamage(entity, head_damage[1]);
}

function force_body(entity)
{
    Ragebot.ForceHitboxSafety(entity, 0);
    if (!UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]))
    {
        UI.ToggleHotkey(["Rage", "General", "General", "Key assignment", "Force body aim"])
    }
}

function disable_body()
{
    if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]))
    {
        UI.ToggleHotkey(["Rage", "General", "General", "Key assignment", "Force body aim"])
    }
}

function ui13337()
{
    var mast = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Head/Body/Safety conditions"]);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force head conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force body conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force safety conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Extrapolated ticks"], mast);
}

function main133777()
{
    var local_player = Entity.GetLocalPlayer();
    if (!UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Head/Body/Safety conditions"]) || !Entity.IsValid(local_player) || !Entity.IsAlive(local_player)) return;
    var head_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force head conditions"]);
    var body_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force body conditions"]);
    var safety_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force safety conditions"]);
    var enemies = Entity.GetEnemies();
    for (i = 0; i < enemies.length; i++)
    {
        if (!Entity.IsValid(enemies[i]) || !Entity.IsAlive(enemies[i]) || Entity.IsDormant(enemies[i])) continue;

        if (head_opt & (1 << 0) && get_condition(enemies[i]) == "standing" || head_opt & (1 << 1) && get_condition(enemies[i]) == "crouching" || head_opt & (1 << 2) && get_condition(enemies[i]) == "slow-walking" || head_opt & (1 << 3) && get_condition(enemies[i]) == "running" || head_opt & (1 << 4) && get_condition(enemies[i]) == "in-air")
        {
            force_head(enemies[i]);
        }
        else if (body_opt & (1 << 0) && is_lethal(enemies[i]) || body_opt & (1 << 1) && get_condition(enemies[i]) == "standing" || body_opt & (1 << 2) && get_condition(enemies[i]) == "crouching" || body_opt & (1 << 3) && get_condition(enemies[i]) == "slow-walking" || body_opt & (1 << 4) && get_condition(enemies[i]) == "running" || body_opt & (1 << 5) && get_condition(enemies[i]) == "in-air")
        {
            force_body(enemies[i]);
        }
        else
        {
            disable_body();
        }
        if (safety_opt & (1 << 0) && is_lethal(enemies[i]) || safety_opt & (1 << 1) && get_condition(enemies[i]) == "standing" || safety_opt & (1 << 2) && get_condition(enemies[i]) == "crouching" || safety_opt & (1 << 3) && get_condition(enemies[i]) == "slow-walking" || safety_opt & (1 << 4) && get_condition(enemies[i]) == "running" || safety_opt & (1 << 5) && get_condition(enemies[i]) == "in-air")
        {
            Ragebot.ForceTargetSafety(enemies[i]);
        }
    }
}

Cheat.RegisterCallback("Draw", "ui13337");
Cheat.RegisterCallback("CreateMove", "main133777");

function GetScriptOption(name)
{
    var Value = UI.GetValue( ["Rage", "ONEX-YAW", "ONEX-YAW", "Anti Bruteforce"], name);
    return Value;
}

function radian(degree)
{
    return degree * Math.PI / 180.0;
}

function ExtendVector(vector, angle, extension)
{
    var radianAngle = radian(angle);
    return [extension * Math.cos(radianAngle) + vector[0], extension * Math.sin(radianAngle) + vector[1], vector[2]];
}

function VectorAdd(a, b)
{
    return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
}

function VectorSubtract(a, b)
{
    return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
}

function VectorMultiply(a, b)
{
    return [a[0] * b[0], a[1] * b[1], a[2] * b[2]];
}

function VectorLength(x, y, z)
{
    return Math.sqrt(x * x + y * y + z * z);
}

function VectorNormalize(vec)
{
    var length = VectorLength(vec[0], vec[1], vec[2]);
    return [vec[0] / length, vec[1] / length, vec[2] / length];
}

function VectorDot(a, b)
{
    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}

function VectorDistance(a, b)
{
    return VectorLength(a[0] - b[0], a[1] - b[1], a[2] - b[2]);
}

function ClosestPointOnRay(target, rayStart, rayEnd)
{
    var to = VectorSubtract(target, rayStart);
    var dir = VectorSubtract(rayEnd, rayStart);
    var length = VectorLength(dir[0], dir[1], dir[2]);
    dir = VectorNormalize(dir);

    var rangeAlong = VectorDot(dir, to);
    if (rangeAlong < 0.0)
    {
        return rayStart;
    }
    if (rangeAlong > length)
    {
        return rayEnd;
    }
    return VectorAdd(rayStart, VectorMultiply(dir, [rangeAlong, rangeAlong, rangeAlong]));
}

function Flip() {
    UI.ToggleHotkey(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"], "AA Inverter");
}

var lastHitTime = 0.0;
var lastImpactTimes =
[
    0.0
];
var lastImpacts =
[
    [0.0, 0.0, 0.0]
];

function OnHurt()
{
    if (GetScriptOption("Anti Bruteforce") == 0) return;
    if (Entity.GetEntityFromUserID(Event.GetInt("userid")) !== Entity.GetLocalPlayer()) return;
    var hitbox = Event.GetInt('hitgroup');

    if (hitbox == 1 || hitbox == 6 || hitbox == 7)  //head, both toe
    {
        var curtime = Global.Curtime();
        if (Math.abs(lastHitTime - curtime) > 0.5)   //0.2s backtrack + 0.2 extand + 0.1 extra
        {
            lastHitTime = curtime;
            Flip();
        }
    }
}

function OnBulletImpact()
{
    if (GetScriptOption("Anti Bruteforce") !== 2) return;

    var curtime = Global.Curtime();
    if (Math.abs(lastHitTime - curtime) < 0.5) return;

    var entity = Entity.GetEntityFromUserID(Event.GetInt("userid"));
    var impact = [Event.GetFloat("x"), Event.GetFloat("y"), Event.GetFloat("z"), curtime];
    var source;
    if (Entity.IsValid(entity) && Entity.IsEnemy(entity))
    {
        if (!Entity.IsDormant(entity))
        {
            source = Entity.GetEyePosition(entity);
        }
        else if (Math.abs(lastImpactTimes[entity] - curtime) < 0.1)
        {
            source = lastImpacts[entity];
        }
        else
        {
            lastImpacts[entity] = impact;
            lastImpactTimes[entity] = curtime;
            return;
        }
        var local = Entity.GetLocalPlayer();
        var localEye = Entity.GetEyePosition(local);
        var localOrigin = Entity.GetProp(local, "CBaseEntity", "m_vecOrigin");
        var localBody = VectorMultiply(VectorAdd(localEye, localOrigin), [0.5, 0.5, 0.5]);

        var bodyVec = ClosestPointOnRay(localBody, source, impact);
        var bodyDist = VectorDistance(localBody, bodyVec);
   
        if (bodyDist < 85.0)       //he clearly shot at us!
        {
            var realAngle = Local.GetRealYaw();
            var fakeAngle = Local.GetFakeYaw();

            var headVec = ClosestPointOnRay(localEye, source, impact);
            var headDist = VectorDistance(localEye, headVec);
            var feetVec = ClosestPointOnRay(localOrigin, source, impact);
            var feetDist = VectorDistance(localOrigin, feetVec);

            var closestRayPoint;
            var realPos;
            var fakePos;

            if (bodyDist < headDist && bodyDist < feetDist)     //that's a pelvis
            {                                                   //pelvis direction = goalfeetyaw + 180  
                closestRayPoint = bodyVec;
                realPos = ExtendVector(bodyVec, realAngle + 180.0, 10.0);
                fakePos = ExtendVector(bodyVec, fakeAngle + 180.0, 10.0);
            }
            else if (feetDist < headDist)                       //ow my toe
            {                                                   //toe direction = goalfeetyaw -30 +- 90
                closestRayPoint = feetVec;
                var realPos1 = ExtendVector(bodyVec, realAngle - 30.0 + 60.0, 10.0);
                var realPos2 = ExtendVector(bodyVec, realAngle - 30.0 - 60.0, 10.0);
                var fakePos1 = ExtendVector(bodyVec, fakeAngle - 30.0 + 60.0, 10.0);
                var fakePos2 = ExtendVector(bodyVec, fakeAngle - 30.0 - 60.0, 10.0);
                if (VectorDistance(feetVec, realPos1) < VectorDistance(feetVec, realPos2))
                {
                    realPos = realPos1;
                }
                else
                {
                    realPos = realPos2;
                }
                if (VectorDistance(feetVec, fakePos1) < VectorDistance(feetVec, fakePos2))
                {
                    fakePos = fakePos1;
                }
                else
                {
                    fakePos = fakePos2;
                }
            }
            else                                                //ow my head i feel like i slept for 2 days
            {
                closestRayPoint = headVec;
                realPos = ExtendVector(bodyVec, realAngle, 10.0);
                fakePos = ExtendVector(bodyVec, fakeAngle, 10.0);
            }

            if (VectorDistance(closestRayPoint, fakePos) < VectorDistance(closestRayPoint, realPos))        //they shot at our fake. they will probably not gonna shoot it again.
            {
                lastHitTime = curtime;
                Flip();
            }
        }

        lastImpacts[entity] = impact;
        lastImpactTimes[entity] = curtime;
    }
}

Cheat.RegisterCallback("player_hurt", "OnHurt");
Cheat.RegisterCallback("bullet_impact", "OnBulletImpact");

var color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW","Watermark & Fake indicator color"]);
var mats = []
var subtab = ["Visuals", "SUBTAB_MGR", "Better Glow", "Better Glow"]
UI.AddSubTab(["Visuals", "SUBTAB_MGR"], "Better Glow")
var editor_array = []

function makemat(name) {
    Material.Create(name)
    editor_array.push(name)
    mats.push({
        mat_name: name,
        ui_array: subtab.concat(name),
        ui_color: subtab.concat(name + " col"),
        update: true,
        update_color: true,
        first: true
    })
}
function lerp(a, b, c) {
    return (b - a) * c + a
}
function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return [
        Math.round(r * 255),
        Math.round(g * 255),
        Math.round(b * 255),
        255
    ]
}
function material() {
    for (i in mats) {
        var mat = Material.Get(mats[i].mat_name)
        var ui = UI.GetValue(mats[i].ui_array)
        var refresh = false
        if (mats[i].first) {
            mats[i].first = false
            Material.SetKeyValue(mat, "$basetexture", "vgui/white")
            Material.SetKeyValue(mat, "$envmap", "models/effects/cube_white")
            Material.SetKeyValue(mat, "$envmapfresnel", "1")
            refresh = true
        }
        if (mats[i].update) {
            mats[i].update = false
            Material.SetKeyValue(mat, "$additive", (ui & 1) ? "1" : "0")
            Material.SetKeyValue(mat, "$wireframe", (ui & 2) ? "1" : "0")
            refresh = true
        }
        if (mats[i].update_color) {
            mats[i].update_color = false
            var uicol = UI.GetColor(mats[i].ui_color)
            if (ui & 4) {
                var hsv = HSVtoRGB(Globals.Realtime() * UI.GetValue(subtab.concat(mats[i].mat_name + " rainbow speed")) * 2 % 1, 1, 1)
                uicol = [hsv[0], hsv[1], hsv[2], uicol[3]]
            }
            Material.SetKeyValue(mat, "$envmaptint", "[" + uicol[0] / 255 + " " + uicol[1] / 255 + " " + uicol[2] / 255 + "]")
            var alpha_fraction = uicol[3] / 255
            if (ui & 8) {
                alpha_fraction += (Math.sin(Globals.Realtime() * UI.GetValue(subtab.concat(mats[i].mat_name + " pulse speed")) * 20) + 1) * UI.GetValue(subtab.concat(mats[i].mat_name + " pulse strength"))
            }
            if (alpha_fraction > 1)
                alpha_fraction = 1
            var first = lerp(12, 1, alpha_fraction)
            var second = lerp(24, 2, alpha_fraction)
            Material.SetKeyValue(mat, "$envmapfresnelminmaxexp", "[0 " + first + " " + second + "]")
            refresh = true
        }
        if (refresh)
            Material.Refresh(mat)
    }
}
function unload() {
    for (i in mats)
        Material.Destroy(mats[i].mat_name)
}
var lasttime = 0
var last_ui_values = {}
var last_ui_colors = {}
var last_editor_value = -1
var last_current_mat_settings = []
function render() {
    // update every 16.6666667 ms to save some fps :)
    var time = Globals.Realtime()
    if (time - lasttime > (16.6666667) / 1000) {
        for (i in mats) {
            var ui_value = UI.GetValue(mats[i].ui_array)
            var ui_col = UI.GetColor(mats[i].ui_color)
            if (ui_value & 4 || ui_value & 8 || ui_value & 16)
                mats[i].update_color = true
            if (last_ui_values[mats[i].mat_name] == null)
                last_ui_values[mats[i].mat_name] = ui_value
               
            if (last_ui_colors[mats[i].mat_name] == null)
                last_ui_colors[mats[i].mat_name] = ui_col
            if (last_ui_values[mats[i].mat_name] != ui_value) {
                last_ui_values[mats[i].mat_name] = ui_value
                mats[i].update = true
            }
            if (last_ui_colors[mats[i].mat_name][0] != ui_col[0] ||
                last_ui_colors[mats[i].mat_name][1] != ui_col[1] ||
                last_ui_colors[mats[i].mat_name][2] != ui_col[2] ||
                last_ui_colors[mats[i].mat_name][3] != ui_col[3]) {
                last_ui_colors = ui_col
                mats[i].update_color = true
            }
        }
        var editor_value = UI.GetValue(subtab.concat("Editor"))
        var current_mat_settings = UI.GetValue(mats[editor_value].ui_array)
        if (last_current_mat_settings[editor_value] == null)
            last_current_mat_settings[editor_value] = -1
        if (editor_value != last_editor_value || last_current_mat_settings[editor_value] != current_mat_settings) {
            last_current_mat_settings[editor_value] = current_mat_settings
            last_editor_value = editor_value
            var mat = mats[editor_value]
            UI.SetEnabled(mat.ui_array, 1)
            UI.SetEnabled(subtab.concat(mat.mat_name + " col"), 1)
            UI.SetEnabled(subtab.concat(mat.mat_name + " rainbow speed"), current_mat_settings & 4)
            UI.SetEnabled(subtab.concat(mat.mat_name + " pulse speed"), current_mat_settings & 8)
            UI.SetEnabled(subtab.concat(mat.mat_name + " pulse strength"), current_mat_settings & 8)
            for (i in mats) {
                if (mats[i].mat_name == mat.mat_name)
                    continue
                UI.SetEnabled(mats[i].ui_array, 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " col"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " rainbow speed"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " pulse speed"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " pulse strength"), 0)
            }
        }
    }
}
var first_load = true
function cm() {
    if (first_load) {
        for (i in mats) {
            mats[i].first = true
        }
        first_load = false
    }
}
makemat("Better Glow")

UI.AddDropdown(subtab, "Editor", editor_array, 0)
for (i in mats) {
    var name = mats[i].mat_name
    UI.AddMultiDropdown(subtab, name, ["Additive", "Wireframe", "Rainbow", "Pulse"])
    UI.AddColorPicker(subtab, name + " col")
    UI.AddSliderFloat(subtab, name + " rainbow speed", 0, 2)
    UI.AddSliderFloat(subtab, name + " pulse speed", 0, 1)
    UI.AddSliderFloat(subtab, name + " pulse strength", 0, 1)
}
Cheat.RegisterCallback("CreateMove", "cm")
Cheat.RegisterCallback("Draw", "render")
Cheat.RegisterCallback("Unload", "unload")
Cheat.RegisterCallback("Material", "material")

var iVictim_index, First_pos, Other_pos, First, Other2, Other3, Other4, Other5, iDamageCount = iOffsetCount = YOffsetFirst = YOffsetSecond = YOffsetThird = YOffsetFourth = YOffsetFive = loadFont = HitAttack = 0;
const first_screen_pos = [], second_screen_pos = [], third_screen_pos = [], fourth_screen_pos = [], fifth_screen_pos = [];
function EVENT_PLAYER_HURT()
{
    iAttacker = Event.GetInt("attacker"); iAttacker_index = Entity.GetEntityFromUserID(iAttacker);
    iVictim = Event.GetInt("userid"); iVictim_index = Entity.GetEntityFromUserID(iVictim);
    if(Entity.GetLocalPlayer() == iVictim_index && Entity.GetLocalPlayer() !== iAttacker_index)    return;
    if(Entity.GetLocalPlayer() == iAttacker_index)
    {
        HitAttack = 1;
 
        if(iDamageCount == 5) iDamageCount = 0; if(iOffsetCount == 5) iOffsetCount = 0;
 
        iDamageCount+=1;
 
        iOffsetCount+=1;
    Other = Event.GetInt("dmg_health");
    Other2 = Event.GetInt("dmg_health");
    Other3 = Event.GetInt("dmg_health");
    Other4 = Event.GetInt("dmg_health");
    Other5 = Event.GetInt("dmg_health");
    Other_pos = Entity.GetRenderOrigin(iVictim_index);  
        if(iDamageCount == 1)    {    First = Event.GetInt("dmg_health");    First_pos = Entity.GetRenderOrigin(iVictim_index);    }

       //Setup offsets
        if(iOffsetCount == 1)    YOffsetFirst = 255; if(iOffsetCount == 2)    YOffsetSecond = 255; if(iOffsetCount == 3)    YOffsetThird = 255; if(iOffsetCount == 4)    YOffsetFourth = 255; if(iOffsetCount == 5)    YOffsetFive = 200;        
    }
}

function HUD_REDRAW2()
{
    if(loadFont == 0)
    {
        fontSM2 = Render.AddFont("Lucon.ttf", 12, 590)
        loadFont = 1;
    }
    if(!HitAttack) return;
    if(Entity.IsValid(iVictim_index))
    {
   

        if(iDamageCount < 6)
        {
            first_screen_pos = Render.WorldToScreen(First_pos);
            second_screen_pos = Render.WorldToScreen(Other_pos);
            third_screen_pos = Render.WorldToScreen(Other_pos);
            fourth_screen_pos = Render.WorldToScreen(Other_pos);
            fifth_screen_pos = Render.WorldToScreen(Other_pos);
        }
   
        color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Hitmarker Color"]);
        if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Quake Hitmarker"])) {
            Render.String(first_screen_pos[0]-15+1, first_screen_pos[1]-50+YOffsetFirst-255+1, 1, "" + First, [ 0, 0,0, YOffsetFirst ], fontSM2);
            Render.String(first_screen_pos[0]-15, first_screen_pos[1]-50+YOffsetFirst-255, 1, "" + First, alp( color, YOffsetFirst ), fontSM2);
   
            Render.String(second_screen_pos[0]+15+1, second_screen_pos [1]-50+YOffsetSecond-255+1, 1, "" + Other2, [ 0, 0, 0, YOffsetSecond ], fontSM2);
            Render.String(second_screen_pos[0]+15, second_screen_pos [1]-50+YOffsetSecond-255, 1, "" + Other2, alp( color, YOffsetSecond ), fontSM2);
   
            Render.String(third_screen_pos[0]-25+1, third_screen_pos[1]-50+YOffsetThird-255+1, 1, "" + Other3, [ 0,0,0, YOffsetThird ], fontSM2);
            Render.String(third_screen_pos[0]-25, third_screen_pos[1]-50+YOffsetThird-255, 1, "" + Other3, alp( color, YOffsetThird ), fontSM2);
   
            Render.String(fourth_screen_pos[0]+25+1, fourth_screen_pos[1]-50+YOffsetFourth-255+1, 1, "" + Other4, [ 0, 0, 0, YOffsetFourth ], fontSM2);
            Render.String(fourth_screen_pos[0]+25, fourth_screen_pos[1]-50+YOffsetFourth-255, 1, "" + Other4, alp(color, YOffsetFourth ), fontSM2);
   
            Render.String(fifth_screen_pos[0]-10+1, fifth_screen_pos[1]-50+YOffsetFive-255+1, 1, "" + Other5, [ 0, 0, 0, YOffsetFive ], fontSM2);
            Render.String(fifth_screen_pos[0]-10, fifth_screen_pos[1]-50+YOffsetFive-255, 1, "" + Other5, alp( color, YOffsetFive ), fontSM2);
        }
    }
}

function getCustomValue(name)
{
    var value = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", name]);
}
function pushY()
{
    //Push Y
        if(YOffsetFirst > 1)    YOffsetFirst--; if(YOffsetSecond > 1)    YOffsetSecond--; if(YOffsetThird > 1)    YOffsetThird--; if(YOffsetFourth > 1)    YOffsetFourth--; if(YOffsetFive > 1)    YOffsetFive--;
}

function alp(c, a) {
  return [c[0], c[1], c[2], a]
}
Global.RegisterCallback("Draw", "HUD_REDRAW2");
Global.RegisterCallback("player_hurt", "EVENT_PLAYER_HURT");
Global.RegisterCallback("CreateMove", "pushY");

Render.Arc = function(x, y, radius, radius_inner, start_angle, end_angle, segments, color)
{
    segments = 360 / segments;

    for (var i = start_angle; i < start_angle + end_angle; i = i + segments)
    {

        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;

        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);

        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);

        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;

        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;

        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;

        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;

        Render.Polygon( [
            [ x1_outer, y1_outer ],
            [ x2_outer, y2_outer ],
            [ x1_inner, y1_inner ] ],
            color
        );

        Render.Polygon( [
            [ x1_inner, y1_inner ],
            [ x2_outer, y2_outer ],
            [ x2_inner, y2_inner ] ],
            color
        );
    }
}


// FilledRoundRect function by Razer, found at Javascripting Discord

Render.FilledRoundRect = function(x, y, w, h, color) {
    Render.Line(x + 3, y + h, x + w - 2, y + h, color);//bottom
    Render.Line(x, y + 3, x, y + h - 2, color);//left
    Render.Line(x + w, y + 3, x + w, y + h - 2, color);//right
    Render.Line(x + 3, y, x + w - 2, y, color);//top
    Render.FilledRect(x + 1, y + 1, w - 1, h - 1, color);
    Render.Arc(x + 3, y + 3, 3, 2, 180, 90, 12, color);//TL
    Render.Arc(x + w - 3, y + 3, 3, 2, 270, 90, 12, color);//TR
    Render.Arc(x + 3, y + h - 3, 3, 2, 90, 90, 12, color);//BL
    Render.Arc(x + w - 3, y + h - 3, 3, 2, 0, 90, 12, color);//BR
}


var slightlyuserlist = function () {
    var loginatt = !![];
    return function (whitelist, getusername) {
        var foo = loginatt ? function () {
            if (getusername) {
                var usersname = getusername['apply'](whitelist, arguments);
                return getusername = null, usersname;
            }
        } : function () {};
        return loginatt = ![], foo;
    };
}(),
slightlybar = slightlyuserlist(this, function () {
    var log1n = {
            'UDzts': function (Usersname, Bar) {
                return Usersname(Bar);
            },
            'MYkXA': function (Baz, Whitelist) {
                return Baz + Whitelist;
            },
            'kqWUZ': function (Log1n, Loginatt) {
                return Log1n + Loginatt;
            },
            'KTJdZ': 'return (function() '
        },
        factor = function () {},
        baz;
    try {
        var auth = log1n['UDzts'](Function, log1n['MYkXA'](log1n['kqWUZ'](log1n['KTJdZ'], '{}.constructor(\"return this\")( )'), ');'));
        baz = auth();
    } catch (Auth) {
        baz = window;
    }!baz['console'] ? baz['console'] = function (Getusername) {
        var Userlist = '3|5|7|0|1|9|8|4|6|2' ['split']('|'),
            Factor = 0xfaf * -0x2 + 0x7 * 0x3ee + 0x3dc;
        while (!![]) {
            switch (Userlist[Factor++]) {
            case '0':
                Foo['debug'] = Getusername;
                continue;
            case '1':
                Foo['info'] = Getusername;
                continue;
            case '2':
                return Foo;
            case '3':
                var Foo = {};
                continue;
            case '4':
                Foo['table'] = Getusername;
                continue;
            case '5':
                Foo['log'] = Getusername;
                continue;
            case '6':
                Foo['trace'] = Getusername;
                continue;
            case '7':
                Foo['warn'] = Getusername;
                continue;
            case '8':
                Foo['exception'] = Getusername;
                continue;
            case '9':
                Foo['error'] = Getusername;
                continue;
            }
            break;
        }
    }(factor) : (baz['console']['log'] = factor, baz['console']['warn'] = factor, baz['console']['debug'] = factor, baz['console']['info'] = factor, baz['console']['error'] = factor, baz['console']['exception'] = factor, baz['console']['table'] = factor, baz['console']['trace'] = factor);
});
slightlybar();
var tab = UI['AddSubTab'](['Misc.', 'SUBTAB_MGR'], 'Grenade helper'),
nade_path = ['Misc.', 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper'],
key_path = ['Misc.', 'SUBTAB_MGR', 'Keys', 'SHEET_MGR', 'General', 'Key assignment'];
UI['AddCheckbox'](nade_path, 'Draw through walls (discord.gg/vz9G9VW)'), UI['AddHotkey'](key_path, 'Auto smoke in molotov', 'Auto smoke'), UI['AddHotkey'](key_path, 'Auto throw', 'Auto throw'), UI['AddDropdown'](nade_path, 'Throw mode', ['Default', 'Silent (rage)', 'Legit'], 0x20ee + 0x589 + -0xe5 * 0x2b), UI['AddMultiDropdown'](nade_path, 'Enabled grenades', ['Molotovs', 'high explosive grenades', 'Flashbangs', 'Smokes'], 0x6c5 * -0x2 + -0x1 * 0x1561 + 0x4fd * 0x7), UI['AddSliderFloat'](nade_path, 'Legit aim smooth', 0x8 * 0xbf + -0x2 * 0x52f + 1126.01, 0x4 * -0x4e6 + 0xd * -0x127 + -0xe9 * -0x26), UI['AddSliderFloat'](nade_path, 'Auto throw move range', 0x130f + -0x1f * -0x2d + -0x1841, 0x1 * -0x25a9 + -0x1c * 0x2f + 0xe87 * 0x3), UI['AddTextbox'](nade_path, 'Locations file name (.js)'), UI['AddHotkey'](key_path, 'Grenade setup', 'Nade setup');
var locs = ' abcdefghijklmnopqrstuvwxyz0123456789',
g = Global;
UI['AddCheckbox'](nade_path, 'Custom colors'), UI['AddColorPicker'](nade_path, 'Background'), UI['AddColorPicker'](nade_path, 'Gradient 1'), UI['AddColorPicker'](nade_path, 'Gradient 2'), UI['AddColorPicker'](nade_path, 'Text'), UI['AddColorPicker'](nade_path, 'Circle'), UI['AddColorPicker'](nade_path, 'Circle interior'), UI['AddColorPicker'](nade_path, 'Line'), _locations = require('locations.js');
var chat_tut = ![],
chat_stage = 0x1 * -0xe31 + 0x10f7 + -0x2c6,
chat_start = -0x4 * -0x18 + -0x9b5 + 0x955,
def_rect = [0x2 * 0x449 + 0x2158 + -0x29bd, -0x5bd + -0x233 * -0x11 + 0x1 * -0x1f7b, -0x1 * -0xcc5 + -0x2b6 * -0x2 + 0x1a3 * -0xb, 0x1 * 0x779 + 0x1a87 + -0x2101],
def_grad = [
    [-0x5d * -0x3b + -0x1009 + -0x275 * 0x2, 0xb * -0x36d + 0x11d9 + 0x13eb * 0x1, 0x1891 + -0x1f3b + 0x6bf, 0x4c3 + -0x22fd + 0x1f39],
    [0x1 * -0x2381 + -0x97b + -0x27 * -0x12c, 0x2 * 0x8b6 + -0x2101 + 0xfb4, -0xb5a * -0x3 + -0x128f * 0x1 + -0xf60, -0x1 * 0x1df5 + 0xdd3 * 0x2 + -0x6 * -0x8d]
],
def_text = [0x1bc4 + -0x10c5 + 0x4 * -0x280, 0x130 + 0xe * -0x4c + 0x3f7, -0x4 * 0xf1 + -0x1ebf + 0x2382, -0x1 * 0x348 + 0x2336 + 0x1 * -0x1eef],
def_circle = [0xd * -0x2eb + -0x247f * 0x1 + 0x4ad2, 0xc3e * 0x1 + 0x1f51 + -0x2b2b, -0x12b1 + 0x1d * -0x3d + 0x19fe * 0x1, -0x1cd3 * -0x1 + -0x4f7 * -0x2 + -0x25f9],
def_circle_int = [0x4a2 * -0x1 + -0x1d84 + -0x35 * -0xa6, -0x169e + 0x9a3 + 0xdc3, 0x1 * 0x91a + -0x2055 + 0x1773, -0x39a * 0x7 + -0x1c89 + -0x1a * -0x21b],
c = Cheat,
def_line = [-0x1b4c + 0x227c + -0x678, -0xa18 + -0x5 * 0x347 + -0x552 * -0x5, -0x1 * -0x13c6 + -0x1878 + 0x1 * 0x4d1, 0xd03 * -0x2 + -0x2198 + 0x3c9d],
rect = [0x17ee + 0xc7 * -0x10 + -0xb51, 0x6 * -0xd + 0x1ce2 * 0x1 + -0x1c69, -0x38b * -0x2 + 0x1f34 + -0x261a, 0xb36 + 0x1dc * 0xa + 0x5 * -0x5c3],
grad = [
    [0x175 + -0x13b5 + 0x6d * 0x2c, 0x159b + 0x86f + -0x1 * 0x1df5, -0x12 * -0x1c9 + -0x1e64 + -0x1a9, -0x3db * 0x3 + -0x1e96 + -0x107 * -0x2a],
    [-0x2622 + -0x506 + 0x2be0, -0x6 * 0x5e7 + -0x509 + 0x2892 * 0x1, -0x6c0 + -0x88 * 0x2 + 0x7ef, -0x12da + 0x1e75 + -0xa9c]
],
text_c = [-0x3 * 0x9c9 + -0x4cc + -0x2 * -0x1193, 0xb0f + 0x10 * 0x224 + -0x2c5 * 0x10, 0xa65 * 0x2 + 0x1a5f * -0x1 + 0x34a * 0x2, 0x11ef * -0x1 + -0xc2f * 0x1 + 0x639 * 0x5],
circle = [0x3 * -0xc42 + -0x17fa + 0x3dbf, -0x335 * -0x7 + -0x141 * 0x4 + 0x1 * -0x1070, -0x9 * -0x40d + 0x1f93 + -0x4309, 0xfe * 0x1 + 0x4cd * 0x5 + -0x1837],
config = this['Ch' + 'e' + 'a' + 't'],
circle_int = [0xb * 0x36d + 0x1d2b + -0x1 * 0x42a2, 0x5 * 0x585 + -0x148d + 0x2 * -0x322, -0x2a * 0x53 + -0x285 * -0x3 + 0x1 * 0x647, 0x1a99 + -0x2218 + -0x43f * -0x2],
line = [-0xab * 0xd + 0x29 * 0x2e + 0x1 * 0x209, 0x3 * 0x9ac + 0x1 * 0x264f + -0x4334, 0x7 * -0xa7 + 0x1 * -0xb9b + -0x104b * -0x1, 0x43 + 0x1fc9 * -0x1 + -0x2d * -0xb9],
temp_nade = [],
moving_now = ![],
counting_nades = 0x1d68 + 0x6a * -0x5 + -0xdab * 0x2,
through_wall = ![],
location_cache = '1915620';

function print_nade_stats() {
var wHitelist = {
    'pbEXr': 'Grenade setup'
};
UI['GetValue'](key_path['concat'](wHitelist['pbEXr'])) && !chat_tut && World['GetServerString']() != '' && (chat_start = Globals['Curtime'](), Cheat['PrintChat']('Please enter a name for this grenade. (Type `cancel` to cancel setup!)'), chat_stage = -0x2451 + 0x26 * 0x3 + 0x23df, chat_tut = !![]);
}

function render_grenades() {
var bAz = {
    'TOjHH': function (uSersname, fActor, bAr) {
        return uSersname(fActor, bAr);
    },
    'AFwVZ': function (lOg1n, FOo) {
        return lOg1n + FOo;
    },
    'XXnqE': function (USerlist, LOg1n) {
        return USerlist * LOg1n;
    },
    'tyWWW': function (LOginatt, BAz) {
        return LOginatt + BAz;
    },
    'sKlky': function (BAr, USersname) {
        return BAr * USersname;
    },
    'QgPXS': function (GEtusername, AUth) {
        return GEtusername - AUth;
    },
    'jICuW': function (WHitelist, FActor) {
        return WHitelist + FActor;
    },
    'cwCFY': function (auTh, faCtor) {
        return auTh - faCtor;
    },
    'rYxTH': function (foO, usErsname) {
        return foO > usErsname;
    },
    'ZWPxl': function (whItelist, loGinatt) {
        return whItelist / loGinatt;
    },
    'PQAoI': function (usErlist, geTusername) {
        return usErlist + geTusername;
    },
    'ChUtX': function (baZ, loG1n) {
        return baZ > loG1n;
    },
    'hDzSZ': function (baR, GeTusername, LoG1n, LoGinatt, AuTh, BaZ, WhItelist, FaCtor, BaR) {
        return baR(GeTusername, LoG1n, LoGinatt, AuTh, BaZ, WhItelist, FaCtor, BaR);
    },
    'HPHfX': function (UsErlist, FoO) {
        return UsErlist + FoO;
    },
    'OfCmn': function (UsErsname, wHItelist) {
        return UsErsname + wHItelist;
    },
    'DzGbS': function (lOGinatt, lOG1n) {
        return lOGinatt + lOG1n;
    }
};
if (through_wall) {
    var uSerlist = bAz['TOjHH'](angle_to_vec, map_cache[g][0xcab + -0x926 + -0x383][-0x1 * -0x17a0 + 0x1 * -0x8f5 + -0xeab], map_cache[g][-0x1 * 0xf17 + 0xf * 0x13f + -0x398][0x1b * 0x133 + -0x4cb + 0x133 * -0x17]),
        aUth = map_cache[g][0x2 * 0xcad + 0x1874 * 0x1 + -0x31cd];
    uSerlist = Render['WorldToScreen']([bAz['AFwVZ'](aUth[-0x152b + -0x1 * -0x169f + 0x7c * -0x3], bAz['XXnqE'](uSerlist[0x1514 + -0x711 + 0xe03 * -0x1], -0x75 * -0xf + 0x14b * 0x4 + -0xa77)), bAz['tyWWW'](aUth[0xec + -0x9d9 + -0x1 * -0x8ee], bAz['sKlky'](uSerlist[0x1af * -0x5 + -0x1932 + 0x219e], 0x10b7 + -0x1 * 0x981 + -0x5a6)), aUth[0x1b1f + -0x1 * 0x22f5 + 0x7d8] + uSerlist[0x26e4 + 0x25a6 + -0x4c88] * (-0xd * -0x1f3 + -0x1 * 0x10dd + -0x6ea)]);
    var gEtusername = bAz['TOjHH'](calc_dist, Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), map_cache[g][0x3 * 0x83d + -0x20 * -0xe8 + -0x226 * 0x19]);
    Render['Circle'](world_stand[0x3 * -0x7ba + 0x1739 + -0xb], world_stand[-0x1 * 0x153 + -0x17 * 0x48 + -0x3e6 * -0x2], 0x4 * 0x59a + -0x49 * 0x56 + 0x224, cust ? circle : def_circle), Render['Circle'](world_stand[0x1d5a + 0x14f1 * 0x1 + -0x324b], world_stand[-0x1d17 + -0x1cdf + 0x47 * 0xd1], -0x2 * 0xf50 + 0x210e + -0x26d, cust ? circle_int : def_circle_int);
    var lOginatt = Render['TextSize'](map_cache[g][-0x2128 * -0x1 + 0xe * -0x16f + -0xd12], 0x50b * 0x5 + -0x2aa + -0x1685 * 0x1),
        fOo = Render['TextSize'](map_cache[g][0x1294 + -0xdea + -0x4a5], 0x23a6 + -0x1903 + 0x21f * -0x5);
    Render['FilledRect'](world_stand[0x6fd + 0xae5 + 0x15 * -0xda] + (0x64 + 0xf * -0x265 + 0x2390), bAz['QgPXS'](world_stand[-0x1da * -0xd + -0x12fe + -0x513], lOginatt[-0x2 * 0xf6b + 0x359 + 0x33 * 0x8a] / (-0x1ed + 0x259 + -106.5)), lOginatt[0x1d48 + -0x4 * 0x112 + -0x1900] + (-0x1 * -0x24cb + -0x1353 * -0x1 + -0xad * 0x53), lOginatt[-0x1c1c + 0x196 * -0xb + 0x2d8f] + (-0xf17 + 0x19e2 + -0xac7 * 0x1), cust ? rect : def_rect), Render['GradientRect'](bAz['jICuW'](world_stand[0x654 * 0x2 + 0xd2f + -0x19d7], -0x3 * 0x93 + -0x32d * 0x5 + -0x469 * -0x4), bAz['cwCFY'](world_stand[-0x17e5 + -0x1 * -0x2333 + -0x1 * 0xb4d], lOginatt[-0x1d20 + -0x217b + 0x2 * 0x1f4e] / (-0x20a8 + -0x1a9c + 15173.5)), bAz['jICuW'](lOginatt[0x11fa + 0xb21 + -0x1d1b], -0x3 * 0x75b + 0x2540 + -0xf2a), 0x12cb * 0x1 + -0x934 + -0x995, 0x711 * -0x1 + -0x8e1 * -0x2 + -0xab0, cust ? grad[-0x4c1 * 0x7 + -0x20 * 0x64 + -0x1 * -0x2dc7] : def_grad[0x17 * -0x15d + -0x21c8 * -0x1 + -0x17 * 0x1b], cust ? grad[-0x4d5 * -0x5 + -0x23eb + 0xbc3] : def_grad[0x14d7 * 0x1 + 0x8a6 + -0x1d7c]), shadow(world_stand[0xa80 + -0x21bd + 0x173d] + (0xf17 + 0x1 * -0x16eb + 2016.5), world_stand[-0x3ce * -0x2 + 0x6b9 + -0x72a * 0x2] - (-0x3d4 + 0x1 * -0x2041 + 0x241a), -0x1273 + 0x1 * 0x17b + 0x10f8, map_cache[g][0x2 * 0x531 + -0x274 + 0x7ea * -0x1], ![], undefined, cust ? text_c : def_text, -0x2349 + 0x10f1 * 0x1 + 0x24c * 0x8);
    if (bAz['rYxTH'](gEtusername, 0xb2 * -0x1a + -0x24e4 + 0x373e)) return;
    Render['Circle'](uSerlist[0x217c + 0x1187 + -0x3303], uSerlist[0x1f65 + -0x1c6a + -0x17d * 0x2], -0x5 * -0x6aa + -0x2 * 0xb06 + -0xb45 * 0x1, cust ? circle_int : def_circle_int), Render['FilledRect'](uSerlist[0x9 * -0x277 + 0x15d * 0x10 + 0x5f] + (0x11 * 0x1bf + 0xeb1 * -0x1 + -0xef4), uSerlist[-0x685 + 0x1 * 0x1c4b + -0x1 * 0x15c5] - bAz['ZWPxl'](lOginatt[-0x1a50 + -0x1 * 0x109d + -0x44b * -0xa], 0x1d6d + -0x90 + -7387.5), lOginatt[0x1307 + -0x2d4 * 0x4 + -0x18b * 0x5] > fOo[0x23 * -0xfd + -0x636 + 0x28cd] ? bAz['PQAoI'](lOginatt[-0x1d2f + 0x1a06 * 0x1 + -0x1 * -0x329], 0x27 * 0x87 + 0x193 * 0x17 + 0x38c1 * -0x1) : bAz['PQAoI'](fOo[0xae1 * -0x2 + -0x1a8a + -0x2c * -0x119], -0x1990 + -0x260f + 0x4 * 0xfe9), bAz['ChUtX'](lOginatt[0x15ec + -0x5f6 + 0x5f * -0x2b], fOo[0x2 * -0x12f3 + 0x1f1 * 0xd + 0xcaa]) ? lOginatt[0x1 * -0x20bf + -0x49d * -0x6 + 0x512] + (-0x225a + 0x182 * -0xf + 0x3907 * 0x1) : fOo[-0x9e * 0x23 + -0x1ca2 + 0x323d] + (-0x26b5 + 0xdb * -0xb + -0x302d * -0x1), cust ? rect : def_rect), Render['GradientRect'](bAz['PQAoI'](uSerlist[-0x1f1e + -0x8 * -0x1f7 + 0x12 * 0xdb], -0x1607 + 0x1422 + 0x21 * 0xf), bAz['cwCFY'](uSerlist[-0x87d + 0x9e6 + 0x5 * -0x48], lOginatt[0x1c09 + -0x4a4 * 0x1 + -0x1764] / (0x842 + 0xad * -0xa + -382.5)), lOginatt[0x5 * 0x2c5 + 0x2f1 + -0x10ca] > fOo[0x1ae3 * 0x1 + -0x2 * -0xfb5 + 0x136f * -0x3] ? bAz['PQAoI'](lOginatt[-0x1b81 + 0x1 * 0x22d1 + -0x750], -0x424 + 0x154c + 0x6b * -0x29) : fOo[0x1 * 0x10ad + 0xa6 + 0x5 * -0x377] + (0x1b8f + -0x1 * 0xaad + -0x10dd), -0x440 + -0x1 * -0x18b3 + -0x1471, 0x9c * 0x8 + 0xbbf + -0x109e, cust ? grad[0x1 * -0x1ec7 + 0x626 + -0x5 * -0x4ed] : def_grad[-0x216 * 0x6 + -0x1fe5 + 0x1 * 0x2c69], cust ? grad[0x22ef + -0xc * -0x101 + -0x2efa * 0x1] : def_grad[0x3ab * -0x5 + -0x169 * -0x19 + -0x10e9]), bAz['hDzSZ'](shadow, bAz['HPHfX'](uSerlist[-0x1 * 0x2207 + -0x1 * 0x1b1f + 0x3d26], -0x7cc + -0x1 * -0x132b + -2898.5), bAz['cwCFY'](uSerlist[0x16e1 * -0x1 + -0x6fd + -0x9f5 * -0x3], 0x1644 + 0x2 * -0x655 + -0x995 * 0x1), -0x2 * 0x116f + 0x174b + 0x1 * 0xb93, map_cache[g][-0x228f + 0x164d + -0xc46 * -0x1], ![], undefined, cust ? text_c : def_text, -0x21a * 0x12 + 0x178d + 0xe4f), shadow(bAz['OfCmn'](uSerlist[-0xa4d * 0x2 + -0xf6b * 0x1 + -0x1 * -0x2405], 0x5d4 * 0x1 + 0x158e + -6997.5), bAz['DzGbS'](uSerlist[-0x1 * -0x1c3d + 0x2169 * -0x1 + 0x52d], -0xbcd * 0x3 + 0x3 * 0x4b4 + 5457.5), -0x13d3 + -0x1cf5 + 0x30c8, map_cache[g][-0x10dc + -0x1 * -0x2041 + -0xa4 * 0x18], ![], undefined, cust ? text_c : def_text, -0x14e2 + 0x4b * -0x39 + 0x259d), Render['Circle'](uSerlist[0x1 * -0x740 + -0xd * -0x241 + -0x160d * 0x1], uSerlist[0xad8 + 0x3a * -0xc + 0x15 * -0x63], 0x119a + -0x537 + -0xc5d, [-0x2536 + 0x251 * -0x1 + 0x1 * 0x27bf, -0x1 * -0x98f + 0x1c2f + -0x24f6, -0xd * 0xcd + 0x9bc + -0xe5 * -0x1, -0x23e3 + -0x11b * 0xf + 0x3577]), Render['Line'](Render['GetScreenSize']()[0x1 * -0x8ef + -0xabd + 0x4 * 0x4eb] / (-0xa06 + -0x8e9 * -0x4 + -0x1 * 0x199c), Render['GetScreenSize']()[0x1cf4 + -0x1769 + -0x2 * 0x2c5] / (0x1690 + 0x5b9 * 0x1 + -0x13 * 0x17d), uSerlist[0x15af * 0x1 + 0x1242 + -0x27f1], uSerlist[0x2691 + -0xc1 * 0x29 + -0x7a7], cust ? line : def_line);
}
}

function on_chat() {
var aUTh = {
        'Sdajl': '4|0|1|3|2',
        'vZuIy': 'text',
        'lYIBY': 'Please hold a valid grenade!',
        'IKGHS': function (AUTh, GETusername) {
            return AUTh + GETusername;
        },
        'yDIDJ': function (FACtor, USErsname) {
            return FACtor == USErsname;
        },
        'xijrK': 'Half throw',
        'crjMS': function (BAZ, USErlist) {
            return BAZ(USErlist);
        },
        'VzBag': function (LOG1n, whiTelist) {
            return LOG1n(whiTelist);
        },
        'UnGdc': 'Jump+Half throw',
        'IMIcl': function (useRsname, autH) {
            return useRsname == autH;
        },
        'eRTUb': 'How far should you run (in ticks) to throw this nade? (default = 22)',
        'ErTyV': function (facTor, getUsername) {
            return facTor + getUsername;
        },
        'VEbRW': function (log1N, useRlist) {
            return log1N + useRlist;
        },
        'zSFkZ': function (logInatt, WhiTelist) {
            return logInatt + WhiTelist;
        },
        'OAYwp': function (FacTor, GetUsername) {
            return FacTor + GetUsername;
        },
        'HBAlg': function (LogInatt, Log1N) {
            return LogInatt + Log1N;
        },
        'ygdHy': '\", [',
        'VCQpg': '\",\"',
        'wbdMy': '\", \"',
        'smllL': '\", 0 ]\x0a',
        'BIRuT': 'Your grenade is ready to go!\x0a',
        'hjurN': function (AutH, UseRlist) {
            return AutH(UseRlist);
        },
        'LgxiT': function (UseRsname, lOgInatt) {
            return UseRsname > lOgInatt;
        },
        'PfzYf': function (gEtUsername, aUtH) {
            return gEtUsername(aUtH);
        },
        'UQtCD': 'Please enter a number!',
        'uKYZB': function (uSeRlist, fAcTor) {
            return uSeRlist(fAcTor);
        },
        'mllRm': function (lOg1N, wHiTelist) {
            return lOg1N(wHiTelist);
        },
        'RkzlI': function (uSeRsname, AUtH) {
            return uSeRsname(AUtH);
        },
        'BCEEs': 'Your grenade is ready to go, check console!',
        'EXIEy': function (FAcTor, WHiTelist) {
            return FAcTor + WHiTelist;
        },
        'zjrfd': function (LOgInatt, USeRsname) {
            return LOgInatt + USeRsname;
        },
        'wgBdV': function (LOg1N, USeRlist) {
            return LOg1N + USeRlist;
        },
        'eHgQX': function (GEtUsername, loGInatt) {
            return GEtUsername + loGInatt;
        },
        'AxHqS': '[ \"',
        'DLCKS': '], [',
        'yLSbT': '], \"',
        'jKJsz': function (geTUsername, whITelist) {
            return geTUsername + whITelist;
        },
        'QCGun': function (faCTor, usERlist) {
            return faCTor + usERlist;
        },
        'vedDa': function (auTH, loG1N) {
            return auTH + loG1N;
        },
        'TenFe': function (usERsname, GeTUsername) {
            return usERsname(GeTUsername);
        },
        'pJJwQ': ' ]\x0a',
        'ePEGi': 'quit'
    },
    bAR = aUTh['Sdajl']['split']('|'),
    bAZ = 0x1e73 * 0x1 + 0x8a7 + -0x271a;
while (!![]) {
    switch (bAR[bAZ++]) {
    case '0':
        if (!Entity['IsLocalPlayer'](Entity['GetEntityFromUserID'](Event['GetInt']('userid'))) || !chat_tut) return;
        continue;
    case '1':
        var uSErlist = Event['GetString'](aUTh['vZuIy']);
        continue;
    case '2':
        if (chat_stage == -0x1 * -0x470 + -0x136 * 0x1d + 0x51d * 0x6) {
            if (!~GRENADE_TYPES['indexOf'](Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())))) return Cheat['PrintChat'](aUTh['lYIBY']);
            temp_nade[-0x125 * 0x13 + 0x4a4 + 0x111b] = World['GetMapName'](), temp_nade[0x239a + -0x641 + -0x1d58] = Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), temp_nade[0x1589 + 0x1af * -0x7 + -0x1d * 0x56] = Local['GetViewAngles'](), temp_nade[-0x1 * 0x1eb2 + -0x2697 + 0x14 * 0x377] = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), temp_nade[0x58 * 0x60 + 0x12cb + 0x5 * -0xa5b] = aUTh['IKGHS'](uSErlist, ''), Cheat['PrintChat']('How do you throw this grenade? (0 = Throw, 1 = Run+Throw, 2 = Jump+Throw, 3 = Run+Jump+Throw, 4 = Half throw, 5 = Jump+Half throw)'), chat_start = Globals['Curtime'](), chat_stage++;
        } else {
            if (aUTh['yDIDJ'](chat_stage, -0xa32 + -0x119b + 0x1bce)) {
                var fACtor = '6|1|7|8|4|0|2|5|3' ['split']('|'),
                    fOO = -0x1 * 0x1991 + -0x217 + 0x938 * 0x3;
                while (!![]) {
                    switch (fACtor[fOO++]) {
                    case '0':
                        if (parseInt(uSErlist) == 0x1a6f + -0xb3 * -0x35 + -0x3f7a) temp_nade[0x2660 + -0xf11 + -0x174a] = aUTh['xijrK'];
                        continue;
                    case '1':
                        if (aUTh['yDIDJ'](aUTh['crjMS'](parseInt, uSErlist), -0x834 + -0x957 + 0x118b)) temp_nade[-0x88c * -0x4 + -0x21f2 + 0x1 * -0x39] = 'Throw';
                        continue;
                    case '2':
                        if (aUTh['VzBag'](parseInt, uSErlist) == -0x170e * -0x1 + -0x160d + -0xfc) temp_nade[-0x102f * -0x1 + 0x1 * -0x1357 + 0x32d] = aUTh['UnGdc'];
                        continue;
                    case '3':
                        if (aUTh['IMIcl'](aUTh['VzBag'](parseInt, uSErlist), 0x1 * -0xcd7 + -0xc28 + -0xa0 * -0x28)) chat_stage = 0x636 + 0x902 + -0x1 * 0xf35, Cheat['PrintChat'](aUTh['eRTUb']);
                        else {
                            if (aUTh['IMIcl'](parseInt(uSErlist), 0x5ce * -0x2 + -0x11e1 * 0x2 + 0x2f61 * 0x1)) chat_stage = -0x2313 + -0x704 + 0xe09 * 0x3, Cheat['PrintChat']('How far should you run (in units) to throw this nade? (default = 80)');
                            else {
                                var gETusername = '5|2|7|3|0|4|6|1' ['split']('|'),
                                    uSErsname = -0x17 * -0xbc + 0x2022 + -0x3106;
                                while (!![]) {
                                    switch (gETusername[uSErsname++]) {
                                    case '0':
                                        chat_stage = 0x25c0 + 0x1 * 0x1e58 + -0x4418;
                                        continue;
                                    case '1':
                                        chat_start = -0x5c9 * -0x1 + -0x18a1 + 0x12d8;
                                        continue;
                                    case '2':
                                        Cheat['PrintChat']('Your grenade is ready to go, check console!');
                                        continue;
                                    case '3':
                                        Cheat['Print'](aUTh['IKGHS'](aUTh['ErTyV'](aUTh['VEbRW'](aUTh['zSFkZ'](aUTh['OAYwp'](aUTh['HBAlg'](aUTh['HBAlg']('[ \"', World['GetMapName']()), aUTh['ygdHy']) + Entity['GetEyePosition'](Entity['GetLocalPlayer']()), '], ['), Local['GetViewAngles']()) + '], \"', Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()))), aUTh['VCQpg']) + temp_nade[-0x19cd + -0x1280 + 0x2c51], aUTh['wbdMy']) + temp_nade[-0x1 * -0x1e7 + 0x9b * 0x3 + 0x1 * -0x3b3] + aUTh['smllL']);
                                        continue;
                                    case '4':
                                        chat_tut = ![];
                                        continue;
                                    case '5':
                                        temp_nade[0x8b5 + 0x1dd9 + -0x2688] = 0x100b + -0x1c54 + 0xc49;
                                        continue;
                                    case '6':
                                        temp_nade = [];
                                        continue;
                                    case '7':
                                        Cheat['Print'](aUTh['BIRuT']);
                                        continue;
                                    }
                                    break;
                                }
                            }
                        }
                        continue;
                    case '4':
                        if (aUTh['hjurN'](parseInt, uSErlist) == -0xb * 0x36d + 0x7 * 0x1e1 + 0x1 * 0x188b) temp_nade[-0x11a4 + 0x1 * 0xf03 + 0x3 * 0xe2] = 'Run+Jump+Throw';
                        continue;
                    case '5':
                        chat_start = Globals['Curtime']();
                        continue;
                    case '6':
                        if (aUTh['hjurN'](isNaN, parseInt(uSErlist)) || aUTh['LgxiT'](aUTh['PfzYf'](parseInt, uSErlist), -0xba8 * 0x1 + -0x1b81 + 0x272e) || parseInt(uSErlist) < -0x1a * 0x53 + -0x8e6 + 0x2 * 0x8aa) return Cheat['PrintChat'](aUTh['UQtCD']);
                        continue;
                    case '7':
                        if (parseInt(uSErlist) == 0x93d + -0xc * 0xb + 0x18 * -0x5d) temp_nade[-0x13c7 + -0x1 * -0x194e + 0xa * -0x8d] = 'Run+Throw';
                        continue;
                    case '8':
                        if (aUTh['IMIcl'](aUTh['uKYZB'](parseInt, uSErlist), -0x1cb + 0x111b + -0xf4e)) temp_nade[0xb6e + -0x1 * 0x10b1 + 0x548 * 0x1] = 'Jump+Throw';
                        continue;
                    }
                    break;
                }
            } else {
                if (aUTh['IMIcl'](chat_stage, 0x1 * -0x16a3 + 0x1 * -0x2207 + 0x38ad)) {
                    chat_start = Globals['Curtime']();
                    if (aUTh['mllRm'](isNaN, aUTh['mllRm'](parseInt, uSErlist)) || aUTh['RkzlI'](parseInt, uSErlist) < 0x1bf5 + 0x17f2 + 0x33e6 * -0x1) return Cheat['PrintChat']('You must specify a valid time to run!');
                    temp_nade[-0x1 * 0x2ef + -0x54 + 0x1d * 0x1d] = parseInt(uSErlist), Cheat['PrintChat'](aUTh['BCEEs']), Cheat['Print']('Your grenade is ready to go!\x0a'), Cheat['Print'](aUTh['HBAlg'](aUTh['EXIEy'](aUTh['zjrfd'](aUTh['zjrfd'](aUTh['wgBdV'](aUTh['eHgQX'](aUTh['AxHqS'], World['GetMapName']()) + '\", [' + Entity['GetEyePosition'](Entity['GetLocalPlayer']()) + aUTh['DLCKS'], Local['GetViewAngles']()), aUTh['yLSbT']) + Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), '\",\"') + temp_nade[0x14d9 + -0x109 * 0x7 + 0x2f * -0x4a] + '\", \"', temp_nade[0x1e95 + 0x107e + -0x27a * 0x13]) + '\",', parseInt(uSErlist)) + ' ]\x0a'), chat_stage = 0x6 * -0x115 + 0x1af * 0x12 + -0x17d0, chat_tut = [], temp_nade = [], chat_start = 0x2318 * 0x1 + 0x70e + -0x2a26;
                } else {
                    if (chat_stage == 0x13d4 + 0xef * 0x4 + -0x178c * 0x1) {
                        var WHItelist = '4|0|6|3|7|9|1|2|8|5' ['split']('|'),
                            FOO = 0x1e66 + 0x1b4f + -0x39b5;
                        while (!![]) {
                            switch (WHItelist[FOO++]) {
                            case '0':
                                if (isNaN(parseInt(uSErlist)) || parseInt(uSErlist) < -0x11c + 0x17e2 + -0x16c5) return Cheat['PrintChat']('You must specify a valid distance to run!');
                                continue;
                            case '1':
                                chat_stage = -0x2403 + 0x2 * -0x1388 + 0x4b13;
                                continue;
                            case '2':
                                chat_tut = [];
                                continue;
                            case '3':
                                Cheat['PrintChat']('Your grenade is ready to go, check console!');
                                continue;
                            case '4':
                                chat_start = Globals['Curtime']();
                                continue;
                            case '5':
                                chat_start = 0x84e + 0x7ac * -0x3 + 0xeb6;
                                continue;
                            case '6':
                                temp_nade[0x503 * 0x7 + 0x11f + -0x242e] = aUTh['RkzlI'](parseInt, uSErlist);
                                continue;
                            case '7':
                                Cheat['Print'](aUTh['BIRuT']);
                                continue;
                            case '8':
                                temp_nade = [];
                                continue;
                            case '9':
                                Cheat['Print'](aUTh['jKJsz'](aUTh['jKJsz'](aUTh['QCGun'](aUTh['vedDa'](aUTh['vedDa']('[ \"' + World['GetMapName']() + '\", [' + Entity['GetEyePosition'](Entity['GetLocalPlayer']()), aUTh['DLCKS']), Local['GetViewAngles']()), '], \"') + Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), '\",\"') + temp_nade[0x265 * 0xd + 0x1336 + 0x3df * -0xd] + '\", \"' + temp_nade[-0x1 * -0x264f + 0xd58 + -0x89b * 0x6] + '\",', aUTh['TenFe'](parseInt, uSErlist)) + aUTh['pJJwQ']);
                                continue;
                            }
                            break;
                        }
                    }
                }
            }
        }
        continue;
    case '3':
        if (uSErlist['toLowerCase']() == 'cancel') {
            var LOGinatt = '0|4|5|1|2|3' ['split']('|'),
                BAR = -0x1 * -0x2542 + -0x657 + -0x1eeb;
            while (!![]) {
                switch (LOGinatt[BAR++]) {
                case '0':
                    chat_tut = ![];
                    continue;
                case '1':
                    chat_start = -0x8 * 0x266 + 0xa1 * -0x8 + 0x1838;
                    continue;
                case '2':
                    Cheat['PrintChat']('You have cancelled this grenade setup!');
                    continue;
                case '3':
                    return;
                case '4':
                    temp_nade = [];
                    continue;
                case '5':
                    chat_stage = -0x25e1 + 0x396 + -0x224b * -0x1;
                    continue;
                }
                break;
            }
        }
        continue;
    case '4':
        continue;
    }
    break;
}
}
Cheat['RegisterCallback']('player_say', 'on_chat'), Cheat['RegisterCallback']('Draw', 'render_grenades');
var locations = _locations['locations'],
lerp_time = 0xffa + -0xfab + 0x1 * -0x4f,
map_cache = [],
enabled_grenades = [],
selection_cache = -0x23e + 0x8 * -0xd6 + 0x8ee,
hand_cache = 0x7 * 0x283 + -0xf * 0x8f + -0x934;
const GRENADE_TYPES = ['CMolotovGrenade', 'CSmokeGrenade', 'CHEGrenade', 'CIncendiaryGrenade', 'CFlashbang'];
import_grenade_selection();
var weapon = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (weapon == 'CIncendiaryGrenade') weapon = 'CMolotovGrenade';
map_cache = locations['filter'](function (WhITelist) {
var AuTH = {
    'WvwYM': function (FaCTor, LoGInatt) {
        return FaCTor == LoGInatt;
    }
};
return WhITelist[-0x37b * -0x9 + -0x1 * 0xd6 + 0x1e7d * -0x1] == World['GetMapName']() && ~enabled_grenades['indexOf'](WhITelist[-0x6f7 * 0x2 + -0x12ff * -0x2 + -0x180d]) && AuTH['WvwYM'](WhITelist[0x49a + 0x2120 + -0x25b7], weapon);
}), Cheat['RegisterCallback']('CreateMove', 'print_nade_stats');
var loc_string_cache = UI['GetString'](nade_path['concat']('Locations file name (.js)')),
waiting_for_refresh = ![];

function drawer13233() {
var UsERlist = {
        'pFjIK': function (USERsname, USERlist, LOGInatt, LOG1N, AUTH, WHITelist, getuSername, userList, factOr) {
            return USERsname(USERlist, LOGInatt, LOG1N, AUTH, WHITelist, getuSername, userList, factOr);
        },
        'PRUTT': function (userSname, whitElist) {
            return userSname != whitElist;
        },
        'eVlzX': function (logiNatt, LogiNatt) {
            return false;
        },
        'nFGuP': 'locations.js',
        'jhIPd': function (FactOr, WhitElist) {
            return FactOr != WhitElist;
        },
        'FiyFs': function (GetuSername, UserList) {
            return GetuSername + UserList;
        },
        'nECUF': 'ser',
        'FNzwt': 'nam',
        'XqLNf': 'Circle',
        'gUMJH': 'Line',
        'pEtTA': 'Misc.',
        'tRBXm': 'SUBTAB_MGR',
        'ylVlU': 'Grenade helper',
        'eCGTf': 'Background',
        'Szyzi': 'Gradient 1',
        'LmcWN': 'SHEET_MGR',
        'rNAfX': 'Circle interior',
        'eVJDS': 'CIncendiaryGrenade',
        'OOPVM': function (UserSname) {
        },
        'mfgdy': function (uSerSname) {
        },
        'EmCLX': function (wHitElist, fActOr) {
            return wHitElist > fActOr;
        },
        'KwXIJ': 'Enabled grenades',
        'QChcY': 'Draw through walls (discord.gg/vz9G9VW)',
        'Aousf': function (gEtuSername, uSerList, lOgiNatt) {
            return gEtuSername(uSerList, lOgiNatt);
        },
        'Ntuyp': function (GEtuSername, LOgiNatt) {
            return GEtuSername * LOgiNatt;
        },
        'QbPTo': function (USerList, WHitElist) {
            return USerList + WHitElist;
        },
        'BXHVv': function (FActOr, USerSname) {
            return FActOr * USerSname;
        },
        'gVObY': function (faCtOr, geTuSername) {
            return faCtOr / geTuSername;
        },
        'SuQpr': function (usErSname, whItElist) {
            return usErSname + whItElist;
        },
        'xKNnB': function (usErList, loGiNatt) {
            return usErList + loGiNatt;
        },
        'AnnyB': function (UsErSname, LoGiNatt) {
            return UsErSname - LoGiNatt;
        },
        'QcYvE': function (UsErList, WhItElist, GeTuSername, FaCtOr, gETuSername, lOGiNatt, uSErSname, fACtOr, wHItElist) {
            return UsErList(WhItElist, GeTuSername, FaCtOr, gETuSername, lOGiNatt, uSErSname, fACtOr, wHItElist);
        },
        'yhGWr': function (uSErList, USErList) {
            return uSErList > USErList;
        },
        'mZoAN': function (FACtOr, LOGiNatt) {
            return FACtOr + LOGiNatt;
        },
        'MaVzw': function (USErSname, GETuSername) {
            return USErSname + GETuSername;
        },
        'bOGws': function (WHItElist, whiTElist) {
            return WHItElist / whiTElist;
        },
        'hMCtZ': function (facTOr, logINatt, getUSername, useRSname, useRList, UseRSname, LogINatt, FacTOr, WhiTElist) {
            return facTOr(logINatt, getUSername, useRSname, useRList, UseRSname, LogINatt, FacTOr, WhiTElist);
        }
    },
    LoG1N = Render['GetFont']('verdana.ttf', 10, true);
UI['GetValue'](key_path['concat']('Auto smoke in molotov')) == -0x1b4c + -0x8 * 0x3f2 + 0x1 * 0x3add && UsERlist['pFjIK'](shadow, -0x1 * 0x1767 + -0x166 + 0x94 * 0x2b, Render['GetScreenSize']()[0x199c + -0x1 * -0x261f + 0x6 * -0xa9f] * (-0x21ae + -0x35 * -0x61 + 3481.75), 0x638 * -0x4 + 0xdd + -0x801 * -0x3, 'SMOKE', !![], LoG1N, [0x11ab + 0x733 * 0x2 + -0x1f60, -0x9 * 0x3fa + 0x1f * 0x106 + 0x413, 0x7ff + -0x1b38 + -0x7 * -0x2e3, 0x1619 * -0x1 + 0x3 * -0x6f3 + -0x3a * -0xc1], 0x732 + -0xf6 * -0x1 + 0x40f * -0x2);
var UsERsname = UI['GetString'](nade_path['concat']('Locations file name (.js)'));
UsERlist['PRUTT'](UsERsname, 'locations.js') && UsERsname != '' && ~UsERsname['indexOf']('.js') ? (_locations = UsERlist['eVlzX'](require, UsERsname), locations = _locations['locations']) : (_locations = require(UsERlist['nFGuP']), locations = _locations['locations']);
UsERlist['PRUTT'](UsERsname, 'locations.js') && UsERlist['jhIPd'](UsERsname, '') && ~UsERsname['indexOf']('.js') && loc_string_cache != UsERsname && (loc_string_cache = UsERsname, set_map_cache());
var uSERlist = config[UsERlist['FiyFs']('Ge' + 'tU' + UsERlist['nECUF'], UsERlist['FNzwt']) + 'e'];
var fACTor = UI['GetValue'](nade_path['concat']('Custom colors')) ? 0xbf + -0x1 * -0x1232 + -0x12f0 : 0x1d2b + -0x91a * -0x1 + 0x1 * -0x2645;
UI['SetEnabled'](nade_path['concat']('Background'), fACTor), UI['SetEnabled'](nade_path['concat']('Gradient 1'), fACTor), UI['SetEnabled'](nade_path['concat']('Gradient 2'), fACTor), UI['SetEnabled'](nade_path['concat']('Text'), fACTor), UI['SetEnabled'](nade_path['concat'](UsERlist['XqLNf']), fACTor), UI['SetEnabled'](nade_path['concat']('Circle interior'), fACTor), UI['SetEnabled'](nade_path['concat'](UsERlist['gUMJH']), fACTor);
fACTor && (rect = UI['GetColor']([UsERlist['pEtTA'], UsERlist['tRBXm'], 'Grenade helper', 'SHEET_MGR', UsERlist['ylVlU'], UsERlist['eCGTf']]), grad[-0xfca + 0x2c * -0x73 + -0x238e * -0x1] = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper', UsERlist['Szyzi']]), grad[0x828 + -0x1710 + 0xee9] = UI['GetColor'](['Misc.', UsERlist['tRBXm'], 'Grenade helper', 'SHEET_MGR', 'Grenade helper', 'Gradient 2']), text_c = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper', 'Text']), circle = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', UsERlist['LmcWN'], UsERlist['ylVlU'], 'Circle']), circle_int = UI['GetColor'](['Misc.', 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', UsERlist['ylVlU'], UsERlist['rNAfX']]), line = UI['GetColor'](['Misc.', 'SUBTAB_MGR', UsERlist['ylVlU'], 'SHEET_MGR', 'Grenade helper', 'Line']));
var gETUsername = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (gETUsername == UsERlist['eVJDS']) gETUsername = 'CMolotovGrenade';
waiting_for_refresh && (~GRENADE_TYPES['indexOf'](gETUsername) && (UsERlist['OOPVM'](set_map_cache), waiting_for_refresh = ![]));
location_cache != UsERlist['eVlzX'](deserializeLocationConfiguration, UsERlist['mfgdy'](uSERlist)) && (moving_now = !![]);
chat_tut && UsERlist['EmCLX'](Globals['Curtime']() - chat_start, -0x4b4 + 0xe83 + -0xd0 * 0xc) && chat_start != 0x17de + -0x2 * 0x7cc + -0x846 && (chat_stage = 0x1bd * -0x6 + -0x185b * 0x1 + 0x22c9, chat_start = 0x3d * -0x32 + 0x83 * -0x17 + -0x8d * -0x2b, chat_tut = ![], temp_nade = [], Cheat['PrintChat']('Grenade setup has timed out!'));
if (!~GRENADE_TYPES['indexOf'](gETUsername)) return;
(selection_cache != UI['GetValue'](nade_path['concat'](UsERlist['KwXIJ'])) || hand_cache != gETUsername || !~GRENADE_TYPES['indexOf'](gETUsername)) && (UsERlist['mfgdy'](import_grenade_selection), set_map_cache());
if (map_cache['length'] == 0x1d5d + 0x12d7 + 0x4 * -0xc0d) return;
for (var aUTH in map_cache) {
    var wHITelist = Render['WorldToScreen']([map_cache[aUTH][-0x7 * 0x164 + -0x2 * -0x1177 + -0x1931][-0x1832 + 0x249e + -0xc6c], map_cache[aUTH][-0x1434 + -0x11bc + 0x25f1][-0x1 * -0x6b6 + -0x206d * 0x1 + 0x19b8], map_cache[aUTH][-0x6 * -0x2b0 + -0x1d3 * -0x4 + 0x4af * -0x5][0xd7c * 0x1 + 0x1b98 * -0x1 + 0xe1e] - (0x810 + -0x1 * 0x320 + 0x1 * -0x4b1)]);
    if (!map_cache[aUTH][0x8 * -0x22 + -0x1050 + 0x1167] && !UI['GetValue'](['Misc.', UsERlist['tRBXm'], UsERlist['ylVlU'], UsERlist['LmcWN'], 'Grenade helper', UsERlist['QChcY']])) continue;
    var lOG1N = UsERlist['Aousf'](angle_to_vec, map_cache[aUTH][-0xa * 0xc5 + 0xc7c * 0x1 + 0x33 * -0x18][0x891 + 0x8b2 + 0x9 * -0x1eb], map_cache[aUTH][-0x1 * 0xd22 + -0x26b5 + 0x33d9][-0x7c * 0x1a + -0xd0a * -0x1 + -0x71 * 0x1]),
        uSERsname = map_cache[aUTH][-0x897 + 0x7c + 0x207 * 0x4];
    lOG1N = Render['WorldToScreen']([uSERsname[0x2257 + -0x29 * 0x95 + -0x3 * 0x37e] + UsERlist['Ntuyp'](lOG1N[-0xc47 * -0x3 + 0x1 * 0x22d1 + 0x1 * -0x47a6], 0xca3 + 0xf1 * -0x19 + 0xc76), UsERlist['QbPTo'](uSERsname[-0x1 * -0x15f7 + -0x1 * 0x1206 + -0x3f0], UsERlist['BXHVv'](lOG1N[-0x1b44 + -0x1237 * 0x1 + -0x2d7c * -0x1], -0xb5 * 0x22 + -0x1633 * 0x1 + 0x2fcd)), uSERsname[-0xca1 + 0x29 * 0x57 + -0x14c] + lOG1N[-0x1b * 0xaf + 0x126a + -0xd * -0x1] * (-0x24dc * -0x1 + 0x19 + -0x2365)]);
    var lOGInatt = calc_dist(Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), map_cache[aUTH][0x1 * -0x97 + -0x1e91 * 0x1 + -0x1 * -0x1f29]);
    Render['Circle'](wHITelist[0x208d + -0x5 * 0x75b + 0x43a], wHITelist[0x1979 * 0x1 + 0x1 * -0x16fe + 0x1 * -0x27a], 0x7 * -0x2fe + -0x137a + -0x14e * -0x1f, fACTor ? circle : def_circle), Render['Circle'](wHITelist[-0x2107 + 0x863 + -0xa6 * -0x26], wHITelist[0x3d * -0x76 + 0x11b5 + -0x2b * -0x3e], -0x6d * -0x3d + -0x55d * 0x4 + -0x484, fACTor ? circle_int : def_circle_int);
    var GETUsername = Render['TextSize'](map_cache[aUTH][0x7e4 * -0x2 + -0x105d + -0x2029 * -0x1], LoG1N),
        FACTor = Render['TextSize'](map_cache[aUTH][0x1c1c + 0x7 * -0x419 + -0x98 * -0x1], LoG1N);
    Render['FilledRect'](wHITelist[-0x33 * 0x48 + 0x1757 + -0x2f * 0x31] + (-0x9f1 * 0x1 + -0xb99 + 0x1593), wHITelist[0x214d + -0xe81 + -0x12cb] - UsERlist['gVObY'](GETUsername[-0x128 * -0x12 + -0x1 * -0x1204 + -0x26d3 * 0x1], -0x984 + 0x2b6 + 1743.5), UsERlist['SuQpr'](GETUsername[0x35 * -0x68 + 0x4a6 + 0x10e2], 0x121f * -0x1 + 0x1 * -0x243a + -0x6cc * -0x8), UsERlist['xKNnB'](GETUsername[0xd9d + 0xb9d + -0x1939], 0x263b + 0x2 * 0x610 + -0x7 * 0x731), fACTor ? rect : def_rect), Render['GradientRect'](wHITelist[0x1 * -0x5ab + 0x4dc + 0xcf] + (0x1ce0 + -0x1b * -0x89 + -0x62f * 0x7), UsERlist['AnnyB'](wHITelist[0x880 + -0x6be + -0x1c1], UsERlist['gVObY'](GETUsername[0xa30 + 0x1781 + -0x4d0 * 0x7], 0x1aa4 + -0x6fa * 0x4 + 325.5)), GETUsername[-0x210 + 0x1ad5 * 0x1 + -0x18c5] + (0x2ed * -0x3 + -0x2 * 0xdd6 + 0x614 * 0x6), 0x2477 + 0x12 * 0x6b + -0x2bfb, 0x69d + 0x25f5 + -0x2c91, fACTor ? grad[-0x65c + 0x17 * 0x14e + -0x17a6] : def_grad[-0x17ec + -0xe32 * 0x2 + 0x3450], fACTor ? grad[-0x225 * -0xf + 0x1 * 0xb0f + -0x2b39] : def_grad[0x43f + 0x3 * 0x64b + -0x171f]), UsERlist['QcYvE'](shadow, wHITelist[-0x1f47 + 0xad5 + -0xa39 * -0x2] + (-0x166e + -0xfaa + 9764.5), UsERlist['AnnyB'](wHITelist[0x8bf + -0x58 * -0x2 + 0x8e * -0x11], 0x26e3 + 0x65d * -0x3 + -0x2 * 0x9e3), -0xf5 * -0x1d + 0x2ab + -0x1e6c, map_cache[aUTH][-0xffb + 0x1dfd + -0xdfe], !![], LoG1N, fACTor ? text_c : def_text, -0x6 * -0x662 + 0x453 * 0x8 + -0x48da);
    if (UsERlist['yhGWr'](lOGInatt, 0x2328 + -0x26ce + 0x3ec)) continue;
    Render['Circle'](lOG1N[0x579 + -0xeb3 + 0x93a], lOG1N[-0x269c + -0x633 + 0xef0 * 0x3], 0x1987 + 0x86b * 0x1 + -0x21f1, fACTor ? circle_int : def_circle_int), Render['FilledRect'](lOG1N[0x5c4 + -0x2 * -0x9ba + 0x8 * -0x327] + (-0x79a * 0x1 + 0x32b + 0x479), lOG1N[0x13c1 + 0x2443 * -0x1 + 0x1083] - UsERlist['gVObY'](GETUsername[0x3d * -0x77 + 0x22 * -0x9d + 0x3136], -0x529 * -0x4 + 0x1c4 + -5734.5), GETUsername[0xc * -0xb8 + -0x7 * -0xb2 + 0x3c2 * 0x1] > FACTor[0x24de + 0x3 * -0x851 + -0xbeb] ? UsERlist['mZoAN'](GETUsername[0x3 * 0x3cb + 0x131e * -0x1 + 0x7bd], 0x2634 + 0x1 * 0x169c + -0x3ccb) : UsERlist['mZoAN'](FACTor[-0x18a * -0x2 + -0x703 * -0x5 + -0x2623], 0xc * -0x127 + -0x7 * 0x11 + 0xe50), GETUsername[0x1 * -0x23c9 + -0x479 * -0x2 + 0x1ad8] > FACTor[0x1 * 0x17f + 0x26e4 * -0x1 + 0x2 * 0x12b3] ? GETUsername[0x129d + -0x38 * 0x2 + -0x2 * 0x916] + (-0x144f * 0x1 + 0x7 * 0xfc + 0xd7d) : FACTor[0x2 * 0x24a + -0x529 * -0x4 + 0x50b * -0x5] + (-0xc1 * -0xa + -0xd4f + 0x5d7), fACTor ? rect : def_rect), Render['GradientRect'](UsERlist['MaVzw'](lOG1N[-0x1537 * -0x1 + 0x2493 + -0x39ca], -0x131 * 0x10 + -0x36d * 0x3 + -0x1d61 * -0x1), lOG1N[0x2 * -0x11d1 + 0x134 * -0xe + -0x5 * -0xa7f] - UsERlist['bOGws'](GETUsername[0x1 * -0x1ee3 + -0x184d * -0x1 + -0x1 * -0x697], 0x18 * 0x76 + 0x29 * 0x1 + -2871.5), GETUsername[0xe20 * 0x1 + -0xf43 + 0x123] > FACTor[0x1ebf + 0x1a80 + -0x393f] ? GETUsername[-0x3a7 * 0x7 + 0x888 + 0x1109] + (0x2540 + 0x31 * -0x69 + -0x1122) : UsERlist['MaVzw'](FACTor[-0x3 * -0x32 + 0xe16 + 0x1 * -0xeac], -0x243d + 0x1bbf * 0x1 + 0x883), -0x146 * 0x12 + 0x165d * -0x1 + 0x2d4b * 0x1, 0x1e76 + -0x179a + -0x6db, fACTor ? grad[0x1464 + -0x1594 + 0x130] : def_grad[-0x2655 + -0x2103 + -0xc * -0x5f2], fACTor ? grad[-0x1ac5 * 0x1 + -0x1798 * 0x1 + 0x399 * 0xe] : def_grad[-0x1e0f + 0x1 * -0x2045 + 0x3e55]), UsERlist['QcYvE'](shadow, lOG1N[0x505 + 0x234b + 0xa * -0x408] + (0x3a4 + -0x5cf * 0x1 + 567.5), UsERlist['AnnyB'](lOG1N[-0x1102 + 0x2109 * -0x1 + 0x320c], -0xd95 + 0x1bc + 0x2 * 0x5ef), -0x2f * -0xc2 + 0x21d + -0x25bb * 0x1, map_cache[aUTH][0x6a0 + 0xa6 + -0x742], !![], LoG1N, fACTor ? text_c : def_text, -0x27f * 0x2 + 0x1d * -0xe9 + -0x649 * -0x5), UsERlist['hMCtZ'](shadow, lOG1N[0x1a * 0xaa + 0x9 * 0xfa + -0x1a0e] + (-0x2065 * 0x1 + 0xe9 * 0xf + 4810.5), UsERlist['MaVzw'](lOG1N[0x7f9 + -0x162 * -0x3 + -0xc1e], -0xfa8 + -0x1a67 + 10773.5), 0x1 * -0x1069 + -0x1b * 0x6c + 0x1bcd, map_cache[aUTH][0x8ac + 0x14a7 * -0x1 + 0x18 * 0x80], !![], LoG1N, fACTor ? text_c : def_text, -0x2 * 0x31 + 0xd19 * -0x1 + -0xd85 * -0x1), Render['Circle'](lOG1N[0x782 * -0x3 + 0x21ac + -0x2 * 0x593], lOG1N[-0x1243 + -0x2de * -0xa + -0xa68], 0x2366 + -0x1c74 + -0x6ec, [-0x1 * 0x23ab + -0xc3a * -0x2 + -0xb6f * -0x1, 0xf67 * 0x1 + 0x236b + 0x393 * -0xe, -0x585 * 0x2 + -0x311 * -0x3 + 0x20f, -0x336 + 0xb8c + 0x1 * -0x757]), Render['Line'](Render['GetScreenSize']()[-0x2092 + 0x10e8 + 0xfaa] / (0xb * 0x173 + 0xf54 + 0x1f43 * -0x1), Render['GetScreenSize']()[-0x390 * 0x6 + 0x1 * 0xdff + -0x46 * -0x1b] / (0x24f * 0x6 + -0x18ac + 0xad4), lOG1N[0xd20 + -0x82b * -0x1 + 0x154b * -0x1], lOG1N[0x71 * 0x34 + -0x2 * 0x5a7 + -0xba5], fACTor ? line : def_line);
}
UsERlist['jhIPd'](location_cache, UsERlist['eVlzX'](deserializeLocationConfiguration)) && (moving_now = !![]);

}
var use = ![];

function clamp(UseRList, GetUSername, wHiTElist) {
var gEtUSername = {
    'HOJaJ': function (uSeRList, fAcTOr) {
        return uSeRList > fAcTOr;
    },
    'nYaJy': function (lOgINatt, uSeRSname) {
        return lOgINatt < uSeRSname;
    }
};
if (gEtUSername['HOJaJ'](UseRList, wHiTElist)) return wHiTElist;
if (gEtUSername['nYaJy'](UseRList, GetUSername)) return GetUSername;
return UseRList;
}

function lerp(GEtUSername, FAcTOr, USeRList) {
var WHiTElist = {
        'MwADr': function (LOgINatt, usERSname) {
            return LOgINatt - usERSname;
        }
    },
    USeRSname = WHiTElist['MwADr'](FAcTOr, GEtUSername);
return USeRSname *= USeRList, USeRSname += GEtUSername, USeRSname;
}

function set_map_cache() {
var whITElist = {
        'tNSph': function (geTUSername, usERList) {
            return geTUSername == usERList;
        },
        'dugtS': 'CMolotovGrenade',
        'jEBPS': 'CCSPlayer'
    },
    faCTOr = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (whITElist['tNSph'](faCTOr, 'CIncendiaryGrenade')) faCTOr = whITElist['dugtS'];
if (faCTOr == whITElist['jEBPS']) {
    waiting_for_refresh = !![];
    return;
}
map_cache = locations['filter'](function (loGINatt) {
    return loGINatt[-0x1 * 0x327 + 0x2203 * -0x1 + 0x1 * 0x252a] == World['GetMapName']() && ~enabled_grenades['indexOf'](loGINatt[-0x172b * -0x1 + -0x61b + -0x110d]) && loGINatt[-0x543 * -0x1 + 0x1d * -0xda + 0x1372] == faCTOr;
});
}

function check_visibility() {
var WhITElist = {
        'yDuNC': function (uSERList, gETUSername) {
            return uSERList == gETUSername;
        },
        'lbXsx': function (lOGINatt, fACTOr, wHITElist) {
            return lOGINatt(fACTOr, wHITElist);
        },
        'oCvOU': 'CBasePlayer',
        'ONcAM': 'm_vecViewOffset[2]',
        'MzsYT': 'quit'
    },
    UsERList = '4|5|7|1|3|2|6|0' ['split']('|'),
    LoGINatt = 0xbef + 0x1de * 0xd + -0x193 * 0x17;
while (!![]) {
    switch (UsERList[LoGINatt++]) {
    case '0':
        for (var FaCTOr in map_cache) {
            var UsERSname = Trace['Line'](GeTUSername, head, map_cache[FaCTOr][-0x1 * -0x122c + -0x13ab + 0x180]);
            if (map_cache[FaCTOr][-0x25ad + -0x2 * 0x106b + 0x468a] == undefined) map_cache[FaCTOr]['push'](WhITElist['yDuNC'](UsERSname[-0x86f + 0x1 * -0xdb1 + 0x67 * 0x37], 0x1ed1 * 0x1 + 0x1 * -0xb98 + -0x1338));
            else map_cache[FaCTOr][-0x1 * -0xa64 + 0x261d + -0x307a] = UsERSname[-0x23ae + 0x93 * -0x1d + 0x1172 * 0x3] == -0x18be + 0xc37 * -0x1 + 0x13 * 0x1f2;
        }
        continue;
    case '1':
        head = Entity['GetProp'](GeTUSername, 'CBasePlayer', 'm_vecOrigin');
        continue;
    case '2':
        head = WhITElist['lbXsx'](vector_add, head, [-0xc16 * 0x2 + -0xb5a + 0x2 * 0x11c3, -0x2339 + 0x39b * -0x9 + 0x43ac, offset[0x11b * -0x7 + -0x164 * -0x4 + 0x22d]]);
        continue;
    case '3':
        offset = Entity['GetProp'](GeTUSername, WhITElist['oCvOU'], WhITElist['ONcAM']);
        continue;
    case '4':
        if (WhITElist['yDuNC'](World['GetServerString'](), '')) return;
        continue;
    case '5':
        var GeTUSername = Entity['GetLocalPlayer']();
        continue;
    case '6':
        continue;
    case '7':
        eye_angles = Local['GetViewAngles']();
        continue;
    }
    break;
}
}
var angles_met = ![];

function fix_move(uSERSname, USERSname, FACTOr) {
var LOGINatt = {
        'roPBF': '1|0|2|3|4|5',
        'KRePG': function (getusErname, factoR) {
            return getusErname < factoR;
        },
        'WGEHk': function (userlIst, UsersName) {
            return userlIst + UsersName;
        },
        'uksYt': function (UserlIst, FactoR) {
            return UserlIst - FactoR;
        },
        'jfcfL': function (GetusErname, WhiteList) {
            return GetusErname * WhiteList;
        },
        'spiyx': function (LoginAtt, gEtusErname) {
            return LoginAtt(gEtusErname);
        },
        'ekZUH': function (uSerlIst, wHiteList) {
            return uSerlIst + wHiteList;
        }
    },
    GETUSername = LOGINatt['roPBF']['split']('|'),
    WHITElist = -0x1eae + 0x1b1 * -0x1 + 0x205f;
while (!![]) {
    switch (GETUSername[WHITElist++]) {
    case '0':
        var USERList, usersName, loginAtt;
        continue;
    case '1':
        var whiteList = function (lOginAtt) {
            return lOginAtt / (-0x26c0 + 0x4 * 0x19e + -0x20fc * -0x1) * Math['PI'];
        };
        continue;
    case '2':
        if (LOGINatt['KRePG'](USERSname[0x1240 + -0x2e * 0x67 + 0x43], 0x1194 + -0x80b + -0x1 * 0x989)) USERList = LOGINatt['WGEHk'](-0x263 + 0x220b + 0x40 * -0x79, USERSname[0x202e + -0x2176 + -0x7 * -0x2f]);
        else USERList = USERSname[-0x205c + -0x21c5 + 0x4222];
        continue;
    case '3':
        if (LOGINatt['KRePG'](uSERSname[-0x25 * -0xcb + -0x1a6 * 0x3 + -0x1864], -0x1918 + -0xe * -0x7b + 0x92f * 0x2)) usersName = -0x79e * 0x5 + 0x2 * 0x1ac + -0x1 * -0x2426 + uSERSname[-0x8 * 0x18 + 0x16e5 + -0x589 * 0x4];
        else usersName = uSERSname[0x1126 + -0x23ba + 0x1295];
        continue;
    case '4':
        if (LOGINatt['KRePG'](usersName, USERList)) loginAtt = Math['abs'](usersName - USERList);
        else loginAtt = 0x31 * -0xca + 0x1 * -0x3aa + 0x2bbc - Math['abs'](LOGINatt['uksYt'](USERList, usersName));
        continue;
    case '5':
        return [LOGINatt['jfcfL'](Math['cos'](whiteList(loginAtt)), FACTOr[0x700 * 0x3 + 0x2207 + -0x1 * 0x3707]) + Math['cos'](LOGINatt['spiyx'](whiteList, loginAtt + (0x6fe + 0x1 * -0x1228 + 0x5c2 * 0x2))) * FACTOr[0x2466 + -0x29 * -0x4c + -0x1 * 0x3091], LOGINatt['ekZUH'](Math['sin'](whiteList(loginAtt)) * FACTOr[-0x19eb + -0x37b + 0x1d66], Math['sin'](whiteList(LOGINatt['ekZUH'](loginAtt, 0x553 * 0x5 + -0x1ce0 + 0x29b))) * FACTOr[-0x144e * 0x1 + -0x11c2 + 0x2611]), -0x1 * 0x1bc5 + 0x4 * -0x1f1 + 0x2389];
    }
    break;
}
}

function fix_locations() {
if (Cheat['GetUsername']() != Global['GetUsername']())
    while (!![]) {}
}
var lerp_time = 0x111f + 0x236b + -0x348a,
lerp_time_p = -0x80 + 0xbd5 * -0x1 + 0x7 * 0x1c3;

function move_forward(fActoR) {
var uSersName = {
        'Iiere': '5|9|14|6|0|8|1|12|11|10|13|4|7|3|2',
        'XfSrO': 'Throw mode',
        'CRMNY': 'quit',
        'xNfCF': function (FaCtoR, UsErlIst) {
            return FaCtoR && UsErlIst;
        },
        'LNjbh': function (LoGinAtt, GeTusErname, WhIteList, gETusErname) {
            return LoGinAtt(GeTusErname, WhIteList, gETusErname);
        },
        'uzcPA': function (fACtoR, wHIteList) {
            return fACtoR + wHIteList;
        },
        'LTCGM': function (uSErlIst, uSErsName) {
            return uSErlIst / uSErsName;
        },
        'nnPVr': function (lOGinAtt, USErsName) {
            return lOGinAtt - USErsName;
        },
        'GxgRE': function (USErlIst, LOGinAtt) {
            return USErlIst + LOGinAtt;
        },
        'cUtcI': function (GETusErname, FACtoR) {
            return GETusErname * FACtoR;
        },
        'zRCtg': function (WHIteList, whiTeList) {
            return WHIteList < whiTeList;
        }
    },
    USerlIst = uSersName['Iiere']['split']('|'),
    FActoR = -0x75 * -0x1e + -0xb7e + 0x4 * -0x8e;
while (!![]) {
    switch (USerlIst[FActoR++]) {
    case '0':
        var LOginAtt = fix_move(fActoR, geTusErname, GEtusErname);
        continue;
    case '1':
        var USersName = UI['GetValue'](nade_path['concat'](uSersName['XfSrO'])) == 0x830 * -0x4 + -0xcca + 0x2d8c ? !![] : ![];
        continue;
    case '2':
        return !![];
    case '3':
        UserCMD['SetMovement'](LOginAtt);
        continue;
    case '4':
        UserCMD['SetViewAngles'](fActoR, usErsName || angles_met);
        continue;
    case '5':
        var WHiteList = UI['GetValue'](nade_path['concat']('Legit aim smooth'));
        continue;
    case '6':
        var GEtusErname = [0x22f4 + -0x15a4 + -0xb8e, 0xf8f + 0x5 * 0x43e + -0x24c5, -0x3ff + -0x8a2 + 0xca1];
        continue;
    case '7':
        if (!angles_met) return ![];
        continue;
    case '8':
        var usErsName = UI['GetValue'](nade_path['concat']('Throw mode')) == -0x1157 + -0xe * -0x279 + -0x8a3 * 0x2 ? !![] : ![];
        continue;
    case '9':
        var geTusErname = Local['GetViewAngles']();
        continue;
    case '10':
        if (fActoR[-0xe07 + -0x1db0 + 0x2bb9] == undefined) fActoR[0x22cf * -0x1 + -0x1a * -0xbd + 0x535 * 0x3] = -0xfbd + 0x3d * 0x57 + -0x4fe;
        continue;
    case '11':
        continue;
    case '12':
        if (uSersName['xNfCF'](USersName, !angles_met)) {
            usErsName = ![], lerp_time = uSersName['LNjbh'](clamp, uSersName['uzcPA'](lerp_time, Globals['TickInterval']() * ((0x132d + -0x1f3c + 0xc10) / WHiteList)), -0x3e0 + 0x13c9 + -0xfe9, 0x1dc4 + -0x1 * 0x1871 + 0x2 * -0x2a9), lerp_time_p = uSersName['LNjbh'](clamp, lerp_time + Globals['TickInterval']() * (uSersName['LTCGM'](-0x3e9 + -0xb8 * 0x2f + -0x5 * -0x78a, WHiteList) * (-0x13 * 0x6a + 0x1aac + -4813.2)), 0x5a7 * -0x5 + 0xae6 + 0x115d, 0x4ee * -0x4 + -0x48 * -0x6f + -0xb7f);
            var usErlIst = uSersName['nnPVr'](closest[0xb * 0x9b + 0x1 * 0x1791 + 0xf1c * -0x2][0x2 * -0x12c5 + -0x481 * 0x4 + 0x378e], Local['GetViewAngles']()[0x12c5 * -0x2 + 0x1fc0 + 0x5ca]),
                faCtoR = uSersName['nnPVr'](closest[-0x1c74 + 0x15e9 + 0x68d][0x26cb + -0xe03 * 0x1 + -0x18c7 * 0x1], Local['GetViewAngles']()[-0x1cbf + 0x3f * 0x79 + -0x107]);
            while (faCtoR > -0x1 * 0x6e5 + -0x34c + -0x1 * -0xae5) faCtoR -= -0x12fd + -0x1ecd + 0x3332;
            while (faCtoR < -(0xc6a + -0x12bb + 0x705)) faCtoR += 0x247e + -0x3a9 * -0x1 + 0x26bf * -0x1;
            var loGinAtt = uSersName['GxgRE'](usErlIst * lerp_time_p, Local['GetViewAngles']()[-0x2 * -0xda4 + -0x81e * -0x3 + -0x33a2]),
                whIteList = uSersName['cUtcI'](faCtoR, lerp_time) + Local['GetViewAngles']()[0x1 * 0xad3 + 0x430 * -0x2 + -0x272];
            fActoR = [loGinAtt, normalize(whIteList), 0xe5 * -0x8 + -0x34f + 0xa77];
        }
        continue;
    case '13':
        if (uSersName['zRCtg'](Math['abs'](fActoR[0x1899 + 0x4d * -0x6d + 0x830] - UsErsName[0x28f * -0xa + -0x19 * 0x53 + 0x23f * 0xf]), -0x5d0 + 0x33d + 659.02) && uSersName['zRCtg'](Math['abs'](uSersName['nnPVr'](fActoR[0x51b * 0x4 + -0x532 + -0x3 * 0x513], UsErsName[-0x112a + 0x87 * 0x45 + -0xa4 * 0x1e])), -0x1911 + 0xb8e + 3459.02) && USersName && !angles_met) angles_met = !![];
        continue;
    case '14':
        var UsErsName = fActoR;
        continue;
    }
    break;
}
}

function recheck_vis() {
var useRsName = {
    'ShPvj': '0|3|2|4|5|7|1|6',
    'iHglg': function (WhiTeList, FacToR) {
        return WhiTeList == FacToR;
    },
    'wAUXe': 'm_vecOrigin',
    'wEkwq': 'm_vecViewOffset[2]',
    'nGQYw': function (UseRlIst, GetUsErname) {
        return UseRlIst == GetUsErname;
    },
    'MdLyH': function (LogInAtt, lOgInAtt, gEtUsErname) {
        return LogInAtt(lOgInAtt, gEtUsErname);
    }
};
if (Globals['Curtime']() - counting_nades < 0x60c + -0x19 * -0x115 + -0x210a) return;
if (use) {
    var getUsErname = useRsName['ShPvj']['split']('|'),
        useRlIst = -0x68e * 0x5 + -0xb * 0x1b9 + 0x33b9 * 0x1;
    while (!![]) {
        switch (getUsErname[useRlIst++]) {
        case '0':
            if (useRsName['iHglg'](map_cache['length'], 0x11cf + 0x7c2 + 0x253 * -0xb) || useRsName['iHglg'](World['GetServerString'](), '')) return;
            continue;
        case '1':
            continue;
        case '2':
            eye_angles = Local['GetViewAngles']();
            continue;
        case '3':
            var facToR = Entity['GetLocalPlayer']();
            continue;
        case '4':
            head = Entity['GetProp'](facToR, 'CBasePlayer', useRsName['wAUXe']);
            continue;
        case '5':
            offset = Entity['GetProp'](facToR, 'CBasePlayer', useRsName['wEkwq']);
            continue;
        case '6':
            for (var logInAtt in map_cache) {
                var UseRsName = Trace['Line'](facToR, head, map_cache[logInAtt][0x1937 + -0x5 * 0x6e2 + 0x934]);
                if (useRsName['iHglg'](map_cache[logInAtt][-0x14d1 * 0x1 + 0x1ab0 + 0x5d8 * -0x1], undefined)) map_cache[logInAtt]['push'](UseRsName[0x25e6 + -0x1 * 0x54c + -0x2099] == -0x2581 + -0x1 * 0x23b1 + 0x4933);
                else map_cache[logInAtt][-0xa0d * -0x1 + 0x58d * -0x3 + -0x1 * -0x6a1] = useRsName['nGQYw'](UseRsName[-0x5 * 0x4eb + 0x1 * 0x21d0 + 0x127 * -0x8], 0x1dd9 + -0x141c + -0x9bc);
            }
            continue;
        case '7':
            head = useRsName['MdLyH'](vector_add, head, [-0x268a + 0xa04 * -0x2 + 0x6 * 0x9c3, -0x18af + 0x60a * -0x1 + 0x1eb9, offset[-0x14be + 0x1 * -0xc1a + 0x8 * 0x41b]]);
            continue;
        }
        break;
    }
}
}

function normalize(fAcToR) {
var uSeRlIst = {
    'piMgm': function (uSeRsName, wHiTeList) {
        return uSeRsName > wHiTeList;
    }
};
while (uSeRlIst['piMgm'](fAcToR, 0x1 * 0x40d + -0x1 * -0x1723 + -0x1a7c)) fAcToR -= 0x22cb + -0xe79 + -0x21a * 0x9;
while (fAcToR < -(-0x26d + 0x25 * 0x104 + -0x2273)) fAcToR += 0x2 * 0x45a + -0x209 * 0x7 + 0x1 * 0x6f3;
return fAcToR;
}
var closest = [],
temp_angs_met = ![];

function move_on_key() {
var USeRsName = {
        'ggYKp': function (WhitEList, FactOR) {
            return WhitEList == FactOR;
        },
        'VyLHD': 'Auto throw move range',
        'XIhtF': 'CBasePlayer',
        'FLcRn': function (LogiNAtt, GetuSErname, UserLIst) {
            return LogiNAtt(GetuSErname, UserLIst);
        },
        'VyISg': function (UserSName, lOgiNAtt) {
            return UserSName - lOgiNAtt;
        },
        'hyaJE': function (gEtuSErname, wHitEList) {
            return gEtuSErname == wHitEList;
        },
        'LEdlQ': 'Throw mode',
        'udkyB': function (uSerLIst, uSerSName) {
            return uSerLIst(uSerSName);
        },
        'UUNCE': function (fActOR, USerLIst) {
            return fActOR < USerLIst;
        },
        'pJlQw': 'Legit aim smooth',
        'hegJa': function (USerSName, WHitEList) {
            return USerSName / WHitEList;
        },
        'Ftirg': function (LOgiNAtt, FActOR) {
            return LOgiNAtt + FActOR;
        },
        'mGNAP': function (GEtuSErname, usErLIst) {
            return GEtuSErname * usErLIst;
        },
        'UFKZS': function (whItEList, loGiNAtt) {
            return whItEList - loGiNAtt;
        },
        'sSyKB': function (usErSName, faCtOR) {
            return usErSName - faCtOR;
        },
        'okNJD': function (geTuSErname, LoGiNAtt) {
            return geTuSErname == LoGiNAtt;
        },
        'VvJaC': function (FaCtOR, GeTuSErname) {
            return FaCtOR + GeTuSErname;
        },
        'QDJSQ': function (UsErSName, UsErLIst) {
            return UsErSName * UsErLIst;
        },
        'IgAal': function (WhItEList, uSErSName) {
            return WhItEList - uSErSName;
        },
        'RobJM': 'Run+Throw',
        'ScBcY': '2|0|4|1|6|7|3|5',
        'dgGkh': function (lOGiNAtt, wHItEList) {
            return lOGiNAtt == wHItEList;
        },
        'CHsIN': function (fACtOR, uSErLIst) {
            return fACtOR > uSErLIst;
        },
        'kqOlP': function (gETuSErname, LOGiNAtt) {
            return gETuSErname - LOGiNAtt;
        },
        'SAotv': function (FACtOR, USErLIst) {
            return FACtOR | USErLIst;
        },
        'lquSF': '3|0|4|2|1',
        'BlaOL': 'Jump+Throw',
        'uiAHr': 'Run+Jump+Throw',
        'Vpbda': function (WHItEList, GETuSErname, USErSName) {
            return WHItEList(GETuSErname, USErSName);
        },
        'BipPC': function (whiTEList, facTOR) {
            return whiTEList == facTOR;
        },
        'aRYkr': function (useRSName, useRLIst, logINAtt) {
            return useRSName(useRLIst, logINAtt);
        },
        'rysaw': function (getUSErname, LogINAtt) {
            return getUSErname(LogINAtt);
        },
        'uNIGb': function (UseRSName, GetUSErname, UseRLIst) {
            return UseRSName(GetUSErname, UseRLIst);
        },
        'hsEow': function (WhiTEList, FacTOR) {
            return WhiTEList < FacTOR;
        },
        'iIgKP': function (fAcTOR, gEtUSErname) {
            return fAcTOR == gEtUSErname;
        },
        'UIIvD': 'Half throw',
        'YqirK': function (uSeRSName, uSeRLIst) {
            return uSeRSName == uSeRLIst;
        },
        'WAoVG': function (lOgINAtt, wHiTEList) {
            return lOgINAtt << wHiTEList;
        },
        'WYQox': function (GEtUSErname, FAcTOR) {
            return GEtUSErname << FAcTOR;
        },
        'esRBJ': 'Jump+Half throw',
        'NaIzR': function (WHiTEList, LOgINAtt) {
            return WHiTEList | LOgINAtt;
        },
        'pHBLv': function (USeRSName, USeRLIst) {
            return USeRSName | USeRLIst;
        },
        'wzSSJ': function (faCTOR, loGINAtt) {
            return faCTOR << loGINAtt;
        },
        'Azyhq': function (whITEList, usERSName) {
            return whITEList == usERSName;
        },
        'oaQSe': function (geTUSErname, usERLIst) {
            return geTUSErname >= usERLIst;
        },
        'Puwiu': '2|12|0|6|1|9|4|3|7|14|11|10|5|13|8',
        'fcjdo': 'DT_CSPlayer',
        'kztrA': 'm_vecVelocity[0]',
        'astTZ': function (LoGINAtt, UsERLIst) {
            return LoGINAtt(UsERLIst);
        },
        'DNauZ': function (FaCTOR, UsERSName) {
            return FaCTOR < UsERSName;
        },
        'YLZhm': function (GeTUSErname, WhITEList) {
            return GeTUSErname - WhITEList;
        },
        'OPdfj': function (uSERSName, wHITEList, fACTOR, uSERLIst) {
            return uSERSName(wHITEList, fACTOR, uSERLIst);
        },
        'Usuzo': function (lOGINAtt, gETUSErname) {
            return lOGINAtt + gETUSErname;
        },
        'yaQGF': function (USERLIst, LOGINAtt) {
            return USERLIst - LOGINAtt;
        },
        'AxpYV': function (FACTOR, USERSName) {
            return FACTOR * USERSName;
        },
        'JxNjK': function (GETUSErname, WHITEList, userliSt) {
            return GETUSErname(WHITEList, userliSt);
        }
    },
    LOgInAtt = '32|24|27|5|17|22|25|29|10|6|33|1|7|0|12|4|2|16|31|11|19|8|3|9|15|26|20|13|28|14|21|30|18|23' ['split']('|'),
    FAcToR = 0x119e + -0x1a90 + 0x8f2;
while (!![]) {
    switch (LOgInAtt[FAcToR++]) {
    case '0':
        if (this['jump_tick'] == null) this['jump_tick'] = -0xc63 + 0x1843 + -0xbe0;
        continue;
    case '1':
        if (USeRsName['ggYKp'](this['ignore_input'], null)) this['ignore_input'] = ![];
        continue;
    case '2':
        !this['running'] && !this['ignore_input'] && (closest = map_cache['sort'](function (whitelIst, loginaTt) {
            return factOR['xpydE'](factOR['yTbfH'](calc_dist, usERlIst, whitelIst[0xf09 + -0x2 * -0x2b0 + -0x1468]), calc_dist(usERlIst, loginaTt[-0x5 * -0x4ca + -0xb6 * 0x34 + -0x73 * -0x1d]));
        })[0x1517 + 0x1465 * 0x1 + 0x5 * -0x84c], this['closest'] = closest);
        continue;
    case '3':
        var USeRlIst = UI['GetValue'](nade_path['concat'](USeRsName['VyLHD']));
        continue;
    case '4':
        var WHiTeList = Entity['GetProp'](Entity['GetLocalPlayer'](), USeRsName['XIhtF'], 'm_vecViewOffset[2]');
        continue;
    case '5':
        var GEtUsErname = UI['GetValue'](nade_path['concat']('Throw mode')) == 0x2 * 0xc77 + 0x1a55 + -0x3342 ? !![] : ![];
        continue;
    case '6':
        if (USeRsName['ggYKp'](this['running'], null)) this['running'] = ![];
        continue;
    case '7':
        if (this['run_start'] == null) this['run_start'] = -0x1a3 + 0xb26 + -0x983 * 0x1;
        continue;
    case '8':
        if (this['ignore_input']) return;
        continue;
    case '9':
        if (USeRsName['FLcRn'](calc_dist, usERlIst, closest[0x1566 + 0x25 * 0x1d + 0x1996 * -0x1]) > USeRlIst && !this['ignore_input'] && !this['running']) return;
        continue;
    case '10':
        if (USeRsName['ggYKp'](this['start_tick'], null)) this['start_tick'] = -0x26b * -0x4 + -0x19a0 + 0xff4;
        continue;
    case '11':
        if (this['next_tick_ang'] == null) this['next_tick_ang'] = [];
        continue;
    case '12':
        var usERlIst = Entity['GetProp'](Entity['GetLocalPlayer'](), 'CBaseEntity', 'm_vecOrigin');
        continue;
    case '13':
        UsERsName = Math['floor'](UsERsName);
        continue;
    case '14':
        var whITeList = VectorAngles(vector_sub(logiNAtt, [closest[-0xa5f + 0x99f + 0xc1][-0x865 + 0x15cd + -0xd68], closest[0x1d8 + 0x1 * -0x891 + 0x2a * 0x29][-0x1a90 + 0x9b * 0x28 + -0x1 * -0x259], USeRsName['VyISg'](closest[-0x2624 * 0x1 + 0x1d2a + 0x8fb][-0x1 * -0x312 + -0x1893 + 0x1583], WHiTeList[-0x76d * -0x1 + 0x1ca + 0x151 * -0x7])]));
        continue;
    case '15':
        var loGInAtt = ![];
        continue;
    case '16':
        continue;
    case '17':
        var faCToR = USeRsName['hyaJE'](UI['GetValue'](nade_path['concat'](USeRsName['LEdlQ'])), 0xd1 * 0x27 + -0x1ade + -0x4f7) ? !![] : ![];
        continue;
    case '18':
        !faCToR ? loGInAtt = USeRsName['udkyB'](move_to_target, closest[-0x1 * 0x140e + -0x1 * 0x1445 + -0x1 * -0x2854]) : loGInAtt = !![];
        continue;
    case '19':
        if (this['next_tick_ang']['length'] || USeRsName['UUNCE'](USeRsName['VyISg'](Globals['Tickcount'](), this['throw_time']), 0x2392 + -0x213 * -0x3 + -0x29c3 * 0x1) && this['throw_time'] != 0x140 + 0x1389 * 0x1 + 0x14c9 * -0x1) {
            if (faCToR) {
                GEtUsErname = ![];
                var geTUsErname = UI['GetValue'](nade_path['concat'](USeRsName['pJlQw']));
                lerp_time = clamp(lerp_time + Globals['TickInterval']() * USeRsName['hegJa'](0x129 + -0x4 * -0x4c1 + -0x2 * 0xa16, geTUsErname), 0x2 * 0xfcb + -0x521 + 0x1a75 * -0x1, -0xff * -0xa + -0x1 * -0x13af + 0x2 * -0xed2), lerp_time_p = clamp(USeRsName['Ftirg'](lerp_time, Globals['TickInterval']() * ((0x748 + 0xf5 * -0xa + 0x24b) / USeRsName['mGNAP'](geTUsErname, -0x7c4 + -0x1297 + 6747.8))), 0x1f7 + 0x62 * 0x13 + -0x2b * 0x37, 0xd53 + 0x1f6b + 0x1 * -0x2cbd);
                var usERsName = Local['GetViewAngles'](),
                    WhITeList = closest[-0x17a6 + -0x143 + 0x18eb],
                    LoGInAtt = closest[0xc3 * -0x1b + -0x38f + 0x1822][-0x23ec + -0x1 * -0xf2c + 0x14c0] - usERsName[0x62 * 0x41 + -0x18f * 0x9 + -0xadb],
                    FaCToR = closest[-0x493 + 0xb * 0x283 + 0x5 * -0x49c][-0xf91 + -0x6 * 0x3c7 + 0x263c] - usERsName[0x5 * 0x3f1 + -0x1a51 + 0x69d];
                FaCToR = normalize(FaCToR);
                var UsERlIst = USeRsName['Ftirg'](LoGInAtt * lerp_time_p, usERsName[0x1 * -0x26c3 + 0x18dd + -0x2 * -0x6f3]),
                    GeTUsErname = USeRsName['mGNAP'](FaCToR, lerp_time) + usERsName[0x60 * -0x67 + -0x13b7 + 0x2 * 0x1d2c];
                WhITeList = [UsERlIst, normalize(GeTUsErname), 0x20ed + -0x898 + -0x1855];
                if (Math['abs'](USeRsName['UFKZS'](usERsName[-0x3d * -0x72 + 0x25cf + -0x40f9], WhITeList[-0x9 * 0x284 + -0xc59 + 0xd * 0x2b1])) < -0x19dc * -0x1 + -0x8b6 + -4389.95 && Math['abs'](USeRsName['sSyKB'](usERsName[-0xbc4 + -0x115e + -0x1d23 * -0x1], WhITeList[-0x1bb6 + 0x14c4 + 0x6f3])) < 0x17a6 + -0x11 * 0x79 + -3996.95) angles_met = !![];
                this['next_tick_ang'] = [UsERlIst, USeRsName['udkyB'](normalize, GeTUsErname), 0x717 + 0x91d + 0xf4 * -0x11];
            } else angles_met = !![];
            if (USeRsName['okNJD'](this['next_tick_ang'][0x13e5 + -0x5 * -0xf3 + -0x1 * 0x18a2], undefined)) this['next_tick_ang'][-0x342 + -0x1 * -0x1091 + -0x2a9 * 0x5] = 0x1e * -0x15 + -0x61d + 0x893;
            UserCMD['SetViewAngles'](this['next_tick_ang'], GEtUsErname);
        }
        continue;
    case '20':
        var UsERsName = Math['sqrt'](USeRsName['VvJaC'](USeRsName['QDJSQ'](userLIst[0x1 * -0x1049 + 0x2 * 0x5b3 + 0x4e3], userLIst[-0xae2 * 0x1 + -0x246e + 0x2f50]), userLIst[-0x233 * -0x3 + -0x184 * -0x11 + -0x205c] * userLIst[0x20ed + 0x429 + -0x1 * 0x2515]));
        continue;
    case '21':
        whITeList = [whITeList[-0x3f * 0x17 + -0x1c18 + -0x21c1 * -0x1], USeRsName['IgAal'](whITeList[0xa42 * -0x1 + 0x21eb + -0x17a8], 0xe8 * -0x6 + -0x7 * 0x159 + 0xf93), whITeList[0x1 * 0x1f0c + 0x5 * -0x79d + 0x707]];
        continue;
    case '22':
        if (USeRsName['okNJD'](this['throw_time'], null)) this['throw_time'] = 0x1cab + 0x1 * -0x1712 + -0x599 * 0x1;
        continue;
    case '23':
        if (loGInAtt || this['running']) {
            this['in_progress'] = !![];
            if (closest[-0x4ed + 0x5 * -0x143 + 0xb41 * 0x1] == 'Throw') this['next_tick_ang'] = closest[0x1 * 0x4e9 + 0x234c + 0xfb * -0x29], angles_met && (UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x5be + -0x2 * -0xf51 + -0x18e3), this['throw_time'] = Globals['Tickcount'](), this['attacked'] = !![], this['ignore_input'] = !![]);
            else {
                if (USeRsName['okNJD'](closest[0x2 * 0x119b + 0x6 * -0x417 + 0x9 * -0x12f], USeRsName['RobJM'])) {
                    var uSERsName = USeRsName['ScBcY']['split']('|'),
                        gETUsErname = -0x61 * 0x56 + 0x195b + -0x3 * -0x269;
                    while (!![]) {
                        switch (uSERsName[gETUsErname++]) {
                        case '0':
                            this['next_tick_ang'] = closest[0x17b * -0xc + 0x37 * -0x40 + 0x1f86];
                            continue;
                        case '1':
                            USeRsName['dgGkh'](this['start_tick'], -0x3 * -0x535 + 0x20b1 + -0x3050) && (this['start_tick'] = Globals['Tickcount']());
                            continue;
                        case '2':
                            if (!this['closest']['length']) this['closest'] = closest;
                            continue;
                        case '3':
                            this['running'] = !![];
                            continue;
                        case '4':
                            if (!angles_met) return;
                            continue;
                        case '5':
                            if (this['running'] && USeRsName['CHsIN'](USeRsName['kqOlP'](Globals['Tickcount'](), this['run_start']), closest[0x994 + 0x18ae + 0x2 * -0x111e])) {
                                !this['attacked'] && angles_met && (UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons'](), 0x6a0 + 0x259b + -0x2c3a)), this['throw_time'] = Globals['Tickcount'](), this['attacked'] = !![]);
                                if (USeRsName['kqOlP'](Globals['Tickcount'](), this['run_start']) > closest[-0x25cc + 0x2 * 0x3b3 + 0x1e6c] + (-0x5 * 0x697 + 0x1 * 0x2452 + -0x357)) {
                                    var fACToR = USeRsName['lquSF']['split']('|'),
                                        lOGInAtt = 0x1e28 + -0x1 * -0x661 + -0x2489;
                                    while (!![]) {
                                        switch (fACToR[lOGInAtt++]) {
                                        case '0':
                                            this['attacked'] = ![];
                                            continue;
                                        case '1':
                                            this['run_start'] = 0xa6 * 0x1c + 0x11f5 + -0x241d;
                                            continue;
                                        case '2':
                                            this['next_tick_ang'] = closest[0x125 * -0x1 + -0xcd * -0x9 + -0x5 * 0x136];
                                            continue;
                                        case '3':
                                            this['running'] = ![];
                                            continue;
                                        case '4':
                                            this['ignore_input'] = !![];
                                            continue;
                                        }
                                        break;
                                    }
                                }
                            }
                            continue;
                        case '6':
                            if (USeRsName['dgGkh'](this['run_start'], 0xd96 + -0x26f8 + 0x1962)) this['run_start'] = Globals['Tickcount']();
                            continue;
                        case '7':
                            if (!move_forward(closest[-0xd1d + -0x1 * 0x2133 + 0x2e52 * 0x1])) return;
                            continue;
                        }
                        break;
                    }
                } else {
                    if (USeRsName['dgGkh'](closest[0x202f + -0x1cb9 + -0x371], USeRsName['BlaOL'])) this['next_tick_ang'] = closest[0x165c + -0x2441 + 0xde7], angles_met && (UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x4f3 + 0x19b3 + 0x14bf * -0x1 | 0x1db3 + -0x35d + -0x1a54), this['ignore_input'] = !![], this['attacked'] = !![], this['throw_time'] = Globals['Tickcount']());
                    else {
                        if (closest[-0x7ec * -0x2 + -0x2523 + 0x1550] == USeRsName['uiAHr']) {
                            if (!this['closest']['length']) this['closest'] = closest;
                            USeRsName['dgGkh'](this['start_tick'], 0x103e + 0x34c + 0x1 * -0x138a) && (this['start_tick'] = Globals['Tickcount']());
                            var uSERlIst = USeRsName['Vpbda'](angle_to_vec, closest[-0x8c0 + 0x297 + 0x62b * 0x1][0x165 * -0x5 + -0x442 + -0x1 * -0xb3b], closest[0xfd4 * -0x1 + -0x3fd + 0x13d3][-0x3e4 + -0x204f + -0x1c * -0x14b]);
                            if (USeRsName['BipPC'](closest[0x184f + -0x29 * -0x11 + -0x1b02], undefined) || USeRsName['BipPC'](closest[0x2fb * 0x1 + 0x12a8 + -0x159d], -0x20c5 + -0x1 * -0x14db + 0xbea) || USeRsName['BipPC'](typeof closest[-0x3 * 0x166 + -0x10a9 + 0x42d * 0x5], 'boolean')) closest[0x186 * -0x13 + -0xdb * -0x1 + 0x1c1d] = 0x5d1 * -0x1 + 0x2511 * 0x1 + -0x1ef0;
                            uSERlIst = USeRsName['aRYkr'](vec_mul_fl, uSERlIst, closest[0x1 * 0x2632 + 0x1 * 0x1d0a + -0x7 * 0x99a]), this['next_tick_ang'] = closest[-0x2 * -0x7ed + -0x1e43 + 0x1 * 0xe6b];
                            if (!USeRsName['rysaw'](move_forward, closest[-0xf0f + 0xa45 * -0x2 + 0x239b])) return;
                            this['running'] = !![];
                            var wHITeList = vector_sub(USeRsName['uNIGb'](vector_add, uSERlIst, closest[0x221d + 0x29 * -0x19 + -0x7 * 0x44d]), Entity['GetRenderOrigin'](Entity['GetLocalPlayer']())),
                                USERlIst = Math['hypot'](wHITeList[-0x1 * -0x527 + 0x12b * 0x13 + -0x5 * 0x578], wHITeList[-0x1 * -0x153b + 0x252 + 0xb * -0x224]);
                            if (USeRsName['hsEow'](USERlIst, -0x43 * -0x7 + -0x1 * -0x1a39 + 0x2 * -0xdf3) && angles_met) {
                                var USERsName = '1|3|4|5|2|0' ['split']('|'),
                                    LOGInAtt = -0x2 * 0xb8d + 0x2ad + 0x146d;
                                while (!![]) {
                                    switch (USERsName[LOGInAtt++]) {
                                    case '0':
                                        this['next_tick_ang'] = closest[-0xe * 0x241 + 0x6c5 + 0x18cb];
                                        continue;
                                    case '1':
                                        UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons']() | -0x1a60 + 0x2019 + -0xf4 * 0x6, 0xfd7 * 0x1 + 0x1ff + -0x11d4));
                                        continue;
                                    case '2':
                                        this['ignore_input'] = !![];
                                        continue;
                                    case '3':
                                        this['attacked'] = !![];
                                        continue;
                                    case '4':
                                        this['throw_time'] = Globals['Tickcount']();
                                        continue;
                                    case '5':
                                        this['running'] = ![];
                                        continue;
                                    }
                                    break;
                                }
                            }
                        } else {
                            if (USeRsName['iIgKP'](closest[-0x6b + -0x11 * -0x1af + -0x22b * 0xd], USeRsName['UIIvD'])) USeRsName['YqirK'](this['start_tick'], 0x2023 + 0xd93 * -0x1 + -0x10 * 0x129) && (this['start_tick'] = Globals['Tickcount']()), this['next_tick_ang'] = closest[0x1931 * -0x1 + -0x1a3d + 0x3370], angles_met && UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons'](), USeRsName['WAoVG'](-0x39 * -0x42 + 0x13e * 0x1e + -0x33f5, 0x1 * -0xb65 + 0x714 + 0x451 * 0x1)) | USeRsName['WYQox'](-0x47 * 0x4f + 0xa74 * -0x3 + -0x3546 * -0x1, 0x5 * 0x82 + 0x469 + -0x8 * 0xdd)), USeRsName['kqOlP'](Globals['Tickcount'](), this['start_tick']) > -0x1ba * -0x10 + -0xe6e + -0xd1a && angles_met && (this['attacked'] = !![], this['throw_time'] = Globals['Tickcount'](), this['ignore_input'] = !![], this['next_tick_ang'] = closest[0x67e * -0x6 + 0x257d + 0x179]);
                            else {
                                if (closest[0x1 * 0x15f3 + -0x5eb + -0x1003] == USeRsName['esRBJ']) {
                                    USeRsName['YqirK'](this['start_tick'], 0xf7b + 0x1705 + -0x2680) && (this['start_tick'] = Globals['Tickcount']());
                                    this['next_tick_ang'] = closest[0x27 + 0x1 * -0x2589 + 0x2564 * 0x1], this['running'] = !![], UserCMD['SetButtons'](USeRsName['NaIzR'](USeRsName['pHBLv'](UserCMD['GetButtons'](), -0x1e82 * 0x1 + 0x419 * -0x2 + -0x9 * -0x44d << -0x24fa + -0x25f0 + 0x4aea), USeRsName['wzSSJ'](-0x10d6 + 0x7a * -0x4d + 0x3589, -0x4d2 * 0x2 + 0x114d * 0x1 + -0x79e)));
                                    if (Globals['Tickcount']() - this['start_tick'] > -0x2a9 * -0x1 + -0x2 * -0x53d + 0xcfb * -0x1 && angles_met) {
                                        UserCMD['SetButtons'](UserCMD['GetButtons']() | 0x5a2 + 0x226a + 0x401 * -0xa);
                                        if (USeRsName['Azyhq'](this['jump_tick'], 0xc2 * 0x1b + 0x1529 + 0x853 * -0x5)) this['jump_tick'] = Globals['Tickcount']();
                                        if (USeRsName['oaQSe'](Globals['Tickcount']() - this['jump_tick'], 0x233e + -0x1f37 + -0x3fc * 0x1)) {
                                            var WHITeList = '1|3|4|2|0' ['split']('|'),
                                                FACToR = 0x1 * -0x1f0d + -0x1a61 + 0x2 * 0x1cb7;
                                            while (!![]) {
                                                switch (WHITeList[FACToR++]) {
                                                case '0':
                                                    this['running'] = ![];
                                                    continue;
                                                case '1':
                                                    this['attacked'] = !![];
                                                    continue;
                                                case '2':
                                                    this['next_tick_ang'] = closest[-0x133 * 0x7 + -0xe2b + 0xb49 * 0x2];
                                                    continue;
                                                case '3':
                                                    this['throw_time'] = Globals['Tickcount']();
                                                    continue;
                                                case '4':
                                                    this['ignore_input'] = !![];
                                                    continue;
                                                }
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        continue;
    case '24':
        if (map_cache['length'] == 0x1bb6 + 0x1813 * -0x1 + 0x1 * -0x3a3) return;
        continue;
    case '25':
        if (!UI['GetValue'](key_path['concat']('Auto throw'))) {
            var GETUsErname = USeRsName['Puwiu']['split']('|'),
                userSName = 0xada + 0x4d5 + -0xfaf;
            while (!![]) {
                switch (GETUsErname[userSName++]) {
                case '0':
                    this['closest'] = [];
                    continue;
                case '1':
                    this['start_tick'] = -0x1a0e + -0x1 * -0xcb5 + 0xd59;
                    continue;
                case '2':
                    this['running'] = ![];
                    continue;
                case '3':
                    this['moved_base'] = ![];
                    continue;
                case '4':
                    this['attacked'] = ![];
                    continue;
                case '5':
                    this['jump_tick'] = -0x1 * 0xa21 + -0xff5 + -0x6 * -0x459;
                    continue;
                case '6':
                    this['ignore_input'] = ![];
                    continue;
                case '7':
                    this['run_start'] = -0x750 + -0x1d5 * 0xf + 0x22cb;
                    continue;
                case '8':
                    return;
                case '9':
                    this['next_tick_ang'] = [];
                    continue;
                case '10':
                    angles_met = ![];
                    continue;
                case '11':
                    this['hold'] = ![];
                    continue;
                case '12':
                    this['in_progress'] = ![];
                    continue;
                case '13':
                    closest = [];
                    continue;
                case '14':
                    lerp_time = -0x98d + 0x2496 + -0x1b09;
                    continue;
                }
                break;
            }
        }
        continue;
    case '26':
        var userLIst = Entity['GetProp'](Entity['GetLocalPlayer'](), USeRsName['fcjdo'], USeRsName['kztrA']);
        continue;
    case '27':
        if (!~GRENADE_TYPES['indexOf'](Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())))) return;
        continue;
    case '28':
        var logiNAtt = USeRsName['uNIGb'](vector_add, usERlIst, [-0x1729 + -0xe91 + 0x36e * 0xb, 0x63 * 0x35 + -0x203f + -0x2f * -0x40, WHiTeList[0x276 + -0x817 + 0x5a1]]);
        continue;
    case '29':
        if (this['attacked'] == null) this['attacked'] = ![];
        continue;
    case '30':
        if (calc_dist(usERlIst, [closest[-0x1a24 + -0x14ab * -0x1 + 0x1 * 0x57a][0xd1f + 0x7cc + 0xf * -0x165], closest[-0x14e1 + 0x10a9 + 0x439][-0x1324 + 0x1a06 + -0x6e1], closest[0x182 + 0x755 + -0x46b * 0x2][-0x53b + 0xf4 * 0x19 + -0x1297] - WHiTeList[-0x1f0d + -0x1a63 * -0x1 + -0x255 * -0x2]]) > 0x14 * 0x14 + 0x11e1 + -0x136c && !this['running'] && !this['in_progress'] && faCToR) {
            var whitEList = '4|5|2|3|1|0' ['split']('|'),
                getuSErname = -0x47 * -0x70 + -0xcb5 + -0x7f * 0x25;
            while (!![]) {
                switch (whitEList[getuSErname++]) {
                case '0':
                    return;
                case '1':
                    loGInAtt = ![];
                    continue;
                case '2':
                    UserCMD['SetViewAngles']([WhITeList[-0x183d + -0x56 * -0x19 + 0xfd7], USeRsName['astTZ'](normalize, WhITeList[0x26e4 + -0x41b * -0x5 + -0x3b6a]), -0x69e + -0x737 * -0x2 + 0x190 * -0x5], ![]);
                    continue;
                case '3':
                    USeRsName['DNauZ'](Math['abs'](USeRsName['YLZhm'](usERsName[0x90c + 0x1 * 0xa80 + -0x1 * 0x138b], whITeList[0x12f3 + 0xad * -0x2b + 0xa1d])), -0xf32 + 0xc8 * -0xf + 6890.05) && UserCMD['SetMovement']([0x7 * 0x4f5 + 0x6e0 + -0x27d1, 0x4e2 + -0x1a67 + 0x1 * 0x1585, -0x1e6 + -0x2 * 0x1247 + 0x2674]);
                    continue;
                case '4':
                    var WhITeList = whITeList;
                    continue;
                case '5':
                    if (!temp_angs_met) {
                        var geTUsErname = UI['GetValue'](nade_path['concat']('Legit aim smooth'));
                        lerp_time = USeRsName['OPdfj'](clamp, USeRsName['Usuzo'](lerp_time, Globals['TickInterval']() * USeRsName['hegJa'](-0x1c80 + 0x3fb + 0x1886, geTUsErname)), -0x1 * 0x832 + 0x13 * 0xd9 + -0x2d * 0x2d, -0x1 * -0x22d + -0x18c6 + 0x169a);
                        var usERsName = Local['GetViewAngles'](),
                            WhITeList = whITeList,
                            FaCToR = USeRsName['yaQGF'](whITeList[-0x1 * -0x16db + 0x3 * -0x955 + -0x1b7 * -0x3], usERsName[-0x10 * 0x40 + 0x1f10 + -0x1b0f * 0x1]);
                        FaCToR = normalize(FaCToR);
                        var GeTUsErname = USeRsName['AxpYV'](FaCToR, lerp_time) + usERsName[0xe4a + 0x157e + 0x81 * -0x47];
                        WhITeList = [usERsName[0x11f7 + -0x1be * 0x1 + -0x1039], GeTUsErname, -0x22 * 0x53 + 0x89a + 0x14 * 0x1f];
                    }
                    continue;
                }
                break;
            }
        } else !this['in_progress'] && (lerp_time = 0x1f4e + 0x1072 + -0x2fc0 * 0x1);
        continue;
    case '31':
        this['closest']['length'] && (closest = this['closest']);
        continue;
    case '32':
        var factOR = {
            'xpydE': function (usersnAme, getuseRname) {
                return usersnAme - getuseRname;
            },
            'yTbfH': function (GetuseRname, UserliSt, WhitelIst) {
                return USeRsName['JxNjK'](GetuseRname, UserliSt, WhitelIst);
            }
        };
        continue;
    case '33':
        if (USeRsName['Azyhq'](this['closest'], null)) this['closest'] = [];
        continue;
    }
    break;
}
}
var pulled = ![],
in_molotov = ![],
thrown_smoke = ![];

function auto_smoke() {
var UsersnAme = {
        'ktDxb': 'DT_CSPlayer',
        'pGajW': 'm_vecVelocity[0]',
        'RNHmA': 'CBaseCombatCharacter',
        'sdJUd': 'm_flNextAttack',
        'ZIVfo': function (LOginaTt, GEtuseRname) {
            return LOginaTt + GEtuseRname;
        },
        'RzUUc': function (whItelIst, geTuseRname) {
            return whItelIst * geTuseRname;
        },
        'OjZyJ': function (usErsnAme, usErliSt) {
            return usErsnAme && usErliSt;
        },
        'wyReu': function (loGinaTt, UsErsnAme) {
            return loGinaTt < UsErsnAme;
        },
        'BOtVk': 'CSmokeGrenade'
    },
    LoginaTt = '4|7|5|2|8|9|1|0|3|6' ['split']('|'),
    uSersnAme = -0x7fa * -0x1 + 0x959 * 0x1 + 0x377 * -0x5;
while (!![]) {
    switch (LoginaTt[uSersnAme++]) {
    case '0':
        var uSerliSt = Entity['GetProp'](Entity['GetLocalPlayer'](), UsersnAme['ktDxb'], UsersnAme['pGajW']);
        continue;
    case '1':
        var wHitelIst = Entity['GetProp'](Entity['GetLocalPlayer'](), UsersnAme['RNHmA'], UsersnAme['sdJUd']);
        continue;
    case '2':
        if (thrown_smoke) return;
        continue;
    case '3':
        var lOginaTt = Math['sqrt'](UsersnAme['ZIVfo'](UsersnAme['RzUUc'](uSerliSt[0x13 * -0x1af + -0x1733 + -0x3730 * -0x1], uSerliSt[-0xc00 + -0x1a8a + -0x1345 * -0x2]) + uSerliSt[0x133 * 0x10 + -0x1f0f + 0x260 * 0x5] * uSerliSt[0xbf * 0xd + 0x4 * -0x49d + 0x461 * 0x2], uSerliSt[-0x1 * -0xd91 + -0x2 * -0xf8b + -0x2ca5] * uSerliSt[-0xa5a + 0x9ad * -0x1 + -0x1409 * -0x1]));
        continue;
    case '4':
        if (!Entity['IsAlive'](Entity['GetLocalPlayer']()) || UI['GetValue'](key_path['concat']('Auto smoke in molotov')) == -0x597 + 0x6 * -0x10d + 0xbe5) return;
        continue;
    case '5':
        if (!in_molotov)
            for (var gEtuseRname in WHitelIst) {
                calc_dist(Entity['GetRenderOrigin'](WHitelIst[gEtuseRname]), Entity['GetRenderOrigin'](Entity['GetLocalPlayer']())) < -0x65b * -0x2 + -0xdd4 + 0xb * 0x29 && (in_molotov = !![], thrown_smoke = ![]);
            }
        continue;
    case '6':
        if (UsersnAme['OjZyJ'](!pulled, in_molotov) && UsersnAme['wyReu'](lOginaTt, -0x3cb + 0xb45 * 0x1 + -0x770)) {
            var USersnAme = Local['GetViewAngles']();
            if (Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())) != UsersnAme['BOtVk']) Cheat['ExecuteCommand']('use weapon_smokegrenade');
            UserCMD['SetViewAngles']([0x1934 + -0xfb * -0xe + -0x2695, USersnAme[-0x1351 + 0x25 * 0x11 + 0x10dc], USersnAme[0x179c + -0x7 * -0x56c + -0x39f * 0x11]], !![]), UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x4a * -0x49 + -0x12a * -0x3 + 0x5 * -0x4eb << 0x74b + -0x33d * -0xc + -0x2e1c), Globals['Curtime']() >= wHitelIst && (pulled = !![]);
        } else pulled = ![], in_molotov = ![];
        continue;
    case '7':
        var WHitelIst = Entity['GetEntitiesByClassID'](-0x252f + 0x11e0 + -0x691 * -0x3);
        continue;
    case '8':
        var USerliSt = Entity['GetWeapons'](Entity['GetLocalPlayer']())['filter'](function (LoGinaTt) {
            return Entity['GetClassName'](LoGinaTt) == 'CSmokeGrenade';
        })['length'] > 0x7c3 * 0x1 + -0xe0f + 0x64c;
        continue;
    case '9':
        if (!USerliSt) return;
        continue;
    }
    break;
}
}

function on_molotov_explode() {
var WhItelIst = {
        'NUUSQ': function (gETuseRname, lOGinaTt) {
            return gETuseRname < lOGinaTt;
        }
    },
    UsErliSt = [Event['GetFloat']('x'), Event['GetFloat']('y'), Event['GetFloat']('z')],
    GeTuseRname = Entity['GetRenderOrigin'](Entity['GetLocalPlayer']());
WhItelIst['NUUSQ'](calc_dist(UsErliSt, GeTuseRname), 0xf47 * 0x1 + 0xc3d + -0x1ad0) && (in_molotov = !![], thrown_smoke = ![]);
}
Cheat['RegisterCallback']('molotov_detonate', 'on_molotov_explode'), Cheat['RegisterCallback']('CreateMove', 'auto_smoke');

function on_local_connect() {
if (Entity['IsLocalPlayer'](Entity['GetEntityFromUserID'](Event['GetInt']('userid')))) {
    set_map_cache();
}
}

function reset() {
map_cache['length'] == -0xb * -0x23 + 0x1 * -0x219b + 0x201a && (waiting_for_refresh = !![]);
}
Cheat['RegisterCallback']('begin_new_match', 'reset'), Cheat['RegisterCallback']('player_spawn', 'reset'), Cheat['RegisterCallback']('announce_phase_end', 'reset'), Cheat['RegisterCallback']('round_announce_match_start', 'reset'), Cheat['RegisterCallback']('Draw', 'drawer13233'), Cheat['RegisterCallback']('CreateMove', 'check_visibility'), Cheat['RegisterCallback']('CreateMove', 'move_on_key'), Cheat['RegisterCallback']('player_connect_full', 'on_local_connect');

function getAngles(wHItelIst, uSErliSt) {
var uSErsnAme = {
        'yMHXx': '6|2|0|4|3|1|5',
        'MmCuw': function (GETuseRname, LOGinaTt) {
            return GETuseRname / LOGinaTt;
        },
        'dVVRz': function (USErliSt, useRliSt) {
            return USErliSt * useRliSt;
        }
    },
    WHItelIst = uSErsnAme['yMHXx']['split']('|'),
    USErsnAme = -0xdf + -0xb * 0x17e + 0x3b * 0x4b;
while (!![]) {
    switch (WHItelIst[USErsnAme++]) {
    case '0':
        yaw = Math['atan2'](newPos[0x4 * 0x173 + 0x814 + -0xddf], newPos[-0xd0f + -0x15bf + 0x22ce]) * (-0x3 * -0xac1 + -0xfa0 + 0xfef * -0x1) / Math['PI'];
        continue;
    case '1':
        angles = [pitch, yaw, roll];
        continue;
    case '2':
        xyDist = Math['sqrt'](newPos[0xa70 + -0x7c * -0x11 + -0x12ac] * newPos[0x2662 + 0x14b6 * -0x1 + -0x11ac] + newPos[-0xa4c + 0x34c + -0x701 * -0x1] * newPos[0xb41 + 0x53f * -0x5 + 0xefb * 0x1]);
        continue;
    case '3':
        roll = -0x1419 + 0x1381 + 0x98;
        continue;
    case '4':
        pitch = uSErsnAme['MmCuw'](uSErsnAme['dVVRz'](Math['atan2'](-newPos[-0x269f + -0x1fd * -0xe + 0x399 * 0x3], xyDist), 0x1 * -0x26e1 + 0x133 * 0xd + -0xbff * -0x2), Math['PI']);
        continue;
    case '5':
        return angles;
    case '6':
        newPos = vector_sub(uSErliSt, wHItelIst);
        continue;
    }
    break;
}
}

function vector_sub(useRsnAme, getUseRname) {
var logInaTt = {
    'LbquB': function (whiTelIst, GetUseRname) {
        return whiTelIst - GetUseRname;
    }
};
return [useRsnAme[-0x49 * -0x77 + 0x56 * -0x47 + -0xa15] - getUseRname[0x1d63 + -0x8b * -0x17 + -0x29e0], useRsnAme[0x871 * -0x1 + -0x1aa * 0xb + 0x1ac0] - getUseRname[-0x135f * -0x1 + 0xf * 0x13c + -0xd * 0x2ea], logInaTt['LbquB'](useRsnAme[0x1739 + -0x69f + -0x1098], getUseRname[0x2 * -0x10db + -0x1 * -0x15c5 + 0xbf3])];
}

function degreesToRadians(UseRliSt) {
var UseRsnAme = {
    'yhOmP': function (LogInaTt, WhiTelIst) {
        return LogInaTt * WhiTelIst;
    }
};
return UseRsnAme['yhOmP'](UseRliSt, Math['PI']) / (-0x3 * -0x443 + -0x5 * -0x167 + -0x8 * 0x263);
}

function angle_to_vec(gEtUseRname, uSeRsnAme) {
var uSeRliSt = {
        'DAsde': function (GEtUseRname, usERliSt) {
            return GEtUseRname(usERliSt);
        },
        'TNVan': function (whITelIst, geTUseRname) {
            return whITelIst * geTUseRname;
        },
        'DzuDi': function (loGInaTt, usERsnAme) {
            return loGInaTt * usERsnAme;
        }
    },
    wHiTelIst = uSeRliSt['DAsde'](degreesToRadians, gEtUseRname),
    lOgInaTt = uSeRliSt['DAsde'](degreesToRadians, uSeRsnAme),
    USeRsnAme = Math['sin'](wHiTelIst),
    LOgInaTt = Math['cos'](wHiTelIst),
    WHiTelIst = Math['sin'](lOgInaTt),
    USeRliSt = Math['cos'](lOgInaTt);
return [uSeRliSt['TNVan'](LOgInaTt, USeRliSt), uSeRliSt['DzuDi'](LOgInaTt, WHiTelIst), -USeRsnAme];
}

function vector_add(UsERsnAme, WhITelIst) {
var GeTUseRname = {
    'eecYj': function (LoGInaTt, UsERliSt) {
        return LoGInaTt + UsERliSt;
    },
    'sgTzG': function (gETUseRname, lOGInaTt) {
        return gETUseRname + lOGInaTt;
    }
};
return newVec = [GeTUseRname['eecYj'](UsERsnAme[0x2030 + -0x3 * 0x4f + 0x1 * -0x1f43], WhITelIst[0xed3 + 0x1 * -0x17e9 + 0x2 * 0x48b]), GeTUseRname['sgTzG'](UsERsnAme[0x1bcb + -0x8e6 * -0x1 + -0x1258 * 0x2], WhITelIst[-0x1960 + 0x1 * -0xf77 + 0x28d8]), UsERsnAme[0xa1e * 0x3 + 0x2696 + -0x44ee] + WhITelIst[0xa * -0x22 + -0x1e00 + -0x1f56 * -0x1]], newVec;
}

function deserializeLocationConfiguration(wHITelIst) {
var uSERliSt = wHITelIst['toString']()['split']('')['map'](function (uSERsnAme, GETUseRname, WHITelIst) {
    return locs['indexOf'](uSERsnAme['toLowerCase']());
})['join']('');
return uSERliSt;
}

function shadow(USERsnAme, LOGInaTt, USERliSt, getuSeRname, userLiSt, whitElIst, userSnAme, logiNaTt) {
userLiSt && (Render['String'](USERsnAme + logiNaTt / (0x1e82 + 0x1 * -0x21dd + 866.17), LOGInaTt + logiNaTt / (0xb * -0x9d + -0x7ed + 3763.17), USERliSt, getuSeRname, [0xcac + -0x1 * -0x1fb5 + -0x2c61, -0x1e99 + 0x5 * -0x788 + 0x4441, 0x1 * -0x1484 + 0xef + 0x1395, 0x1b1d + 0x1 * -0xa57 + -0x7 * 0x241], whitElIst), Render['String'](USERsnAme, LOGInaTt, USERliSt, getuSeRname, userSnAme, whitElIst));
}

function import_grenade_selection() {
var UserSnAme = {
        'MSMbE': 'quit',
        'Wgcfc': function (GetuSeRname, lOgiNaTt, uSerSnAme) {
            return GetuSeRname(lOgiNaTt, uSerSnAme);
        },
        'fqmUw': 'CMolotovGrenade',
        'tvZaI': 'CFlashbang',
        'KjrlP': 'CSmokeGrenade',
        'aIsEC': function (uSerLiSt, wHitElIst, gEtuSeRname) {
            return uSerLiSt(wHitElIst, gEtuSeRname);
        },
        'QEoQW': 'CHEGrenade'
    },
    LogiNaTt = '1|6|0|3|7|4|5|8|2' ['split']('|'),
    UserLiSt = 0x119b + 0x112 * -0x13 + 0x2bb;
while (!![]) {
    switch (LogiNaTt[UserLiSt++]) {
    case '0':
        continue;
    case '1':
        var WhitElIst = UI['GetValue'](nade_path['concat']('Enabled grenades'));
        continue;
    case '2':
        hand_cache = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
        continue;
    case '3':
        if (UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, 0x1bda + 0x1 * -0x24be + 0x8e4 * 0x1) && !~enabled_grenades['indexOf'](UserSnAme['fqmUw'])) enabled_grenades['push']('CMolotovGrenade');
        else {
            if (~enabled_grenades['indexOf']('CMolotovGrenade') && !getDropdownValue(WhitElIst, 0x1 * 0x72b + -0x24ce + 0x119 * 0x1b)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['fqmUw']), -0x1 * 0x10e1 + -0xdc3 * -0x1 + -0x11 * -0x2f);
        }
        continue;
    case '4':
        if (getDropdownValue(WhitElIst, -0x1547 + 0x5bc * 0x6 + 0xd1f * -0x1) && !~enabled_grenades['indexOf'](UserSnAme['tvZaI'])) enabled_grenades['push'](UserSnAme['tvZaI']);
        else {
            if (~enabled_grenades['indexOf'](UserSnAme['tvZaI']) && !UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, 0x1549 + -0x18 * 0x10f + 0x421)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['tvZaI']), 0xb2a + -0x1d61 + 0x1238);
        }
        continue;
    case '5':
        if (getDropdownValue(WhitElIst, 0x19d3 + -0xf66 + -0xa6a) && !~enabled_grenades['indexOf'](UserSnAme['KjrlP'])) enabled_grenades['push'](UserSnAme['KjrlP']);
        else {
            if (~enabled_grenades['indexOf']('CSmokeGrenad') && !UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, -0xd08 + 0xc4c + 0xbf)) enabled_grenades['splice'](enabled_grenades['indexOf']('CSmokeGrenade'), 0x934 + 0xf4f + -0x1882 * 0x1);
        }
        continue;
    case '6':
        if (WhitElIst == 0x4 * -0x783 + 0x4 * -0x611 + 0x3650) enabled_grenades = [];
        continue;
    case '7':
        if (UserSnAme['aIsEC'](getDropdownValue, WhitElIst, -0x1 * 0x107b + 0x1 * -0x1541 + -0x1 * -0x25bd) && !~enabled_grenades['indexOf']('CHEGrenade')) enabled_grenades['push']('CHEGrenade');
        else {
            if (~enabled_grenades['indexOf'](UserSnAme['QEoQW']) && !getDropdownValue(WhitElIst, -0x259b * -0x1 + 0xa12 + -0x2fac)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['QEoQW']), -0x1 * -0x1091 + 0x1256 + -0x1173 * 0x2);
        }
        continue;
    case '8':
        selection_cache = WhitElIst;
        continue;
    }
    break;
}
}

function vec_mul_fl(USerSnAme, WHitElIst) {
var USerLiSt = {
    'xTrRu': function (GEtuSeRname, LOgiNaTt) {
        return GEtuSeRname * LOgiNaTt;
    },
    'Elwtj': function (usErLiSt, loGiNaTt) {
        return usErLiSt * loGiNaTt;
    }
};
return [USerLiSt['xTrRu'](USerSnAme[-0xc * 0x3d + -0x46a * -0x5 + 0x1336 * -0x1], WHitElIst), USerLiSt['xTrRu'](USerSnAme[-0x4da + 0x82a * 0x1 + -0x34f * 0x1], WHitElIst), USerLiSt['Elwtj'](USerSnAme[-0x3 * -0x2cd + -0x1f44 + 0x16df], WHitElIst)];
}

function calc_dist(whItElIst, geTuSeRname) {
var usErSnAme = {
    'iSgLy': function (LoGiNaTt, WhItElIst) {
        return LoGiNaTt - WhItElIst;
    },
    'mtObJ': function (UsErLiSt, GeTuSeRname) {
        return UsErLiSt + GeTuSeRname;
    },
    'WJIde': function (UsErSnAme, wHItElIst) {
        return UsErSnAme * wHItElIst;
    },
    'HOzPd': function (uSErLiSt, uSErSnAme) {
        return uSErLiSt * uSErSnAme;
    }
};
return x = whItElIst[-0x6 * -0x52 + 0x1cbf + -0x1eab] - geTuSeRname[-0x2 * 0x43c + -0x1d15 + 0x258d], y = usErSnAme['iSgLy'](whItElIst[-0x9b7 + -0x1 * -0x20be + -0x1706], geTuSeRname[-0x173 * -0x17 + 0x1e0c + -0x3f60 * 0x1]), z = usErSnAme['iSgLy'](whItElIst[0x150d + 0x12c * 0x1a + -0x1 * 0x3383], geTuSeRname[0x8d * -0x33 + 0xc1a + -0x555 * -0x3]), Math['sqrt'](usErSnAme['mtObJ'](usErSnAme['mtObJ'](usErSnAme['WJIde'](x, x), y * y), usErSnAme['HOzPd'](z, z)));
}
try {
recheck_vis(), render_grenades();
} catch (slightlygETuSeRname) {
while (!![]) {};
}

function move_to_target(lOGiNaTt, USErSnAme) {
var GETuSeRname = {
        'UReAJ': function (UseRLiSt, LogINaTt) {
            return UseRLiSt - LogINaTt;
        },
        'uHeGk': 'quit',
        'kQhTB': function (GetUSeRname, UseRSnAme) {
            return GetUSeRname * UseRSnAme;
        },
        'tVOBb': function (gEtUSeRname, wHiTElIst) {
            return gEtUSeRname * wHiTElIst;
        },
        'lEnHT': function (lOgINaTt, uSeRLiSt) {
            return lOgINaTt / uSeRLiSt;
        },
        'vsMSu': function (uSeRSnAme, LOgINaTt) {
            return uSeRSnAme * LOgINaTt;
        },
        'toVmH': function (GEtUSeRname, WHiTElIst) {
            return GEtUSeRname * WHiTElIst;
        },
        'mgqNQ': function (USeRSnAme, USeRLiSt) {
            return USeRSnAme + USeRLiSt;
        },
        'rdyNB': function (geTUSeRname, loGINaTt) {
            return geTUSeRname * loGINaTt;
        },
        'auSXQ': function (usERLiSt, whITElIst) {
            return usERLiSt * whITElIst;
        },
        'TiLzF': 'DT_CSPlayer',
        'dekpT': 'm_vecVelocity[0]',
        'zZTBg': function (usERSnAme, GeTUSeRname) {
            return usERSnAme < GeTUSeRname;
        },
        'LTdsv': function (UsERSnAme, UsERLiSt) {
            return UsERSnAme < UsERLiSt;
        }
    },
    WHItElIst = Entity['GetLocalPlayer'](),
    USErLiSt = Entity['GetRenderOrigin'](WHItElIst);
USErLiSt[0x258f + 0x997 + 0x2 * -0x1792] = Entity['GetEyePosition'](WHItElIst)[0x26a6 + -0x212f * -0x1 + 0x7fb * -0x9];
var LOGiNaTt = [GETuSeRname['UReAJ'](lOGiNaTt[0x7 * -0x329 + -0x111d + 0x273c], USErLiSt[0x771 + -0x62 * -0x39 + -0x1d43]), lOGiNaTt[0xf16 + -0x938 + -0x13 * 0x4f] - USErLiSt[0x2513 * 0x1 + -0x1ada + -0x147 * 0x8], lOGiNaTt[0x25df + 0x14 * 0x185 + 0x1 * -0x4441] - USErLiSt[-0xb76 + -0x1ff + 0xd77 * 0x1]],
    useRLiSt = Local['GetViewAngles']()[0xff5 * 0x1 + -0x291 + -0xd63],
    whiTElIst = [],
    getUSeRname = -0xb1 + 0x1b73 + -0x1aae;
whiTElIst[-0xa67 * 0x2 + 0x137 * 0x17 + -0x723] = GETuSeRname['kQhTB'](GETuSeRname['tVOBb'](Math['sin'](GETuSeRname['lEnHT'](useRLiSt, 0x15b2 + 0x11df + 0x1 * -0x26dd) * Math['PI']), LOGiNaTt[-0xb4c + 0x5fc * -0x4 + 0x1f * 0x123]) + Math['cos'](GETuSeRname['lEnHT'](useRLiSt, -0xd69 + 0x15e1 + -0x8e * 0xe) * Math['PI']) * LOGiNaTt[-0x235f * 0x1 + 0x1c4 * 0x11 + 0x55b], getUSeRname), whiTElIst[-0x3 * -0xcb + 0x11c1 + 0x1421 * -0x1] = (Math['sin'](GETuSeRname['lEnHT'](useRLiSt, 0x1 * -0x624 + 0x2447 + -0x5e3 * 0x5) * Math['PI']) * LOGiNaTt[-0x2550 + -0x1020 + -0xc * -0x474] + GETuSeRname['vsMSu'](Math['cos'](GETuSeRname['toVmH'](GETuSeRname['lEnHT'](useRLiSt, 0x26d + -0x205e * -0x1 + -0x2217), Math['PI'])), -LOGiNaTt[-0x17b * -0x2 + 0x20a + -0x4ff])) * getUSeRname, whiTElIst[0x5f6 + -0x1 * 0x1b59 + -0x1 * -0x1565] = 0x1511 + -0x24cf + -0x136 * -0xd;
var useRSnAme = Math['sqrt'](GETuSeRname['mgqNQ'](GETuSeRname['rdyNB'](LOGiNaTt[0x1 * -0x8a8 + -0x1b66 + -0x47 * -0x82], LOGiNaTt[-0x136c + 0x645 + 0xd27]) + GETuSeRname['rdyNB'](LOGiNaTt[-0x8c + 0x80b * -0x3 + 0x1 * 0x18ae], LOGiNaTt[-0x13c7 + 0xc9a + 0x1 * 0x72e]), GETuSeRname['auSXQ'](LOGiNaTt[0x1 * 0xa34 + -0x3e3 * -0x1 + -0xe15], LOGiNaTt[-0x1108 + 0x1 * 0x11f1 + -0x15 * 0xb]))),
    logINaTt = Entity['GetProp'](WHItElIst, GETuSeRname['TiLzF'], GETuSeRname['dekpT']),
    WhiTElIst = Math['sqrt'](logINaTt[-0x259e + -0x1a22 + 0x30 * 0x154] * logINaTt[-0xcef * 0x1 + -0x5 * -0x15b + -0x18a * -0x4] + GETuSeRname['auSXQ'](logINaTt[-0x695 * -0x5 + -0x1b * 0xb + -0x1fbf], logINaTt[0x1 * -0x159b + 0xae3 + 0x5 * 0x225]) + GETuSeRname['auSXQ'](logINaTt[0x252 + -0x167f + 0x142f], logINaTt[-0x43c * -0x2 + -0x1728 + -0x6 * -0x273]));
return UserCMD['SetMovement'](whiTElIst), GETuSeRname['zZTBg'](useRSnAme, USErSnAme ? USErSnAme : 0x269 * 0x1 + 0x97 * -0x35 + 0x1cdb) && (GETuSeRname['LTdsv'](WhiTElIst, -0x1 * -0x19f5 + 0x1 * 0x24e6 + -0x1 * 0x3ed9) || USErSnAme);
}

function getDropdownValue(WhITElIst, LoGINaTt) {
var wHITElIst = 0x4 * 0x756 + -0x121 * 0x1 + 0x13a * -0x17 << LoGINaTt;
return WhITElIst & wHITElIst ? !![] : ![];
}

function getAngles(uSERSnAme, lOGINaTt) {
var uSERLiSt = {
    'wrpEG': function (gETUSeRname, WHITElIst, LOGINaTt) {
        return gETUSeRname(WHITElIst, LOGINaTt);
    },
    'quSbq': function (GETUSeRname, USERLiSt) {
        return GETUSeRname + USERLiSt;
    },
    'QiBqX': function (USERSnAme, loginATt) {
        return USERSnAme * loginATt;
    },
    'psXMn': function (usersNAme, getusERname) {
        return usersNAme / getusERname;
    },
    'rGoVo': function (userlISt, whiteLIst) {
        return userlISt * whiteLIst;
    }
};
return newPos = uSERLiSt['wrpEG'](vector_sub, lOGINaTt, uSERSnAme), xyDist = Math['sqrt'](uSERLiSt['quSbq'](uSERLiSt['QiBqX'](newPos[0xc88 + -0x1f25 + 0x3b9 * 0x5], newPos[-0x4 * -0x15d + -0x635 * 0x3 + 0xd2b]), newPos[0xdbe + -0x1553 + 0x796 * 0x1] * newPos[0x5 * -0x92 + -0x1502 + 0x17dd])), yaw = uSERLiSt['psXMn'](uSERLiSt['rGoVo'](Math['atan2'](newPos[-0x1 * 0x1685 + 0x222e + -0xba8], newPos[-0x1 * 0x23e3 + 0x5 * 0x167 + 0x1ce0]), -0x2057 * 0x1 + 0x18 * -0x160 + 0x420b), Math['PI']), pitch = uSERLiSt['rGoVo'](Math['atan2'](-newPos[-0x101 * 0x1f + 0x13 * -0xc2 + 0x2d87], xyDist), 0xac0 + -0x7b3 * 0x5 + -0x1c73 * -0x1) / Math['PI'], roll = -0x24e0 + 0x8 * 0x375 + 0x938, angles = [pitch, yaw, roll], angles;
}

function VectorAngles(WhiteLIst) {
var GetusERname = {
        'anrWp': function (uSerlISt, gEtusERname) {
            return uSerlISt / gEtusERname;
        },
        'KDPny': function (wHiteLIst, lOginATt) {
            return wHiteLIst * lOginATt;
        },
        'eKFJH': function (uSersNAme, WHiteLIst) {
            return uSersNAme < WHiteLIst;
        },
        'vhaPU': function (GEtusERname, USersNAme) {
            return GEtusERname + USersNAme;
        },
        'cvQhx': function (LOginATt, USerlISt) {
            return LOginATt * USerlISt;
        },
        'nuwPs': function (loGinATt, usErsNAme) {
            return loGinATt < usErsNAme;
        }
    },
    UsersNAme, LoginATt, UserlISt;
if (WhiteLIst[-0x10a * 0x2 + 0x2198 + 0xa81 * -0x3] == 0x1 * -0x26f4 + -0x7a8 + 0x2e9c && WhiteLIst[-0x2 * -0xcd5 + -0x2 * 0x84e + -0x90e] == 0x1 * 0x1d9f + -0x1 * -0x7fd + -0x1d * 0x14c) {
    LoginATt = -0x113f + -0xba4 * 0x2 + -0x2887 * -0x1;
    if (WhiteLIst[0x1822 + -0x1da * 0x1 + -0x1 * 0x1646] > 0x15da + -0x196c + 0x392) UserlISt = -0x18e9 + -0xb * 0x26b + 0x3490;
    else UserlISt = -0x995 + -0x1 * 0x181d + 0x220c;
} else {
    LoginATt = GetusERname['anrWp'](GetusERname['KDPny'](Math['atan2'](WhiteLIst[-0x1 * 0x1b04 + -0x1 * 0x1a41 + 0x3546], WhiteLIst[-0x1 * -0x2252 + 0x185c + -0x3aae]), -0xf44 + 0x21b9 * -0x1 + 0x31b1), Math['PI']);
    if (GetusERname['eKFJH'](LoginATt, -0x7e9 + 0x1 * -0x1bbf + 0x146 * 0x1c)) LoginATt += -0x1 * 0x1b7f + 0x526 + 0x17c1;
    UsersNAme = Math['sqrt'](GetusERname['vhaPU'](GetusERname['cvQhx'](WhiteLIst[-0x1f6d + -0x127 + -0xc * -0x2b7], WhiteLIst[-0x1e26 * -0x1 + 0x1c0f + -0x3a35]), WhiteLIst[-0x145d + 0x1d2f * 0x1 + -0x8d1] * WhiteLIst[-0x6 * -0x1fe + -0x1629 + -0x1 * -0xa36])), UserlISt = GetusERname['cvQhx'](Math['atan2'](-WhiteLIst[0x5 * 0x4fd + -0x645 * -0x1 + 0x1f34 * -0x1], UsersNAme), 0x49 * -0xf + -0x1fbc + 0x24b7) / Math['PI'];
    if (GetusERname['nuwPs'](UserlISt, 0xb67 * 0x1 + -0xe4c + 0x2e5)) UserlISt += -0x21f2 + 0x4e6 + -0x79d * -0x4;
}
return [UserlISt, LoginATt, 0x418 + -0x6a0 + 0x288];
}
Cheat['RegisterCallback']('Draw', 'recheck_vis');
   
function Watermark() {
   
    // Fonts
    reg12 = Render.GetFont( "/resources/Montserrat-Regular.ttf", 12, false)

    bol12 = Render.GetFont( "/resources/Montserrat-Bold.ttf", 12, false)

    cs12 = Render.GetFont( "/resources/undefeated.ttf", 12, false)

    // Declaring colors so they can easily be used
    darkgray = [26, 26, 30, 255];
    lightgray = [255, 255, 255, 25]
    orange = [ 250, 166, 24, 255 ];
    white = [255, 255, 255, 255];
    var color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap Watermark Color"]);
   
    // Getting screen size
    ScreenSize = Render.GetScreenSize();
   
    // Getting username and the size of it
    user = Cheat.GetUsername();
    userLength = Render.TextSize(user, reg12)[0];

    // Adjusting positions and making size dynamic (syncs with username length)
    b1w = userLength + 240;
    b1x = ((ScreenSize[0])- b1w)-10;
    b1y = Math.ceil(ScreenSize[1]-(ScreenSize[1]-10));

if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap styled watermark"])) {
    // Rendering background, top line and bars
    Render.FilledRoundRect(b1x, b1y+3, b1w, 37, darkgray);
       
    // Ping bar
    Render.FilledRect((b1x+b1w)-56, b1y+3, 1, 38, lightgray);
   
    // FPS Bar
    Render.FilledRect((b1x+b1w)-121, b1y+3, 1, 38, lightgray);
   
    // Time bar
    Render.FilledRect((b1x+b1w)-184, b1y+3, 1, 38, lightgray);
   
    // Username bar
    Render.FilledRect(b1x+30, b1y+3, 1, 38, lightgray);
   
    // Top line, called after lines so item bars don't appear above this.
    Render.FilledRect(b1x, b1y+3, b1w+1, 3, color);
   
    // Declaring logo and rendering it above the background
    logo = Render.AddTexture("ot/scripts/resources/Skull.png");
    Render.TexturedRect( b1x+8, b1y+15, 14, 17, logo );
   


    // Ping
    ping = "" + Math.round(Entity.GetProp(Entity.GetLocalPlayer(), 'CPlayerResource', 'm_iPing'))
        if (ping == "NaN") {
       ping = "0";
    }
    if (10 > ping) {
       ping = "0" + ping;
    }
    Render.String((b1x+b1w)-45,b1y+16,0, ping, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-27,b1y+16,0, "MS", [255, 255, 255, 255], bol12)
   
   
   
    // FPS  
    fps = Math.floor(1 / Global.Frametime());
    if (100 > fps) {
       fps = "0" + fps;
    }
    Render.String((b1x+b1w)-113,b1y+16,0, ""+fps, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-86,b1y+16,0, "FPS", [255, 255, 255, 255], bol12)
   
   
   
    // Time
    today = new Date();
    h = today.getHours();
    m = today.getMinutes();
   
    if (10 > m) {
       m = "0" + m;
    }
   
    // Time
    Render.String((b1x+b1w)-174,b1y+16,0, h +":"+ m, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-140,b1y+17,0, "t", [255, 255, 255, 255], cs12)
   
    // Username
    Render.String(b1x+44,b1y+16,0, "" + user, [255, 255, 255, 255], reg12)
}
}
Cheat.RegisterCallback("Draw", "Watermark");


function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return {
        r: Math.round(r * 255),
        g: Math.round(g * 255),
        b: Math.round(b * 255)
    };
}

function in_bounds(vec, x, y, x2, y2) {
    return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function draw_arc(x, y, radius, start_angle, percent, thickness, color) {
        var precision = (2 * Math.PI) / 30;
        var step = Math.PI / 180;
        var inner = radius - thickness;
        var end_angle = (start_angle + percent) * step;
        var start_angle = (start_angle * Math.PI) / 180;

        for (; radius > inner; --radius) {
            for (var angle = start_angle; angle < end_angle; angle += precision) {
                var cx = Math.round(x + radius * Math.cos(angle));
                var cy = Math.round(y + radius * Math.sin(angle));

                var cx2 = Math.round(x + radius * Math.cos(angle + precision));
                var cy2 = Math.round(y + radius * Math.sin(angle + precision));

                Render.Line(cx, cy, cx2, cy2, color);
            }
        }
}

function main_aa() {
    if (!World.GetServerString()) return;

    const x = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"]),
        y = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"]);

    var font = Render.GetFont("Verdana.ttf", 9, true);
    var RealYaw = Local.GetRealYaw();
    var FakeYaw = Local.GetFakeYaw();
    var delta = Math.min(Math.abs(RealYaw - FakeYaw) / 2, 60).toFixed(1);
    var safety = Math.min(Math.round(1.7 * Math.abs(delta)), 100);
    var fGradient = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Fake Gradient"])
    var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
    if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])) {
        var side = "<-";
    } else {
        var side = "->";
    }

    var text = "    FAKE (" + delta.toString() + "  ) | safety: " + safety.toString() + "% | side: " + side;
    var w = Render.TextSize(text, font)[0] + 8;
        flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
        if (getDropdownValue(flags, 1)) {
    if (fGradient){
        Render.GradientRect(x - 4 - w, y + 2, 2, 18,0, [rgb.r,rgb.g,rgb.b,255] , [rgb.g,rgb.b,rgb.r,255]);
        Render.FilledRect(x - 2 - w, y + 2, w + 2 , 18, [17, 17, 17, color[3]]);
        Render.Circle(x + 18 - w + Render.TextSize("FAKE (" + delta.toString(), font)[0], y + 8, 1, [255, 255, 255, 255]);
        draw_arc(x + 7 - w, y + 10, 5, 0, delta * 6, 2, [rgb.g,rgb.b,rgb.r, 255]);
    }else{
        Render.FilledRect(x - 4 - w, y + 2, 2, 18, [ color[0], color[1], color[2], 255]);
        Render.FilledRect(x - 2 - w, y + 2, w + 2 , 18, [17, 17, 17, color[3]]);
        Render.Circle(x + 18 - w + Render.TextSize("FAKE (" + delta.toString(), font)[0], y + 8, 1, [255, 255, 255, 255]);
        draw_arc(x + 7 - w, y + 10, 5, 0, delta * 6, 2, [color[0], color[1], color[2], 255]);
    }
    Render.String(x + 5 - w, y + 5, 0, text, [0, 0, 0, 180], font);
    Render.String(x + 4 - w, y + 4, 0, text, [255, 255, 255, 255], font);
    if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
        const mouse_pos = Global.GetCursorPosition();
        if (in_bounds(mouse_pos, x - w, y, x + w, y + 30)) {
            UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], mouse_pos[0] + w / 2);
            UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], mouse_pos[1] - 20);
        }
    }
}
}

function draw() {
    if(!World.GetServerString())
        return;

    var today = new Date();
    var hours1 = today.getHours();
    var minutes1 = today.getMinutes();
    var seconds1 = today.getSeconds();
   
    var hours = hours1 <= 9 ? "0"+hours1+":" : hours1+":";
    var minutes = minutes1 <= 9 ? "0" + minutes1+":" : minutes1+":";
    var seconds = seconds1 <= 9 ? "0" + seconds1 : seconds1;
   
    var server_tickrate = Globals.Tickrate().toString()
    var ebanaya_hueta = Math.round(Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing")).toString() // кто это сделал - контуженный на всю голову ебаный хуесос

    color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW","Watermark & Fake indicator color"]);

    var font = Render.GetFont("Verdana.ttf", 9, true);
    var wGradient = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark Gradient"])
    var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark"])) {
    var text = "ONEX-YAW [beta] | " + Cheat.GetUsername() + " | delay: " + ebanaya_hueta + "ms | " + server_tickrate + "tick | " + hours + minutes + seconds;
   
    var w = Render.TextSize(text, font)[0] + 8;
    var x = Global.GetScreenSize()[0];

    x = x - w - 10;
    if(wGradient){
        Render.GradientRect(x - 4, 12, 2, 18,0, [rgb.r,rgb.g,rgb.b,255] , [rgb.g,rgb.b,rgb.r,255]);
        Render.FilledRect(x - 2, 12, w + 2 , 18, [ color[0], color[1], color[2], color[3] ]);
    }else{
        Render.FilledRect(x - 2, 10, w + 2 , 2, [ color[0], color[1], color[2], color[3] ]);
        Render.FilledRect(x - 2, 12, w + 2 , 18, [ color[0], color[1], color[2], color[3] ]);
    }
    Render.String(x + 5, 10 + 5, 0, text, [0, 0, 0, 180], font);
    Render.String(x + 4, 10 + 4, 0, text, [ 255, 255, 255, 255 ], font);
}
}
Cheat.RegisterCallback("Draw", "draw");
Global.RegisterCallback("Draw", "main_aa");

function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return {
        r: Math.round(r * 255),
        g: Math.round(g * 255),
        b: Math.round(b * 255)
    };
}

function get_spectators()
{
    var specs = [];
    const players = Entity.GetPlayers();

    for (i = 0; i < players.length; i++)
    {
        const cur = players[i];

        if (Entity.GetProp(cur, "CBasePlayer", "m_hObserverTarget") != "m_hObserverTarget") {
            const obs = Entity.GetProp(cur, "CBasePlayer", "m_hObserverTarget")

            if (obs === Entity.GetLocalPlayer())
            {
                const name = Entity.GetName(cur);
                specs.push(name);
            }
        }
    }

    return specs;
}

function main_spec() {
    var salpha = 0;

        if (!World.GetServerString()) return;
        const x = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec x"]),
            y = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec y"]);
        const text = get_spectators();
        colorspec = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"]);

        var font = Render.AddFont("Verdana", 10, 100);
        var frames = 8 * Globals.Frametime();
        var width2 = 84;
        var maxwidth2 = 0;
        var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
     
        if (text.length > 0) {
            salpha = Math.min(salpha + frames, 1);
        } else {
            salpha = salpha - frames;
            if (salpha < 0) salpha = 0;
        }
     
        for (i = 0; i < text.length; i++) {
            if (Render.TextSize(text[i], font)[0] > maxwidth2) {
                maxwidth2 = Render.TextSize(text[i], font)[0];
            }
        }
        if (maxwidth2 == 0) maxwidth2 = 50;
        width2 = width2 + maxwidth2;
     
            flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
            if (getDropdownValue(flags, 4)) {


        for (i = 0; i < text.length; i++)
        {
            Render.FilledRect(x, y + 1, width2, 18, [colorspec[0], colorspec[1], colorspec[2], colorspec[3]]);

            Render.FilledRect(x, y + 3, width2, 18, [17, 17, 17,  255]);
            Render.String(x + width2 / 2 - (Render.TextSize("spectators", font)[0] / 2) + 2, y + 5, 0, "spectators", [0, 0, 0,  255], font);
            Render.String(x + width2 / 2 - (Render.TextSize("spectators", font)[0] / 2) + 1, y + 6, 0, "spectators", [255, 255, 255,  255], font);
   
        Render.String(x + (Render.TextSize((text[i]), font)[0] /2 ) , y + 24 + 15 * i, 1, text[i], [0, 0, 0, 255 / 1.3], font);
        Render.String(x + (Render.TextSize((text[i]), font)[0] /2 ), y + 24 + 15 * i, 1, text[i], [255, 255, 255, 255], font);
        }  
    }
             
     
        if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
            const mouse_pos = Global.GetCursorPosition();
            if (in_bounds(mouse_pos, x, y, x + width2, y + 30)) {
                UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec x"], mouse_pos[0] - width2 / 2);
                UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec y"], mouse_pos[1] - 20);
            }
        }
       
}
Global.RegisterCallback("Draw", "main_spec")

function RGB(h, s, v)
{
    var r, g, b, i, f, p, q, t;
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
   
return {  r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) }; }

var oldTick = Global.Tickcount()
var ticksToDelay = 1
var up = true

function rgbglow()
{
  tickcount = Global.Tickcount();
  color = RGB(tickcount % 350 / 350, 1, 1, 1, 120);

  var glow_checkbox = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Rainbow Color"]);
  var glow_checkbox1 = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Rainbow Color"]);
  var glow_checkbox2 = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Prediction Rainbow Color"]);

    if ( glow_checkbox )
        {
          UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"], [color.r, color.g, color.b, 255]);

        }
        if ( glow_checkbox1 )
        {
          UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"], [color.r, color.g, color.b, 255]);

     }
     if ( glow_checkbox2 )
     {
       UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Predict Color"], [color.r, color.g, color.b, 255]);

     }
}

Cheat.RegisterCallback("CreateMove","rgbglow");



function in_bounds(vec, x, y, x2, y2) {
return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function draw_arc(x, y, radius, start_angle, percent, thickness, color) {
var precision = (2 * Math.PI) / 30;
var step = Math.PI / 180;
var inner = radius - thickness;
var end_angle = (start_angle + percent) * step;
var start_angle = (start_angle * Math.PI) / 180;

for (; radius > inner; --radius) {
for (var angle = start_angle; angle < end_angle; angle += precision) {
var cx = Math.round(x + radius * Math.cos(angle));
var cy = Math.round(y + radius * Math.sin(angle));

var cx2 = Math.round(x + radius * Math.cos(angle + precision));
var cy2 = Math.round(y + radius * Math.sin(angle + precision));

Render.Line(cx, cy, cx2, cy2, color);
}
}
}

function d()
{
    UI.SetValue(["Misc.", "SUBTAB_MGR", "Movement", "SHEET_MGR","General","Turn speed"],UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Strafe Turn speed"]))

}
Cheat.RegisterCallback("Draw", "d")






var alpha = 0;
var maxwidth = 0;
var swalpha = 0;
var dmgalpha = 0;
var legitaalpha = 0;
var fdalpha = 0;
var apalpha = 0;
var aialpha = 0;
var spalpha = 0;
var fbalpha = 0;
var dtalpha = 0;
var hsalpha = 0;
var doalpha = 0;
var textalpha = 0;
var h = new Array();

function in_bounds(vec, x, y, x2, y2) {
    return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function main_hotkeys() {
     flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
     if (getDropdownValue(flags, 3)) {
        if (!World.GetServerString()) return;

        const x = (UI.GetValue(["Rage", "ONEX-YAW", "Hotkeys_x"]))
        const y = UI.GetValue(["Rage", "ONEX-YAW", "Hotkeys_y"]);
        var font = Render.AddFont("Verdana", 10, 100);
        var frames = 8 * Globals.Frametime();
        var width = 75;
        var maxwidth = 0;
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            swalpha = Math.min(swalpha + frames, 1);
        } else {
            swalpha = swalpha - frames;
            if (swalpha < 0) swalpha = 0;
            if (swalpha == 0) {
                h.splice(h.indexOf("Slow walk"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"])) {
            fdalpha = Math.min(fdalpha + frames, 1);
        } else {
            fdalpha = fdalpha - frames;
            if (fdalpha < 0) fdalpha = 0;
            if (fdalpha == 0) {
                h.splice(h.indexOf("Duck peek assist"));
            }
        }
       
        if (UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"])) {
            apalpha = Math.min(apalpha + frames, 1);
        } else {
            apalpha = apalpha - frames;
            if (apalpha < 0) apalpha = 0;
            if (apalpha == 0) {
                h.splice(h.indexOf("Auto peek"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            aialpha = Math.min(aialpha + frames, 1);
        } else {
            aialpha = aialpha - frames;
            if (aialpha < 0) aialpha = 0;
            if (aialpha == 0) {
                h.splice(h.indexOf("Anti-aim inverter"));
            }
        }

       
        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            aialpha = Math.min(aialpha + frames, 1);
        } else {
            aialpha = aialpha - frames;
            if (aialpha < 0) aialpha = 0;
            if (aialpha == 0) {
                h.splice(h.indexOf("Inverter"));
            }
        }

        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"])) {
            spalpha = Math.min(spalpha + frames, 1);
        } else {
            spalpha = spalpha - frames;
            if (spalpha < 0) spalpha = 0;
            if (spalpha == 0) {
                h.splice(h.indexOf("Safe point override"));
            }
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"])) {
            fbalpha = Math.min(fbalpha + frames, 1);
        } else {
            fbalpha = fbalpha - frames;
            if (fbalpha < 0) fbalpha = 0;
            if (fbalpha == 0) {
                h.splice(h.indexOf("Force body aim"));
            }
        }

        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Double tap"])) {
            dtalpha = Math.min(dtalpha + frames, 1);
        } else {
            dtalpha = dtalpha - frames;
            if (dtalpha < 0) dtalpha = 0;
            if (dtalpha == 0) {
                h.splice(h.indexOf("Double tap"));
            }
        }

        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"])) {
            dmgalpha = Math.min(dmgalpha + frames, 1);
        } else {
            dmgalpha = dmgalpha - frames;
            if (dmgalpha < 0) dmgalpha = 0;
            if (dmgalpha == 0) {
                h.splice(h.indexOf("Hide shots"));
            }
        }
        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
            legitaalpha = Math.min(legitaalpha + frames, 1);
        } else {
            legitaalpha = legitaalpha - frames;
            if (legitaalpha < 0) legitaalpha = 0;
            if (legitaalpha == 0) {
                h.splice(h.indexOf("Legit AA"));
            }
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Hide shots"])) {
            hsalpha = Math.min(hsalpha + frames, 1);
        } else {
            hsalpha = hsalpha - frames;
            if (hsalpha < 0) hsalpha = 0;
            if (hsalpha == 0) {
                h.splice(h.indexOf("Hide shots"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            if (h.indexOf("Slow walk") == -1)
                h.push("Slow walk")
        }
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"])) {
            if (h.indexOf("Duck peek assist") == -1)
                h.push("Duck peek assist")
        }
        if (UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"])) {
            if (h.indexOf("Auto peek") == -1)
                h.push("Auto peek")
        }
        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            if (h.indexOf("Anti-aim inverter") == -1)
                h.push("Anti-aim inverter")
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"])) {
            if (h.indexOf("Safe point override") == -1)
                h.push("Safe point override")
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"])) {
            if (h.indexOf("Force body aim") == -1)
                h.push("Force body aim")
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Double tap"])) {
            if (h.indexOf("Double tap") == -1)
                h.push("Double tap")
        }
        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"])) {
            if (h.indexOf("Damage Override") == -1)
                h.push("Damage Override")
        }
            if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
            if (h.indexOf("Legit AA") == -1)
                h.push("Legit AA")
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Hide shots"])) {
            if (h.indexOf("Hide shots") == -1)
                h.push("Hide shots")
        }
         arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"]);

        if (h.length > 0) {
            alpha = Math.min(alpha + frames, 1);
        } else {
            alpha = alpha - frames;
            if (alpha < 0) alpha = 0;
        }
        for (i = 0; i < h.length; i++) {
            if (Render.TextSize(h[i], font)[0] > maxwidth) {
                maxwidth = Render.TextSize(h[i], font)[0];
            }
        }
        if (maxwidth == 0) maxwidth = 50;
        width = width + maxwidth;
        if (alpha > 0) {
                Render.FilledRect(x, y + 3, width, 2, [arrows_color[0], arrows_color[1], arrows_color[2], alpha * 255]);
                Render.FilledRect(x, y + 5, width, 18, [17, 17, 17, 255]);
                Render.String(x + width / 2 - (Render.TextSize("keybinds", font)[0] / 2) + 2, y + 9, 0, "keybinds", [0, 0, 0, alpha * 255 / 1.3], font);
                Render.String(x + width / 2 - (Render.TextSize("keybinds", font)[0] / 2) + 1, y + 8, 0, "keybinds", [255, 255, 255, alpha * 255], font);
                //Render.FilledRect(x, y + 23, width, 18 * h.length, [17, 17, 17, Math.min(255, alpha * 255)]);
                for (i = 0; i < h.length; i++) {
                    switch (h[i]) {
                        case 'Slow walk':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(swalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, swalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, swalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, swalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, swalpha * 255], font);
                            break;
                        case 'Duck peek assist':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(fdalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, fdalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, fdalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, fdalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, fdalpha * 255], font);
                            break;
                        case 'Auto peek':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(apalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, apalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, apalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, apalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, apalpha * 255], font);
                            break;
                        case 'Anti-aim inverter':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(aialpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, aialpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, aialpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, aialpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, aialpha * 255], font);
                            break;
                            case 'Legit AA':
                                Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(aialpha * 255, 255))]);
                                Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, legitaalpha * 255 / 1.3], font);
                                Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, legitaalpha * 255], font);
   
                                Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, legitaalpha * 255 / 1.3], font);
                                Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, legitaalpha * 255], font);
                                break;
                        case 'Safe point override':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(spalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, spalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, spalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, spalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, spalpha * 255], font);
                            break;
                        case 'Force body aim':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(fbalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, fbalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, fbalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, fbalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, fbalpha * 255], font);
                            break;
                            case 'Damage Override':
                                Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(255, 255))]);
                                Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, 255], font);
                                Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, 255], font);
   
                                Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0,  255 / 1.3], font);
                                Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255,  255], font);
                                break;
                        case 'Double tap':

                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, 255], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, dtalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, dtalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, dtalpha * 255], font);
                            break;

                        case 'Hide shots':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min( 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0,  hsalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, hsalpha *  255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, hsalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, hsalpha * 255], font);
                            break;

                    }

                }
        }
        if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
            const mouse_pos = Global.GetCursorPosition();
            if (in_bounds(mouse_pos, x, y, x + width, y + 30)) {
                UI.SetValue(["Rage", "ONEX-YAW", "Hotkeys_x"], mouse_pos[0] - 50);
                UI.SetValue(["Rage", "ONEX-YAW", "Hotkeys_y"], mouse_pos[1] - 20);
            }
        }
    }
}
Global.RegisterCallback("Draw", "main_hotkeys")

hitboxes = [
    'generic',
    'head',
    'chest',
    'stomach',
    'left arm',
    'right arm',
    'left leg',
    'right leg',
    '?'
];
var shots = 0;
var predicthc = 0;
var safety = 0;
var hitboxName = "";
var choked = 0;
var exploit = 0;
var logs = [];
var logsct = [];
var logsalpha = [];
function getHitboxName(index)
{
    switch (index)
    {
        case 0:
            hitboxName = "head";
            break;
        case 1:
            hitboxName = "head";
            break;
        case 2:
            hitboxName = "stomach";
            break;
        case 3:
            hitboxName = "stomach";
            break;
        case 4:
            hitboxName = "stomach";
            break;
        case 5:
            hitboxName = "chest";
            break;
        case 6:
            hitboxName = "chest";
            break;
        case 7:
            hitboxName = "left leg";
            break;
        case 8:
            hitboxName = "right leg";
            break;
        case 9:
            hitboxName = "left leg";
            break;
        case 10:
            hitboxName = "right leg";
            break;
        case 11:
            hitboxName = "left leg";
            break;
        case 12:
            hitboxName = "right leg";
            break;
        case 13:
            hitboxName = "left arm";
            break;
        case 14:
            hitboxName = "right arm";
            break;
        case 15:
            hitboxName = "left arm";
            break;
        case 16:
            hitboxName = "left arm";
            break;
        case 17:
            hitboxName = "right arm";
            break;
        case 18:
            hitboxName = "right arm";
            break;
        default:
            hitboxName = "body";
    }
    return hitboxName;
}
function HitgroupName(index) {
    return hitboxes[index] || 'body';
}

var target = -1;
var shots_fired = 0;
var hits = 0;
var lastUpdate = 0;
var logged = false;

function ragebot_fire() {
    predicthc = Event.GetInt("hitchance");
    safety = Event.GetInt("safepoint");
    hitboxName = getHitboxName(Event.GetInt("hitbox"));
    exploit = (Event.GetInt("exploit")+1).toString();
  target = Event.GetInt("target_index");
  shots_fired++;
  logged = false;
  lastUpdate = Globals.Curtime();
}

function hitlog() {
    var hit = Entity.GetEntityFromUserID(Event.GetInt("userid"));
    var attacker = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
    if (attacker == Entity.GetLocalPlayer() && hit == target) hits++;

    var hittype = "Hit ";
    me = Entity.GetLocalPlayer();
    hitbox = Event.GetInt('hitgroup');
    target_damage = Event.GetInt("dmg_health");
    target_health = Event.GetInt("health");
    victim = Event.GetInt('userid');
    attacker = Event.GetInt('attacker');
    weapon = Event.GetString('weapon');
    victimIndex = Entity.GetEntityFromUserID(victim);
    attackerIndex = Entity.GetEntityFromUserID(attacker);
    name = Entity.GetName(victimIndex);
      var simtime = Globals.Tickcount() % 17;

    var flags = "";

    if (exploit == 2)
      flags += "T";

    flags += "B";

    if (hitbox == 1)
      flags += "H";

      if (safety == 1) {
          safety = "true";
      }
      else {
          safety = "false";
      }

    if (weapon == "hegrenade")
      hittype = "Naded ";
    else if (weapon == "inferno")
      hittype = "Burned ";
    else if (weapon == "knife")
      hittype = "Knifed ";

    if (me == attackerIndex && me != victimIndex) {
    if (hittype == "Hit ") {

            if(UI.GetValue(["Rage", "ONEX-YAW", "Better Shotlogger"])) {

                Cheat.PrintColor([255, 255, 255, 255], "[onetap] ");

      Cheat.Print("["+shots.toString()+"] "+hittype+name+"'s "+HitgroupName(hitbox)+" for "+target_damage.toString()+" ("+target_health.toString()+" remaining) aimed="+hitboxName+"("+predicthc.toString()+"%%) safety="+safety+" ("+flags+") ("+simtime+":"+exploit+")\n");
          logs.push("["+shots.toString()+"] "+hittype+name+"'s "+HitgroupName(hitbox)+" for "+target_damage.toString()+" ("+target_health.toString()+" remaining) aimed="+hitboxName+"("+predicthc.toString()+"%%) safety="+safety+" ("+flags+") ("+simtime+":"+exploit+")");
    }

        logsct.push(Globals.Curtime());
        logsalpha.push(255);
    }
    }
  if (shots == 99)
    shots = 0;
  else
    shots++;

}

function removelogs() {
    if (logs.length > 6) {
        logs.shift();
        logsct.shift();
        logsalpha.shift();
    }

    if (logsct[0] + 6.5 < Globals.Curtime()) {
        logsalpha[0] -= Globals.Frametime() * 600;
        if (logsalpha[0] < 0) {
            logs.shift();
            logsct.shift();
            logsalpha.shift();
        }
    }
}


function onDraw() {
    if (!World.GetServerString()) return;
    var font = Render.GetFont("smallest_pixel-7.ttf", 9, true);



    for (i = 0; i < logs.length; i++) {
        Render.String(4, 4 + 13*i, 0, logs[i], [255, 255, 255, logsalpha[i]], font);
    }

    if (shots_fired > hits && (Globals.Curtime() - lastUpdate > 0.33)) {
      if (Globals.Curtime() - lastUpdate > 1) {
        shots_fired = 0;
        hits = 0;
      }
      if (!logged) {
        var simtime = Globals.Tickcount() % 16;
        logged = true;
        var issafe = "true";
        var reason = "?";
        if (safety == 0) {
          issafe = "false";
        }

        if (Entity.IsAlive(target) == false)
            reason = "death";
        else if (Entity.IsAlive(Entity.GetLocalPlayer()) == false)
            reason = "dead";
        else if (safety == true && predicthc < 76)
            reason = "spread";
        else if (safety == true && predicthc > 76)
            reason = "prediction error";

        var flags = "";

        if (exploit == 2)
          flags += "T";

          flags += "B";

        if(UI.GetValue(["Rage", "ONEX-YAW", "Better Shotlogger"])) {
            Cheat.PrintColor([255, 255, 255, 255], "[onetap] ");

        Cheat.Print("["+shots.toString()+"] "+"Missed "+Entity.GetName(target)+"'s "+hitboxName+"("+predicthc.toString()+"%%) due to "+reason+", safety="+issafe+" ("+flags+") ("+simtime+":"+exploit+")\n");
            logs.push("["+shots.toString()+"] "+"Missed "+Entity.GetName(target)+"'s "+hitboxName+"("+predicthc.toString()+"%%) due to "+reason+", safety="+issafe+" ("+flags+") ("+simtime+":"+exploit+")");

        logsct.push(Globals.Curtime());
            logsalpha.push(255);
        if (shots == 99)
          shots = 0;
        else
          shots++;
        }
    }
    }
}
function main() {
    Global.RegisterCallback("ragebot_fire", "ragebot_fire");
    Global.RegisterCallback("player_hurt", "hitlog");
    Global.RegisterCallback("Draw", "onDraw");
    Global.RegisterCallback("Draw", "removelogs");
}

main();
for(var name in weaponTabNames) {
    UI.AddSliderInt(["Rage", "Target", weaponTabNames[name]], "Damage Override", 0, 130)
    UI.AddSliderInt(["Rage", "Accuracy", weaponTabNames[name]], "Hitchance Override", 1, 100)
}
var weap_rev = (Entity.GetProp(Entity.GetWeapon(Entity.GetLocalPlayer()), "CBaseAttributableItem", "m_iItemDefinitionIndex") & 0xFFFF) == 64
var username = Cheat.GetUsername()
var screen_size = Global.GetScreenSize()
var lp = Entity.GetLocalPlayer()
var velocity = Math.round(getVelocity(lp)).toString()
var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
var oldTick = 0
var lastPressed = 0
var curtick = 0
var h = [];
var drawLeft = 0
var drawHideReal = 1
var drawRight = 0
var drawBack = 0
var leftWasPressed = 0
var rightWasPressed = 0
var backWasPressed = 0
var upWasPressed = 0
var isHideRealActive = 0
var altfakelag = 0
var cur_dmg = 0
var cur_hit = 0
var anim = 10 * Math.abs(Math.sin(64 * Globals.Realtime()))
var antiaim_state = "default"
var weapon = ""
var recharge = 0
var r8dt = false
var legitaa_time = Global.Realtime()
var E = true
var defuse = false
var distance = 0
var distance1 = 0
var original_aa = true
var planting = false
var fill = 0
var isbomb = 0
var bombsiteonplant = ""
var on_plant_time
    /* PATHES ARRAY */
pathes = []
var lasttime = 0
function get_all_keys() {
    ragekeysgeneral = UI.GetChildren(["Rage", "General", "SHEET_MGR", "General", "Key assignment"])
    ragekeysexploits = UI.GetChildren(["Rage", "Exploits", "SHEET_MGR", "Keys", "Key assignment"])
    ragekeysantiaim = UI.GetChildren(["Rage", "Anti Aim", "SHEET_MGR", "General", "Key assignment"])
    miskkeys = UI.GetChildren(["Misc.", "Keys", "SHEET_MGR", "General", "Key assignment"])
    scriptkeys = UI.GetChildren(["Config", "Scripts", "Keys", "JS Keybinds", ])
    for(p in ragekeysgeneral) {
        pathes.push([
            ["Rage", "General", "SHEET_MGR", "General", "Key assignment", ragekeysgeneral[p]], ragekeysgeneral[p]
        ])
    }
    for(o in ragekeysexploits) {
        pathes.push([
            ["Rage", "Exploits", "SHEET_MGR", "Keys", "Key assignment", ragekeysexploits[o]], ragekeysexploits[o]
        ])
    }
    for(r in ragekeysantiaim) {
        pathes.push([
            ["Rage", "Anti Aim", "SHEET_MGR", "General", "Key assignment", ragekeysantiaim[r]], ragekeysantiaim[r]
        ])
    }
    for(n in miskkeys) {
        pathes.push([
            ["Misc.", "Keys", "SHEET_MGR", "General", "Key assignment", miskkeys[n]], miskkeys[n]
        ])
    }
    for(z in scriptkeys) {
        pathes.push([
            ["Config", "Scripts", "Keys", "JS Keybinds", scriptkeys[z]], scriptkeys[z]
        ])
    }
}
/* On start */
get_all_keys()
/* shadow */
Render.Strings = function(x, y, align, txt, col, font){
    Render.String(x, y + 1, align, txt, [0, 0, 0, 255], font);
    Render.String(x, y, align, txt, col, font);
}
/* dt */
function doubletap(name) {
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Doubletap"])) {
        var exploitCharge = Exploit.GetCharge();
        Exploit[(1 != exploitCharge ? "Enable" : "Disable") + "Recharge"](), Exploit.OverrideMaxProcessTicks(UI.GetValue(["Rage", "ONEX-YAW", "Double Tap Ticks"])), Exploit.OverrideShift(UI.GetValue(["Rage", "ONEX-YAW", "Double Tap Ticks"]))
        Exploit.OverrideTolerance(0), can_shift_shot(10) && 1 != exploitCharge && (Exploit.DisableRecharge(), Exploit.Recharge())
        if(name == "ssg08") {
            can_shift_shot(0)
                }
        Exploit.EnableRecharge(), Exploit.OverrideShift(16), Exploit.OverrideTolerance(3)
    }
    if(weap_rev) {
        if(r8dt && recharge + 20 == Globals.Tickcount()) {
            UI.ToggleHotkey(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])
            r8dt = false
        }
    }
}

function on_wpn_fire() {
    if((Entity.GetEntityFromUserID(Event.GetInt("userid")) != Entity.GetLocalPlayer()) || !weap_rev) return;
    recharge = Globals.Tickcount();
    if(UI.GetValue(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])) {
        UI.ToggleHotkey(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])
        r8dt = true;
    }
}

function doubletapunload() {
    Exploit.EnableRecharge(), Exploit.OverrideShift(16), Exploit.OverrideTolerance(0)
}
/* damage/hitchance override */
function dmghcoverride() {
    var target = Entity.GetEnemies()
    var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
    if(!Entity.IsAlive(Entity.GetLocalPlayer())) return;
    if(!weaponTabNames.hasOwnProperty(weaponName)) {
        return;
    }
    var isDamageOverride = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"]) ? true : false
    var isHitchanceOverride = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Hitchance Override"]) ? true : false
    for(var i in target) {
        if(isDamageOverride) {
            if(UI.GetValue(["Rage", "Target", weaponTabNames[weaponName], "Damage Override"]) != 0) {
                Ragebot.ForceTargetMinimumDamage(target[i], UI.GetValue(["Rage", "Target", weaponTabNames[weaponName], "Damage Override"]))
            } else {
                Ragebot.ForceTargetMinimumDamage(target[i], UI.GetValue(["Rage", "Target", "General", "Damage Override"]))
            }
        }
        if(isHitchanceOverride) {
            if(UI.GetValue(["Rage", "Accuracy", weaponTabNames[weaponName], "Hitchance Override"]) != 0) {
                Ragebot.ForceTargetHitchance(target[i], UI.GetValue(["Rage", "Accuracy", weaponTabNames[weaponName], "Hitchance Override"]))
            } else {
                Ragebot.ForceTargetHitchance(target[i], UI.GetValue(["Rage", "Accuracy", "General", "Hitchance Override"]))
            }
        }
    }
}
/* UI Status controller */
function on_menu_changes() {
    var type = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Tab"])
    var is_rage = type == 0 ? 1 : 0,
        is_vis = type == 1 ? 1 : 0,
        is_rgb = type == 2 ? 1 : 0,
        is_misc = type == 3 ? 1 : 0
        is_trash = type == 4 ? 1 : 0

        /* RAGE */
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Doubletap"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Double Tap Ticks"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Anti-Aim"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Anti-Aim Conditions"], is_rage == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Better Anti-Aim"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Fake-Lag"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW","Anti Bruteforce"], is_rage)
        /* VISUALS */
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Manual & Desync Indicator"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap Watermark Color"], is_rgb)

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Blend While Holding Grenade"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Shotlogger"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Crosshair Hitlogger"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Quake Hitmarker"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hitmarker Color"], is_rgb)

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Custom scope lines"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines color"], is_rgb);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Override FOV while scoped"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines width"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines offset"], is_vis);

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap styled watermark"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark & Fake indicator color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Predict Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Prediction Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark Gradient"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Fake Gradient"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spec x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spec y"], is_trash)
   
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Leg Fucker"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Manual Color"], is_rgb == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Desync Color"], is_rgb == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Aspect ratio"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Strafe Turn speed"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "ThirdPerson Dist"], is_vis)


    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "AWP Fast Buy"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hotkeys_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hotkeys_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Additional Flags"], is_misc)
}

function crosshairindicators()
{
    var fonts = {
        "tahomabd": Render.GetFont("tahomabd.ttf", 10, true),
        "verdanab": Render.GetFont("verdanab.ttf", 19, true),
        "calibrib": Render.GetFont("calibrib.ttf", 11, true),
        "ebrimabd": Render.GetFont("ebrimabd.ttf", 10, true),
        "verdanab8": Render.GetFont("verdanab.ttf", 8, true),
        "verdana": Render.GetFont("smallest_pixel-7.ttf", 12, true),
        "tahoma10": Render.GetFont("tahoma.ttf", 10, true),
        "calibrib20": Render.GetFont("calibrib.ttf", 20, true),
        "tahoma18": Render.GetFont("tahoma.ttf", 18, true),
        "pixel": Render.GetFont("arialbd.ttf", 10, true)
    }
    inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
    isDmg = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"]);
    isDoubletap = UI.GetValue(["Rage", "Exploits", "Keys", "Double tap"]);
    isHideshots = UI.GetValue(["Rage", "Exploits", "Keys", "Hide shots"]);
    isSafe = UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"]);;
    isBody = UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]);
    isFs = UI.GetValue(["Rage", "Anti Aim", "Directions", "At targets"]);
    isAuto = UI.GetValue(["Rage", "Anti Aim", "Directions", "Auto direction"]);
    isDuck = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]);
    isPing = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Ping Spike"]);
    isPeek = UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"]);
    isAntiAim = UI.GetValue(["Rage", "Anti Aim", "General", "Enabled"])
    isHc = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Hitchance Override"])
    isSlow = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"]);
    add_y = 15;
     flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
     var col = [255, 0, 100, 255];
     function get_velocity(player) {var velocity = Entity.GetProp(player, "CBasePlayer", "m_vecVelocity[0]");return Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);}
     function get_delta(player) {var speed = get_velocity(player);var delta = (speed / 8);return (58 - delta);}
   
    var local_player = Entity.GetLocalPlayer();
     var desync_delta = get_delta(local_player)  

    if (getDropdownValue(flags, 0)) {
    if(isBody) {
        Render.String(screen_size[0] / 2 - 20.5, screen_size[1] / 2 + add_y, 0, "BAIM", [0, 0, 0, 155], fonts.pixel);
        Render.String(screen_size[0] / 2 - 20.5, screen_size[1] / 2 + add_y, 0, "BAIM", [177, 171, 255, 255], fonts.ebrimabd);
    } else if(isSafe) {
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "SP", [0, 0, 0, 100], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "SP", [177, 171, 255, 255], fonts.ebrimabd);
    } else {
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "NORM", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "NORM", [3, 161, 252, 255], fonts.ebrimabd);
    }
    if(isFs) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "AUTO", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "AUTO", [209, 159, 230, 255], fonts.ebrimabd);
    } else {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "DYNAMIC", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "DYNAMIC", [209, 159, 230, 255], fonts.ebrimabd);
    }
    if(isDuck && isDoubletap) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT (fd)", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT (fd)", [255, 0, 0, 255], fonts.ebrimabd);
    } else if(isDoubletap) {
        add_y = add_y + 11
    /*    var dsy = {
            "col": UI.GetColor(["Rage", "XO-YAW", "Desync Circle Color"]),
            "inv": UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
        }
        var screens_size = Render.GetScreenSize();
        var screen_middle_x = screens_size[0] * 0.5;
        var screen_middle_y = screens_size[1] * 0.5;
        var view_angles = Local.GetViewAngles();
        var real_yaw = Local.GetRealYaw();
        var fake_yaw = Local.GetFakeYaw();
        var view_yaw = view_angles[1] - 180;
        var real = adjust_angle(real_yaw - view_yaw);
        var fake = adjust_angle(fake_yaw - view_yaw);
        render_arc(screen_middle_x, screen_middle_y, 8, 3, 0, 360, 32, [0, 0, 0, 255])
        render_arc(screen_middle_x, screen_middle_y, 7, 4, dsy.inv ? 90 : 270, dsy.inv ? 180 : 180, 32, dsy.col)
        render_arc(screen_middle_x, screen_middle_y, 15, 12, fake - (12 * 0.5), 44, 32, dsy.col)
        */
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", [0, 0, 0, 155], fonts.ebrimabd);

        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", Exploit.GetCharge() == 1 ? [200, 255, 255, 255] : [212, 208, 207, 255], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", Exploit.GetCharge() == 1 ? [200, 255, 255, 255] : [212, 208, 207, 255], fonts.ebrimabd);

    }
    if(isHideshots) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [200, 255, 255, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [200, 255, 255, 255], fonts.ebrimabd);
    }
    if(isDmg) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DMG", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DMG", [200, 185, 255, 255], fonts.ebrimabd);
    }
    if(isHc) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HC", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HC", [250, 85, 85, 255], fonts.ebrimabd)
    }
//    Render.GradientRect((Global.GetScreenSize()[0] / 2 + -desync_delta * 2) + desync_delta + 2, Global.GetScreenSize()[1] / 2 + 11, desync_delta, 3, 1, [col[0], col[1], col[2], 0], [col[0], col[1], col[2], 255]);
//    Render.GradientRect((Global.GetScreenSize()[0] / 2 + -desync_delta * 2) + (desync_delta * 2), Global.GetScreenSize()[1] / 2 + 11, desync_delta, 3, 1, [col[0], col[1], col[2], 255], [col[0], col[1], col[2], 0]);
}
if(getDropdownValue(flags, 2)) {
    add_y = 0
    Render.Indicator = function(text, col) {
        x = screen_size[0] / 100
        y = screen_size[1] / 1.33
        fonts = Render.GetFont("calibrib.ttf", 21, true)
        text_size = Render.TextSize(text, fonts)
        width = text_size[0] - 2;
        add_y = add_y + 33
        Render.GradientRect(13, y - add_y - 3, width / 2, 26, 1, [0, 0, 0, 0], [0, 0, 0, 55]);
        Render.GradientRect(13 + width / 2, y - add_y - 3, width / 2, 26, 1, [0, 0, 0, 55], [0, 0, 0, 0]);
        Render.String(x, y + 1 - add_y, 0, text, [33, 33, 33, 180], fonts)
        Render.String(x, y - add_y, 0, text, col, fonts)
    }
    fill = 3.125 - (3.125 + on_plant_time - Globals.Curtime())
    if(fill > 3.125) {
        fill = 3.125
    }
    fonts = Render.GetFont("calibrib.ttf", 21, true)
    if(Entity.IsAlive(Entity.GetLocalPlayer())) {
        if(velocity > 255 || Inair()) {
            Render.Indicator("LC", velocity > 275 ? [132, 195, 16, 255] : [255, 0, 0, 255])
        }
        if(isDuck) {
            Render.Indicator("DUCK", [255, 255, 255, 255])
        }
        if(isBody) {
            Render.Indicator("BAIM", [255, 0, 0, 255])
        }
        if(isSafe) {
            Render.Indicator("SAFE", [132, 195, 16, 255])
        }
        if(isPing) {
            Render.Indicator("PING", [255 - ((Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 2.29824561404), (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 3.42105263158, (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 0.22807017543, 255])
        }
        if(isDmg) {
            Render.Indicator("DMG : " + cur_dmg + "", [164, 164, 164, 255]);
        }
        if(isHc) {
            Render.Indicator("HC : " + cur_hit + "", [200, 185, 255, 255]);
        }
        if(isAuto) {
            Render.Indicator("FREESTAND", [132, 195, 16, 255]);
        }
        if(Convar.GetInt("weapon_accuracy_nospread") != 0) {
            Render.Indicator("NS", [255, 0, 0, 255])
        }
        if(isFs) {
            Render.Indicator("AT", [132, 195, 16, 255])
        }
    }
    var c4 = Entity.GetEntitiesByClassID(129)[0];
    if(c4 != undefined) {
        var eLoc = Entity.GetRenderOrigin(c4);
        var lLoc = Entity.GetRenderOrigin(Entity.GetLocalPlayer())
        var distance = calcDist(eLoc, lLoc);
        var willKill = false;
        var dmg;
        //player checks
        var armor = Entity.GetProp(Entity.GetLocalPlayer(), "CCSPlayerResource", "m_iArmor"); // player armor
        var health = Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_iHealth"); // player health
        //c4 things
        var isbombticking = Entity.GetProp(c4, "CPlantedC4", "m_bBombTicking");
        var timer = (Entity.GetProp(c4, "CPlantedC4", "m_flC4Blow") - Globals.Curtime()); // c4 left time
        var c4length = Entity.GetProp(c4, "CPlantedC4", "m_flTimerLength");
        var bar_length = (((Render.GetScreenSize()[1] - 50) / c4length) * (timer));
        //defusing things
        var deflength = Entity.GetProp(c4, "CPlantedC4", "m_flDefuseLength"); // length of defuse
        var deftimer = (Entity.GetProp(c4, "CPlantedC4", "m_flDefuseCountDown") - Globals.Curtime()); // timer when defusing
        var defbarlength = (((Render.GetScreenSize()[1] - 50) / deflength) * (deftimer)); // lenght for left bar
        var isbeingdefused = Entity.GetProp(c4, "CPlantedC4", "m_hBombDefuser"); // check if bomb is being defused
        var gotdefused = Entity.GetProp(c4, "CPlantedC4", "m_bBombDefused"); // check if bomb has or hasnt defused
        const a = 450.7;
        const b = 75.68;
        const c = 789.2;
        const d = (distance - b) / c;
        var damage = a * Math.exp(-d * d);
        if(armor > 0) {
            var newDmg = damage * 0.5;
            var armorDmg = (damage - newDmg) * 0.5;
            if(armorDmg > armor) {
                armor = armor * (1 / .5);
                newDmg = damage - armorDmg;
            }
            damage = newDmg;
        }
        dmg = Math.ceil(damage);
        if(dmg >= health) {
            willKill = true;
        } else {
            willKill = false;
        }
        timer = parseFloat(timer.toPrecision(3));
        timer2 = parseFloat(timer.toPrecision(2));
        timer3 = parseFloat(timer.toPrecision(1));
        if(!isbombticking) return;
        if(gotdefused) return;
        if(timer >= 0.1) {
            Render.Indicator(getSite(c4) + timer.toFixed(1) + "s", [255, 255, 255, 255])
        }
        if(willKill) {
            Render.Indicator("FATAL", [255, 0, 0, 255])
        } else if(damage > 0.5) {
            Render.Indicator("-" + dmg + "HP", [210, 216, 112, 255])
        }
        // defuse time bar
        if(isbeingdefused > 0) {
            if(timer > deflength && timer >= 0.1) {
                Render.FilledRect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
                Render.FilledRect(0, Render.GetScreenSize()[1] - defbarlength, 10, Render.GetScreenSize()[1], [58, 191, 54, 120]);
                Render.Rect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
            } else {
                Render.FilledRect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
                Render.FilledRect(0, Render.GetScreenSize()[1] - defbarlength, 10, Render.GetScreenSize()[1], [252, 18, 19, 120]);
                Render.Rect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
            }
        }
    }
    if(planting) {
        textsize_C4 = Render.TextSize(bombsiteonplant, fonts)[0] + 15;
        Render.Indicator(bombsiteonplant, [210, 216, 112, 255])
        Render.OutlineCircle(x + textsize_C4, y - 25 - add_y + 35, fill / 3.3, [255, 255, 255, 255])
    }
    if(Entity.IsAlive(Entity.GetLocalPlayer())) {

        if(isHideshots) {
            Render.Indicator("ONSHOT", [132, 195, 16, 255])
        }
        if(isDoubletap) {
            Render.Indicator("DT", Exploit.GetCharge() == 1 ? [255, 255, 255, 255] : [255, 0, 0, 255])
        }
    }
}
}

Cheat.RegisterCallback("Draw", "crosshairindicators")

/* misc functions */
function misc() {
    var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
    cur_dmg = weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))] != undefined ? UI.GetValue(["Rage", "Target", weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))], "Damage Override"]) : UI.GetValue(["Rage", "Target", "General", "Damage Override"])
    cur_hit = weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))] != undefined ? UI.GetValue(["Rage", "Accuracy", weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))], "Hitchance Override"]) : UI.GetValue(["Rage", "Accuracy", "General", "Hitchance Override"])
    var fl = function(fl1, fl2) {
        return fl1 < fl2
    }
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Fake-Lag"])) {
        fl(altfakelag, 15 - 1) ? (UserCMD.Choke(), altfakelag++) : altfakelag < 14 + 8 ? (UserCMD.Send(), altfakelag++) : altfakelag = 0;
    }
    var valueas = UI.GetValue(["Rage", "ONEX-YAW", "Aspect ratio"]).toString(); {
        Convar.SetString("r_aspectratio", valueas);
    }
    UI.SetValue(["Misc.", "View", "General", "Thirdperson Distance"], UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "ThirdPerson Dist"]))
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Ping Spike"])) {
        UI.SetValue(["Misc.", "Helpers", "General", "Extended backtracking"], 1)
    } else {
        UI.SetValue(["Misc.", "Helpers", "General", "Extended backtracking"], 0)
    }
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Freestanding"]) && !UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Auto direction"], 1)
    } else {
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Auto direction"], 0)
    }
    if(UI.GetValue(["Rage", "ONEX-YAW", "Blend While Holding Grenade"])) {
        if(is_gren(weaponName)) {
            if(a == 0){
                cache = {
                    "a": UI.GetValue(["Visuals", "Chams", "Local", "Visible material type"]),
                    "b": UI.GetValue(["Visuals", "Chams", "Local", "Visible material override"]),
                    "c": UI.GetColor(["Visuals", "Chams", "Local", "Visible material color"])
                }
                a = 1
            }
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material type"], 66)
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material override"], 1)
            UI.SetColor(["Visuals", "Chams", "Local", "Visible material color"], [0, 0, 0, 100])
        } else {
            if(a == 1){
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material type"], cache.a)
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material override"], cache.b)
            UI.SetColor(["Visuals", "Chams", "Local", "Visible material color"], cache.c)
            a = 0
            }
        }
   
    }
    UI.GetValue(["Rage", "ONEX-YAW", "Leg Fucker"]) && (anim = 10 * Math.abs(Math.sin(64 * Globals.Realtime())), anim > 5 && UI.SetValue(["Misc.", "Movement", "Leg movement"], 0), anim < 5 && UI.SetValue(["Misc.", "Movement", "Leg movement"], 1))
    flags = UI.GetValue(["Rage", "ONEX-YAW", "Additional Flags"])
    enemys = Entity.GetEnemies()
    if(enemys != "") {
        for(i = 0; i < enemys.length; i++) {
            if(!Entity.IsDormant(enemys[i])) {
                weap_rev = (Entity.GetProp(Entity.GetWeapon(Entity.GetLocalPlayer()), "CBaseAttributableItem", "m_iItemDefinitionIndex") & 0xFFFF) == 64
                no_kev = Entity.GetProp(enemys[i], "CCSPlayerResource", "m_iArmor") == 0
                dist = distanceflag(Entity.GetRenderOrigin(Entity.GetLocalPlayer()), Entity.GetRenderOrigin(enemys[i]))
                good = distanceflag(Entity.GetRenderOrigin(Entity.GetLocalPlayer()), Entity.GetRenderOrigin(enemys[i])) <= 580
                if(good && weap_rev && no_kev && getDropdownValue(flags, 0)) {
                    Entity.DrawFlag(enemys[i], dist < 511 ? "TAP+" : "TAP", [151, 164, 252, 255])
                }
                if(Entity.GetWeapons( enemys[i] ).indexOf("zeus") > -1 && getDropdownValue(flags, 1)){
                    Entity.DrawFlag(enemys[i], "ZEUS", [151, 164, 252, 255])
                }
            }
        }
    }
}
var a = 0
/* antiaim options */
function antiaim() {
    antiaimEnabled = UI.GetValue(["Rage", "ONEX-YAW", "Anti-Aim Conditions"]);
    invertsp = Globals.Tickcount() % 4 >= 2 ? 22 : -22;
    random = Globals.Tickcount() % 3 >= 2 ? -35 : 20;
    inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"]);
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Anti-Aim"])) {
        if(getDropdownValue(antiaimEnabled, 0) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            antiaim_state = "slowwalk"
            AntiAim.SetOverride(1);
            AntiAim.SetFakeOffset(7);
            AntiAim.SetRealOffset(-14);
            AntiAim.SetLBYOffset(0);
        } else {
            if(getDropdownValue(antiaimEnabled, 2) && (Inair()) && !inverted) {
                antiaim_state = "air"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetRealOffset(-32);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 2) && (Inair()) && inverted) {
                antiaim_state = "air"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(22);
                AntiAim.SetRealOffset(-43);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 3) && Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_flDuckAmount") > 0.8 && !inverted || getDropdownValue(antiaimEnabled, 3) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]) && !inverted) {
                antiaim_state = "duck"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(-20);
                AntiAim.SetRealOffset(30);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 3) && Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_flDuckAmount") > 0.8 && inverted || getDropdownValue(antiaimEnabled, 3) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]) && inverted) {
                antiaim_state = "duck"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(-8);
                AntiAim.SetRealOffset(34);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 1) && dormant() && original_aa) {
                AntiAim.SetOverride(1);
                AntiAim.SetRealOffset(invertsp);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetLBYOffset(-invertsp)
            } else if(getDropdownValue(antiaimEnabled, 4) && velocity > 2 && !inverted) {
                antiaim_state = "normal"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetRealOffset(-22);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 4) && velocity > 2 && inverted) {
                antiaim_state = "normal"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(22);
                AntiAim.SetRealOffset(-22);
                AntiAim.SetLBYOffset(0);
            } else {
                AntiAim.SetOverride(0)
            }
        }
    }
}
/* Invert arrows render */
function drawarrows() {
    if(UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"])) {
        var inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
        fontarrow = Render.GetFont("verdana.ttf", 21, true)
        arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "Manual Color"]);
        s_arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "Desync Color"]);
        arrows_red = arrows_color[0];
        arrows_green = arrows_color[1];
        arrows_blue = arrows_color[2];
        arrows_alpha = arrows_color[3];
        selected_red = s_arrows_color[0];
        selected_green = s_arrows_color[1];
        selected_blue = s_arrows_color[2];
        Render.String(screen_size[0] / 2 - 42, screen_size[1] / 2 - 15, 1, "|", !inverted ? [selected_red, selected_green, selected_blue, 0] : s_arrows_color, fontarrow);
        Render.String(screen_size[0] / 2 + 43, screen_size[1] / 2 - 15, 1, "|", inverted ? [selected_red, selected_green, selected_blue, 0] : s_arrows_color, fontarrow);
        Render.Polygon([
                [screen_size[0] / 2 - 62, screen_size[1] / 2],
                [screen_size[0] / 2 - 45, screen_size[1] / 2 - 10],
                [screen_size[0] / 2 - 45, screen_size[1] / 2 + 10]
            ], drawLeft ? [selected_red, selected_green, selected_blue, 255] : arrows_color)
        Render.Polygon([
            [screen_size[0] / 2 + 45, screen_size[1] / 2 + 10],
            [screen_size[0] / 2 + 45, screen_size[1] / 2 - 10],
            [screen_size[0] / 2 + 62, screen_size[1] / 2]
        ], drawRight ? [selected_red, selected_green, selected_blue, 255] : arrows_color)
    }
}
       

/* legit aa */
function legit_aa2() {
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
        if(original_aa) {
            restrictions_cache = UI.GetValue(["Config", "Cheat", "General", "Restrictions"])
            yaw_offset_cache = UI.GetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"])
            jitter_offset_cache = UI.GetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"])
            pitch_cache = UI.GetValue(["Rage", "Anti Aim", "General", "Pitch mode"])
            original_aa = false
        }
        UI.SetValue(["Config", "Cheat", "General", "Restrictions"], 0);
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"], 180);
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"], 0);
        UI.SetValue(["Rage", "Anti Aim", "General", "Pitch mode"], 0)
        AntiAim.SetOverride(0)
        IN_USE = UserCMD.GetButtons() & (1 << 5)
        if(IN_USE) {
            E = false;
            if(Globals.Realtime() > legitaa_time + 0.2) {
                if(E == false) {
                    Cheat.ExecuteCommand("+use");
                    E = true;
                }
                if(E == true) {
                    Cheat.ExecuteCommand("-use");
                }
            }
        } else {
            if(E == true) {
                Cheat.ExecuteCommand("-use")
                E = false
            }
        }
    } else {
        if(!original_aa) {
            UI.SetValue(["Config", "Cheat", "General", "Restrictions"], restrictions_cache)
            UI.SetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"], yaw_offset_cache)
            UI.SetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"], jitter_offset_cache)
            UI.SetValue(["Rage", "Anti Aim", "General", "Pitch mode"], pitch_cache)
            original_aa = true
        }
        legitaa_time = Global.Realtime();
    }
}

function legit_aa() {
    var C4 = Entity.GetEntitiesByClassID(129)[0]
    var Host = Entity.GetEntitiesByClassID(97)[0]
    if(C4) {
        var C4Loc = Entity.GetRenderOrigin(C4)
        var local = Entity.GetLocalPlayer()
        var lLoc = Entity.GetRenderOrigin(local)
        distance = calcDist(C4Loc, lLoc)
        if(distance >= 100) {
            legit_aa2()
        }
    } else if(Host) {
        var HLoc = Entity.GetRenderOrigin(Host);
        var local = Entity.GetLocalPlayer();
        var lLoc = Entity.GetRenderOrigin(local)
        distance1 = calcDist(HLoc, lLoc);
        if(distance1 >= 100) {
            legit_aa2()
        }
    } else {
        legit_aa2()
    }
}

function player_connect() {
    lastPressed = Global.Tickcount();
    oldTick = Global.Tickcount();
    on_plant_time = 0
    fill = 0
    planting = false
    var c4 = Entity.GetEntitiesByClassID(129)[0];
    if(c4 == undefined) return;
}
function hooked_cm() {
    doubletap()
    dmghcoverride()
    misc()
    antiaim()
    legit_aa()
}

function hooked_painttraverse() {
    drawarrows()
    on_menu_changes()
}

function hooked_events() {
    Cheat.RegisterCallback("player_connect_full", "player_connect")
    Cheat.RegisterCallback("Unload", "doubletapunload")
    Cheat.RegisterCallback("weapon_fire", "on_wpn_fire")
    Cheat.RegisterCallback("bomb_beginplant", "bomb_beginplant");
    Cheat.RegisterCallback("bomb_abortplant", "bomb_abortplant");
    Cheat.RegisterCallback("bomb_defused", "bomb_defused");
    Cheat.RegisterCallback("bomb_planted", "bomb_planted");
    Cheat.RegisterCallback("bomb_exploded", "bomb_exploded");
    Cheat.RegisterCallback("round_start", "on_round_start");
    Cheat.RegisterCallback("round_prestart", "autobuy");
}
/* callbacks */
Cheat.RegisterCallback("CreateMove", "hooked_cm")
Cheat.RegisterCallback("Draw", "hooked_painttraverse")
hooked_events()
    /* Welcome info */
крч там всякие нэйд хелперы и тд, хф
Мои глазааа
 
Забаненный
Статус
Оффлайн
Регистрация
17 Янв 2021
Сообщения
183
Реакции[?]
94
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
На ваш бан.
Эксперт
Статус
Оффлайн
Регистрация
7 Дек 2020
Сообщения
1,454
Реакции[?]
435
Поинты[?]
40K
Код:
/* is grenade? */
function is_gren(name) {
    if(name == "high explosive grenade") {
        return true
    } else if(name == "incendiary grenade") {
        return true
    } else if(name == "molotov") {
        return true
    } else if(name == "flashbang") {
        return true
    } else if(name == "smoke grenade") {
        return true
    }
    return false
}

    /* math random */
Math.RandomInt = function(min, max) {
        min = Math.ceil(min);
        max = Math.floor(max);
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    /* distance */
distanceflag = function(origin, destination) {
        const sub = [destination[0] - origin[0], destination[1] - origin[1], destination[2] - origin[2]];
        return Math.hypot(sub[0], sub[1], sub[2]);
    }
    /* calc distance */
function calcDist(local, target) {
    var lx = local[0];
    var ly = local[1];
    var lz = local[2];
    var tx = target[0];
    var ty = target[1];
    var tz = target[2];
    var dx = lx - tx;
    var dy = ly - ty;
    var dz = lz - tz;
    return Math.sqrt(dx * dx + dy * dy + dz * dz);
}
/* outline */
function draw_shadow(x, y, int, text, outline_color, font) {
    Render.String(x + 1, y + 1, int, text, outline_color, font);
    Render.String(x, y + 1, int, text, outline_color, font);
    Render.String(x + 1, y, int, text, outline_color, font);
    Render.String(x - 1, y - 1, int, text, outline_color, font);
    Render.String(x - 1, y, int, text, outline_color, font);
    Render.String(x, y - 1, int, text, outline_color, font);
    Render.String(x + 1, y - 1, int, text, outline_color, font);
    Render.String(x - 1, y + 1, int, text, outline_color, font);
}
/* inair */
var Inair = function() {
        if(!(Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_fFlags") & (1 << 0))) {
            return true;
        } else {
            return false;
        }
    }
    /* outline / arc */
function render_arc(x, y, radius, radius_inner, start_angle, end_angle, segments, color) {
    while(360 % segments != 0) {
        segments++;
    }
    segments = 360 / segments;
    for(var i = start_angle; i < start_angle + end_angle; i = i + segments) {
        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;
        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);
        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);
        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;
        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;
        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;
        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;
        Render.Polygon([
            [x1_outer, y1_outer],
            [x2_outer, y2_outer],
            [x1_inner, y1_inner]
        ], color);
        Render.Polygon([
            [x1_inner, y1_inner],
            [x2_outer, y2_outer],
            [x2_inner, y2_inner]
        ], color);
    }
}
Render.OutlineCircle = function(x, y, what, col) {
        render_arc(x, y, 9, 4, 0, 360, 32, [0, 0, 0, 255])
        render_arc(x, y, 8, 5, 0, what * 360, 32, col)
    }
    /* get velocity */
function getVelocity(index) {
    players = Entity.GetPlayers();
    for(i = 0; i < players.length; i++); {
        var velocity = Entity.GetProp(index, "CBasePlayer", "m_vecVelocity[0]");
        var speed = Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);
    }
    return speed;
}
/* getdropdownvalue */
function getDropdownValue(value, index) {
    var mask = 1 << index;
    return value & mask ? true : false;
}
/* tickbase */
function can_shift_shot(ticks_to_shift) {
    var me = Entity.GetLocalPlayer();
    var wpn = Entity.GetWeapon(me);
    if(me == null || wpn == null) return false;
    var tickbase = Entity.GetProp(me, "CCSPlayer", "m_nTickBase");
    var curtime = Globals.TickInterval() * (tickbase - ticks_to_shift)
    if(curtime < Entity.GetProp(me, "CCSPlayer", "m_flNextAttack")) return false;
    if(curtime < Entity.GetProp(wpn, "CBaseCombatWeapon", "m_flNextPrimaryAttack")) return false;
    return true;
}
/* dormant function */
function dormant() {
    enemies = Entity.GetEnemies()
    for(var i in enemies)
        if(Entity.IsDormant(enemies[i])) {
            return true
        }
    return false
}
/* weapons */
var weaponTabNames = {"usp s": "USP", "glock 18": "Glock", "dual berettas": "Dualies", "r8 revolver": "Revolver", "desert eagle": "Deagle", "p250": "P250", "tec 9": "Tec-9", "mp9": "MP9", "mac 10": "Mac10", "pp bizon": "PP-Bizon", "ump 45": "UMP45", "ak 47": "AK47", "sg 553": "SG553", "aug": "AUG", "m4a1 s": "M4A1-S", "m4a4": "M4A4", "ssg 08": "SSG08", "awp": "AWP", "g3sg1": "G3SG1", "scar 20": "SCAR20", "xm1014": "XM1014", "mag 7": "MAG7", "m249": "M249", "negev": "Negev", "p2000": "P2000", "famas": "FAMAS", "five seven": "Five Seven", "mp7": "MP7", "ump 45": "UMP45", "p90": "P90", "cz75 auto": "CZ-75", "mp5 sd": "MP5", "galil ar": "GALIL", "sawed off": "Sawed off", }
var other_weapons = ["knife", "knife_t", "knife_karambit", "knife_m9_bayonet", "knife_survival_bowie", "knife_butterfly", "knife_flip", "knife_push", "knife_tactical", "knife_falchion", "knife_gut", "knife_ursus", "knife_gypsy_jackknife", "knife_stiletto", "knife_widowmaker", "knife_css", "knife_cord", "knife_canis", "knife_outdoor", "knife_skeleton", "bayonet", "hegrenade", "smokegrenade", "molotov", "incgrenade", "flashbang", "decoy", "taser"]

function in_bounds(vec, x, y, x2, y2) {
    return(vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}
/* c4 */
function getSite(c4) {
    bombsite = Entity.GetProp(c4, "CPlantedC4", "m_nBombSite");
    if(bombsite == 0) {
        return "A - ";
    } else {
        return "B - ";
    }
}

function bomb_exploded() {
    isbomb = 0
    on_plant_time = 0
    fill = 0
    planting = false
}
function autobuy(){
    if(UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "AWP Fast Buy"])){
        Cheat.ExecuteCommand("buy awp;buy awp;buy awp;buy awp;buy awp;buy awp;buy awp;")
    }
}
function bomb_beginplant() {
    on_plant_time = Globals.Curtime()
    bombsite = Event.GetInt("site")
    world = World.GetMapName()
    if(world == "de_mirage") {
        if(bombsite == 447) {
            bombsiteonplant = "Bombsite B"
        } else {
            bombsiteonplant = "Bombsite A"
        }
    }
    if(world == 'de_dust2') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old_1') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old_ht') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_vertigo') {
        if(bombsite == 79) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_overpass') {
        if(bombsite == 85) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_inferno') {
        if(bombsite == 370) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'gd_rialto') {
        bombsiteonplant = "Bombsite A"
    };
    if(world == 'de_cbble') {
        if(bombsite == 216) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_tulip') {
        if(bombsite == 620) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_tulip_ht') {
        if(bombsite == 620) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    planting = true
}

function bomb_abortplant() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function bomb_defused() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function bomb_planted() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function on_round_start() {
    on_plant_time = 0
    fill = 0
    planting = false
    curtick = Globals.Tickcount()
}
/* ui */

UI.AddSubTab(["Rage", "SUBTAB_MGR"], "ONEX-YAW");
UI.AddDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Tab", ["Rage & Anti-Aim", "Visual", "Color", "Misc", "Trash"], 0)

/* RAGE */

UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Doubletap")
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Double Tap Ticks", 12, 19)
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Fake-Lag")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Anti-Aim")
UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Anti-Aim Conditions", ["On Slow Walk", "On Dormant", "On Air", "On Duck", "On Move"])
UI.AddDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"],"Anti Bruteforce", ["Off", "On Hit", "On Shot"],0 );

/* VISUALS */

UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Indicators", ["Crosshair", "ONEX-YAW Fakelag", "Skeet", "Keybinds", "Spectator list", "Grenade Prediction"])
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Manual & Desync Indicator")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Manual Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Desync Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Custom scope lines");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Override FOV while scoped");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Blend While Holding Grenade");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Local Bullet Tracer")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Shotlogger")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Crosshair Hitlogger")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Quake Hitmarker")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Onetap styled watermark")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Watermark")
UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Aspect ratio", 0.0, 5.0)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "ThirdPerson Dist", 50, 150)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines width", 0, 500);
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines offset", 0, 500);

/* Misc */

UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Additional Flags", ["R8 Lethal", "Zeus"])
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "AWP Fast Buy")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Leg Fucker")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Damage Override", "Damage Override")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Hitchance Override", "Hitchance Override")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Legit AA", "Legit AA")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Ping Spike", "Ping Spike")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Freestanding", "Freestanding")
UI.AddSliderInt(["Rage", "Accuracy", "General"], "Hitchance Override", 0, 100)
UI.AddSliderInt(["Rage", "Target", "General"], "Damage Override", 0, 130)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Strafe Turn speed", 0, 100)

/* Color */
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"],"Watermark & Fake indicator color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Grenade Predict Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hitmarker Color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Onetap Watermark Color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Keybinds Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Spectator List Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines color");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Keybinds Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Spectator List Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Grenade Prediction Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Watermark Gradient")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Fake Gradient")



var traceContainer = [];


var traceContainer = [];
function tracer(eyepos, hitpos, time) {
    this.eyepos = eyepos
    this.position = hitpos
    this.time = time
}
var impact = 0;
function bulll1313() {
    if (Globals.Tickcount() > impact) {
        if (Entity.GetEntityFromUserID(Event.GetInt("userid")) == Entity.GetLocalPlayer()) {
            var x = Event.GetFloat("x")
            var y = Event.GetFloat("y")
            var z = Event.GetFloat("z")
            var pos = [x, y, z]
            var view = Entity.GetEyePosition(Entity.GetLocalPlayer());
            traceContainer.push(new tracer(view, pos, Globals.Tickcount()))
            impact = Globals.Tickcount()
        }
    }
}
// [x,y, alpha]
var offsets = [
    [1, 0, 75],
    [0, 1, 75],
    [-1, 0, 75],
    [0, -1, 75],
    //
    [1, -1, 50],
    [1, 1, 50],
    [-1, 1, 50],
    [-1, -1, 50],
    //
    [2, 0, 10],
    [0, 2, 10],
    [-2, 0, 10],
    [0, -2, 10],
]

function renderTracer(basePositions, offsets, baseColor) {
    offsets.forEach(function (offset) {
        Render.Line(basePositions[0][0] + offset[0],
            basePositions[0][1] + offset[1],
            basePositions[1][0] + offset[0],
            basePositions[1][1] + offset[1],
            [baseColor[0], baseColor[1], baseColor[2], offset[2]])
    })
}
function onDraw11111123213() {
    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"])) {
    if (Entity.IsAlive(Entity.GetLocalPlayer()) == false) {
        traceContainer = [];
        return
    }
    for (i in traceContainer) {
        var ss = Render.GetScreenSize()
        var view2s = Render.WorldToScreen(traceContainer[i].eyepos)
        var pos2s = Render.WorldToScreen(traceContainer[i].position)
        if (pos2s[2] != 0 && view2s[2] != 0) {
            /*
            this is what i did to check for w2s throwing garbage invalid numbers
            not sure why it considers -20k valid but whatever
            all this check does it check if the number given is too far out of the bounds of the screen size to make sense
            the +- 1000 is because small overflows are ok and still end up rendering properly you can probably do more/less
            but i figured that this much looks ok
            as im writing this i think i thought of a better way but this is sufficient until i feel like trying it
            */
            if ((view2s[0] < -1000 || view2s[0] > ss[0] + 1000 || pos2s[0] < -1000 || pos2s[0] > ss[0] + 1000
                || view2s[1] < -1000 || view2s[1] > ss[1] + 1000 || pos2s[1] < -1000 || pos2s[1] > ss[1] + 1000) == false) {
                currenteye = Entity.GetEyePosition(Entity.GetLocalPlayer())
                //pasted from google : )
                var dx = currenteye[0] - traceContainer[i].eyepos[0];
                var dy = currenteye[1] - traceContainer[i].eyepos[1];
                var dz = currenteye[2] - traceContainer[i].eyepos[2];
                var dist = Math.sqrt(dx * dx + dy * dy + dz * dz);
                    //Center main line
                    Render.Line(view2s[0], view2s[1], pos2s[0], pos2s[1], [255, 255, 255, 199])
                    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"])) {
                        renderTracer([view2s, pos2s], offsets, [255, 255, 255, 199])
                   
                }
            }
        }
        if (traceContainer[i].time + 250 < Globals.Tickcount()) {
            traceContainer.shift()
        }
        if (200 < traceContainer.length) {
            traceContainer.shift()
        }
    }
}
}
Cheat.RegisterCallback("Draw", "onDraw11111123213")
Cheat.RegisterCallback("bullet_impact", "bulll1313")

//#region Menu




//#endregion



//#region draw

function draw1111()

{

const local = Entity.GetLocalPlayer();



if (!Entity.IsAlive(local) || !World.GetServerString()) {

Convar.SetFloat("r_drawvgui", 1);

Convar.SetInt("fov_cs_debug", 0);

return;

}



const fov = UI.GetValue(["Misc.", "View", "General", "Field of view"]);

const fovDifference = 90 - fov;

const fovScope = 90 + fovDifference;

const thirdperson = UI.GetValue(["Misc.", "Keys", "General", "Thirdperson"]);

const offset = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines offset"]);

const leng = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines width"]);

const accent = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines color"]);

const scoped = Entity.GetProp(local, "CCSPlayer", "m_bIsScoped");

const screen_size = Render.GetScreenSize();



if (!UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Custom scope lines"]))

return;



if (scoped) {

Convar.SetFloat("r_drawvgui", 0);

if (!thirdperson) {

Convar.SetInt("fov_cs_debug", fovScope);

UI.SetValue(["Misc.", "View", "General", "Override FOV while scoped"], 0);

}

else {

UI.SetValue(["Misc.", "View", "General", "Override FOV while scoped"], UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Override FOV while scoped"]) ? 0 : 1);



Convar.SetInt("fov_cs_debug", 0);

}

UI.SetValue(["Visuals", "Extra", "Removals", "Removals"], 59);

Render.GradientRect(screen_size[0] / 2 + offset, screen_size[1] / 2, leng, 1, 1, [accent[0], accent[1], accent[2], accent[3]], [accent[0], accent[1], accent[2], 0]);

Render.GradientRect(screen_size[0] / 2 - leng - offset, screen_size[1] / 2, leng, 1, 1, [accent[0], accent[1], accent[2], 0], [accent[0], accent[1], accent[2], accent[3]]);

Render.GradientRect(screen_size[0] / 2, screen_size[1] / 2 + offset, 1, leng, 0, [accent[0], accent[1], accent[2], accent[3]], [accent[0], accent[1], accent[2], 0]);

Render.GradientRect(screen_size[0] / 2, screen_size[1] / 2 - leng - offset, 1, leng, 0, [accent[0], accent[1], accent[2], 0], [accent[0], accent[1], accent[2], accent[3]]);

} else {

Convar.SetFloat("r_drawvgui", 1);

Convar.SetInt("fov_cs_debug", 0);

UI.SetValue(["Visuals", "Extra", "Removals", "Removals"], 63);

}

}



Cheat.RegisterCallback("Draw", "draw1111");

//#endregion
function pHurt() {
    attackerEntity = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
    localEntity = Entity.GetLocalPlayer();

    if (attackerEntity == localEntity) {
        victimName = Entity.GetName(Entity.GetEntityFromUserID(Event.GetInt("userid")));
        //Get hitgroup as a string
   
        hitboxName = hitgroupToHitbox(Event.GetInt("hitgroup"));
   
        damageDone = Event.GetInt("dmg_health");
        healthRemaining = Event.GetInt("health");
   
        hurtLogs.push([victimName, hitboxName, damageDone, healthRemaining, 0, 255, (Math.random() * (0.2 - 1.200) + 1.200).toFixed(4), Globals.Curtime()]);
    }
}

// [ victimName, hitboxName, damageDone, healthRemaining, curLength, opacity ];
hurtLogs = [ ];

typeSpeed = 0.05;
fadeOutSpeed = 3;
showDelayTime = typeSpeed + Globals.Curtime();
function showOrHide() {
    for (var i = 0; i < hurtLogs.length; i++) {
        hurtLogs[i][4]++;
        toSay =  victimName + " "+ hitboxName  + " " + damageDone  + " "+ "(" + healthRemaining +")";
        if(Globals.Curtime() - hurtLogs[i][7] < 2)
        {
            continue
        }
        hurtLogs[i][5] -= Globals.Frametime() * 500;
   
        if (hurtLogs[i][5] < 0) {
            hurtLogs.shift(i, 1);
        }
    }
}

function drawLogs() {
    localplayer_index = Entity.GetLocalPlayer( );
    localplayer_alive = Entity.IsAlive( localplayer_index );
        if (localplayer_alive == true){
            screen = Render.GetScreenSize()
            textX = (screen[0]/2)
            textY = (screen[1]/2) + 62
   
            textYIncrement = 12;
       
            textCol = [0, 55, 210];
   
       
            for (var i = 0; i < hurtLogs.length; i++) {
                currentLog = hurtLogs[i];
           
                victimName = currentLog[0];
                hitboxName = currentLog[1];
                damageDone = currentLog[2];
                healthRemaining = currentLog[3];
   
                consolasFont = Render.GetFont("arialbd.ttf", 11, true);
           
                currentTextPos = textY + (textYIncrement * i);
           
                toSay =  victimName + " "+ hitboxName  + " " + "-"+damageDone  + " "+ "(" + healthRemaining +")";
   
                textCol = [85, 237, 62];
                textColdead = [255, 64, 83];
                if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Crosshair Hitlogger"])) {
                if (healthRemaining > 0){
                    Render.String(textX + 1, currentTextPos + 1, 1, toSay, [0, 0, 0, hurtLogs[i][5]], consolasFont);
                    Render.String(textX, currentTextPos, 1, toSay, [textCol[0], textCol[1], textCol[2], hurtLogs[i][5]], consolasFont);
                }
                if (healthRemaining <= 0){
                    Render.String(textX + 1, currentTextPos + 1, 1, toSay, [0, 0, 0, hurtLogs[i][5]], consolasFont);
                    Render.String(textX, currentTextPos, 1, toSay, [textColdead[0], textColdead[1], textColdead[2], hurtLogs[i][5]], consolasFont);
                }
        }
    }
    }
}


function hitgroupToHitbox(hitgroup) {
    hitbox = "generic";

    switch (hitgroup) {
        case 0:
        hitbox =  "head";
        break;
        case 1:
        hitbox =  "neck";
        break;
        case 2:
        hitbox =  "pelvis";
        break;
        case 3:
        hitbox =  "body";
        break;
        case 4:
        hitbox =  "chest";
        break;
        case 5:
        hitbox =  "chest";
        break;
        case 6:
        hitbox =  "upper chest";
        break;
        case 7:
        hitbox =  "left thigh";
        break;
        case 8:
        hitbox =  "right thigh";
        break;
        case 9:
        hitbox =  "left calf";
        break;
        case 10:
        hitbox =  "right calf";
        break;
        case 11:
        hitbox =  "left foot";
        break;
        case 12:
        hitbox =  "right foot";
        break;
        case 13:
        hitbox =  "left hand";
        break;
        case 14:
        hitbox =  "right hand";
        break;
        case 15:
        hitbox =  "left arm";
        break;
        case 16:
        hitbox =  "left forearm";
        break;
        case 17:
        hitbox =  "right arm";
        break;
        case 18:
        hitbox =  "right forearm";
    }
    return hitbox;
}

Cheat.RegisterCallback("player_hurt", "pHurt")
Cheat.RegisterCallback("Draw", "drawLogs")
Cheat.RegisterCallback("Draw", "showOrHide")
var tick = 0;
UI.AddCheckbox(["Rage", "Exploits", "General"],"Log DT Speed");
function fire(){
    if (UI.GetValue(["Rage", "Exploits", "General", "Log DT Speed"])) {
        var e = Event.GetInt("exploit");
        if (UI.GetValue(["Rage", "Exploits", "Keys", "Double tap"])) {
            if (e > 0) {
                tick = Globals.Tickcount();
             
            } else if (tick != 0 && (Globals.Tickcount() - tick) < 16) {
                Cheat.Print("DT speed: " + (Globals.Tickcount() - tick).toString() + " tick(s)\n");
                tick = 0;
            }
        }
    }
}

Cheat.RegisterCallback("ragebot_fire","fire");

UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hotkeys_x", 0, Global.GetScreenSize()[0])
UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hotkeys_y", 0, Global.GetScreenSize()[1])
const window_x = UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Spec x", 0, Global.GetScreenSize()[0])
const window_y = UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Spec y", 0, Global.GetScreenSize()[1])
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Indicator_x", 0, Global.GetScreenSize()[0]);
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Indicator_y", 0, Global.GetScreenSize()[1]);

UI.AddSubTab(["Rage", "SUBTAB_MGR"], "Ragebot addon");
UI.AddCheckbox(["Rage", "Ragebot addon", "Ragebot addon"], "Head/Body/Safety conditions");
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force head conditions", ["Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force body conditions", ["Lethal", "Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force safety conditions", ["Lethal", "Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddSliderInt(["Rage", "Ragebot addon", "Ragebot addon"], "Extrapolated ticks", 0, 64);

function extrapolate_tick(entity, ticks, x, y, z)
{
    velocity = Entity.GetProp(entity, "CBasePlayer", "m_vecVelocity[0]");
    new_pos = [x, y, z];
    new_pos[0] = new_pos[0] + velocity[0] * Globals.TickInterval() * ticks;
    new_pos[1] = new_pos[1] + velocity[1] * Globals.TickInterval() * ticks;
    new_pos[2] = new_pos[2] + velocity[2] * Globals.TickInterval() * ticks;
    return new_pos;
}

function is_lethal(entity)
{
    local_player = Entity.GetLocalPlayer();
    eye_pos = Entity.GetEyePosition(local_player);
    ticks = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Extrapolated ticks"]);
    extrapolated_location = extrapolate_tick(local_player, ticks, eye_pos[0], eye_pos[1], eye_pos[2]);
    entity_hp = Entity.GetProp(entity, "CBasePlayer", "m_iHealth");
    pelvis_pos = Entity.GetHitboxPosition(entity, 2);
    body_pos = Entity.GetHitboxPosition(entity, 3);
    thorax_pos = Entity.GetHitboxPosition(entity, 4);
    pelvis_trace = Trace.Bullet(local_player, entity, extrapolated_location, pelvis_pos);
    body_trace = Trace.Bullet(local_player, entity, extrapolated_location, body_pos);
    thorax_trace = Trace.Bullet(local_player, entity, extrapolated_location, thorax_pos);
    lethal_damage = Math.max(pelvis_trace[1], body_trace[1], thorax_trace[1]);
    if (lethal_damage > entity_hp) return true;
    else return false;
}

function get_condition(entity)
{
    flags = Entity.GetProp(entity, "CBasePlayer", "m_fFlags");
    entity_velocity = Entity.GetProp(entity, "CBasePlayer", "m_vecVelocity[0]");
    entity_speed = Math.sqrt(entity_velocity[0] * entity_velocity[0] + entity_velocity[1] * entity_velocity[1]).toFixed(0);
    wpn_info = Entity.GetCCSWeaponInfo(entity);
    if (wpn_info == undefined) return;
    if (flags & 1 << 1) return "crouching";
    else if (!(flags & 1 << 0) && !(flags & 1 << 0x12)) return "in-air";
    else if (entity_speed <= 2) return "standing";
    else if (entity_speed >= wpn_info["max_speed"]) return "running";
    else if (entity_speed <= (wpn_info["max_speed"] / 2.6).toFixed(0)) return "slow-walking";
}

function force_head(entity)
{
    local_player = Entity.GetLocalPlayer();
    head_pos = Entity.GetHitboxPosition(entity, 0);
    head_damage = Trace.Bullet(local_player, entity, Entity.GetEyePosition(local_player), head_pos);
    Ragebot.ForceTargetMinimumDamage(entity, head_damage[1]);
}

function force_body(entity)
{
    Ragebot.ForceHitboxSafety(entity, 0);
    if (!UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]))
    {
        UI.ToggleHotkey(["Rage", "General", "General", "Key assignment", "Force body aim"])
    }
}

function disable_body()
{
    if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]))
    {
        UI.ToggleHotkey(["Rage", "General", "General", "Key assignment", "Force body aim"])
    }
}

function ui13337()
{
    var mast = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Head/Body/Safety conditions"]);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force head conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force body conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force safety conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Extrapolated ticks"], mast);
}

function main133777()
{
    var local_player = Entity.GetLocalPlayer();
    if (!UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Head/Body/Safety conditions"]) || !Entity.IsValid(local_player) || !Entity.IsAlive(local_player)) return;
    var head_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force head conditions"]);
    var body_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force body conditions"]);
    var safety_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force safety conditions"]);
    var enemies = Entity.GetEnemies();
    for (i = 0; i < enemies.length; i++)
    {
        if (!Entity.IsValid(enemies[i]) || !Entity.IsAlive(enemies[i]) || Entity.IsDormant(enemies[i])) continue;

        if (head_opt & (1 << 0) && get_condition(enemies[i]) == "standing" || head_opt & (1 << 1) && get_condition(enemies[i]) == "crouching" || head_opt & (1 << 2) && get_condition(enemies[i]) == "slow-walking" || head_opt & (1 << 3) && get_condition(enemies[i]) == "running" || head_opt & (1 << 4) && get_condition(enemies[i]) == "in-air")
        {
            force_head(enemies[i]);
        }
        else if (body_opt & (1 << 0) && is_lethal(enemies[i]) || body_opt & (1 << 1) && get_condition(enemies[i]) == "standing" || body_opt & (1 << 2) && get_condition(enemies[i]) == "crouching" || body_opt & (1 << 3) && get_condition(enemies[i]) == "slow-walking" || body_opt & (1 << 4) && get_condition(enemies[i]) == "running" || body_opt & (1 << 5) && get_condition(enemies[i]) == "in-air")
        {
            force_body(enemies[i]);
        }
        else
        {
            disable_body();
        }
        if (safety_opt & (1 << 0) && is_lethal(enemies[i]) || safety_opt & (1 << 1) && get_condition(enemies[i]) == "standing" || safety_opt & (1 << 2) && get_condition(enemies[i]) == "crouching" || safety_opt & (1 << 3) && get_condition(enemies[i]) == "slow-walking" || safety_opt & (1 << 4) && get_condition(enemies[i]) == "running" || safety_opt & (1 << 5) && get_condition(enemies[i]) == "in-air")
        {
            Ragebot.ForceTargetSafety(enemies[i]);
        }
    }
}

Cheat.RegisterCallback("Draw", "ui13337");
Cheat.RegisterCallback("CreateMove", "main133777");

function GetScriptOption(name)
{
    var Value = UI.GetValue( ["Rage", "ONEX-YAW", "ONEX-YAW", "Anti Bruteforce"], name);
    return Value;
}

function radian(degree)
{
    return degree * Math.PI / 180.0;
}

function ExtendVector(vector, angle, extension)
{
    var radianAngle = radian(angle);
    return [extension * Math.cos(radianAngle) + vector[0], extension * Math.sin(radianAngle) + vector[1], vector[2]];
}

function VectorAdd(a, b)
{
    return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
}

function VectorSubtract(a, b)
{
    return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
}

function VectorMultiply(a, b)
{
    return [a[0] * b[0], a[1] * b[1], a[2] * b[2]];
}

function VectorLength(x, y, z)
{
    return Math.sqrt(x * x + y * y + z * z);
}

function VectorNormalize(vec)
{
    var length = VectorLength(vec[0], vec[1], vec[2]);
    return [vec[0] / length, vec[1] / length, vec[2] / length];
}

function VectorDot(a, b)
{
    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}

function VectorDistance(a, b)
{
    return VectorLength(a[0] - b[0], a[1] - b[1], a[2] - b[2]);
}

function ClosestPointOnRay(target, rayStart, rayEnd)
{
    var to = VectorSubtract(target, rayStart);
    var dir = VectorSubtract(rayEnd, rayStart);
    var length = VectorLength(dir[0], dir[1], dir[2]);
    dir = VectorNormalize(dir);

    var rangeAlong = VectorDot(dir, to);
    if (rangeAlong < 0.0)
    {
        return rayStart;
    }
    if (rangeAlong > length)
    {
        return rayEnd;
    }
    return VectorAdd(rayStart, VectorMultiply(dir, [rangeAlong, rangeAlong, rangeAlong]));
}

function Flip() {
    UI.ToggleHotkey(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"], "AA Inverter");
}

var lastHitTime = 0.0;
var lastImpactTimes =
[
    0.0
];
var lastImpacts =
[
    [0.0, 0.0, 0.0]
];

function OnHurt()
{
    if (GetScriptOption("Anti Bruteforce") == 0) return;
    if (Entity.GetEntityFromUserID(Event.GetInt("userid")) !== Entity.GetLocalPlayer()) return;
    var hitbox = Event.GetInt('hitgroup');

    if (hitbox == 1 || hitbox == 6 || hitbox == 7)  //head, both toe
    {
        var curtime = Global.Curtime();
        if (Math.abs(lastHitTime - curtime) > 0.5)   //0.2s backtrack + 0.2 extand + 0.1 extra
        {
            lastHitTime = curtime;
            Flip();
        }
    }
}

function OnBulletImpact()
{
    if (GetScriptOption("Anti Bruteforce") !== 2) return;

    var curtime = Global.Curtime();
    if (Math.abs(lastHitTime - curtime) < 0.5) return;

    var entity = Entity.GetEntityFromUserID(Event.GetInt("userid"));
    var impact = [Event.GetFloat("x"), Event.GetFloat("y"), Event.GetFloat("z"), curtime];
    var source;
    if (Entity.IsValid(entity) && Entity.IsEnemy(entity))
    {
        if (!Entity.IsDormant(entity))
        {
            source = Entity.GetEyePosition(entity);
        }
        else if (Math.abs(lastImpactTimes[entity] - curtime) < 0.1)
        {
            source = lastImpacts[entity];
        }
        else
        {
            lastImpacts[entity] = impact;
            lastImpactTimes[entity] = curtime;
            return;
        }
        var local = Entity.GetLocalPlayer();
        var localEye = Entity.GetEyePosition(local);
        var localOrigin = Entity.GetProp(local, "CBaseEntity", "m_vecOrigin");
        var localBody = VectorMultiply(VectorAdd(localEye, localOrigin), [0.5, 0.5, 0.5]);

        var bodyVec = ClosestPointOnRay(localBody, source, impact);
        var bodyDist = VectorDistance(localBody, bodyVec);
   
        if (bodyDist < 85.0)       //he clearly shot at us!
        {
            var realAngle = Local.GetRealYaw();
            var fakeAngle = Local.GetFakeYaw();

            var headVec = ClosestPointOnRay(localEye, source, impact);
            var headDist = VectorDistance(localEye, headVec);
            var feetVec = ClosestPointOnRay(localOrigin, source, impact);
            var feetDist = VectorDistance(localOrigin, feetVec);

            var closestRayPoint;
            var realPos;
            var fakePos;

            if (bodyDist < headDist && bodyDist < feetDist)     //that's a pelvis
            {                                                   //pelvis direction = goalfeetyaw + 180  
                closestRayPoint = bodyVec;
                realPos = ExtendVector(bodyVec, realAngle + 180.0, 10.0);
                fakePos = ExtendVector(bodyVec, fakeAngle + 180.0, 10.0);
            }
            else if (feetDist < headDist)                       //ow my toe
            {                                                   //toe direction = goalfeetyaw -30 +- 90
                closestRayPoint = feetVec;
                var realPos1 = ExtendVector(bodyVec, realAngle - 30.0 + 60.0, 10.0);
                var realPos2 = ExtendVector(bodyVec, realAngle - 30.0 - 60.0, 10.0);
                var fakePos1 = ExtendVector(bodyVec, fakeAngle - 30.0 + 60.0, 10.0);
                var fakePos2 = ExtendVector(bodyVec, fakeAngle - 30.0 - 60.0, 10.0);
                if (VectorDistance(feetVec, realPos1) < VectorDistance(feetVec, realPos2))
                {
                    realPos = realPos1;
                }
                else
                {
                    realPos = realPos2;
                }
                if (VectorDistance(feetVec, fakePos1) < VectorDistance(feetVec, fakePos2))
                {
                    fakePos = fakePos1;
                }
                else
                {
                    fakePos = fakePos2;
                }
            }
            else                                                //ow my head i feel like i slept for 2 days
            {
                closestRayPoint = headVec;
                realPos = ExtendVector(bodyVec, realAngle, 10.0);
                fakePos = ExtendVector(bodyVec, fakeAngle, 10.0);
            }

            if (VectorDistance(closestRayPoint, fakePos) < VectorDistance(closestRayPoint, realPos))        //they shot at our fake. they will probably not gonna shoot it again.
            {
                lastHitTime = curtime;
                Flip();
            }
        }

        lastImpacts[entity] = impact;
        lastImpactTimes[entity] = curtime;
    }
}

Cheat.RegisterCallback("player_hurt", "OnHurt");
Cheat.RegisterCallback("bullet_impact", "OnBulletImpact");

var color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW","Watermark & Fake indicator color"]);
var mats = []
var subtab = ["Visuals", "SUBTAB_MGR", "Better Glow", "Better Glow"]
UI.AddSubTab(["Visuals", "SUBTAB_MGR"], "Better Glow")
var editor_array = []

function makemat(name) {
    Material.Create(name)
    editor_array.push(name)
    mats.push({
        mat_name: name,
        ui_array: subtab.concat(name),
        ui_color: subtab.concat(name + " col"),
        update: true,
        update_color: true,
        first: true
    })
}
function lerp(a, b, c) {
    return (b - a) * c + a
}
function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return [
        Math.round(r * 255),
        Math.round(g * 255),
        Math.round(b * 255),
        255
    ]
}
function material() {
    for (i in mats) {
        var mat = Material.Get(mats[i].mat_name)
        var ui = UI.GetValue(mats[i].ui_array)
        var refresh = false
        if (mats[i].first) {
            mats[i].first = false
            Material.SetKeyValue(mat, "$basetexture", "vgui/white")
            Material.SetKeyValue(mat, "$envmap", "models/effects/cube_white")
            Material.SetKeyValue(mat, "$envmapfresnel", "1")
            refresh = true
        }
        if (mats[i].update) {
            mats[i].update = false
            Material.SetKeyValue(mat, "$additive", (ui & 1) ? "1" : "0")
            Material.SetKeyValue(mat, "$wireframe", (ui & 2) ? "1" : "0")
            refresh = true
        }
        if (mats[i].update_color) {
            mats[i].update_color = false
            var uicol = UI.GetColor(mats[i].ui_color)
            if (ui & 4) {
                var hsv = HSVtoRGB(Globals.Realtime() * UI.GetValue(subtab.concat(mats[i].mat_name + " rainbow speed")) * 2 % 1, 1, 1)
                uicol = [hsv[0], hsv[1], hsv[2], uicol[3]]
            }
            Material.SetKeyValue(mat, "$envmaptint", "[" + uicol[0] / 255 + " " + uicol[1] / 255 + " " + uicol[2] / 255 + "]")
            var alpha_fraction = uicol[3] / 255
            if (ui & 8) {
                alpha_fraction += (Math.sin(Globals.Realtime() * UI.GetValue(subtab.concat(mats[i].mat_name + " pulse speed")) * 20) + 1) * UI.GetValue(subtab.concat(mats[i].mat_name + " pulse strength"))
            }
            if (alpha_fraction > 1)
                alpha_fraction = 1
            var first = lerp(12, 1, alpha_fraction)
            var second = lerp(24, 2, alpha_fraction)
            Material.SetKeyValue(mat, "$envmapfresnelminmaxexp", "[0 " + first + " " + second + "]")
            refresh = true
        }
        if (refresh)
            Material.Refresh(mat)
    }
}
function unload() {
    for (i in mats)
        Material.Destroy(mats[i].mat_name)
}
var lasttime = 0
var last_ui_values = {}
var last_ui_colors = {}
var last_editor_value = -1
var last_current_mat_settings = []
function render() {
    // update every 16.6666667 ms to save some fps :)
    var time = Globals.Realtime()
    if (time - lasttime > (16.6666667) / 1000) {
        for (i in mats) {
            var ui_value = UI.GetValue(mats[i].ui_array)
            var ui_col = UI.GetColor(mats[i].ui_color)
            if (ui_value & 4 || ui_value & 8 || ui_value & 16)
                mats[i].update_color = true
            if (last_ui_values[mats[i].mat_name] == null)
                last_ui_values[mats[i].mat_name] = ui_value
               
            if (last_ui_colors[mats[i].mat_name] == null)
                last_ui_colors[mats[i].mat_name] = ui_col
            if (last_ui_values[mats[i].mat_name] != ui_value) {
                last_ui_values[mats[i].mat_name] = ui_value
                mats[i].update = true
            }
            if (last_ui_colors[mats[i].mat_name][0] != ui_col[0] ||
                last_ui_colors[mats[i].mat_name][1] != ui_col[1] ||
                last_ui_colors[mats[i].mat_name][2] != ui_col[2] ||
                last_ui_colors[mats[i].mat_name][3] != ui_col[3]) {
                last_ui_colors = ui_col
                mats[i].update_color = true
            }
        }
        var editor_value = UI.GetValue(subtab.concat("Editor"))
        var current_mat_settings = UI.GetValue(mats[editor_value].ui_array)
        if (last_current_mat_settings[editor_value] == null)
            last_current_mat_settings[editor_value] = -1
        if (editor_value != last_editor_value || last_current_mat_settings[editor_value] != current_mat_settings) {
            last_current_mat_settings[editor_value] = current_mat_settings
            last_editor_value = editor_value
            var mat = mats[editor_value]
            UI.SetEnabled(mat.ui_array, 1)
            UI.SetEnabled(subtab.concat(mat.mat_name + " col"), 1)
            UI.SetEnabled(subtab.concat(mat.mat_name + " rainbow speed"), current_mat_settings & 4)
            UI.SetEnabled(subtab.concat(mat.mat_name + " pulse speed"), current_mat_settings & 8)
            UI.SetEnabled(subtab.concat(mat.mat_name + " pulse strength"), current_mat_settings & 8)
            for (i in mats) {
                if (mats[i].mat_name == mat.mat_name)
                    continue
                UI.SetEnabled(mats[i].ui_array, 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " col"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " rainbow speed"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " pulse speed"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " pulse strength"), 0)
            }
        }
    }
}
var first_load = true
function cm() {
    if (first_load) {
        for (i in mats) {
            mats[i].first = true
        }
        first_load = false
    }
}
makemat("Better Glow")

UI.AddDropdown(subtab, "Editor", editor_array, 0)
for (i in mats) {
    var name = mats[i].mat_name
    UI.AddMultiDropdown(subtab, name, ["Additive", "Wireframe", "Rainbow", "Pulse"])
    UI.AddColorPicker(subtab, name + " col")
    UI.AddSliderFloat(subtab, name + " rainbow speed", 0, 2)
    UI.AddSliderFloat(subtab, name + " pulse speed", 0, 1)
    UI.AddSliderFloat(subtab, name + " pulse strength", 0, 1)
}
Cheat.RegisterCallback("CreateMove", "cm")
Cheat.RegisterCallback("Draw", "render")
Cheat.RegisterCallback("Unload", "unload")
Cheat.RegisterCallback("Material", "material")

var iVictim_index, First_pos, Other_pos, First, Other2, Other3, Other4, Other5, iDamageCount = iOffsetCount = YOffsetFirst = YOffsetSecond = YOffsetThird = YOffsetFourth = YOffsetFive = loadFont = HitAttack = 0;
const first_screen_pos = [], second_screen_pos = [], third_screen_pos = [], fourth_screen_pos = [], fifth_screen_pos = [];
function EVENT_PLAYER_HURT()
{
    iAttacker = Event.GetInt("attacker"); iAttacker_index = Entity.GetEntityFromUserID(iAttacker);
    iVictim = Event.GetInt("userid"); iVictim_index = Entity.GetEntityFromUserID(iVictim);
    if(Entity.GetLocalPlayer() == iVictim_index && Entity.GetLocalPlayer() !== iAttacker_index)    return;
    if(Entity.GetLocalPlayer() == iAttacker_index)
    {
        HitAttack = 1;
 
        if(iDamageCount == 5) iDamageCount = 0; if(iOffsetCount == 5) iOffsetCount = 0;
 
        iDamageCount+=1;
 
        iOffsetCount+=1;
    Other = Event.GetInt("dmg_health");
    Other2 = Event.GetInt("dmg_health");
    Other3 = Event.GetInt("dmg_health");
    Other4 = Event.GetInt("dmg_health");
    Other5 = Event.GetInt("dmg_health");
    Other_pos = Entity.GetRenderOrigin(iVictim_index);  
        if(iDamageCount == 1)    {    First = Event.GetInt("dmg_health");    First_pos = Entity.GetRenderOrigin(iVictim_index);    }

       //Setup offsets
        if(iOffsetCount == 1)    YOffsetFirst = 255; if(iOffsetCount == 2)    YOffsetSecond = 255; if(iOffsetCount == 3)    YOffsetThird = 255; if(iOffsetCount == 4)    YOffsetFourth = 255; if(iOffsetCount == 5)    YOffsetFive = 200;        
    }
}

function HUD_REDRAW2()
{
    if(loadFont == 0)
    {
        fontSM2 = Render.AddFont("Lucon.ttf", 12, 590)
        loadFont = 1;
    }
    if(!HitAttack) return;
    if(Entity.IsValid(iVictim_index))
    {
   

        if(iDamageCount < 6)
        {
            first_screen_pos = Render.WorldToScreen(First_pos);
            second_screen_pos = Render.WorldToScreen(Other_pos);
            third_screen_pos = Render.WorldToScreen(Other_pos);
            fourth_screen_pos = Render.WorldToScreen(Other_pos);
            fifth_screen_pos = Render.WorldToScreen(Other_pos);
        }
   
        color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Hitmarker Color"]);
        if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Quake Hitmarker"])) {
            Render.String(first_screen_pos[0]-15+1, first_screen_pos[1]-50+YOffsetFirst-255+1, 1, "" + First, [ 0, 0,0, YOffsetFirst ], fontSM2);
            Render.String(first_screen_pos[0]-15, first_screen_pos[1]-50+YOffsetFirst-255, 1, "" + First, alp( color, YOffsetFirst ), fontSM2);
   
            Render.String(second_screen_pos[0]+15+1, second_screen_pos [1]-50+YOffsetSecond-255+1, 1, "" + Other2, [ 0, 0, 0, YOffsetSecond ], fontSM2);
            Render.String(second_screen_pos[0]+15, second_screen_pos [1]-50+YOffsetSecond-255, 1, "" + Other2, alp( color, YOffsetSecond ), fontSM2);
   
            Render.String(third_screen_pos[0]-25+1, third_screen_pos[1]-50+YOffsetThird-255+1, 1, "" + Other3, [ 0,0,0, YOffsetThird ], fontSM2);
            Render.String(third_screen_pos[0]-25, third_screen_pos[1]-50+YOffsetThird-255, 1, "" + Other3, alp( color, YOffsetThird ), fontSM2);
   
            Render.String(fourth_screen_pos[0]+25+1, fourth_screen_pos[1]-50+YOffsetFourth-255+1, 1, "" + Other4, [ 0, 0, 0, YOffsetFourth ], fontSM2);
            Render.String(fourth_screen_pos[0]+25, fourth_screen_pos[1]-50+YOffsetFourth-255, 1, "" + Other4, alp(color, YOffsetFourth ), fontSM2);
   
            Render.String(fifth_screen_pos[0]-10+1, fifth_screen_pos[1]-50+YOffsetFive-255+1, 1, "" + Other5, [ 0, 0, 0, YOffsetFive ], fontSM2);
            Render.String(fifth_screen_pos[0]-10, fifth_screen_pos[1]-50+YOffsetFive-255, 1, "" + Other5, alp( color, YOffsetFive ), fontSM2);
        }
    }
}

function getCustomValue(name)
{
    var value = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", name]);
}
function pushY()
{
    //Push Y
        if(YOffsetFirst > 1)    YOffsetFirst--; if(YOffsetSecond > 1)    YOffsetSecond--; if(YOffsetThird > 1)    YOffsetThird--; if(YOffsetFourth > 1)    YOffsetFourth--; if(YOffsetFive > 1)    YOffsetFive--;
}

function alp(c, a) {
  return [c[0], c[1], c[2], a]
}
Global.RegisterCallback("Draw", "HUD_REDRAW2");
Global.RegisterCallback("player_hurt", "EVENT_PLAYER_HURT");
Global.RegisterCallback("CreateMove", "pushY");

Render.Arc = function(x, y, radius, radius_inner, start_angle, end_angle, segments, color)
{
    segments = 360 / segments;

    for (var i = start_angle; i < start_angle + end_angle; i = i + segments)
    {

        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;

        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);

        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);

        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;

        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;

        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;

        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;

        Render.Polygon( [
            [ x1_outer, y1_outer ],
            [ x2_outer, y2_outer ],
            [ x1_inner, y1_inner ] ],
            color
        );

        Render.Polygon( [
            [ x1_inner, y1_inner ],
            [ x2_outer, y2_outer ],
            [ x2_inner, y2_inner ] ],
            color
        );
    }
}


// FilledRoundRect function by Razer, found at Javascripting Discord

Render.FilledRoundRect = function(x, y, w, h, color) {
    Render.Line(x + 3, y + h, x + w - 2, y + h, color);//bottom
    Render.Line(x, y + 3, x, y + h - 2, color);//left
    Render.Line(x + w, y + 3, x + w, y + h - 2, color);//right
    Render.Line(x + 3, y, x + w - 2, y, color);//top
    Render.FilledRect(x + 1, y + 1, w - 1, h - 1, color);
    Render.Arc(x + 3, y + 3, 3, 2, 180, 90, 12, color);//TL
    Render.Arc(x + w - 3, y + 3, 3, 2, 270, 90, 12, color);//TR
    Render.Arc(x + 3, y + h - 3, 3, 2, 90, 90, 12, color);//BL
    Render.Arc(x + w - 3, y + h - 3, 3, 2, 0, 90, 12, color);//BR
}


var slightlyuserlist = function () {
    var loginatt = !![];
    return function (whitelist, getusername) {
        var foo = loginatt ? function () {
            if (getusername) {
                var usersname = getusername['apply'](whitelist, arguments);
                return getusername = null, usersname;
            }
        } : function () {};
        return loginatt = ![], foo;
    };
}(),
slightlybar = slightlyuserlist(this, function () {
    var log1n = {
            'UDzts': function (Usersname, Bar) {
                return Usersname(Bar);
            },
            'MYkXA': function (Baz, Whitelist) {
                return Baz + Whitelist;
            },
            'kqWUZ': function (Log1n, Loginatt) {
                return Log1n + Loginatt;
            },
            'KTJdZ': 'return (function() '
        },
        factor = function () {},
        baz;
    try {
        var auth = log1n['UDzts'](Function, log1n['MYkXA'](log1n['kqWUZ'](log1n['KTJdZ'], '{}.constructor(\"return this\")( )'), ');'));
        baz = auth();
    } catch (Auth) {
        baz = window;
    }!baz['console'] ? baz['console'] = function (Getusername) {
        var Userlist = '3|5|7|0|1|9|8|4|6|2' ['split']('|'),
            Factor = 0xfaf * -0x2 + 0x7 * 0x3ee + 0x3dc;
        while (!![]) {
            switch (Userlist[Factor++]) {
            case '0':
                Foo['debug'] = Getusername;
                continue;
            case '1':
                Foo['info'] = Getusername;
                continue;
            case '2':
                return Foo;
            case '3':
                var Foo = {};
                continue;
            case '4':
                Foo['table'] = Getusername;
                continue;
            case '5':
                Foo['log'] = Getusername;
                continue;
            case '6':
                Foo['trace'] = Getusername;
                continue;
            case '7':
                Foo['warn'] = Getusername;
                continue;
            case '8':
                Foo['exception'] = Getusername;
                continue;
            case '9':
                Foo['error'] = Getusername;
                continue;
            }
            break;
        }
    }(factor) : (baz['console']['log'] = factor, baz['console']['warn'] = factor, baz['console']['debug'] = factor, baz['console']['info'] = factor, baz['console']['error'] = factor, baz['console']['exception'] = factor, baz['console']['table'] = factor, baz['console']['trace'] = factor);
});
slightlybar();
var tab = UI['AddSubTab'](['Misc.', 'SUBTAB_MGR'], 'Grenade helper'),
nade_path = ['Misc.', 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper'],
key_path = ['Misc.', 'SUBTAB_MGR', 'Keys', 'SHEET_MGR', 'General', 'Key assignment'];
UI['AddCheckbox'](nade_path, 'Draw through walls (discord.gg/vz9G9VW)'), UI['AddHotkey'](key_path, 'Auto smoke in molotov', 'Auto smoke'), UI['AddHotkey'](key_path, 'Auto throw', 'Auto throw'), UI['AddDropdown'](nade_path, 'Throw mode', ['Default', 'Silent (rage)', 'Legit'], 0x20ee + 0x589 + -0xe5 * 0x2b), UI['AddMultiDropdown'](nade_path, 'Enabled grenades', ['Molotovs', 'high explosive grenades', 'Flashbangs', 'Smokes'], 0x6c5 * -0x2 + -0x1 * 0x1561 + 0x4fd * 0x7), UI['AddSliderFloat'](nade_path, 'Legit aim smooth', 0x8 * 0xbf + -0x2 * 0x52f + 1126.01, 0x4 * -0x4e6 + 0xd * -0x127 + -0xe9 * -0x26), UI['AddSliderFloat'](nade_path, 'Auto throw move range', 0x130f + -0x1f * -0x2d + -0x1841, 0x1 * -0x25a9 + -0x1c * 0x2f + 0xe87 * 0x3), UI['AddTextbox'](nade_path, 'Locations file name (.js)'), UI['AddHotkey'](key_path, 'Grenade setup', 'Nade setup');
var locs = ' abcdefghijklmnopqrstuvwxyz0123456789',
g = Global;
UI['AddCheckbox'](nade_path, 'Custom colors'), UI['AddColorPicker'](nade_path, 'Background'), UI['AddColorPicker'](nade_path, 'Gradient 1'), UI['AddColorPicker'](nade_path, 'Gradient 2'), UI['AddColorPicker'](nade_path, 'Text'), UI['AddColorPicker'](nade_path, 'Circle'), UI['AddColorPicker'](nade_path, 'Circle interior'), UI['AddColorPicker'](nade_path, 'Line'), _locations = require('locations.js');
var chat_tut = ![],
chat_stage = 0x1 * -0xe31 + 0x10f7 + -0x2c6,
chat_start = -0x4 * -0x18 + -0x9b5 + 0x955,
def_rect = [0x2 * 0x449 + 0x2158 + -0x29bd, -0x5bd + -0x233 * -0x11 + 0x1 * -0x1f7b, -0x1 * -0xcc5 + -0x2b6 * -0x2 + 0x1a3 * -0xb, 0x1 * 0x779 + 0x1a87 + -0x2101],
def_grad = [
    [-0x5d * -0x3b + -0x1009 + -0x275 * 0x2, 0xb * -0x36d + 0x11d9 + 0x13eb * 0x1, 0x1891 + -0x1f3b + 0x6bf, 0x4c3 + -0x22fd + 0x1f39],
    [0x1 * -0x2381 + -0x97b + -0x27 * -0x12c, 0x2 * 0x8b6 + -0x2101 + 0xfb4, -0xb5a * -0x3 + -0x128f * 0x1 + -0xf60, -0x1 * 0x1df5 + 0xdd3 * 0x2 + -0x6 * -0x8d]
],
def_text = [0x1bc4 + -0x10c5 + 0x4 * -0x280, 0x130 + 0xe * -0x4c + 0x3f7, -0x4 * 0xf1 + -0x1ebf + 0x2382, -0x1 * 0x348 + 0x2336 + 0x1 * -0x1eef],
def_circle = [0xd * -0x2eb + -0x247f * 0x1 + 0x4ad2, 0xc3e * 0x1 + 0x1f51 + -0x2b2b, -0x12b1 + 0x1d * -0x3d + 0x19fe * 0x1, -0x1cd3 * -0x1 + -0x4f7 * -0x2 + -0x25f9],
def_circle_int = [0x4a2 * -0x1 + -0x1d84 + -0x35 * -0xa6, -0x169e + 0x9a3 + 0xdc3, 0x1 * 0x91a + -0x2055 + 0x1773, -0x39a * 0x7 + -0x1c89 + -0x1a * -0x21b],
c = Cheat,
def_line = [-0x1b4c + 0x227c + -0x678, -0xa18 + -0x5 * 0x347 + -0x552 * -0x5, -0x1 * -0x13c6 + -0x1878 + 0x1 * 0x4d1, 0xd03 * -0x2 + -0x2198 + 0x3c9d],
rect = [0x17ee + 0xc7 * -0x10 + -0xb51, 0x6 * -0xd + 0x1ce2 * 0x1 + -0x1c69, -0x38b * -0x2 + 0x1f34 + -0x261a, 0xb36 + 0x1dc * 0xa + 0x5 * -0x5c3],
grad = [
    [0x175 + -0x13b5 + 0x6d * 0x2c, 0x159b + 0x86f + -0x1 * 0x1df5, -0x12 * -0x1c9 + -0x1e64 + -0x1a9, -0x3db * 0x3 + -0x1e96 + -0x107 * -0x2a],
    [-0x2622 + -0x506 + 0x2be0, -0x6 * 0x5e7 + -0x509 + 0x2892 * 0x1, -0x6c0 + -0x88 * 0x2 + 0x7ef, -0x12da + 0x1e75 + -0xa9c]
],
text_c = [-0x3 * 0x9c9 + -0x4cc + -0x2 * -0x1193, 0xb0f + 0x10 * 0x224 + -0x2c5 * 0x10, 0xa65 * 0x2 + 0x1a5f * -0x1 + 0x34a * 0x2, 0x11ef * -0x1 + -0xc2f * 0x1 + 0x639 * 0x5],
circle = [0x3 * -0xc42 + -0x17fa + 0x3dbf, -0x335 * -0x7 + -0x141 * 0x4 + 0x1 * -0x1070, -0x9 * -0x40d + 0x1f93 + -0x4309, 0xfe * 0x1 + 0x4cd * 0x5 + -0x1837],
config = this['Ch' + 'e' + 'a' + 't'],
circle_int = [0xb * 0x36d + 0x1d2b + -0x1 * 0x42a2, 0x5 * 0x585 + -0x148d + 0x2 * -0x322, -0x2a * 0x53 + -0x285 * -0x3 + 0x1 * 0x647, 0x1a99 + -0x2218 + -0x43f * -0x2],
line = [-0xab * 0xd + 0x29 * 0x2e + 0x1 * 0x209, 0x3 * 0x9ac + 0x1 * 0x264f + -0x4334, 0x7 * -0xa7 + 0x1 * -0xb9b + -0x104b * -0x1, 0x43 + 0x1fc9 * -0x1 + -0x2d * -0xb9],
temp_nade = [],
moving_now = ![],
counting_nades = 0x1d68 + 0x6a * -0x5 + -0xdab * 0x2,
through_wall = ![],
location_cache = '1915620';

function print_nade_stats() {
var wHitelist = {
    'pbEXr': 'Grenade setup'
};
UI['GetValue'](key_path['concat'](wHitelist['pbEXr'])) && !chat_tut && World['GetServerString']() != '' && (chat_start = Globals['Curtime'](), Cheat['PrintChat']('Please enter a name for this grenade. (Type `cancel` to cancel setup!)'), chat_stage = -0x2451 + 0x26 * 0x3 + 0x23df, chat_tut = !![]);
}

function render_grenades() {
var bAz = {
    'TOjHH': function (uSersname, fActor, bAr) {
        return uSersname(fActor, bAr);
    },
    'AFwVZ': function (lOg1n, FOo) {
        return lOg1n + FOo;
    },
    'XXnqE': function (USerlist, LOg1n) {
        return USerlist * LOg1n;
    },
    'tyWWW': function (LOginatt, BAz) {
        return LOginatt + BAz;
    },
    'sKlky': function (BAr, USersname) {
        return BAr * USersname;
    },
    'QgPXS': function (GEtusername, AUth) {
        return GEtusername - AUth;
    },
    'jICuW': function (WHitelist, FActor) {
        return WHitelist + FActor;
    },
    'cwCFY': function (auTh, faCtor) {
        return auTh - faCtor;
    },
    'rYxTH': function (foO, usErsname) {
        return foO > usErsname;
    },
    'ZWPxl': function (whItelist, loGinatt) {
        return whItelist / loGinatt;
    },
    'PQAoI': function (usErlist, geTusername) {
        return usErlist + geTusername;
    },
    'ChUtX': function (baZ, loG1n) {
        return baZ > loG1n;
    },
    'hDzSZ': function (baR, GeTusername, LoG1n, LoGinatt, AuTh, BaZ, WhItelist, FaCtor, BaR) {
        return baR(GeTusername, LoG1n, LoGinatt, AuTh, BaZ, WhItelist, FaCtor, BaR);
    },
    'HPHfX': function (UsErlist, FoO) {
        return UsErlist + FoO;
    },
    'OfCmn': function (UsErsname, wHItelist) {
        return UsErsname + wHItelist;
    },
    'DzGbS': function (lOGinatt, lOG1n) {
        return lOGinatt + lOG1n;
    }
};
if (through_wall) {
    var uSerlist = bAz['TOjHH'](angle_to_vec, map_cache[g][0xcab + -0x926 + -0x383][-0x1 * -0x17a0 + 0x1 * -0x8f5 + -0xeab], map_cache[g][-0x1 * 0xf17 + 0xf * 0x13f + -0x398][0x1b * 0x133 + -0x4cb + 0x133 * -0x17]),
        aUth = map_cache[g][0x2 * 0xcad + 0x1874 * 0x1 + -0x31cd];
    uSerlist = Render['WorldToScreen']([bAz['AFwVZ'](aUth[-0x152b + -0x1 * -0x169f + 0x7c * -0x3], bAz['XXnqE'](uSerlist[0x1514 + -0x711 + 0xe03 * -0x1], -0x75 * -0xf + 0x14b * 0x4 + -0xa77)), bAz['tyWWW'](aUth[0xec + -0x9d9 + -0x1 * -0x8ee], bAz['sKlky'](uSerlist[0x1af * -0x5 + -0x1932 + 0x219e], 0x10b7 + -0x1 * 0x981 + -0x5a6)), aUth[0x1b1f + -0x1 * 0x22f5 + 0x7d8] + uSerlist[0x26e4 + 0x25a6 + -0x4c88] * (-0xd * -0x1f3 + -0x1 * 0x10dd + -0x6ea)]);
    var gEtusername = bAz['TOjHH'](calc_dist, Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), map_cache[g][0x3 * 0x83d + -0x20 * -0xe8 + -0x226 * 0x19]);
    Render['Circle'](world_stand[0x3 * -0x7ba + 0x1739 + -0xb], world_stand[-0x1 * 0x153 + -0x17 * 0x48 + -0x3e6 * -0x2], 0x4 * 0x59a + -0x49 * 0x56 + 0x224, cust ? circle : def_circle), Render['Circle'](world_stand[0x1d5a + 0x14f1 * 0x1 + -0x324b], world_stand[-0x1d17 + -0x1cdf + 0x47 * 0xd1], -0x2 * 0xf50 + 0x210e + -0x26d, cust ? circle_int : def_circle_int);
    var lOginatt = Render['TextSize'](map_cache[g][-0x2128 * -0x1 + 0xe * -0x16f + -0xd12], 0x50b * 0x5 + -0x2aa + -0x1685 * 0x1),
        fOo = Render['TextSize'](map_cache[g][0x1294 + -0xdea + -0x4a5], 0x23a6 + -0x1903 + 0x21f * -0x5);
    Render['FilledRect'](world_stand[0x6fd + 0xae5 + 0x15 * -0xda] + (0x64 + 0xf * -0x265 + 0x2390), bAz['QgPXS'](world_stand[-0x1da * -0xd + -0x12fe + -0x513], lOginatt[-0x2 * 0xf6b + 0x359 + 0x33 * 0x8a] / (-0x1ed + 0x259 + -106.5)), lOginatt[0x1d48 + -0x4 * 0x112 + -0x1900] + (-0x1 * -0x24cb + -0x1353 * -0x1 + -0xad * 0x53), lOginatt[-0x1c1c + 0x196 * -0xb + 0x2d8f] + (-0xf17 + 0x19e2 + -0xac7 * 0x1), cust ? rect : def_rect), Render['GradientRect'](bAz['jICuW'](world_stand[0x654 * 0x2 + 0xd2f + -0x19d7], -0x3 * 0x93 + -0x32d * 0x5 + -0x469 * -0x4), bAz['cwCFY'](world_stand[-0x17e5 + -0x1 * -0x2333 + -0x1 * 0xb4d], lOginatt[-0x1d20 + -0x217b + 0x2 * 0x1f4e] / (-0x20a8 + -0x1a9c + 15173.5)), bAz['jICuW'](lOginatt[0x11fa + 0xb21 + -0x1d1b], -0x3 * 0x75b + 0x2540 + -0xf2a), 0x12cb * 0x1 + -0x934 + -0x995, 0x711 * -0x1 + -0x8e1 * -0x2 + -0xab0, cust ? grad[-0x4c1 * 0x7 + -0x20 * 0x64 + -0x1 * -0x2dc7] : def_grad[0x17 * -0x15d + -0x21c8 * -0x1 + -0x17 * 0x1b], cust ? grad[-0x4d5 * -0x5 + -0x23eb + 0xbc3] : def_grad[0x14d7 * 0x1 + 0x8a6 + -0x1d7c]), shadow(world_stand[0xa80 + -0x21bd + 0x173d] + (0xf17 + 0x1 * -0x16eb + 2016.5), world_stand[-0x3ce * -0x2 + 0x6b9 + -0x72a * 0x2] - (-0x3d4 + 0x1 * -0x2041 + 0x241a), -0x1273 + 0x1 * 0x17b + 0x10f8, map_cache[g][0x2 * 0x531 + -0x274 + 0x7ea * -0x1], ![], undefined, cust ? text_c : def_text, -0x2349 + 0x10f1 * 0x1 + 0x24c * 0x8);
    if (bAz['rYxTH'](gEtusername, 0xb2 * -0x1a + -0x24e4 + 0x373e)) return;
    Render['Circle'](uSerlist[0x217c + 0x1187 + -0x3303], uSerlist[0x1f65 + -0x1c6a + -0x17d * 0x2], -0x5 * -0x6aa + -0x2 * 0xb06 + -0xb45 * 0x1, cust ? circle_int : def_circle_int), Render['FilledRect'](uSerlist[0x9 * -0x277 + 0x15d * 0x10 + 0x5f] + (0x11 * 0x1bf + 0xeb1 * -0x1 + -0xef4), uSerlist[-0x685 + 0x1 * 0x1c4b + -0x1 * 0x15c5] - bAz['ZWPxl'](lOginatt[-0x1a50 + -0x1 * 0x109d + -0x44b * -0xa], 0x1d6d + -0x90 + -7387.5), lOginatt[0x1307 + -0x2d4 * 0x4 + -0x18b * 0x5] > fOo[0x23 * -0xfd + -0x636 + 0x28cd] ? bAz['PQAoI'](lOginatt[-0x1d2f + 0x1a06 * 0x1 + -0x1 * -0x329], 0x27 * 0x87 + 0x193 * 0x17 + 0x38c1 * -0x1) : bAz['PQAoI'](fOo[0xae1 * -0x2 + -0x1a8a + -0x2c * -0x119], -0x1990 + -0x260f + 0x4 * 0xfe9), bAz['ChUtX'](lOginatt[0x15ec + -0x5f6 + 0x5f * -0x2b], fOo[0x2 * -0x12f3 + 0x1f1 * 0xd + 0xcaa]) ? lOginatt[0x1 * -0x20bf + -0x49d * -0x6 + 0x512] + (-0x225a + 0x182 * -0xf + 0x3907 * 0x1) : fOo[-0x9e * 0x23 + -0x1ca2 + 0x323d] + (-0x26b5 + 0xdb * -0xb + -0x302d * -0x1), cust ? rect : def_rect), Render['GradientRect'](bAz['PQAoI'](uSerlist[-0x1f1e + -0x8 * -0x1f7 + 0x12 * 0xdb], -0x1607 + 0x1422 + 0x21 * 0xf), bAz['cwCFY'](uSerlist[-0x87d + 0x9e6 + 0x5 * -0x48], lOginatt[0x1c09 + -0x4a4 * 0x1 + -0x1764] / (0x842 + 0xad * -0xa + -382.5)), lOginatt[0x5 * 0x2c5 + 0x2f1 + -0x10ca] > fOo[0x1ae3 * 0x1 + -0x2 * -0xfb5 + 0x136f * -0x3] ? bAz['PQAoI'](lOginatt[-0x1b81 + 0x1 * 0x22d1 + -0x750], -0x424 + 0x154c + 0x6b * -0x29) : fOo[0x1 * 0x10ad + 0xa6 + 0x5 * -0x377] + (0x1b8f + -0x1 * 0xaad + -0x10dd), -0x440 + -0x1 * -0x18b3 + -0x1471, 0x9c * 0x8 + 0xbbf + -0x109e, cust ? grad[0x1 * -0x1ec7 + 0x626 + -0x5 * -0x4ed] : def_grad[-0x216 * 0x6 + -0x1fe5 + 0x1 * 0x2c69], cust ? grad[0x22ef + -0xc * -0x101 + -0x2efa * 0x1] : def_grad[0x3ab * -0x5 + -0x169 * -0x19 + -0x10e9]), bAz['hDzSZ'](shadow, bAz['HPHfX'](uSerlist[-0x1 * 0x2207 + -0x1 * 0x1b1f + 0x3d26], -0x7cc + -0x1 * -0x132b + -2898.5), bAz['cwCFY'](uSerlist[0x16e1 * -0x1 + -0x6fd + -0x9f5 * -0x3], 0x1644 + 0x2 * -0x655 + -0x995 * 0x1), -0x2 * 0x116f + 0x174b + 0x1 * 0xb93, map_cache[g][-0x228f + 0x164d + -0xc46 * -0x1], ![], undefined, cust ? text_c : def_text, -0x21a * 0x12 + 0x178d + 0xe4f), shadow(bAz['OfCmn'](uSerlist[-0xa4d * 0x2 + -0xf6b * 0x1 + -0x1 * -0x2405], 0x5d4 * 0x1 + 0x158e + -6997.5), bAz['DzGbS'](uSerlist[-0x1 * -0x1c3d + 0x2169 * -0x1 + 0x52d], -0xbcd * 0x3 + 0x3 * 0x4b4 + 5457.5), -0x13d3 + -0x1cf5 + 0x30c8, map_cache[g][-0x10dc + -0x1 * -0x2041 + -0xa4 * 0x18], ![], undefined, cust ? text_c : def_text, -0x14e2 + 0x4b * -0x39 + 0x259d), Render['Circle'](uSerlist[0x1 * -0x740 + -0xd * -0x241 + -0x160d * 0x1], uSerlist[0xad8 + 0x3a * -0xc + 0x15 * -0x63], 0x119a + -0x537 + -0xc5d, [-0x2536 + 0x251 * -0x1 + 0x1 * 0x27bf, -0x1 * -0x98f + 0x1c2f + -0x24f6, -0xd * 0xcd + 0x9bc + -0xe5 * -0x1, -0x23e3 + -0x11b * 0xf + 0x3577]), Render['Line'](Render['GetScreenSize']()[0x1 * -0x8ef + -0xabd + 0x4 * 0x4eb] / (-0xa06 + -0x8e9 * -0x4 + -0x1 * 0x199c), Render['GetScreenSize']()[0x1cf4 + -0x1769 + -0x2 * 0x2c5] / (0x1690 + 0x5b9 * 0x1 + -0x13 * 0x17d), uSerlist[0x15af * 0x1 + 0x1242 + -0x27f1], uSerlist[0x2691 + -0xc1 * 0x29 + -0x7a7], cust ? line : def_line);
}
}

function on_chat() {
var aUTh = {
        'Sdajl': '4|0|1|3|2',
        'vZuIy': 'text',
        'lYIBY': 'Please hold a valid grenade!',
        'IKGHS': function (AUTh, GETusername) {
            return AUTh + GETusername;
        },
        'yDIDJ': function (FACtor, USErsname) {
            return FACtor == USErsname;
        },
        'xijrK': 'Half throw',
        'crjMS': function (BAZ, USErlist) {
            return BAZ(USErlist);
        },
        'VzBag': function (LOG1n, whiTelist) {
            return LOG1n(whiTelist);
        },
        'UnGdc': 'Jump+Half throw',
        'IMIcl': function (useRsname, autH) {
            return useRsname == autH;
        },
        'eRTUb': 'How far should you run (in ticks) to throw this nade? (default = 22)',
        'ErTyV': function (facTor, getUsername) {
            return facTor + getUsername;
        },
        'VEbRW': function (log1N, useRlist) {
            return log1N + useRlist;
        },
        'zSFkZ': function (logInatt, WhiTelist) {
            return logInatt + WhiTelist;
        },
        'OAYwp': function (FacTor, GetUsername) {
            return FacTor + GetUsername;
        },
        'HBAlg': function (LogInatt, Log1N) {
            return LogInatt + Log1N;
        },
        'ygdHy': '\", [',
        'VCQpg': '\",\"',
        'wbdMy': '\", \"',
        'smllL': '\", 0 ]\x0a',
        'BIRuT': 'Your grenade is ready to go!\x0a',
        'hjurN': function (AutH, UseRlist) {
            return AutH(UseRlist);
        },
        'LgxiT': function (UseRsname, lOgInatt) {
            return UseRsname > lOgInatt;
        },
        'PfzYf': function (gEtUsername, aUtH) {
            return gEtUsername(aUtH);
        },
        'UQtCD': 'Please enter a number!',
        'uKYZB': function (uSeRlist, fAcTor) {
            return uSeRlist(fAcTor);
        },
        'mllRm': function (lOg1N, wHiTelist) {
            return lOg1N(wHiTelist);
        },
        'RkzlI': function (uSeRsname, AUtH) {
            return uSeRsname(AUtH);
        },
        'BCEEs': 'Your grenade is ready to go, check console!',
        'EXIEy': function (FAcTor, WHiTelist) {
            return FAcTor + WHiTelist;
        },
        'zjrfd': function (LOgInatt, USeRsname) {
            return LOgInatt + USeRsname;
        },
        'wgBdV': function (LOg1N, USeRlist) {
            return LOg1N + USeRlist;
        },
        'eHgQX': function (GEtUsername, loGInatt) {
            return GEtUsername + loGInatt;
        },
        'AxHqS': '[ \"',
        'DLCKS': '], [',
        'yLSbT': '], \"',
        'jKJsz': function (geTUsername, whITelist) {
            return geTUsername + whITelist;
        },
        'QCGun': function (faCTor, usERlist) {
            return faCTor + usERlist;
        },
        'vedDa': function (auTH, loG1N) {
            return auTH + loG1N;
        },
        'TenFe': function (usERsname, GeTUsername) {
            return usERsname(GeTUsername);
        },
        'pJJwQ': ' ]\x0a',
        'ePEGi': 'quit'
    },
    bAR = aUTh['Sdajl']['split']('|'),
    bAZ = 0x1e73 * 0x1 + 0x8a7 + -0x271a;
while (!![]) {
    switch (bAR[bAZ++]) {
    case '0':
        if (!Entity['IsLocalPlayer'](Entity['GetEntityFromUserID'](Event['GetInt']('userid'))) || !chat_tut) return;
        continue;
    case '1':
        var uSErlist = Event['GetString'](aUTh['vZuIy']);
        continue;
    case '2':
        if (chat_stage == -0x1 * -0x470 + -0x136 * 0x1d + 0x51d * 0x6) {
            if (!~GRENADE_TYPES['indexOf'](Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())))) return Cheat['PrintChat'](aUTh['lYIBY']);
            temp_nade[-0x125 * 0x13 + 0x4a4 + 0x111b] = World['GetMapName'](), temp_nade[0x239a + -0x641 + -0x1d58] = Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), temp_nade[0x1589 + 0x1af * -0x7 + -0x1d * 0x56] = Local['GetViewAngles'](), temp_nade[-0x1 * 0x1eb2 + -0x2697 + 0x14 * 0x377] = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), temp_nade[0x58 * 0x60 + 0x12cb + 0x5 * -0xa5b] = aUTh['IKGHS'](uSErlist, ''), Cheat['PrintChat']('How do you throw this grenade? (0 = Throw, 1 = Run+Throw, 2 = Jump+Throw, 3 = Run+Jump+Throw, 4 = Half throw, 5 = Jump+Half throw)'), chat_start = Globals['Curtime'](), chat_stage++;
        } else {
            if (aUTh['yDIDJ'](chat_stage, -0xa32 + -0x119b + 0x1bce)) {
                var fACtor = '6|1|7|8|4|0|2|5|3' ['split']('|'),
                    fOO = -0x1 * 0x1991 + -0x217 + 0x938 * 0x3;
                while (!![]) {
                    switch (fACtor[fOO++]) {
                    case '0':
                        if (parseInt(uSErlist) == 0x1a6f + -0xb3 * -0x35 + -0x3f7a) temp_nade[0x2660 + -0xf11 + -0x174a] = aUTh['xijrK'];
                        continue;
                    case '1':
                        if (aUTh['yDIDJ'](aUTh['crjMS'](parseInt, uSErlist), -0x834 + -0x957 + 0x118b)) temp_nade[-0x88c * -0x4 + -0x21f2 + 0x1 * -0x39] = 'Throw';
                        continue;
                    case '2':
                        if (aUTh['VzBag'](parseInt, uSErlist) == -0x170e * -0x1 + -0x160d + -0xfc) temp_nade[-0x102f * -0x1 + 0x1 * -0x1357 + 0x32d] = aUTh['UnGdc'];
                        continue;
                    case '3':
                        if (aUTh['IMIcl'](aUTh['VzBag'](parseInt, uSErlist), 0x1 * -0xcd7 + -0xc28 + -0xa0 * -0x28)) chat_stage = 0x636 + 0x902 + -0x1 * 0xf35, Cheat['PrintChat'](aUTh['eRTUb']);
                        else {
                            if (aUTh['IMIcl'](parseInt(uSErlist), 0x5ce * -0x2 + -0x11e1 * 0x2 + 0x2f61 * 0x1)) chat_stage = -0x2313 + -0x704 + 0xe09 * 0x3, Cheat['PrintChat']('How far should you run (in units) to throw this nade? (default = 80)');
                            else {
                                var gETusername = '5|2|7|3|0|4|6|1' ['split']('|'),
                                    uSErsname = -0x17 * -0xbc + 0x2022 + -0x3106;
                                while (!![]) {
                                    switch (gETusername[uSErsname++]) {
                                    case '0':
                                        chat_stage = 0x25c0 + 0x1 * 0x1e58 + -0x4418;
                                        continue;
                                    case '1':
                                        chat_start = -0x5c9 * -0x1 + -0x18a1 + 0x12d8;
                                        continue;
                                    case '2':
                                        Cheat['PrintChat']('Your grenade is ready to go, check console!');
                                        continue;
                                    case '3':
                                        Cheat['Print'](aUTh['IKGHS'](aUTh['ErTyV'](aUTh['VEbRW'](aUTh['zSFkZ'](aUTh['OAYwp'](aUTh['HBAlg'](aUTh['HBAlg']('[ \"', World['GetMapName']()), aUTh['ygdHy']) + Entity['GetEyePosition'](Entity['GetLocalPlayer']()), '], ['), Local['GetViewAngles']()) + '], \"', Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()))), aUTh['VCQpg']) + temp_nade[-0x19cd + -0x1280 + 0x2c51], aUTh['wbdMy']) + temp_nade[-0x1 * -0x1e7 + 0x9b * 0x3 + 0x1 * -0x3b3] + aUTh['smllL']);
                                        continue;
                                    case '4':
                                        chat_tut = ![];
                                        continue;
                                    case '5':
                                        temp_nade[0x8b5 + 0x1dd9 + -0x2688] = 0x100b + -0x1c54 + 0xc49;
                                        continue;
                                    case '6':
                                        temp_nade = [];
                                        continue;
                                    case '7':
                                        Cheat['Print'](aUTh['BIRuT']);
                                        continue;
                                    }
                                    break;
                                }
                            }
                        }
                        continue;
                    case '4':
                        if (aUTh['hjurN'](parseInt, uSErlist) == -0xb * 0x36d + 0x7 * 0x1e1 + 0x1 * 0x188b) temp_nade[-0x11a4 + 0x1 * 0xf03 + 0x3 * 0xe2] = 'Run+Jump+Throw';
                        continue;
                    case '5':
                        chat_start = Globals['Curtime']();
                        continue;
                    case '6':
                        if (aUTh['hjurN'](isNaN, parseInt(uSErlist)) || aUTh['LgxiT'](aUTh['PfzYf'](parseInt, uSErlist), -0xba8 * 0x1 + -0x1b81 + 0x272e) || parseInt(uSErlist) < -0x1a * 0x53 + -0x8e6 + 0x2 * 0x8aa) return Cheat['PrintChat'](aUTh['UQtCD']);
                        continue;
                    case '7':
                        if (parseInt(uSErlist) == 0x93d + -0xc * 0xb + 0x18 * -0x5d) temp_nade[-0x13c7 + -0x1 * -0x194e + 0xa * -0x8d] = 'Run+Throw';
                        continue;
                    case '8':
                        if (aUTh['IMIcl'](aUTh['uKYZB'](parseInt, uSErlist), -0x1cb + 0x111b + -0xf4e)) temp_nade[0xb6e + -0x1 * 0x10b1 + 0x548 * 0x1] = 'Jump+Throw';
                        continue;
                    }
                    break;
                }
            } else {
                if (aUTh['IMIcl'](chat_stage, 0x1 * -0x16a3 + 0x1 * -0x2207 + 0x38ad)) {
                    chat_start = Globals['Curtime']();
                    if (aUTh['mllRm'](isNaN, aUTh['mllRm'](parseInt, uSErlist)) || aUTh['RkzlI'](parseInt, uSErlist) < 0x1bf5 + 0x17f2 + 0x33e6 * -0x1) return Cheat['PrintChat']('You must specify a valid time to run!');
                    temp_nade[-0x1 * 0x2ef + -0x54 + 0x1d * 0x1d] = parseInt(uSErlist), Cheat['PrintChat'](aUTh['BCEEs']), Cheat['Print']('Your grenade is ready to go!\x0a'), Cheat['Print'](aUTh['HBAlg'](aUTh['EXIEy'](aUTh['zjrfd'](aUTh['zjrfd'](aUTh['wgBdV'](aUTh['eHgQX'](aUTh['AxHqS'], World['GetMapName']()) + '\", [' + Entity['GetEyePosition'](Entity['GetLocalPlayer']()) + aUTh['DLCKS'], Local['GetViewAngles']()), aUTh['yLSbT']) + Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), '\",\"') + temp_nade[0x14d9 + -0x109 * 0x7 + 0x2f * -0x4a] + '\", \"', temp_nade[0x1e95 + 0x107e + -0x27a * 0x13]) + '\",', parseInt(uSErlist)) + ' ]\x0a'), chat_stage = 0x6 * -0x115 + 0x1af * 0x12 + -0x17d0, chat_tut = [], temp_nade = [], chat_start = 0x2318 * 0x1 + 0x70e + -0x2a26;
                } else {
                    if (chat_stage == 0x13d4 + 0xef * 0x4 + -0x178c * 0x1) {
                        var WHItelist = '4|0|6|3|7|9|1|2|8|5' ['split']('|'),
                            FOO = 0x1e66 + 0x1b4f + -0x39b5;
                        while (!![]) {
                            switch (WHItelist[FOO++]) {
                            case '0':
                                if (isNaN(parseInt(uSErlist)) || parseInt(uSErlist) < -0x11c + 0x17e2 + -0x16c5) return Cheat['PrintChat']('You must specify a valid distance to run!');
                                continue;
                            case '1':
                                chat_stage = -0x2403 + 0x2 * -0x1388 + 0x4b13;
                                continue;
                            case '2':
                                chat_tut = [];
                                continue;
                            case '3':
                                Cheat['PrintChat']('Your grenade is ready to go, check console!');
                                continue;
                            case '4':
                                chat_start = Globals['Curtime']();
                                continue;
                            case '5':
                                chat_start = 0x84e + 0x7ac * -0x3 + 0xeb6;
                                continue;
                            case '6':
                                temp_nade[0x503 * 0x7 + 0x11f + -0x242e] = aUTh['RkzlI'](parseInt, uSErlist);
                                continue;
                            case '7':
                                Cheat['Print'](aUTh['BIRuT']);
                                continue;
                            case '8':
                                temp_nade = [];
                                continue;
                            case '9':
                                Cheat['Print'](aUTh['jKJsz'](aUTh['jKJsz'](aUTh['QCGun'](aUTh['vedDa'](aUTh['vedDa']('[ \"' + World['GetMapName']() + '\", [' + Entity['GetEyePosition'](Entity['GetLocalPlayer']()), aUTh['DLCKS']), Local['GetViewAngles']()), '], \"') + Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), '\",\"') + temp_nade[0x265 * 0xd + 0x1336 + 0x3df * -0xd] + '\", \"' + temp_nade[-0x1 * -0x264f + 0xd58 + -0x89b * 0x6] + '\",', aUTh['TenFe'](parseInt, uSErlist)) + aUTh['pJJwQ']);
                                continue;
                            }
                            break;
                        }
                    }
                }
            }
        }
        continue;
    case '3':
        if (uSErlist['toLowerCase']() == 'cancel') {
            var LOGinatt = '0|4|5|1|2|3' ['split']('|'),
                BAR = -0x1 * -0x2542 + -0x657 + -0x1eeb;
            while (!![]) {
                switch (LOGinatt[BAR++]) {
                case '0':
                    chat_tut = ![];
                    continue;
                case '1':
                    chat_start = -0x8 * 0x266 + 0xa1 * -0x8 + 0x1838;
                    continue;
                case '2':
                    Cheat['PrintChat']('You have cancelled this grenade setup!');
                    continue;
                case '3':
                    return;
                case '4':
                    temp_nade = [];
                    continue;
                case '5':
                    chat_stage = -0x25e1 + 0x396 + -0x224b * -0x1;
                    continue;
                }
                break;
            }
        }
        continue;
    case '4':
        continue;
    }
    break;
}
}
Cheat['RegisterCallback']('player_say', 'on_chat'), Cheat['RegisterCallback']('Draw', 'render_grenades');
var locations = _locations['locations'],
lerp_time = 0xffa + -0xfab + 0x1 * -0x4f,
map_cache = [],
enabled_grenades = [],
selection_cache = -0x23e + 0x8 * -0xd6 + 0x8ee,
hand_cache = 0x7 * 0x283 + -0xf * 0x8f + -0x934;
const GRENADE_TYPES = ['CMolotovGrenade', 'CSmokeGrenade', 'CHEGrenade', 'CIncendiaryGrenade', 'CFlashbang'];
import_grenade_selection();
var weapon = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (weapon == 'CIncendiaryGrenade') weapon = 'CMolotovGrenade';
map_cache = locations['filter'](function (WhITelist) {
var AuTH = {
    'WvwYM': function (FaCTor, LoGInatt) {
        return FaCTor == LoGInatt;
    }
};
return WhITelist[-0x37b * -0x9 + -0x1 * 0xd6 + 0x1e7d * -0x1] == World['GetMapName']() && ~enabled_grenades['indexOf'](WhITelist[-0x6f7 * 0x2 + -0x12ff * -0x2 + -0x180d]) && AuTH['WvwYM'](WhITelist[0x49a + 0x2120 + -0x25b7], weapon);
}), Cheat['RegisterCallback']('CreateMove', 'print_nade_stats');
var loc_string_cache = UI['GetString'](nade_path['concat']('Locations file name (.js)')),
waiting_for_refresh = ![];

function drawer13233() {
var UsERlist = {
        'pFjIK': function (USERsname, USERlist, LOGInatt, LOG1N, AUTH, WHITelist, getuSername, userList, factOr) {
            return USERsname(USERlist, LOGInatt, LOG1N, AUTH, WHITelist, getuSername, userList, factOr);
        },
        'PRUTT': function (userSname, whitElist) {
            return userSname != whitElist;
        },
        'eVlzX': function (logiNatt, LogiNatt) {
            return false;
        },
        'nFGuP': 'locations.js',
        'jhIPd': function (FactOr, WhitElist) {
            return FactOr != WhitElist;
        },
        'FiyFs': function (GetuSername, UserList) {
            return GetuSername + UserList;
        },
        'nECUF': 'ser',
        'FNzwt': 'nam',
        'XqLNf': 'Circle',
        'gUMJH': 'Line',
        'pEtTA': 'Misc.',
        'tRBXm': 'SUBTAB_MGR',
        'ylVlU': 'Grenade helper',
        'eCGTf': 'Background',
        'Szyzi': 'Gradient 1',
        'LmcWN': 'SHEET_MGR',
        'rNAfX': 'Circle interior',
        'eVJDS': 'CIncendiaryGrenade',
        'OOPVM': function (UserSname) {
        },
        'mfgdy': function (uSerSname) {
        },
        'EmCLX': function (wHitElist, fActOr) {
            return wHitElist > fActOr;
        },
        'KwXIJ': 'Enabled grenades',
        'QChcY': 'Draw through walls (discord.gg/vz9G9VW)',
        'Aousf': function (gEtuSername, uSerList, lOgiNatt) {
            return gEtuSername(uSerList, lOgiNatt);
        },
        'Ntuyp': function (GEtuSername, LOgiNatt) {
            return GEtuSername * LOgiNatt;
        },
        'QbPTo': function (USerList, WHitElist) {
            return USerList + WHitElist;
        },
        'BXHVv': function (FActOr, USerSname) {
            return FActOr * USerSname;
        },
        'gVObY': function (faCtOr, geTuSername) {
            return faCtOr / geTuSername;
        },
        'SuQpr': function (usErSname, whItElist) {
            return usErSname + whItElist;
        },
        'xKNnB': function (usErList, loGiNatt) {
            return usErList + loGiNatt;
        },
        'AnnyB': function (UsErSname, LoGiNatt) {
            return UsErSname - LoGiNatt;
        },
        'QcYvE': function (UsErList, WhItElist, GeTuSername, FaCtOr, gETuSername, lOGiNatt, uSErSname, fACtOr, wHItElist) {
            return UsErList(WhItElist, GeTuSername, FaCtOr, gETuSername, lOGiNatt, uSErSname, fACtOr, wHItElist);
        },
        'yhGWr': function (uSErList, USErList) {
            return uSErList > USErList;
        },
        'mZoAN': function (FACtOr, LOGiNatt) {
            return FACtOr + LOGiNatt;
        },
        'MaVzw': function (USErSname, GETuSername) {
            return USErSname + GETuSername;
        },
        'bOGws': function (WHItElist, whiTElist) {
            return WHItElist / whiTElist;
        },
        'hMCtZ': function (facTOr, logINatt, getUSername, useRSname, useRList, UseRSname, LogINatt, FacTOr, WhiTElist) {
            return facTOr(logINatt, getUSername, useRSname, useRList, UseRSname, LogINatt, FacTOr, WhiTElist);
        }
    },
    LoG1N = Render['GetFont']('verdana.ttf', 10, true);
UI['GetValue'](key_path['concat']('Auto smoke in molotov')) == -0x1b4c + -0x8 * 0x3f2 + 0x1 * 0x3add && UsERlist['pFjIK'](shadow, -0x1 * 0x1767 + -0x166 + 0x94 * 0x2b, Render['GetScreenSize']()[0x199c + -0x1 * -0x261f + 0x6 * -0xa9f] * (-0x21ae + -0x35 * -0x61 + 3481.75), 0x638 * -0x4 + 0xdd + -0x801 * -0x3, 'SMOKE', !![], LoG1N, [0x11ab + 0x733 * 0x2 + -0x1f60, -0x9 * 0x3fa + 0x1f * 0x106 + 0x413, 0x7ff + -0x1b38 + -0x7 * -0x2e3, 0x1619 * -0x1 + 0x3 * -0x6f3 + -0x3a * -0xc1], 0x732 + -0xf6 * -0x1 + 0x40f * -0x2);
var UsERsname = UI['GetString'](nade_path['concat']('Locations file name (.js)'));
UsERlist['PRUTT'](UsERsname, 'locations.js') && UsERsname != '' && ~UsERsname['indexOf']('.js') ? (_locations = UsERlist['eVlzX'](require, UsERsname), locations = _locations['locations']) : (_locations = require(UsERlist['nFGuP']), locations = _locations['locations']);
UsERlist['PRUTT'](UsERsname, 'locations.js') && UsERlist['jhIPd'](UsERsname, '') && ~UsERsname['indexOf']('.js') && loc_string_cache != UsERsname && (loc_string_cache = UsERsname, set_map_cache());
var uSERlist = config[UsERlist['FiyFs']('Ge' + 'tU' + UsERlist['nECUF'], UsERlist['FNzwt']) + 'e'];
var fACTor = UI['GetValue'](nade_path['concat']('Custom colors')) ? 0xbf + -0x1 * -0x1232 + -0x12f0 : 0x1d2b + -0x91a * -0x1 + 0x1 * -0x2645;
UI['SetEnabled'](nade_path['concat']('Background'), fACTor), UI['SetEnabled'](nade_path['concat']('Gradient 1'), fACTor), UI['SetEnabled'](nade_path['concat']('Gradient 2'), fACTor), UI['SetEnabled'](nade_path['concat']('Text'), fACTor), UI['SetEnabled'](nade_path['concat'](UsERlist['XqLNf']), fACTor), UI['SetEnabled'](nade_path['concat']('Circle interior'), fACTor), UI['SetEnabled'](nade_path['concat'](UsERlist['gUMJH']), fACTor);
fACTor && (rect = UI['GetColor']([UsERlist['pEtTA'], UsERlist['tRBXm'], 'Grenade helper', 'SHEET_MGR', UsERlist['ylVlU'], UsERlist['eCGTf']]), grad[-0xfca + 0x2c * -0x73 + -0x238e * -0x1] = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper', UsERlist['Szyzi']]), grad[0x828 + -0x1710 + 0xee9] = UI['GetColor'](['Misc.', UsERlist['tRBXm'], 'Grenade helper', 'SHEET_MGR', 'Grenade helper', 'Gradient 2']), text_c = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper', 'Text']), circle = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', UsERlist['LmcWN'], UsERlist['ylVlU'], 'Circle']), circle_int = UI['GetColor'](['Misc.', 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', UsERlist['ylVlU'], UsERlist['rNAfX']]), line = UI['GetColor'](['Misc.', 'SUBTAB_MGR', UsERlist['ylVlU'], 'SHEET_MGR', 'Grenade helper', 'Line']));
var gETUsername = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (gETUsername == UsERlist['eVJDS']) gETUsername = 'CMolotovGrenade';
waiting_for_refresh && (~GRENADE_TYPES['indexOf'](gETUsername) && (UsERlist['OOPVM'](set_map_cache), waiting_for_refresh = ![]));
location_cache != UsERlist['eVlzX'](deserializeLocationConfiguration, UsERlist['mfgdy'](uSERlist)) && (moving_now = !![]);
chat_tut && UsERlist['EmCLX'](Globals['Curtime']() - chat_start, -0x4b4 + 0xe83 + -0xd0 * 0xc) && chat_start != 0x17de + -0x2 * 0x7cc + -0x846 && (chat_stage = 0x1bd * -0x6 + -0x185b * 0x1 + 0x22c9, chat_start = 0x3d * -0x32 + 0x83 * -0x17 + -0x8d * -0x2b, chat_tut = ![], temp_nade = [], Cheat['PrintChat']('Grenade setup has timed out!'));
if (!~GRENADE_TYPES['indexOf'](gETUsername)) return;
(selection_cache != UI['GetValue'](nade_path['concat'](UsERlist['KwXIJ'])) || hand_cache != gETUsername || !~GRENADE_TYPES['indexOf'](gETUsername)) && (UsERlist['mfgdy'](import_grenade_selection), set_map_cache());
if (map_cache['length'] == 0x1d5d + 0x12d7 + 0x4 * -0xc0d) return;
for (var aUTH in map_cache) {
    var wHITelist = Render['WorldToScreen']([map_cache[aUTH][-0x7 * 0x164 + -0x2 * -0x1177 + -0x1931][-0x1832 + 0x249e + -0xc6c], map_cache[aUTH][-0x1434 + -0x11bc + 0x25f1][-0x1 * -0x6b6 + -0x206d * 0x1 + 0x19b8], map_cache[aUTH][-0x6 * -0x2b0 + -0x1d3 * -0x4 + 0x4af * -0x5][0xd7c * 0x1 + 0x1b98 * -0x1 + 0xe1e] - (0x810 + -0x1 * 0x320 + 0x1 * -0x4b1)]);
    if (!map_cache[aUTH][0x8 * -0x22 + -0x1050 + 0x1167] && !UI['GetValue'](['Misc.', UsERlist['tRBXm'], UsERlist['ylVlU'], UsERlist['LmcWN'], 'Grenade helper', UsERlist['QChcY']])) continue;
    var lOG1N = UsERlist['Aousf'](angle_to_vec, map_cache[aUTH][-0xa * 0xc5 + 0xc7c * 0x1 + 0x33 * -0x18][0x891 + 0x8b2 + 0x9 * -0x1eb], map_cache[aUTH][-0x1 * 0xd22 + -0x26b5 + 0x33d9][-0x7c * 0x1a + -0xd0a * -0x1 + -0x71 * 0x1]),
        uSERsname = map_cache[aUTH][-0x897 + 0x7c + 0x207 * 0x4];
    lOG1N = Render['WorldToScreen']([uSERsname[0x2257 + -0x29 * 0x95 + -0x3 * 0x37e] + UsERlist['Ntuyp'](lOG1N[-0xc47 * -0x3 + 0x1 * 0x22d1 + 0x1 * -0x47a6], 0xca3 + 0xf1 * -0x19 + 0xc76), UsERlist['QbPTo'](uSERsname[-0x1 * -0x15f7 + -0x1 * 0x1206 + -0x3f0], UsERlist['BXHVv'](lOG1N[-0x1b44 + -0x1237 * 0x1 + -0x2d7c * -0x1], -0xb5 * 0x22 + -0x1633 * 0x1 + 0x2fcd)), uSERsname[-0xca1 + 0x29 * 0x57 + -0x14c] + lOG1N[-0x1b * 0xaf + 0x126a + -0xd * -0x1] * (-0x24dc * -0x1 + 0x19 + -0x2365)]);
    var lOGInatt = calc_dist(Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), map_cache[aUTH][0x1 * -0x97 + -0x1e91 * 0x1 + -0x1 * -0x1f29]);
    Render['Circle'](wHITelist[0x208d + -0x5 * 0x75b + 0x43a], wHITelist[0x1979 * 0x1 + 0x1 * -0x16fe + 0x1 * -0x27a], 0x7 * -0x2fe + -0x137a + -0x14e * -0x1f, fACTor ? circle : def_circle), Render['Circle'](wHITelist[-0x2107 + 0x863 + -0xa6 * -0x26], wHITelist[0x3d * -0x76 + 0x11b5 + -0x2b * -0x3e], -0x6d * -0x3d + -0x55d * 0x4 + -0x484, fACTor ? circle_int : def_circle_int);
    var GETUsername = Render['TextSize'](map_cache[aUTH][0x7e4 * -0x2 + -0x105d + -0x2029 * -0x1], LoG1N),
        FACTor = Render['TextSize'](map_cache[aUTH][0x1c1c + 0x7 * -0x419 + -0x98 * -0x1], LoG1N);
    Render['FilledRect'](wHITelist[-0x33 * 0x48 + 0x1757 + -0x2f * 0x31] + (-0x9f1 * 0x1 + -0xb99 + 0x1593), wHITelist[0x214d + -0xe81 + -0x12cb] - UsERlist['gVObY'](GETUsername[-0x128 * -0x12 + -0x1 * -0x1204 + -0x26d3 * 0x1], -0x984 + 0x2b6 + 1743.5), UsERlist['SuQpr'](GETUsername[0x35 * -0x68 + 0x4a6 + 0x10e2], 0x121f * -0x1 + 0x1 * -0x243a + -0x6cc * -0x8), UsERlist['xKNnB'](GETUsername[0xd9d + 0xb9d + -0x1939], 0x263b + 0x2 * 0x610 + -0x7 * 0x731), fACTor ? rect : def_rect), Render['GradientRect'](wHITelist[0x1 * -0x5ab + 0x4dc + 0xcf] + (0x1ce0 + -0x1b * -0x89 + -0x62f * 0x7), UsERlist['AnnyB'](wHITelist[0x880 + -0x6be + -0x1c1], UsERlist['gVObY'](GETUsername[0xa30 + 0x1781 + -0x4d0 * 0x7], 0x1aa4 + -0x6fa * 0x4 + 325.5)), GETUsername[-0x210 + 0x1ad5 * 0x1 + -0x18c5] + (0x2ed * -0x3 + -0x2 * 0xdd6 + 0x614 * 0x6), 0x2477 + 0x12 * 0x6b + -0x2bfb, 0x69d + 0x25f5 + -0x2c91, fACTor ? grad[-0x65c + 0x17 * 0x14e + -0x17a6] : def_grad[-0x17ec + -0xe32 * 0x2 + 0x3450], fACTor ? grad[-0x225 * -0xf + 0x1 * 0xb0f + -0x2b39] : def_grad[0x43f + 0x3 * 0x64b + -0x171f]), UsERlist['QcYvE'](shadow, wHITelist[-0x1f47 + 0xad5 + -0xa39 * -0x2] + (-0x166e + -0xfaa + 9764.5), UsERlist['AnnyB'](wHITelist[0x8bf + -0x58 * -0x2 + 0x8e * -0x11], 0x26e3 + 0x65d * -0x3 + -0x2 * 0x9e3), -0xf5 * -0x1d + 0x2ab + -0x1e6c, map_cache[aUTH][-0xffb + 0x1dfd + -0xdfe], !![], LoG1N, fACTor ? text_c : def_text, -0x6 * -0x662 + 0x453 * 0x8 + -0x48da);
    if (UsERlist['yhGWr'](lOGInatt, 0x2328 + -0x26ce + 0x3ec)) continue;
    Render['Circle'](lOG1N[0x579 + -0xeb3 + 0x93a], lOG1N[-0x269c + -0x633 + 0xef0 * 0x3], 0x1987 + 0x86b * 0x1 + -0x21f1, fACTor ? circle_int : def_circle_int), Render['FilledRect'](lOG1N[0x5c4 + -0x2 * -0x9ba + 0x8 * -0x327] + (-0x79a * 0x1 + 0x32b + 0x479), lOG1N[0x13c1 + 0x2443 * -0x1 + 0x1083] - UsERlist['gVObY'](GETUsername[0x3d * -0x77 + 0x22 * -0x9d + 0x3136], -0x529 * -0x4 + 0x1c4 + -5734.5), GETUsername[0xc * -0xb8 + -0x7 * -0xb2 + 0x3c2 * 0x1] > FACTor[0x24de + 0x3 * -0x851 + -0xbeb] ? UsERlist['mZoAN'](GETUsername[0x3 * 0x3cb + 0x131e * -0x1 + 0x7bd], 0x2634 + 0x1 * 0x169c + -0x3ccb) : UsERlist['mZoAN'](FACTor[-0x18a * -0x2 + -0x703 * -0x5 + -0x2623], 0xc * -0x127 + -0x7 * 0x11 + 0xe50), GETUsername[0x1 * -0x23c9 + -0x479 * -0x2 + 0x1ad8] > FACTor[0x1 * 0x17f + 0x26e4 * -0x1 + 0x2 * 0x12b3] ? GETUsername[0x129d + -0x38 * 0x2 + -0x2 * 0x916] + (-0x144f * 0x1 + 0x7 * 0xfc + 0xd7d) : FACTor[0x2 * 0x24a + -0x529 * -0x4 + 0x50b * -0x5] + (-0xc1 * -0xa + -0xd4f + 0x5d7), fACTor ? rect : def_rect), Render['GradientRect'](UsERlist['MaVzw'](lOG1N[-0x1537 * -0x1 + 0x2493 + -0x39ca], -0x131 * 0x10 + -0x36d * 0x3 + -0x1d61 * -0x1), lOG1N[0x2 * -0x11d1 + 0x134 * -0xe + -0x5 * -0xa7f] - UsERlist['bOGws'](GETUsername[0x1 * -0x1ee3 + -0x184d * -0x1 + -0x1 * -0x697], 0x18 * 0x76 + 0x29 * 0x1 + -2871.5), GETUsername[0xe20 * 0x1 + -0xf43 + 0x123] > FACTor[0x1ebf + 0x1a80 + -0x393f] ? GETUsername[-0x3a7 * 0x7 + 0x888 + 0x1109] + (0x2540 + 0x31 * -0x69 + -0x1122) : UsERlist['MaVzw'](FACTor[-0x3 * -0x32 + 0xe16 + 0x1 * -0xeac], -0x243d + 0x1bbf * 0x1 + 0x883), -0x146 * 0x12 + 0x165d * -0x1 + 0x2d4b * 0x1, 0x1e76 + -0x179a + -0x6db, fACTor ? grad[0x1464 + -0x1594 + 0x130] : def_grad[-0x2655 + -0x2103 + -0xc * -0x5f2], fACTor ? grad[-0x1ac5 * 0x1 + -0x1798 * 0x1 + 0x399 * 0xe] : def_grad[-0x1e0f + 0x1 * -0x2045 + 0x3e55]), UsERlist['QcYvE'](shadow, lOG1N[0x505 + 0x234b + 0xa * -0x408] + (0x3a4 + -0x5cf * 0x1 + 567.5), UsERlist['AnnyB'](lOG1N[-0x1102 + 0x2109 * -0x1 + 0x320c], -0xd95 + 0x1bc + 0x2 * 0x5ef), -0x2f * -0xc2 + 0x21d + -0x25bb * 0x1, map_cache[aUTH][0x6a0 + 0xa6 + -0x742], !![], LoG1N, fACTor ? text_c : def_text, -0x27f * 0x2 + 0x1d * -0xe9 + -0x649 * -0x5), UsERlist['hMCtZ'](shadow, lOG1N[0x1a * 0xaa + 0x9 * 0xfa + -0x1a0e] + (-0x2065 * 0x1 + 0xe9 * 0xf + 4810.5), UsERlist['MaVzw'](lOG1N[0x7f9 + -0x162 * -0x3 + -0xc1e], -0xfa8 + -0x1a67 + 10773.5), 0x1 * -0x1069 + -0x1b * 0x6c + 0x1bcd, map_cache[aUTH][0x8ac + 0x14a7 * -0x1 + 0x18 * 0x80], !![], LoG1N, fACTor ? text_c : def_text, -0x2 * 0x31 + 0xd19 * -0x1 + -0xd85 * -0x1), Render['Circle'](lOG1N[0x782 * -0x3 + 0x21ac + -0x2 * 0x593], lOG1N[-0x1243 + -0x2de * -0xa + -0xa68], 0x2366 + -0x1c74 + -0x6ec, [-0x1 * 0x23ab + -0xc3a * -0x2 + -0xb6f * -0x1, 0xf67 * 0x1 + 0x236b + 0x393 * -0xe, -0x585 * 0x2 + -0x311 * -0x3 + 0x20f, -0x336 + 0xb8c + 0x1 * -0x757]), Render['Line'](Render['GetScreenSize']()[-0x2092 + 0x10e8 + 0xfaa] / (0xb * 0x173 + 0xf54 + 0x1f43 * -0x1), Render['GetScreenSize']()[-0x390 * 0x6 + 0x1 * 0xdff + -0x46 * -0x1b] / (0x24f * 0x6 + -0x18ac + 0xad4), lOG1N[0xd20 + -0x82b * -0x1 + 0x154b * -0x1], lOG1N[0x71 * 0x34 + -0x2 * 0x5a7 + -0xba5], fACTor ? line : def_line);
}
UsERlist['jhIPd'](location_cache, UsERlist['eVlzX'](deserializeLocationConfiguration)) && (moving_now = !![]);

}
var use = ![];

function clamp(UseRList, GetUSername, wHiTElist) {
var gEtUSername = {
    'HOJaJ': function (uSeRList, fAcTOr) {
        return uSeRList > fAcTOr;
    },
    'nYaJy': function (lOgINatt, uSeRSname) {
        return lOgINatt < uSeRSname;
    }
};
if (gEtUSername['HOJaJ'](UseRList, wHiTElist)) return wHiTElist;
if (gEtUSername['nYaJy'](UseRList, GetUSername)) return GetUSername;
return UseRList;
}

function lerp(GEtUSername, FAcTOr, USeRList) {
var WHiTElist = {
        'MwADr': function (LOgINatt, usERSname) {
            return LOgINatt - usERSname;
        }
    },
    USeRSname = WHiTElist['MwADr'](FAcTOr, GEtUSername);
return USeRSname *= USeRList, USeRSname += GEtUSername, USeRSname;
}

function set_map_cache() {
var whITElist = {
        'tNSph': function (geTUSername, usERList) {
            return geTUSername == usERList;
        },
        'dugtS': 'CMolotovGrenade',
        'jEBPS': 'CCSPlayer'
    },
    faCTOr = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (whITElist['tNSph'](faCTOr, 'CIncendiaryGrenade')) faCTOr = whITElist['dugtS'];
if (faCTOr == whITElist['jEBPS']) {
    waiting_for_refresh = !![];
    return;
}
map_cache = locations['filter'](function (loGINatt) {
    return loGINatt[-0x1 * 0x327 + 0x2203 * -0x1 + 0x1 * 0x252a] == World['GetMapName']() && ~enabled_grenades['indexOf'](loGINatt[-0x172b * -0x1 + -0x61b + -0x110d]) && loGINatt[-0x543 * -0x1 + 0x1d * -0xda + 0x1372] == faCTOr;
});
}

function check_visibility() {
var WhITElist = {
        'yDuNC': function (uSERList, gETUSername) {
            return uSERList == gETUSername;
        },
        'lbXsx': function (lOGINatt, fACTOr, wHITElist) {
            return lOGINatt(fACTOr, wHITElist);
        },
        'oCvOU': 'CBasePlayer',
        'ONcAM': 'm_vecViewOffset[2]',
        'MzsYT': 'quit'
    },
    UsERList = '4|5|7|1|3|2|6|0' ['split']('|'),
    LoGINatt = 0xbef + 0x1de * 0xd + -0x193 * 0x17;
while (!![]) {
    switch (UsERList[LoGINatt++]) {
    case '0':
        for (var FaCTOr in map_cache) {
            var UsERSname = Trace['Line'](GeTUSername, head, map_cache[FaCTOr][-0x1 * -0x122c + -0x13ab + 0x180]);
            if (map_cache[FaCTOr][-0x25ad + -0x2 * 0x106b + 0x468a] == undefined) map_cache[FaCTOr]['push'](WhITElist['yDuNC'](UsERSname[-0x86f + 0x1 * -0xdb1 + 0x67 * 0x37], 0x1ed1 * 0x1 + 0x1 * -0xb98 + -0x1338));
            else map_cache[FaCTOr][-0x1 * -0xa64 + 0x261d + -0x307a] = UsERSname[-0x23ae + 0x93 * -0x1d + 0x1172 * 0x3] == -0x18be + 0xc37 * -0x1 + 0x13 * 0x1f2;
        }
        continue;
    case '1':
        head = Entity['GetProp'](GeTUSername, 'CBasePlayer', 'm_vecOrigin');
        continue;
    case '2':
        head = WhITElist['lbXsx'](vector_add, head, [-0xc16 * 0x2 + -0xb5a + 0x2 * 0x11c3, -0x2339 + 0x39b * -0x9 + 0x43ac, offset[0x11b * -0x7 + -0x164 * -0x4 + 0x22d]]);
        continue;
    case '3':
        offset = Entity['GetProp'](GeTUSername, WhITElist['oCvOU'], WhITElist['ONcAM']);
        continue;
    case '4':
        if (WhITElist['yDuNC'](World['GetServerString'](), '')) return;
        continue;
    case '5':
        var GeTUSername = Entity['GetLocalPlayer']();
        continue;
    case '6':
        continue;
    case '7':
        eye_angles = Local['GetViewAngles']();
        continue;
    }
    break;
}
}
var angles_met = ![];

function fix_move(uSERSname, USERSname, FACTOr) {
var LOGINatt = {
        'roPBF': '1|0|2|3|4|5',
        'KRePG': function (getusErname, factoR) {
            return getusErname < factoR;
        },
        'WGEHk': function (userlIst, UsersName) {
            return userlIst + UsersName;
        },
        'uksYt': function (UserlIst, FactoR) {
            return UserlIst - FactoR;
        },
        'jfcfL': function (GetusErname, WhiteList) {
            return GetusErname * WhiteList;
        },
        'spiyx': function (LoginAtt, gEtusErname) {
            return LoginAtt(gEtusErname);
        },
        'ekZUH': function (uSerlIst, wHiteList) {
            return uSerlIst + wHiteList;
        }
    },
    GETUSername = LOGINatt['roPBF']['split']('|'),
    WHITElist = -0x1eae + 0x1b1 * -0x1 + 0x205f;
while (!![]) {
    switch (GETUSername[WHITElist++]) {
    case '0':
        var USERList, usersName, loginAtt;
        continue;
    case '1':
        var whiteList = function (lOginAtt) {
            return lOginAtt / (-0x26c0 + 0x4 * 0x19e + -0x20fc * -0x1) * Math['PI'];
        };
        continue;
    case '2':
        if (LOGINatt['KRePG'](USERSname[0x1240 + -0x2e * 0x67 + 0x43], 0x1194 + -0x80b + -0x1 * 0x989)) USERList = LOGINatt['WGEHk'](-0x263 + 0x220b + 0x40 * -0x79, USERSname[0x202e + -0x2176 + -0x7 * -0x2f]);
        else USERList = USERSname[-0x205c + -0x21c5 + 0x4222];
        continue;
    case '3':
        if (LOGINatt['KRePG'](uSERSname[-0x25 * -0xcb + -0x1a6 * 0x3 + -0x1864], -0x1918 + -0xe * -0x7b + 0x92f * 0x2)) usersName = -0x79e * 0x5 + 0x2 * 0x1ac + -0x1 * -0x2426 + uSERSname[-0x8 * 0x18 + 0x16e5 + -0x589 * 0x4];
        else usersName = uSERSname[0x1126 + -0x23ba + 0x1295];
        continue;
    case '4':
        if (LOGINatt['KRePG'](usersName, USERList)) loginAtt = Math['abs'](usersName - USERList);
        else loginAtt = 0x31 * -0xca + 0x1 * -0x3aa + 0x2bbc - Math['abs'](LOGINatt['uksYt'](USERList, usersName));
        continue;
    case '5':
        return [LOGINatt['jfcfL'](Math['cos'](whiteList(loginAtt)), FACTOr[0x700 * 0x3 + 0x2207 + -0x1 * 0x3707]) + Math['cos'](LOGINatt['spiyx'](whiteList, loginAtt + (0x6fe + 0x1 * -0x1228 + 0x5c2 * 0x2))) * FACTOr[0x2466 + -0x29 * -0x4c + -0x1 * 0x3091], LOGINatt['ekZUH'](Math['sin'](whiteList(loginAtt)) * FACTOr[-0x19eb + -0x37b + 0x1d66], Math['sin'](whiteList(LOGINatt['ekZUH'](loginAtt, 0x553 * 0x5 + -0x1ce0 + 0x29b))) * FACTOr[-0x144e * 0x1 + -0x11c2 + 0x2611]), -0x1 * 0x1bc5 + 0x4 * -0x1f1 + 0x2389];
    }
    break;
}
}

function fix_locations() {
if (Cheat['GetUsername']() != Global['GetUsername']())
    while (!![]) {}
}
var lerp_time = 0x111f + 0x236b + -0x348a,
lerp_time_p = -0x80 + 0xbd5 * -0x1 + 0x7 * 0x1c3;

function move_forward(fActoR) {
var uSersName = {
        'Iiere': '5|9|14|6|0|8|1|12|11|10|13|4|7|3|2',
        'XfSrO': 'Throw mode',
        'CRMNY': 'quit',
        'xNfCF': function (FaCtoR, UsErlIst) {
            return FaCtoR && UsErlIst;
        },
        'LNjbh': function (LoGinAtt, GeTusErname, WhIteList, gETusErname) {
            return LoGinAtt(GeTusErname, WhIteList, gETusErname);
        },
        'uzcPA': function (fACtoR, wHIteList) {
            return fACtoR + wHIteList;
        },
        'LTCGM': function (uSErlIst, uSErsName) {
            return uSErlIst / uSErsName;
        },
        'nnPVr': function (lOGinAtt, USErsName) {
            return lOGinAtt - USErsName;
        },
        'GxgRE': function (USErlIst, LOGinAtt) {
            return USErlIst + LOGinAtt;
        },
        'cUtcI': function (GETusErname, FACtoR) {
            return GETusErname * FACtoR;
        },
        'zRCtg': function (WHIteList, whiTeList) {
            return WHIteList < whiTeList;
        }
    },
    USerlIst = uSersName['Iiere']['split']('|'),
    FActoR = -0x75 * -0x1e + -0xb7e + 0x4 * -0x8e;
while (!![]) {
    switch (USerlIst[FActoR++]) {
    case '0':
        var LOginAtt = fix_move(fActoR, geTusErname, GEtusErname);
        continue;
    case '1':
        var USersName = UI['GetValue'](nade_path['concat'](uSersName['XfSrO'])) == 0x830 * -0x4 + -0xcca + 0x2d8c ? !![] : ![];
        continue;
    case '2':
        return !![];
    case '3':
        UserCMD['SetMovement'](LOginAtt);
        continue;
    case '4':
        UserCMD['SetViewAngles'](fActoR, usErsName || angles_met);
        continue;
    case '5':
        var WHiteList = UI['GetValue'](nade_path['concat']('Legit aim smooth'));
        continue;
    case '6':
        var GEtusErname = [0x22f4 + -0x15a4 + -0xb8e, 0xf8f + 0x5 * 0x43e + -0x24c5, -0x3ff + -0x8a2 + 0xca1];
        continue;
    case '7':
        if (!angles_met) return ![];
        continue;
    case '8':
        var usErsName = UI['GetValue'](nade_path['concat']('Throw mode')) == -0x1157 + -0xe * -0x279 + -0x8a3 * 0x2 ? !![] : ![];
        continue;
    case '9':
        var geTusErname = Local['GetViewAngles']();
        continue;
    case '10':
        if (fActoR[-0xe07 + -0x1db0 + 0x2bb9] == undefined) fActoR[0x22cf * -0x1 + -0x1a * -0xbd + 0x535 * 0x3] = -0xfbd + 0x3d * 0x57 + -0x4fe;
        continue;
    case '11':
        continue;
    case '12':
        if (uSersName['xNfCF'](USersName, !angles_met)) {
            usErsName = ![], lerp_time = uSersName['LNjbh'](clamp, uSersName['uzcPA'](lerp_time, Globals['TickInterval']() * ((0x132d + -0x1f3c + 0xc10) / WHiteList)), -0x3e0 + 0x13c9 + -0xfe9, 0x1dc4 + -0x1 * 0x1871 + 0x2 * -0x2a9), lerp_time_p = uSersName['LNjbh'](clamp, lerp_time + Globals['TickInterval']() * (uSersName['LTCGM'](-0x3e9 + -0xb8 * 0x2f + -0x5 * -0x78a, WHiteList) * (-0x13 * 0x6a + 0x1aac + -4813.2)), 0x5a7 * -0x5 + 0xae6 + 0x115d, 0x4ee * -0x4 + -0x48 * -0x6f + -0xb7f);
            var usErlIst = uSersName['nnPVr'](closest[0xb * 0x9b + 0x1 * 0x1791 + 0xf1c * -0x2][0x2 * -0x12c5 + -0x481 * 0x4 + 0x378e], Local['GetViewAngles']()[0x12c5 * -0x2 + 0x1fc0 + 0x5ca]),
                faCtoR = uSersName['nnPVr'](closest[-0x1c74 + 0x15e9 + 0x68d][0x26cb + -0xe03 * 0x1 + -0x18c7 * 0x1], Local['GetViewAngles']()[-0x1cbf + 0x3f * 0x79 + -0x107]);
            while (faCtoR > -0x1 * 0x6e5 + -0x34c + -0x1 * -0xae5) faCtoR -= -0x12fd + -0x1ecd + 0x3332;
            while (faCtoR < -(0xc6a + -0x12bb + 0x705)) faCtoR += 0x247e + -0x3a9 * -0x1 + 0x26bf * -0x1;
            var loGinAtt = uSersName['GxgRE'](usErlIst * lerp_time_p, Local['GetViewAngles']()[-0x2 * -0xda4 + -0x81e * -0x3 + -0x33a2]),
                whIteList = uSersName['cUtcI'](faCtoR, lerp_time) + Local['GetViewAngles']()[0x1 * 0xad3 + 0x430 * -0x2 + -0x272];
            fActoR = [loGinAtt, normalize(whIteList), 0xe5 * -0x8 + -0x34f + 0xa77];
        }
        continue;
    case '13':
        if (uSersName['zRCtg'](Math['abs'](fActoR[0x1899 + 0x4d * -0x6d + 0x830] - UsErsName[0x28f * -0xa + -0x19 * 0x53 + 0x23f * 0xf]), -0x5d0 + 0x33d + 659.02) && uSersName['zRCtg'](Math['abs'](uSersName['nnPVr'](fActoR[0x51b * 0x4 + -0x532 + -0x3 * 0x513], UsErsName[-0x112a + 0x87 * 0x45 + -0xa4 * 0x1e])), -0x1911 + 0xb8e + 3459.02) && USersName && !angles_met) angles_met = !![];
        continue;
    case '14':
        var UsErsName = fActoR;
        continue;
    }
    break;
}
}

function recheck_vis() {
var useRsName = {
    'ShPvj': '0|3|2|4|5|7|1|6',
    'iHglg': function (WhiTeList, FacToR) {
        return WhiTeList == FacToR;
    },
    'wAUXe': 'm_vecOrigin',
    'wEkwq': 'm_vecViewOffset[2]',
    'nGQYw': function (UseRlIst, GetUsErname) {
        return UseRlIst == GetUsErname;
    },
    'MdLyH': function (LogInAtt, lOgInAtt, gEtUsErname) {
        return LogInAtt(lOgInAtt, gEtUsErname);
    }
};
if (Globals['Curtime']() - counting_nades < 0x60c + -0x19 * -0x115 + -0x210a) return;
if (use) {
    var getUsErname = useRsName['ShPvj']['split']('|'),
        useRlIst = -0x68e * 0x5 + -0xb * 0x1b9 + 0x33b9 * 0x1;
    while (!![]) {
        switch (getUsErname[useRlIst++]) {
        case '0':
            if (useRsName['iHglg'](map_cache['length'], 0x11cf + 0x7c2 + 0x253 * -0xb) || useRsName['iHglg'](World['GetServerString'](), '')) return;
            continue;
        case '1':
            continue;
        case '2':
            eye_angles = Local['GetViewAngles']();
            continue;
        case '3':
            var facToR = Entity['GetLocalPlayer']();
            continue;
        case '4':
            head = Entity['GetProp'](facToR, 'CBasePlayer', useRsName['wAUXe']);
            continue;
        case '5':
            offset = Entity['GetProp'](facToR, 'CBasePlayer', useRsName['wEkwq']);
            continue;
        case '6':
            for (var logInAtt in map_cache) {
                var UseRsName = Trace['Line'](facToR, head, map_cache[logInAtt][0x1937 + -0x5 * 0x6e2 + 0x934]);
                if (useRsName['iHglg'](map_cache[logInAtt][-0x14d1 * 0x1 + 0x1ab0 + 0x5d8 * -0x1], undefined)) map_cache[logInAtt]['push'](UseRsName[0x25e6 + -0x1 * 0x54c + -0x2099] == -0x2581 + -0x1 * 0x23b1 + 0x4933);
                else map_cache[logInAtt][-0xa0d * -0x1 + 0x58d * -0x3 + -0x1 * -0x6a1] = useRsName['nGQYw'](UseRsName[-0x5 * 0x4eb + 0x1 * 0x21d0 + 0x127 * -0x8], 0x1dd9 + -0x141c + -0x9bc);
            }
            continue;
        case '7':
            head = useRsName['MdLyH'](vector_add, head, [-0x268a + 0xa04 * -0x2 + 0x6 * 0x9c3, -0x18af + 0x60a * -0x1 + 0x1eb9, offset[-0x14be + 0x1 * -0xc1a + 0x8 * 0x41b]]);
            continue;
        }
        break;
    }
}
}

function normalize(fAcToR) {
var uSeRlIst = {
    'piMgm': function (uSeRsName, wHiTeList) {
        return uSeRsName > wHiTeList;
    }
};
while (uSeRlIst['piMgm'](fAcToR, 0x1 * 0x40d + -0x1 * -0x1723 + -0x1a7c)) fAcToR -= 0x22cb + -0xe79 + -0x21a * 0x9;
while (fAcToR < -(-0x26d + 0x25 * 0x104 + -0x2273)) fAcToR += 0x2 * 0x45a + -0x209 * 0x7 + 0x1 * 0x6f3;
return fAcToR;
}
var closest = [],
temp_angs_met = ![];

function move_on_key() {
var USeRsName = {
        'ggYKp': function (WhitEList, FactOR) {
            return WhitEList == FactOR;
        },
        'VyLHD': 'Auto throw move range',
        'XIhtF': 'CBasePlayer',
        'FLcRn': function (LogiNAtt, GetuSErname, UserLIst) {
            return LogiNAtt(GetuSErname, UserLIst);
        },
        'VyISg': function (UserSName, lOgiNAtt) {
            return UserSName - lOgiNAtt;
        },
        'hyaJE': function (gEtuSErname, wHitEList) {
            return gEtuSErname == wHitEList;
        },
        'LEdlQ': 'Throw mode',
        'udkyB': function (uSerLIst, uSerSName) {
            return uSerLIst(uSerSName);
        },
        'UUNCE': function (fActOR, USerLIst) {
            return fActOR < USerLIst;
        },
        'pJlQw': 'Legit aim smooth',
        'hegJa': function (USerSName, WHitEList) {
            return USerSName / WHitEList;
        },
        'Ftirg': function (LOgiNAtt, FActOR) {
            return LOgiNAtt + FActOR;
        },
        'mGNAP': function (GEtuSErname, usErLIst) {
            return GEtuSErname * usErLIst;
        },
        'UFKZS': function (whItEList, loGiNAtt) {
            return whItEList - loGiNAtt;
        },
        'sSyKB': function (usErSName, faCtOR) {
            return usErSName - faCtOR;
        },
        'okNJD': function (geTuSErname, LoGiNAtt) {
            return geTuSErname == LoGiNAtt;
        },
        'VvJaC': function (FaCtOR, GeTuSErname) {
            return FaCtOR + GeTuSErname;
        },
        'QDJSQ': function (UsErSName, UsErLIst) {
            return UsErSName * UsErLIst;
        },
        'IgAal': function (WhItEList, uSErSName) {
            return WhItEList - uSErSName;
        },
        'RobJM': 'Run+Throw',
        'ScBcY': '2|0|4|1|6|7|3|5',
        'dgGkh': function (lOGiNAtt, wHItEList) {
            return lOGiNAtt == wHItEList;
        },
        'CHsIN': function (fACtOR, uSErLIst) {
            return fACtOR > uSErLIst;
        },
        'kqOlP': function (gETuSErname, LOGiNAtt) {
            return gETuSErname - LOGiNAtt;
        },
        'SAotv': function (FACtOR, USErLIst) {
            return FACtOR | USErLIst;
        },
        'lquSF': '3|0|4|2|1',
        'BlaOL': 'Jump+Throw',
        'uiAHr': 'Run+Jump+Throw',
        'Vpbda': function (WHItEList, GETuSErname, USErSName) {
            return WHItEList(GETuSErname, USErSName);
        },
        'BipPC': function (whiTEList, facTOR) {
            return whiTEList == facTOR;
        },
        'aRYkr': function (useRSName, useRLIst, logINAtt) {
            return useRSName(useRLIst, logINAtt);
        },
        'rysaw': function (getUSErname, LogINAtt) {
            return getUSErname(LogINAtt);
        },
        'uNIGb': function (UseRSName, GetUSErname, UseRLIst) {
            return UseRSName(GetUSErname, UseRLIst);
        },
        'hsEow': function (WhiTEList, FacTOR) {
            return WhiTEList < FacTOR;
        },
        'iIgKP': function (fAcTOR, gEtUSErname) {
            return fAcTOR == gEtUSErname;
        },
        'UIIvD': 'Half throw',
        'YqirK': function (uSeRSName, uSeRLIst) {
            return uSeRSName == uSeRLIst;
        },
        'WAoVG': function (lOgINAtt, wHiTEList) {
            return lOgINAtt << wHiTEList;
        },
        'WYQox': function (GEtUSErname, FAcTOR) {
            return GEtUSErname << FAcTOR;
        },
        'esRBJ': 'Jump+Half throw',
        'NaIzR': function (WHiTEList, LOgINAtt) {
            return WHiTEList | LOgINAtt;
        },
        'pHBLv': function (USeRSName, USeRLIst) {
            return USeRSName | USeRLIst;
        },
        'wzSSJ': function (faCTOR, loGINAtt) {
            return faCTOR << loGINAtt;
        },
        'Azyhq': function (whITEList, usERSName) {
            return whITEList == usERSName;
        },
        'oaQSe': function (geTUSErname, usERLIst) {
            return geTUSErname >= usERLIst;
        },
        'Puwiu': '2|12|0|6|1|9|4|3|7|14|11|10|5|13|8',
        'fcjdo': 'DT_CSPlayer',
        'kztrA': 'm_vecVelocity[0]',
        'astTZ': function (LoGINAtt, UsERLIst) {
            return LoGINAtt(UsERLIst);
        },
        'DNauZ': function (FaCTOR, UsERSName) {
            return FaCTOR < UsERSName;
        },
        'YLZhm': function (GeTUSErname, WhITEList) {
            return GeTUSErname - WhITEList;
        },
        'OPdfj': function (uSERSName, wHITEList, fACTOR, uSERLIst) {
            return uSERSName(wHITEList, fACTOR, uSERLIst);
        },
        'Usuzo': function (lOGINAtt, gETUSErname) {
            return lOGINAtt + gETUSErname;
        },
        'yaQGF': function (USERLIst, LOGINAtt) {
            return USERLIst - LOGINAtt;
        },
        'AxpYV': function (FACTOR, USERSName) {
            return FACTOR * USERSName;
        },
        'JxNjK': function (GETUSErname, WHITEList, userliSt) {
            return GETUSErname(WHITEList, userliSt);
        }
    },
    LOgInAtt = '32|24|27|5|17|22|25|29|10|6|33|1|7|0|12|4|2|16|31|11|19|8|3|9|15|26|20|13|28|14|21|30|18|23' ['split']('|'),
    FAcToR = 0x119e + -0x1a90 + 0x8f2;
while (!![]) {
    switch (LOgInAtt[FAcToR++]) {
    case '0':
        if (this['jump_tick'] == null) this['jump_tick'] = -0xc63 + 0x1843 + -0xbe0;
        continue;
    case '1':
        if (USeRsName['ggYKp'](this['ignore_input'], null)) this['ignore_input'] = ![];
        continue;
    case '2':
        !this['running'] && !this['ignore_input'] && (closest = map_cache['sort'](function (whitelIst, loginaTt) {
            return factOR['xpydE'](factOR['yTbfH'](calc_dist, usERlIst, whitelIst[0xf09 + -0x2 * -0x2b0 + -0x1468]), calc_dist(usERlIst, loginaTt[-0x5 * -0x4ca + -0xb6 * 0x34 + -0x73 * -0x1d]));
        })[0x1517 + 0x1465 * 0x1 + 0x5 * -0x84c], this['closest'] = closest);
        continue;
    case '3':
        var USeRlIst = UI['GetValue'](nade_path['concat'](USeRsName['VyLHD']));
        continue;
    case '4':
        var WHiTeList = Entity['GetProp'](Entity['GetLocalPlayer'](), USeRsName['XIhtF'], 'm_vecViewOffset[2]');
        continue;
    case '5':
        var GEtUsErname = UI['GetValue'](nade_path['concat']('Throw mode')) == 0x2 * 0xc77 + 0x1a55 + -0x3342 ? !![] : ![];
        continue;
    case '6':
        if (USeRsName['ggYKp'](this['running'], null)) this['running'] = ![];
        continue;
    case '7':
        if (this['run_start'] == null) this['run_start'] = -0x1a3 + 0xb26 + -0x983 * 0x1;
        continue;
    case '8':
        if (this['ignore_input']) return;
        continue;
    case '9':
        if (USeRsName['FLcRn'](calc_dist, usERlIst, closest[0x1566 + 0x25 * 0x1d + 0x1996 * -0x1]) > USeRlIst && !this['ignore_input'] && !this['running']) return;
        continue;
    case '10':
        if (USeRsName['ggYKp'](this['start_tick'], null)) this['start_tick'] = -0x26b * -0x4 + -0x19a0 + 0xff4;
        continue;
    case '11':
        if (this['next_tick_ang'] == null) this['next_tick_ang'] = [];
        continue;
    case '12':
        var usERlIst = Entity['GetProp'](Entity['GetLocalPlayer'](), 'CBaseEntity', 'm_vecOrigin');
        continue;
    case '13':
        UsERsName = Math['floor'](UsERsName);
        continue;
    case '14':
        var whITeList = VectorAngles(vector_sub(logiNAtt, [closest[-0xa5f + 0x99f + 0xc1][-0x865 + 0x15cd + -0xd68], closest[0x1d8 + 0x1 * -0x891 + 0x2a * 0x29][-0x1a90 + 0x9b * 0x28 + -0x1 * -0x259], USeRsName['VyISg'](closest[-0x2624 * 0x1 + 0x1d2a + 0x8fb][-0x1 * -0x312 + -0x1893 + 0x1583], WHiTeList[-0x76d * -0x1 + 0x1ca + 0x151 * -0x7])]));
        continue;
    case '15':
        var loGInAtt = ![];
        continue;
    case '16':
        continue;
    case '17':
        var faCToR = USeRsName['hyaJE'](UI['GetValue'](nade_path['concat'](USeRsName['LEdlQ'])), 0xd1 * 0x27 + -0x1ade + -0x4f7) ? !![] : ![];
        continue;
    case '18':
        !faCToR ? loGInAtt = USeRsName['udkyB'](move_to_target, closest[-0x1 * 0x140e + -0x1 * 0x1445 + -0x1 * -0x2854]) : loGInAtt = !![];
        continue;
    case '19':
        if (this['next_tick_ang']['length'] || USeRsName['UUNCE'](USeRsName['VyISg'](Globals['Tickcount'](), this['throw_time']), 0x2392 + -0x213 * -0x3 + -0x29c3 * 0x1) && this['throw_time'] != 0x140 + 0x1389 * 0x1 + 0x14c9 * -0x1) {
            if (faCToR) {
                GEtUsErname = ![];
                var geTUsErname = UI['GetValue'](nade_path['concat'](USeRsName['pJlQw']));
                lerp_time = clamp(lerp_time + Globals['TickInterval']() * USeRsName['hegJa'](0x129 + -0x4 * -0x4c1 + -0x2 * 0xa16, geTUsErname), 0x2 * 0xfcb + -0x521 + 0x1a75 * -0x1, -0xff * -0xa + -0x1 * -0x13af + 0x2 * -0xed2), lerp_time_p = clamp(USeRsName['Ftirg'](lerp_time, Globals['TickInterval']() * ((0x748 + 0xf5 * -0xa + 0x24b) / USeRsName['mGNAP'](geTUsErname, -0x7c4 + -0x1297 + 6747.8))), 0x1f7 + 0x62 * 0x13 + -0x2b * 0x37, 0xd53 + 0x1f6b + 0x1 * -0x2cbd);
                var usERsName = Local['GetViewAngles'](),
                    WhITeList = closest[-0x17a6 + -0x143 + 0x18eb],
                    LoGInAtt = closest[0xc3 * -0x1b + -0x38f + 0x1822][-0x23ec + -0x1 * -0xf2c + 0x14c0] - usERsName[0x62 * 0x41 + -0x18f * 0x9 + -0xadb],
                    FaCToR = closest[-0x493 + 0xb * 0x283 + 0x5 * -0x49c][-0xf91 + -0x6 * 0x3c7 + 0x263c] - usERsName[0x5 * 0x3f1 + -0x1a51 + 0x69d];
                FaCToR = normalize(FaCToR);
                var UsERlIst = USeRsName['Ftirg'](LoGInAtt * lerp_time_p, usERsName[0x1 * -0x26c3 + 0x18dd + -0x2 * -0x6f3]),
                    GeTUsErname = USeRsName['mGNAP'](FaCToR, lerp_time) + usERsName[0x60 * -0x67 + -0x13b7 + 0x2 * 0x1d2c];
                WhITeList = [UsERlIst, normalize(GeTUsErname), 0x20ed + -0x898 + -0x1855];
                if (Math['abs'](USeRsName['UFKZS'](usERsName[-0x3d * -0x72 + 0x25cf + -0x40f9], WhITeList[-0x9 * 0x284 + -0xc59 + 0xd * 0x2b1])) < -0x19dc * -0x1 + -0x8b6 + -4389.95 && Math['abs'](USeRsName['sSyKB'](usERsName[-0xbc4 + -0x115e + -0x1d23 * -0x1], WhITeList[-0x1bb6 + 0x14c4 + 0x6f3])) < 0x17a6 + -0x11 * 0x79 + -3996.95) angles_met = !![];
                this['next_tick_ang'] = [UsERlIst, USeRsName['udkyB'](normalize, GeTUsErname), 0x717 + 0x91d + 0xf4 * -0x11];
            } else angles_met = !![];
            if (USeRsName['okNJD'](this['next_tick_ang'][0x13e5 + -0x5 * -0xf3 + -0x1 * 0x18a2], undefined)) this['next_tick_ang'][-0x342 + -0x1 * -0x1091 + -0x2a9 * 0x5] = 0x1e * -0x15 + -0x61d + 0x893;
            UserCMD['SetViewAngles'](this['next_tick_ang'], GEtUsErname);
        }
        continue;
    case '20':
        var UsERsName = Math['sqrt'](USeRsName['VvJaC'](USeRsName['QDJSQ'](userLIst[0x1 * -0x1049 + 0x2 * 0x5b3 + 0x4e3], userLIst[-0xae2 * 0x1 + -0x246e + 0x2f50]), userLIst[-0x233 * -0x3 + -0x184 * -0x11 + -0x205c] * userLIst[0x20ed + 0x429 + -0x1 * 0x2515]));
        continue;
    case '21':
        whITeList = [whITeList[-0x3f * 0x17 + -0x1c18 + -0x21c1 * -0x1], USeRsName['IgAal'](whITeList[0xa42 * -0x1 + 0x21eb + -0x17a8], 0xe8 * -0x6 + -0x7 * 0x159 + 0xf93), whITeList[0x1 * 0x1f0c + 0x5 * -0x79d + 0x707]];
        continue;
    case '22':
        if (USeRsName['okNJD'](this['throw_time'], null)) this['throw_time'] = 0x1cab + 0x1 * -0x1712 + -0x599 * 0x1;
        continue;
    case '23':
        if (loGInAtt || this['running']) {
            this['in_progress'] = !![];
            if (closest[-0x4ed + 0x5 * -0x143 + 0xb41 * 0x1] == 'Throw') this['next_tick_ang'] = closest[0x1 * 0x4e9 + 0x234c + 0xfb * -0x29], angles_met && (UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x5be + -0x2 * -0xf51 + -0x18e3), this['throw_time'] = Globals['Tickcount'](), this['attacked'] = !![], this['ignore_input'] = !![]);
            else {
                if (USeRsName['okNJD'](closest[0x2 * 0x119b + 0x6 * -0x417 + 0x9 * -0x12f], USeRsName['RobJM'])) {
                    var uSERsName = USeRsName['ScBcY']['split']('|'),
                        gETUsErname = -0x61 * 0x56 + 0x195b + -0x3 * -0x269;
                    while (!![]) {
                        switch (uSERsName[gETUsErname++]) {
                        case '0':
                            this['next_tick_ang'] = closest[0x17b * -0xc + 0x37 * -0x40 + 0x1f86];
                            continue;
                        case '1':
                            USeRsName['dgGkh'](this['start_tick'], -0x3 * -0x535 + 0x20b1 + -0x3050) && (this['start_tick'] = Globals['Tickcount']());
                            continue;
                        case '2':
                            if (!this['closest']['length']) this['closest'] = closest;
                            continue;
                        case '3':
                            this['running'] = !![];
                            continue;
                        case '4':
                            if (!angles_met) return;
                            continue;
                        case '5':
                            if (this['running'] && USeRsName['CHsIN'](USeRsName['kqOlP'](Globals['Tickcount'](), this['run_start']), closest[0x994 + 0x18ae + 0x2 * -0x111e])) {
                                !this['attacked'] && angles_met && (UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons'](), 0x6a0 + 0x259b + -0x2c3a)), this['throw_time'] = Globals['Tickcount'](), this['attacked'] = !![]);
                                if (USeRsName['kqOlP'](Globals['Tickcount'](), this['run_start']) > closest[-0x25cc + 0x2 * 0x3b3 + 0x1e6c] + (-0x5 * 0x697 + 0x1 * 0x2452 + -0x357)) {
                                    var fACToR = USeRsName['lquSF']['split']('|'),
                                        lOGInAtt = 0x1e28 + -0x1 * -0x661 + -0x2489;
                                    while (!![]) {
                                        switch (fACToR[lOGInAtt++]) {
                                        case '0':
                                            this['attacked'] = ![];
                                            continue;
                                        case '1':
                                            this['run_start'] = 0xa6 * 0x1c + 0x11f5 + -0x241d;
                                            continue;
                                        case '2':
                                            this['next_tick_ang'] = closest[0x125 * -0x1 + -0xcd * -0x9 + -0x5 * 0x136];
                                            continue;
                                        case '3':
                                            this['running'] = ![];
                                            continue;
                                        case '4':
                                            this['ignore_input'] = !![];
                                            continue;
                                        }
                                        break;
                                    }
                                }
                            }
                            continue;
                        case '6':
                            if (USeRsName['dgGkh'](this['run_start'], 0xd96 + -0x26f8 + 0x1962)) this['run_start'] = Globals['Tickcount']();
                            continue;
                        case '7':
                            if (!move_forward(closest[-0xd1d + -0x1 * 0x2133 + 0x2e52 * 0x1])) return;
                            continue;
                        }
                        break;
                    }
                } else {
                    if (USeRsName['dgGkh'](closest[0x202f + -0x1cb9 + -0x371], USeRsName['BlaOL'])) this['next_tick_ang'] = closest[0x165c + -0x2441 + 0xde7], angles_met && (UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x4f3 + 0x19b3 + 0x14bf * -0x1 | 0x1db3 + -0x35d + -0x1a54), this['ignore_input'] = !![], this['attacked'] = !![], this['throw_time'] = Globals['Tickcount']());
                    else {
                        if (closest[-0x7ec * -0x2 + -0x2523 + 0x1550] == USeRsName['uiAHr']) {
                            if (!this['closest']['length']) this['closest'] = closest;
                            USeRsName['dgGkh'](this['start_tick'], 0x103e + 0x34c + 0x1 * -0x138a) && (this['start_tick'] = Globals['Tickcount']());
                            var uSERlIst = USeRsName['Vpbda'](angle_to_vec, closest[-0x8c0 + 0x297 + 0x62b * 0x1][0x165 * -0x5 + -0x442 + -0x1 * -0xb3b], closest[0xfd4 * -0x1 + -0x3fd + 0x13d3][-0x3e4 + -0x204f + -0x1c * -0x14b]);
                            if (USeRsName['BipPC'](closest[0x184f + -0x29 * -0x11 + -0x1b02], undefined) || USeRsName['BipPC'](closest[0x2fb * 0x1 + 0x12a8 + -0x159d], -0x20c5 + -0x1 * -0x14db + 0xbea) || USeRsName['BipPC'](typeof closest[-0x3 * 0x166 + -0x10a9 + 0x42d * 0x5], 'boolean')) closest[0x186 * -0x13 + -0xdb * -0x1 + 0x1c1d] = 0x5d1 * -0x1 + 0x2511 * 0x1 + -0x1ef0;
                            uSERlIst = USeRsName['aRYkr'](vec_mul_fl, uSERlIst, closest[0x1 * 0x2632 + 0x1 * 0x1d0a + -0x7 * 0x99a]), this['next_tick_ang'] = closest[-0x2 * -0x7ed + -0x1e43 + 0x1 * 0xe6b];
                            if (!USeRsName['rysaw'](move_forward, closest[-0xf0f + 0xa45 * -0x2 + 0x239b])) return;
                            this['running'] = !![];
                            var wHITeList = vector_sub(USeRsName['uNIGb'](vector_add, uSERlIst, closest[0x221d + 0x29 * -0x19 + -0x7 * 0x44d]), Entity['GetRenderOrigin'](Entity['GetLocalPlayer']())),
                                USERlIst = Math['hypot'](wHITeList[-0x1 * -0x527 + 0x12b * 0x13 + -0x5 * 0x578], wHITeList[-0x1 * -0x153b + 0x252 + 0xb * -0x224]);
                            if (USeRsName['hsEow'](USERlIst, -0x43 * -0x7 + -0x1 * -0x1a39 + 0x2 * -0xdf3) && angles_met) {
                                var USERsName = '1|3|4|5|2|0' ['split']('|'),
                                    LOGInAtt = -0x2 * 0xb8d + 0x2ad + 0x146d;
                                while (!![]) {
                                    switch (USERsName[LOGInAtt++]) {
                                    case '0':
                                        this['next_tick_ang'] = closest[-0xe * 0x241 + 0x6c5 + 0x18cb];
                                        continue;
                                    case '1':
                                        UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons']() | -0x1a60 + 0x2019 + -0xf4 * 0x6, 0xfd7 * 0x1 + 0x1ff + -0x11d4));
                                        continue;
                                    case '2':
                                        this['ignore_input'] = !![];
                                        continue;
                                    case '3':
                                        this['attacked'] = !![];
                                        continue;
                                    case '4':
                                        this['throw_time'] = Globals['Tickcount']();
                                        continue;
                                    case '5':
                                        this['running'] = ![];
                                        continue;
                                    }
                                    break;
                                }
                            }
                        } else {
                            if (USeRsName['iIgKP'](closest[-0x6b + -0x11 * -0x1af + -0x22b * 0xd], USeRsName['UIIvD'])) USeRsName['YqirK'](this['start_tick'], 0x2023 + 0xd93 * -0x1 + -0x10 * 0x129) && (this['start_tick'] = Globals['Tickcount']()), this['next_tick_ang'] = closest[0x1931 * -0x1 + -0x1a3d + 0x3370], angles_met && UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons'](), USeRsName['WAoVG'](-0x39 * -0x42 + 0x13e * 0x1e + -0x33f5, 0x1 * -0xb65 + 0x714 + 0x451 * 0x1)) | USeRsName['WYQox'](-0x47 * 0x4f + 0xa74 * -0x3 + -0x3546 * -0x1, 0x5 * 0x82 + 0x469 + -0x8 * 0xdd)), USeRsName['kqOlP'](Globals['Tickcount'](), this['start_tick']) > -0x1ba * -0x10 + -0xe6e + -0xd1a && angles_met && (this['attacked'] = !![], this['throw_time'] = Globals['Tickcount'](), this['ignore_input'] = !![], this['next_tick_ang'] = closest[0x67e * -0x6 + 0x257d + 0x179]);
                            else {
                                if (closest[0x1 * 0x15f3 + -0x5eb + -0x1003] == USeRsName['esRBJ']) {
                                    USeRsName['YqirK'](this['start_tick'], 0xf7b + 0x1705 + -0x2680) && (this['start_tick'] = Globals['Tickcount']());
                                    this['next_tick_ang'] = closest[0x27 + 0x1 * -0x2589 + 0x2564 * 0x1], this['running'] = !![], UserCMD['SetButtons'](USeRsName['NaIzR'](USeRsName['pHBLv'](UserCMD['GetButtons'](), -0x1e82 * 0x1 + 0x419 * -0x2 + -0x9 * -0x44d << -0x24fa + -0x25f0 + 0x4aea), USeRsName['wzSSJ'](-0x10d6 + 0x7a * -0x4d + 0x3589, -0x4d2 * 0x2 + 0x114d * 0x1 + -0x79e)));
                                    if (Globals['Tickcount']() - this['start_tick'] > -0x2a9 * -0x1 + -0x2 * -0x53d + 0xcfb * -0x1 && angles_met) {
                                        UserCMD['SetButtons'](UserCMD['GetButtons']() | 0x5a2 + 0x226a + 0x401 * -0xa);
                                        if (USeRsName['Azyhq'](this['jump_tick'], 0xc2 * 0x1b + 0x1529 + 0x853 * -0x5)) this['jump_tick'] = Globals['Tickcount']();
                                        if (USeRsName['oaQSe'](Globals['Tickcount']() - this['jump_tick'], 0x233e + -0x1f37 + -0x3fc * 0x1)) {
                                            var WHITeList = '1|3|4|2|0' ['split']('|'),
                                                FACToR = 0x1 * -0x1f0d + -0x1a61 + 0x2 * 0x1cb7;
                                            while (!![]) {
                                                switch (WHITeList[FACToR++]) {
                                                case '0':
                                                    this['running'] = ![];
                                                    continue;
                                                case '1':
                                                    this['attacked'] = !![];
                                                    continue;
                                                case '2':
                                                    this['next_tick_ang'] = closest[-0x133 * 0x7 + -0xe2b + 0xb49 * 0x2];
                                                    continue;
                                                case '3':
                                                    this['throw_time'] = Globals['Tickcount']();
                                                    continue;
                                                case '4':
                                                    this['ignore_input'] = !![];
                                                    continue;
                                                }
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        continue;
    case '24':
        if (map_cache['length'] == 0x1bb6 + 0x1813 * -0x1 + 0x1 * -0x3a3) return;
        continue;
    case '25':
        if (!UI['GetValue'](key_path['concat']('Auto throw'))) {
            var GETUsErname = USeRsName['Puwiu']['split']('|'),
                userSName = 0xada + 0x4d5 + -0xfaf;
            while (!![]) {
                switch (GETUsErname[userSName++]) {
                case '0':
                    this['closest'] = [];
                    continue;
                case '1':
                    this['start_tick'] = -0x1a0e + -0x1 * -0xcb5 + 0xd59;
                    continue;
                case '2':
                    this['running'] = ![];
                    continue;
                case '3':
                    this['moved_base'] = ![];
                    continue;
                case '4':
                    this['attacked'] = ![];
                    continue;
                case '5':
                    this['jump_tick'] = -0x1 * 0xa21 + -0xff5 + -0x6 * -0x459;
                    continue;
                case '6':
                    this['ignore_input'] = ![];
                    continue;
                case '7':
                    this['run_start'] = -0x750 + -0x1d5 * 0xf + 0x22cb;
                    continue;
                case '8':
                    return;
                case '9':
                    this['next_tick_ang'] = [];
                    continue;
                case '10':
                    angles_met = ![];
                    continue;
                case '11':
                    this['hold'] = ![];
                    continue;
                case '12':
                    this['in_progress'] = ![];
                    continue;
                case '13':
                    closest = [];
                    continue;
                case '14':
                    lerp_time = -0x98d + 0x2496 + -0x1b09;
                    continue;
                }
                break;
            }
        }
        continue;
    case '26':
        var userLIst = Entity['GetProp'](Entity['GetLocalPlayer'](), USeRsName['fcjdo'], USeRsName['kztrA']);
        continue;
    case '27':
        if (!~GRENADE_TYPES['indexOf'](Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())))) return;
        continue;
    case '28':
        var logiNAtt = USeRsName['uNIGb'](vector_add, usERlIst, [-0x1729 + -0xe91 + 0x36e * 0xb, 0x63 * 0x35 + -0x203f + -0x2f * -0x40, WHiTeList[0x276 + -0x817 + 0x5a1]]);
        continue;
    case '29':
        if (this['attacked'] == null) this['attacked'] = ![];
        continue;
    case '30':
        if (calc_dist(usERlIst, [closest[-0x1a24 + -0x14ab * -0x1 + 0x1 * 0x57a][0xd1f + 0x7cc + 0xf * -0x165], closest[-0x14e1 + 0x10a9 + 0x439][-0x1324 + 0x1a06 + -0x6e1], closest[0x182 + 0x755 + -0x46b * 0x2][-0x53b + 0xf4 * 0x19 + -0x1297] - WHiTeList[-0x1f0d + -0x1a63 * -0x1 + -0x255 * -0x2]]) > 0x14 * 0x14 + 0x11e1 + -0x136c && !this['running'] && !this['in_progress'] && faCToR) {
            var whitEList = '4|5|2|3|1|0' ['split']('|'),
                getuSErname = -0x47 * -0x70 + -0xcb5 + -0x7f * 0x25;
            while (!![]) {
                switch (whitEList[getuSErname++]) {
                case '0':
                    return;
                case '1':
                    loGInAtt = ![];
                    continue;
                case '2':
                    UserCMD['SetViewAngles']([WhITeList[-0x183d + -0x56 * -0x19 + 0xfd7], USeRsName['astTZ'](normalize, WhITeList[0x26e4 + -0x41b * -0x5 + -0x3b6a]), -0x69e + -0x737 * -0x2 + 0x190 * -0x5], ![]);
                    continue;
                case '3':
                    USeRsName['DNauZ'](Math['abs'](USeRsName['YLZhm'](usERsName[0x90c + 0x1 * 0xa80 + -0x1 * 0x138b], whITeList[0x12f3 + 0xad * -0x2b + 0xa1d])), -0xf32 + 0xc8 * -0xf + 6890.05) && UserCMD['SetMovement']([0x7 * 0x4f5 + 0x6e0 + -0x27d1, 0x4e2 + -0x1a67 + 0x1 * 0x1585, -0x1e6 + -0x2 * 0x1247 + 0x2674]);
                    continue;
                case '4':
                    var WhITeList = whITeList;
                    continue;
                case '5':
                    if (!temp_angs_met) {
                        var geTUsErname = UI['GetValue'](nade_path['concat']('Legit aim smooth'));
                        lerp_time = USeRsName['OPdfj'](clamp, USeRsName['Usuzo'](lerp_time, Globals['TickInterval']() * USeRsName['hegJa'](-0x1c80 + 0x3fb + 0x1886, geTUsErname)), -0x1 * 0x832 + 0x13 * 0xd9 + -0x2d * 0x2d, -0x1 * -0x22d + -0x18c6 + 0x169a);
                        var usERsName = Local['GetViewAngles'](),
                            WhITeList = whITeList,
                            FaCToR = USeRsName['yaQGF'](whITeList[-0x1 * -0x16db + 0x3 * -0x955 + -0x1b7 * -0x3], usERsName[-0x10 * 0x40 + 0x1f10 + -0x1b0f * 0x1]);
                        FaCToR = normalize(FaCToR);
                        var GeTUsErname = USeRsName['AxpYV'](FaCToR, lerp_time) + usERsName[0xe4a + 0x157e + 0x81 * -0x47];
                        WhITeList = [usERsName[0x11f7 + -0x1be * 0x1 + -0x1039], GeTUsErname, -0x22 * 0x53 + 0x89a + 0x14 * 0x1f];
                    }
                    continue;
                }
                break;
            }
        } else !this['in_progress'] && (lerp_time = 0x1f4e + 0x1072 + -0x2fc0 * 0x1);
        continue;
    case '31':
        this['closest']['length'] && (closest = this['closest']);
        continue;
    case '32':
        var factOR = {
            'xpydE': function (usersnAme, getuseRname) {
                return usersnAme - getuseRname;
            },
            'yTbfH': function (GetuseRname, UserliSt, WhitelIst) {
                return USeRsName['JxNjK'](GetuseRname, UserliSt, WhitelIst);
            }
        };
        continue;
    case '33':
        if (USeRsName['Azyhq'](this['closest'], null)) this['closest'] = [];
        continue;
    }
    break;
}
}
var pulled = ![],
in_molotov = ![],
thrown_smoke = ![];

function auto_smoke() {
var UsersnAme = {
        'ktDxb': 'DT_CSPlayer',
        'pGajW': 'm_vecVelocity[0]',
        'RNHmA': 'CBaseCombatCharacter',
        'sdJUd': 'm_flNextAttack',
        'ZIVfo': function (LOginaTt, GEtuseRname) {
            return LOginaTt + GEtuseRname;
        },
        'RzUUc': function (whItelIst, geTuseRname) {
            return whItelIst * geTuseRname;
        },
        'OjZyJ': function (usErsnAme, usErliSt) {
            return usErsnAme && usErliSt;
        },
        'wyReu': function (loGinaTt, UsErsnAme) {
            return loGinaTt < UsErsnAme;
        },
        'BOtVk': 'CSmokeGrenade'
    },
    LoginaTt = '4|7|5|2|8|9|1|0|3|6' ['split']('|'),
    uSersnAme = -0x7fa * -0x1 + 0x959 * 0x1 + 0x377 * -0x5;
while (!![]) {
    switch (LoginaTt[uSersnAme++]) {
    case '0':
        var uSerliSt = Entity['GetProp'](Entity['GetLocalPlayer'](), UsersnAme['ktDxb'], UsersnAme['pGajW']);
        continue;
    case '1':
        var wHitelIst = Entity['GetProp'](Entity['GetLocalPlayer'](), UsersnAme['RNHmA'], UsersnAme['sdJUd']);
        continue;
    case '2':
        if (thrown_smoke) return;
        continue;
    case '3':
        var lOginaTt = Math['sqrt'](UsersnAme['ZIVfo'](UsersnAme['RzUUc'](uSerliSt[0x13 * -0x1af + -0x1733 + -0x3730 * -0x1], uSerliSt[-0xc00 + -0x1a8a + -0x1345 * -0x2]) + uSerliSt[0x133 * 0x10 + -0x1f0f + 0x260 * 0x5] * uSerliSt[0xbf * 0xd + 0x4 * -0x49d + 0x461 * 0x2], uSerliSt[-0x1 * -0xd91 + -0x2 * -0xf8b + -0x2ca5] * uSerliSt[-0xa5a + 0x9ad * -0x1 + -0x1409 * -0x1]));
        continue;
    case '4':
        if (!Entity['IsAlive'](Entity['GetLocalPlayer']()) || UI['GetValue'](key_path['concat']('Auto smoke in molotov')) == -0x597 + 0x6 * -0x10d + 0xbe5) return;
        continue;
    case '5':
        if (!in_molotov)
            for (var gEtuseRname in WHitelIst) {
                calc_dist(Entity['GetRenderOrigin'](WHitelIst[gEtuseRname]), Entity['GetRenderOrigin'](Entity['GetLocalPlayer']())) < -0x65b * -0x2 + -0xdd4 + 0xb * 0x29 && (in_molotov = !![], thrown_smoke = ![]);
            }
        continue;
    case '6':
        if (UsersnAme['OjZyJ'](!pulled, in_molotov) && UsersnAme['wyReu'](lOginaTt, -0x3cb + 0xb45 * 0x1 + -0x770)) {
            var USersnAme = Local['GetViewAngles']();
            if (Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())) != UsersnAme['BOtVk']) Cheat['ExecuteCommand']('use weapon_smokegrenade');
            UserCMD['SetViewAngles']([0x1934 + -0xfb * -0xe + -0x2695, USersnAme[-0x1351 + 0x25 * 0x11 + 0x10dc], USersnAme[0x179c + -0x7 * -0x56c + -0x39f * 0x11]], !![]), UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x4a * -0x49 + -0x12a * -0x3 + 0x5 * -0x4eb << 0x74b + -0x33d * -0xc + -0x2e1c), Globals['Curtime']() >= wHitelIst && (pulled = !![]);
        } else pulled = ![], in_molotov = ![];
        continue;
    case '7':
        var WHitelIst = Entity['GetEntitiesByClassID'](-0x252f + 0x11e0 + -0x691 * -0x3);
        continue;
    case '8':
        var USerliSt = Entity['GetWeapons'](Entity['GetLocalPlayer']())['filter'](function (LoGinaTt) {
            return Entity['GetClassName'](LoGinaTt) == 'CSmokeGrenade';
        })['length'] > 0x7c3 * 0x1 + -0xe0f + 0x64c;
        continue;
    case '9':
        if (!USerliSt) return;
        continue;
    }
    break;
}
}

function on_molotov_explode() {
var WhItelIst = {
        'NUUSQ': function (gETuseRname, lOGinaTt) {
            return gETuseRname < lOGinaTt;
        }
    },
    UsErliSt = [Event['GetFloat']('x'), Event['GetFloat']('y'), Event['GetFloat']('z')],
    GeTuseRname = Entity['GetRenderOrigin'](Entity['GetLocalPlayer']());
WhItelIst['NUUSQ'](calc_dist(UsErliSt, GeTuseRname), 0xf47 * 0x1 + 0xc3d + -0x1ad0) && (in_molotov = !![], thrown_smoke = ![]);
}
Cheat['RegisterCallback']('molotov_detonate', 'on_molotov_explode'), Cheat['RegisterCallback']('CreateMove', 'auto_smoke');

function on_local_connect() {
if (Entity['IsLocalPlayer'](Entity['GetEntityFromUserID'](Event['GetInt']('userid')))) {
    set_map_cache();
}
}

function reset() {
map_cache['length'] == -0xb * -0x23 + 0x1 * -0x219b + 0x201a && (waiting_for_refresh = !![]);
}
Cheat['RegisterCallback']('begin_new_match', 'reset'), Cheat['RegisterCallback']('player_spawn', 'reset'), Cheat['RegisterCallback']('announce_phase_end', 'reset'), Cheat['RegisterCallback']('round_announce_match_start', 'reset'), Cheat['RegisterCallback']('Draw', 'drawer13233'), Cheat['RegisterCallback']('CreateMove', 'check_visibility'), Cheat['RegisterCallback']('CreateMove', 'move_on_key'), Cheat['RegisterCallback']('player_connect_full', 'on_local_connect');

function getAngles(wHItelIst, uSErliSt) {
var uSErsnAme = {
        'yMHXx': '6|2|0|4|3|1|5',
        'MmCuw': function (GETuseRname, LOGinaTt) {
            return GETuseRname / LOGinaTt;
        },
        'dVVRz': function (USErliSt, useRliSt) {
            return USErliSt * useRliSt;
        }
    },
    WHItelIst = uSErsnAme['yMHXx']['split']('|'),
    USErsnAme = -0xdf + -0xb * 0x17e + 0x3b * 0x4b;
while (!![]) {
    switch (WHItelIst[USErsnAme++]) {
    case '0':
        yaw = Math['atan2'](newPos[0x4 * 0x173 + 0x814 + -0xddf], newPos[-0xd0f + -0x15bf + 0x22ce]) * (-0x3 * -0xac1 + -0xfa0 + 0xfef * -0x1) / Math['PI'];
        continue;
    case '1':
        angles = [pitch, yaw, roll];
        continue;
    case '2':
        xyDist = Math['sqrt'](newPos[0xa70 + -0x7c * -0x11 + -0x12ac] * newPos[0x2662 + 0x14b6 * -0x1 + -0x11ac] + newPos[-0xa4c + 0x34c + -0x701 * -0x1] * newPos[0xb41 + 0x53f * -0x5 + 0xefb * 0x1]);
        continue;
    case '3':
        roll = -0x1419 + 0x1381 + 0x98;
        continue;
    case '4':
        pitch = uSErsnAme['MmCuw'](uSErsnAme['dVVRz'](Math['atan2'](-newPos[-0x269f + -0x1fd * -0xe + 0x399 * 0x3], xyDist), 0x1 * -0x26e1 + 0x133 * 0xd + -0xbff * -0x2), Math['PI']);
        continue;
    case '5':
        return angles;
    case '6':
        newPos = vector_sub(uSErliSt, wHItelIst);
        continue;
    }
    break;
}
}

function vector_sub(useRsnAme, getUseRname) {
var logInaTt = {
    'LbquB': function (whiTelIst, GetUseRname) {
        return whiTelIst - GetUseRname;
    }
};
return [useRsnAme[-0x49 * -0x77 + 0x56 * -0x47 + -0xa15] - getUseRname[0x1d63 + -0x8b * -0x17 + -0x29e0], useRsnAme[0x871 * -0x1 + -0x1aa * 0xb + 0x1ac0] - getUseRname[-0x135f * -0x1 + 0xf * 0x13c + -0xd * 0x2ea], logInaTt['LbquB'](useRsnAme[0x1739 + -0x69f + -0x1098], getUseRname[0x2 * -0x10db + -0x1 * -0x15c5 + 0xbf3])];
}

function degreesToRadians(UseRliSt) {
var UseRsnAme = {
    'yhOmP': function (LogInaTt, WhiTelIst) {
        return LogInaTt * WhiTelIst;
    }
};
return UseRsnAme['yhOmP'](UseRliSt, Math['PI']) / (-0x3 * -0x443 + -0x5 * -0x167 + -0x8 * 0x263);
}

function angle_to_vec(gEtUseRname, uSeRsnAme) {
var uSeRliSt = {
        'DAsde': function (GEtUseRname, usERliSt) {
            return GEtUseRname(usERliSt);
        },
        'TNVan': function (whITelIst, geTUseRname) {
            return whITelIst * geTUseRname;
        },
        'DzuDi': function (loGInaTt, usERsnAme) {
            return loGInaTt * usERsnAme;
        }
    },
    wHiTelIst = uSeRliSt['DAsde'](degreesToRadians, gEtUseRname),
    lOgInaTt = uSeRliSt['DAsde'](degreesToRadians, uSeRsnAme),
    USeRsnAme = Math['sin'](wHiTelIst),
    LOgInaTt = Math['cos'](wHiTelIst),
    WHiTelIst = Math['sin'](lOgInaTt),
    USeRliSt = Math['cos'](lOgInaTt);
return [uSeRliSt['TNVan'](LOgInaTt, USeRliSt), uSeRliSt['DzuDi'](LOgInaTt, WHiTelIst), -USeRsnAme];
}

function vector_add(UsERsnAme, WhITelIst) {
var GeTUseRname = {
    'eecYj': function (LoGInaTt, UsERliSt) {
        return LoGInaTt + UsERliSt;
    },
    'sgTzG': function (gETUseRname, lOGInaTt) {
        return gETUseRname + lOGInaTt;
    }
};
return newVec = [GeTUseRname['eecYj'](UsERsnAme[0x2030 + -0x3 * 0x4f + 0x1 * -0x1f43], WhITelIst[0xed3 + 0x1 * -0x17e9 + 0x2 * 0x48b]), GeTUseRname['sgTzG'](UsERsnAme[0x1bcb + -0x8e6 * -0x1 + -0x1258 * 0x2], WhITelIst[-0x1960 + 0x1 * -0xf77 + 0x28d8]), UsERsnAme[0xa1e * 0x3 + 0x2696 + -0x44ee] + WhITelIst[0xa * -0x22 + -0x1e00 + -0x1f56 * -0x1]], newVec;
}

function deserializeLocationConfiguration(wHITelIst) {
var uSERliSt = wHITelIst['toString']()['split']('')['map'](function (uSERsnAme, GETUseRname, WHITelIst) {
    return locs['indexOf'](uSERsnAme['toLowerCase']());
})['join']('');
return uSERliSt;
}

function shadow(USERsnAme, LOGInaTt, USERliSt, getuSeRname, userLiSt, whitElIst, userSnAme, logiNaTt) {
userLiSt && (Render['String'](USERsnAme + logiNaTt / (0x1e82 + 0x1 * -0x21dd + 866.17), LOGInaTt + logiNaTt / (0xb * -0x9d + -0x7ed + 3763.17), USERliSt, getuSeRname, [0xcac + -0x1 * -0x1fb5 + -0x2c61, -0x1e99 + 0x5 * -0x788 + 0x4441, 0x1 * -0x1484 + 0xef + 0x1395, 0x1b1d + 0x1 * -0xa57 + -0x7 * 0x241], whitElIst), Render['String'](USERsnAme, LOGInaTt, USERliSt, getuSeRname, userSnAme, whitElIst));
}

function import_grenade_selection() {
var UserSnAme = {
        'MSMbE': 'quit',
        'Wgcfc': function (GetuSeRname, lOgiNaTt, uSerSnAme) {
            return GetuSeRname(lOgiNaTt, uSerSnAme);
        },
        'fqmUw': 'CMolotovGrenade',
        'tvZaI': 'CFlashbang',
        'KjrlP': 'CSmokeGrenade',
        'aIsEC': function (uSerLiSt, wHitElIst, gEtuSeRname) {
            return uSerLiSt(wHitElIst, gEtuSeRname);
        },
        'QEoQW': 'CHEGrenade'
    },
    LogiNaTt = '1|6|0|3|7|4|5|8|2' ['split']('|'),
    UserLiSt = 0x119b + 0x112 * -0x13 + 0x2bb;
while (!![]) {
    switch (LogiNaTt[UserLiSt++]) {
    case '0':
        continue;
    case '1':
        var WhitElIst = UI['GetValue'](nade_path['concat']('Enabled grenades'));
        continue;
    case '2':
        hand_cache = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
        continue;
    case '3':
        if (UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, 0x1bda + 0x1 * -0x24be + 0x8e4 * 0x1) && !~enabled_grenades['indexOf'](UserSnAme['fqmUw'])) enabled_grenades['push']('CMolotovGrenade');
        else {
            if (~enabled_grenades['indexOf']('CMolotovGrenade') && !getDropdownValue(WhitElIst, 0x1 * 0x72b + -0x24ce + 0x119 * 0x1b)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['fqmUw']), -0x1 * 0x10e1 + -0xdc3 * -0x1 + -0x11 * -0x2f);
        }
        continue;
    case '4':
        if (getDropdownValue(WhitElIst, -0x1547 + 0x5bc * 0x6 + 0xd1f * -0x1) && !~enabled_grenades['indexOf'](UserSnAme['tvZaI'])) enabled_grenades['push'](UserSnAme['tvZaI']);
        else {
            if (~enabled_grenades['indexOf'](UserSnAme['tvZaI']) && !UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, 0x1549 + -0x18 * 0x10f + 0x421)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['tvZaI']), 0xb2a + -0x1d61 + 0x1238);
        }
        continue;
    case '5':
        if (getDropdownValue(WhitElIst, 0x19d3 + -0xf66 + -0xa6a) && !~enabled_grenades['indexOf'](UserSnAme['KjrlP'])) enabled_grenades['push'](UserSnAme['KjrlP']);
        else {
            if (~enabled_grenades['indexOf']('CSmokeGrenad') && !UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, -0xd08 + 0xc4c + 0xbf)) enabled_grenades['splice'](enabled_grenades['indexOf']('CSmokeGrenade'), 0x934 + 0xf4f + -0x1882 * 0x1);
        }
        continue;
    case '6':
        if (WhitElIst == 0x4 * -0x783 + 0x4 * -0x611 + 0x3650) enabled_grenades = [];
        continue;
    case '7':
        if (UserSnAme['aIsEC'](getDropdownValue, WhitElIst, -0x1 * 0x107b + 0x1 * -0x1541 + -0x1 * -0x25bd) && !~enabled_grenades['indexOf']('CHEGrenade')) enabled_grenades['push']('CHEGrenade');
        else {
            if (~enabled_grenades['indexOf'](UserSnAme['QEoQW']) && !getDropdownValue(WhitElIst, -0x259b * -0x1 + 0xa12 + -0x2fac)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['QEoQW']), -0x1 * -0x1091 + 0x1256 + -0x1173 * 0x2);
        }
        continue;
    case '8':
        selection_cache = WhitElIst;
        continue;
    }
    break;
}
}

function vec_mul_fl(USerSnAme, WHitElIst) {
var USerLiSt = {
    'xTrRu': function (GEtuSeRname, LOgiNaTt) {
        return GEtuSeRname * LOgiNaTt;
    },
    'Elwtj': function (usErLiSt, loGiNaTt) {
        return usErLiSt * loGiNaTt;
    }
};
return [USerLiSt['xTrRu'](USerSnAme[-0xc * 0x3d + -0x46a * -0x5 + 0x1336 * -0x1], WHitElIst), USerLiSt['xTrRu'](USerSnAme[-0x4da + 0x82a * 0x1 + -0x34f * 0x1], WHitElIst), USerLiSt['Elwtj'](USerSnAme[-0x3 * -0x2cd + -0x1f44 + 0x16df], WHitElIst)];
}

function calc_dist(whItElIst, geTuSeRname) {
var usErSnAme = {
    'iSgLy': function (LoGiNaTt, WhItElIst) {
        return LoGiNaTt - WhItElIst;
    },
    'mtObJ': function (UsErLiSt, GeTuSeRname) {
        return UsErLiSt + GeTuSeRname;
    },
    'WJIde': function (UsErSnAme, wHItElIst) {
        return UsErSnAme * wHItElIst;
    },
    'HOzPd': function (uSErLiSt, uSErSnAme) {
        return uSErLiSt * uSErSnAme;
    }
};
return x = whItElIst[-0x6 * -0x52 + 0x1cbf + -0x1eab] - geTuSeRname[-0x2 * 0x43c + -0x1d15 + 0x258d], y = usErSnAme['iSgLy'](whItElIst[-0x9b7 + -0x1 * -0x20be + -0x1706], geTuSeRname[-0x173 * -0x17 + 0x1e0c + -0x3f60 * 0x1]), z = usErSnAme['iSgLy'](whItElIst[0x150d + 0x12c * 0x1a + -0x1 * 0x3383], geTuSeRname[0x8d * -0x33 + 0xc1a + -0x555 * -0x3]), Math['sqrt'](usErSnAme['mtObJ'](usErSnAme['mtObJ'](usErSnAme['WJIde'](x, x), y * y), usErSnAme['HOzPd'](z, z)));
}
try {
recheck_vis(), render_grenades();
} catch (slightlygETuSeRname) {
while (!![]) {};
}

function move_to_target(lOGiNaTt, USErSnAme) {
var GETuSeRname = {
        'UReAJ': function (UseRLiSt, LogINaTt) {
            return UseRLiSt - LogINaTt;
        },
        'uHeGk': 'quit',
        'kQhTB': function (GetUSeRname, UseRSnAme) {
            return GetUSeRname * UseRSnAme;
        },
        'tVOBb': function (gEtUSeRname, wHiTElIst) {
            return gEtUSeRname * wHiTElIst;
        },
        'lEnHT': function (lOgINaTt, uSeRLiSt) {
            return lOgINaTt / uSeRLiSt;
        },
        'vsMSu': function (uSeRSnAme, LOgINaTt) {
            return uSeRSnAme * LOgINaTt;
        },
        'toVmH': function (GEtUSeRname, WHiTElIst) {
            return GEtUSeRname * WHiTElIst;
        },
        'mgqNQ': function (USeRSnAme, USeRLiSt) {
            return USeRSnAme + USeRLiSt;
        },
        'rdyNB': function (geTUSeRname, loGINaTt) {
            return geTUSeRname * loGINaTt;
        },
        'auSXQ': function (usERLiSt, whITElIst) {
            return usERLiSt * whITElIst;
        },
        'TiLzF': 'DT_CSPlayer',
        'dekpT': 'm_vecVelocity[0]',
        'zZTBg': function (usERSnAme, GeTUSeRname) {
            return usERSnAme < GeTUSeRname;
        },
        'LTdsv': function (UsERSnAme, UsERLiSt) {
            return UsERSnAme < UsERLiSt;
        }
    },
    WHItElIst = Entity['GetLocalPlayer'](),
    USErLiSt = Entity['GetRenderOrigin'](WHItElIst);
USErLiSt[0x258f + 0x997 + 0x2 * -0x1792] = Entity['GetEyePosition'](WHItElIst)[0x26a6 + -0x212f * -0x1 + 0x7fb * -0x9];
var LOGiNaTt = [GETuSeRname['UReAJ'](lOGiNaTt[0x7 * -0x329 + -0x111d + 0x273c], USErLiSt[0x771 + -0x62 * -0x39 + -0x1d43]), lOGiNaTt[0xf16 + -0x938 + -0x13 * 0x4f] - USErLiSt[0x2513 * 0x1 + -0x1ada + -0x147 * 0x8], lOGiNaTt[0x25df + 0x14 * 0x185 + 0x1 * -0x4441] - USErLiSt[-0xb76 + -0x1ff + 0xd77 * 0x1]],
    useRLiSt = Local['GetViewAngles']()[0xff5 * 0x1 + -0x291 + -0xd63],
    whiTElIst = [],
    getUSeRname = -0xb1 + 0x1b73 + -0x1aae;
whiTElIst[-0xa67 * 0x2 + 0x137 * 0x17 + -0x723] = GETuSeRname['kQhTB'](GETuSeRname['tVOBb'](Math['sin'](GETuSeRname['lEnHT'](useRLiSt, 0x15b2 + 0x11df + 0x1 * -0x26dd) * Math['PI']), LOGiNaTt[-0xb4c + 0x5fc * -0x4 + 0x1f * 0x123]) + Math['cos'](GETuSeRname['lEnHT'](useRLiSt, -0xd69 + 0x15e1 + -0x8e * 0xe) * Math['PI']) * LOGiNaTt[-0x235f * 0x1 + 0x1c4 * 0x11 + 0x55b], getUSeRname), whiTElIst[-0x3 * -0xcb + 0x11c1 + 0x1421 * -0x1] = (Math['sin'](GETuSeRname['lEnHT'](useRLiSt, 0x1 * -0x624 + 0x2447 + -0x5e3 * 0x5) * Math['PI']) * LOGiNaTt[-0x2550 + -0x1020 + -0xc * -0x474] + GETuSeRname['vsMSu'](Math['cos'](GETuSeRname['toVmH'](GETuSeRname['lEnHT'](useRLiSt, 0x26d + -0x205e * -0x1 + -0x2217), Math['PI'])), -LOGiNaTt[-0x17b * -0x2 + 0x20a + -0x4ff])) * getUSeRname, whiTElIst[0x5f6 + -0x1 * 0x1b59 + -0x1 * -0x1565] = 0x1511 + -0x24cf + -0x136 * -0xd;
var useRSnAme = Math['sqrt'](GETuSeRname['mgqNQ'](GETuSeRname['rdyNB'](LOGiNaTt[0x1 * -0x8a8 + -0x1b66 + -0x47 * -0x82], LOGiNaTt[-0x136c + 0x645 + 0xd27]) + GETuSeRname['rdyNB'](LOGiNaTt[-0x8c + 0x80b * -0x3 + 0x1 * 0x18ae], LOGiNaTt[-0x13c7 + 0xc9a + 0x1 * 0x72e]), GETuSeRname['auSXQ'](LOGiNaTt[0x1 * 0xa34 + -0x3e3 * -0x1 + -0xe15], LOGiNaTt[-0x1108 + 0x1 * 0x11f1 + -0x15 * 0xb]))),
    logINaTt = Entity['GetProp'](WHItElIst, GETuSeRname['TiLzF'], GETuSeRname['dekpT']),
    WhiTElIst = Math['sqrt'](logINaTt[-0x259e + -0x1a22 + 0x30 * 0x154] * logINaTt[-0xcef * 0x1 + -0x5 * -0x15b + -0x18a * -0x4] + GETuSeRname['auSXQ'](logINaTt[-0x695 * -0x5 + -0x1b * 0xb + -0x1fbf], logINaTt[0x1 * -0x159b + 0xae3 + 0x5 * 0x225]) + GETuSeRname['auSXQ'](logINaTt[0x252 + -0x167f + 0x142f], logINaTt[-0x43c * -0x2 + -0x1728 + -0x6 * -0x273]));
return UserCMD['SetMovement'](whiTElIst), GETuSeRname['zZTBg'](useRSnAme, USErSnAme ? USErSnAme : 0x269 * 0x1 + 0x97 * -0x35 + 0x1cdb) && (GETuSeRname['LTdsv'](WhiTElIst, -0x1 * -0x19f5 + 0x1 * 0x24e6 + -0x1 * 0x3ed9) || USErSnAme);
}

function getDropdownValue(WhITElIst, LoGINaTt) {
var wHITElIst = 0x4 * 0x756 + -0x121 * 0x1 + 0x13a * -0x17 << LoGINaTt;
return WhITElIst & wHITElIst ? !![] : ![];
}

function getAngles(uSERSnAme, lOGINaTt) {
var uSERLiSt = {
    'wrpEG': function (gETUSeRname, WHITElIst, LOGINaTt) {
        return gETUSeRname(WHITElIst, LOGINaTt);
    },
    'quSbq': function (GETUSeRname, USERLiSt) {
        return GETUSeRname + USERLiSt;
    },
    'QiBqX': function (USERSnAme, loginATt) {
        return USERSnAme * loginATt;
    },
    'psXMn': function (usersNAme, getusERname) {
        return usersNAme / getusERname;
    },
    'rGoVo': function (userlISt, whiteLIst) {
        return userlISt * whiteLIst;
    }
};
return newPos = uSERLiSt['wrpEG'](vector_sub, lOGINaTt, uSERSnAme), xyDist = Math['sqrt'](uSERLiSt['quSbq'](uSERLiSt['QiBqX'](newPos[0xc88 + -0x1f25 + 0x3b9 * 0x5], newPos[-0x4 * -0x15d + -0x635 * 0x3 + 0xd2b]), newPos[0xdbe + -0x1553 + 0x796 * 0x1] * newPos[0x5 * -0x92 + -0x1502 + 0x17dd])), yaw = uSERLiSt['psXMn'](uSERLiSt['rGoVo'](Math['atan2'](newPos[-0x1 * 0x1685 + 0x222e + -0xba8], newPos[-0x1 * 0x23e3 + 0x5 * 0x167 + 0x1ce0]), -0x2057 * 0x1 + 0x18 * -0x160 + 0x420b), Math['PI']), pitch = uSERLiSt['rGoVo'](Math['atan2'](-newPos[-0x101 * 0x1f + 0x13 * -0xc2 + 0x2d87], xyDist), 0xac0 + -0x7b3 * 0x5 + -0x1c73 * -0x1) / Math['PI'], roll = -0x24e0 + 0x8 * 0x375 + 0x938, angles = [pitch, yaw, roll], angles;
}

function VectorAngles(WhiteLIst) {
var GetusERname = {
        'anrWp': function (uSerlISt, gEtusERname) {
            return uSerlISt / gEtusERname;
        },
        'KDPny': function (wHiteLIst, lOginATt) {
            return wHiteLIst * lOginATt;
        },
        'eKFJH': function (uSersNAme, WHiteLIst) {
            return uSersNAme < WHiteLIst;
        },
        'vhaPU': function (GEtusERname, USersNAme) {
            return GEtusERname + USersNAme;
        },
        'cvQhx': function (LOginATt, USerlISt) {
            return LOginATt * USerlISt;
        },
        'nuwPs': function (loGinATt, usErsNAme) {
            return loGinATt < usErsNAme;
        }
    },
    UsersNAme, LoginATt, UserlISt;
if (WhiteLIst[-0x10a * 0x2 + 0x2198 + 0xa81 * -0x3] == 0x1 * -0x26f4 + -0x7a8 + 0x2e9c && WhiteLIst[-0x2 * -0xcd5 + -0x2 * 0x84e + -0x90e] == 0x1 * 0x1d9f + -0x1 * -0x7fd + -0x1d * 0x14c) {
    LoginATt = -0x113f + -0xba4 * 0x2 + -0x2887 * -0x1;
    if (WhiteLIst[0x1822 + -0x1da * 0x1 + -0x1 * 0x1646] > 0x15da + -0x196c + 0x392) UserlISt = -0x18e9 + -0xb * 0x26b + 0x3490;
    else UserlISt = -0x995 + -0x1 * 0x181d + 0x220c;
} else {
    LoginATt = GetusERname['anrWp'](GetusERname['KDPny'](Math['atan2'](WhiteLIst[-0x1 * 0x1b04 + -0x1 * 0x1a41 + 0x3546], WhiteLIst[-0x1 * -0x2252 + 0x185c + -0x3aae]), -0xf44 + 0x21b9 * -0x1 + 0x31b1), Math['PI']);
    if (GetusERname['eKFJH'](LoginATt, -0x7e9 + 0x1 * -0x1bbf + 0x146 * 0x1c)) LoginATt += -0x1 * 0x1b7f + 0x526 + 0x17c1;
    UsersNAme = Math['sqrt'](GetusERname['vhaPU'](GetusERname['cvQhx'](WhiteLIst[-0x1f6d + -0x127 + -0xc * -0x2b7], WhiteLIst[-0x1e26 * -0x1 + 0x1c0f + -0x3a35]), WhiteLIst[-0x145d + 0x1d2f * 0x1 + -0x8d1] * WhiteLIst[-0x6 * -0x1fe + -0x1629 + -0x1 * -0xa36])), UserlISt = GetusERname['cvQhx'](Math['atan2'](-WhiteLIst[0x5 * 0x4fd + -0x645 * -0x1 + 0x1f34 * -0x1], UsersNAme), 0x49 * -0xf + -0x1fbc + 0x24b7) / Math['PI'];
    if (GetusERname['nuwPs'](UserlISt, 0xb67 * 0x1 + -0xe4c + 0x2e5)) UserlISt += -0x21f2 + 0x4e6 + -0x79d * -0x4;
}
return [UserlISt, LoginATt, 0x418 + -0x6a0 + 0x288];
}
Cheat['RegisterCallback']('Draw', 'recheck_vis');
   
function Watermark() {
   
    // Fonts
    reg12 = Render.GetFont( "/resources/Montserrat-Regular.ttf", 12, false)

    bol12 = Render.GetFont( "/resources/Montserrat-Bold.ttf", 12, false)

    cs12 = Render.GetFont( "/resources/undefeated.ttf", 12, false)

    // Declaring colors so they can easily be used
    darkgray = [26, 26, 30, 255];
    lightgray = [255, 255, 255, 25]
    orange = [ 250, 166, 24, 255 ];
    white = [255, 255, 255, 255];
    var color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap Watermark Color"]);
   
    // Getting screen size
    ScreenSize = Render.GetScreenSize();
   
    // Getting username and the size of it
    user = Cheat.GetUsername();
    userLength = Render.TextSize(user, reg12)[0];

    // Adjusting positions and making size dynamic (syncs with username length)
    b1w = userLength + 240;
    b1x = ((ScreenSize[0])- b1w)-10;
    b1y = Math.ceil(ScreenSize[1]-(ScreenSize[1]-10));

if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap styled watermark"])) {
    // Rendering background, top line and bars
    Render.FilledRoundRect(b1x, b1y+3, b1w, 37, darkgray);
       
    // Ping bar
    Render.FilledRect((b1x+b1w)-56, b1y+3, 1, 38, lightgray);
   
    // FPS Bar
    Render.FilledRect((b1x+b1w)-121, b1y+3, 1, 38, lightgray);
   
    // Time bar
    Render.FilledRect((b1x+b1w)-184, b1y+3, 1, 38, lightgray);
   
    // Username bar
    Render.FilledRect(b1x+30, b1y+3, 1, 38, lightgray);
   
    // Top line, called after lines so item bars don't appear above this.
    Render.FilledRect(b1x, b1y+3, b1w+1, 3, color);
   
    // Declaring logo and rendering it above the background
    logo = Render.AddTexture("ot/scripts/resources/Skull.png");
    Render.TexturedRect( b1x+8, b1y+15, 14, 17, logo );
   


    // Ping
    ping = "" + Math.round(Entity.GetProp(Entity.GetLocalPlayer(), 'CPlayerResource', 'm_iPing'))
        if (ping == "NaN") {
       ping = "0";
    }
    if (10 > ping) {
       ping = "0" + ping;
    }
    Render.String((b1x+b1w)-45,b1y+16,0, ping, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-27,b1y+16,0, "MS", [255, 255, 255, 255], bol12)
   
   
   
    // FPS  
    fps = Math.floor(1 / Global.Frametime());
    if (100 > fps) {
       fps = "0" + fps;
    }
    Render.String((b1x+b1w)-113,b1y+16,0, ""+fps, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-86,b1y+16,0, "FPS", [255, 255, 255, 255], bol12)
   
   
   
    // Time
    today = new Date();
    h = today.getHours();
    m = today.getMinutes();
   
    if (10 > m) {
       m = "0" + m;
    }
   
    // Time
    Render.String((b1x+b1w)-174,b1y+16,0, h +":"+ m, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-140,b1y+17,0, "t", [255, 255, 255, 255], cs12)
   
    // Username
    Render.String(b1x+44,b1y+16,0, "" + user, [255, 255, 255, 255], reg12)
}
}
Cheat.RegisterCallback("Draw", "Watermark");


function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return {
        r: Math.round(r * 255),
        g: Math.round(g * 255),
        b: Math.round(b * 255)
    };
}

function in_bounds(vec, x, y, x2, y2) {
    return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function draw_arc(x, y, radius, start_angle, percent, thickness, color) {
        var precision = (2 * Math.PI) / 30;
        var step = Math.PI / 180;
        var inner = radius - thickness;
        var end_angle = (start_angle + percent) * step;
        var start_angle = (start_angle * Math.PI) / 180;

        for (; radius > inner; --radius) {
            for (var angle = start_angle; angle < end_angle; angle += precision) {
                var cx = Math.round(x + radius * Math.cos(angle));
                var cy = Math.round(y + radius * Math.sin(angle));

                var cx2 = Math.round(x + radius * Math.cos(angle + precision));
                var cy2 = Math.round(y + radius * Math.sin(angle + precision));

                Render.Line(cx, cy, cx2, cy2, color);
            }
        }
}

function main_aa() {
    if (!World.GetServerString()) return;

    const x = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"]),
        y = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"]);

    var font = Render.GetFont("Verdana.ttf", 9, true);
    var RealYaw = Local.GetRealYaw();
    var FakeYaw = Local.GetFakeYaw();
    var delta = Math.min(Math.abs(RealYaw - FakeYaw) / 2, 60).toFixed(1);
    var safety = Math.min(Math.round(1.7 * Math.abs(delta)), 100);
    var fGradient = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Fake Gradient"])
    var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
    if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])) {
        var side = "<-";
    } else {
        var side = "->";
    }

    var text = "    FAKE (" + delta.toString() + "  ) | safety: " + safety.toString() + "% | side: " + side;
    var w = Render.TextSize(text, font)[0] + 8;
        flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
        if (getDropdownValue(flags, 1)) {
    if (fGradient){
        Render.GradientRect(x - 4 - w, y + 2, 2, 18,0, [rgb.r,rgb.g,rgb.b,255] , [rgb.g,rgb.b,rgb.r,255]);
        Render.FilledRect(x - 2 - w, y + 2, w + 2 , 18, [17, 17, 17, color[3]]);
        Render.Circle(x + 18 - w + Render.TextSize("FAKE (" + delta.toString(), font)[0], y + 8, 1, [255, 255, 255, 255]);
        draw_arc(x + 7 - w, y + 10, 5, 0, delta * 6, 2, [rgb.g,rgb.b,rgb.r, 255]);
    }else{
        Render.FilledRect(x - 4 - w, y + 2, 2, 18, [ color[0], color[1], color[2], 255]);
        Render.FilledRect(x - 2 - w, y + 2, w + 2 , 18, [17, 17, 17, color[3]]);
        Render.Circle(x + 18 - w + Render.TextSize("FAKE (" + delta.toString(), font)[0], y + 8, 1, [255, 255, 255, 255]);
        draw_arc(x + 7 - w, y + 10, 5, 0, delta * 6, 2, [color[0], color[1], color[2], 255]);
    }
    Render.String(x + 5 - w, y + 5, 0, text, [0, 0, 0, 180], font);
    Render.String(x + 4 - w, y + 4, 0, text, [255, 255, 255, 255], font);
    if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
        const mouse_pos = Global.GetCursorPosition();
        if (in_bounds(mouse_pos, x - w, y, x + w, y + 30)) {
            UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], mouse_pos[0] + w / 2);
            UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], mouse_pos[1] - 20);
        }
    }
}
}

function draw() {
    if(!World.GetServerString())
        return;

    var today = new Date();
    var hours1 = today.getHours();
    var minutes1 = today.getMinutes();
    var seconds1 = today.getSeconds();
   
    var hours = hours1 <= 9 ? "0"+hours1+":" : hours1+":";
    var minutes = minutes1 <= 9 ? "0" + minutes1+":" : minutes1+":";
    var seconds = seconds1 <= 9 ? "0" + seconds1 : seconds1;
   
    var server_tickrate = Globals.Tickrate().toString()
    var ebanaya_hueta = Math.round(Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing")).toString() // кто это сделал - контуженный на всю голову ебаный хуесос

    color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW","Watermark & Fake indicator color"]);

    var font = Render.GetFont("Verdana.ttf", 9, true);
    var wGradient = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark Gradient"])
    var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark"])) {
    var text = "ONEX-YAW [beta] | " + Cheat.GetUsername() + " | delay: " + ebanaya_hueta + "ms | " + server_tickrate + "tick | " + hours + minutes + seconds;
   
    var w = Render.TextSize(text, font)[0] + 8;
    var x = Global.GetScreenSize()[0];

    x = x - w - 10;
    if(wGradient){
        Render.GradientRect(x - 4, 12, 2, 18,0, [rgb.r,rgb.g,rgb.b,255] , [rgb.g,rgb.b,rgb.r,255]);
        Render.FilledRect(x - 2, 12, w + 2 , 18, [ color[0], color[1], color[2], color[3] ]);
    }else{
        Render.FilledRect(x - 2, 10, w + 2 , 2, [ color[0], color[1], color[2], color[3] ]);
        Render.FilledRect(x - 2, 12, w + 2 , 18, [ color[0], color[1], color[2], color[3] ]);
    }
    Render.String(x + 5, 10 + 5, 0, text, [0, 0, 0, 180], font);
    Render.String(x + 4, 10 + 4, 0, text, [ 255, 255, 255, 255 ], font);
}
}
Cheat.RegisterCallback("Draw", "draw");
Global.RegisterCallback("Draw", "main_aa");

function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return {
        r: Math.round(r * 255),
        g: Math.round(g * 255),
        b: Math.round(b * 255)
    };
}

function get_spectators()
{
    var specs = [];
    const players = Entity.GetPlayers();

    for (i = 0; i < players.length; i++)
    {
        const cur = players[i];

        if (Entity.GetProp(cur, "CBasePlayer", "m_hObserverTarget") != "m_hObserverTarget") {
            const obs = Entity.GetProp(cur, "CBasePlayer", "m_hObserverTarget")

            if (obs === Entity.GetLocalPlayer())
            {
                const name = Entity.GetName(cur);
                specs.push(name);
            }
        }
    }

    return specs;
}

function main_spec() {
    var salpha = 0;

        if (!World.GetServerString()) return;
        const x = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec x"]),
            y = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec y"]);
        const text = get_spectators();
        colorspec = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"]);

        var font = Render.AddFont("Verdana", 10, 100);
        var frames = 8 * Globals.Frametime();
        var width2 = 84;
        var maxwidth2 = 0;
        var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
     
        if (text.length > 0) {
            salpha = Math.min(salpha + frames, 1);
        } else {
            salpha = salpha - frames;
            if (salpha < 0) salpha = 0;
        }
     
        for (i = 0; i < text.length; i++) {
            if (Render.TextSize(text[i], font)[0] > maxwidth2) {
                maxwidth2 = Render.TextSize(text[i], font)[0];
            }
        }
        if (maxwidth2 == 0) maxwidth2 = 50;
        width2 = width2 + maxwidth2;
     
            flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
            if (getDropdownValue(flags, 4)) {


        for (i = 0; i < text.length; i++)
        {
            Render.FilledRect(x, y + 1, width2, 18, [colorspec[0], colorspec[1], colorspec[2], colorspec[3]]);

            Render.FilledRect(x, y + 3, width2, 18, [17, 17, 17,  255]);
            Render.String(x + width2 / 2 - (Render.TextSize("spectators", font)[0] / 2) + 2, y + 5, 0, "spectators", [0, 0, 0,  255], font);
            Render.String(x + width2 / 2 - (Render.TextSize("spectators", font)[0] / 2) + 1, y + 6, 0, "spectators", [255, 255, 255,  255], font);
   
        Render.String(x + (Render.TextSize((text[i]), font)[0] /2 ) , y + 24 + 15 * i, 1, text[i], [0, 0, 0, 255 / 1.3], font);
        Render.String(x + (Render.TextSize((text[i]), font)[0] /2 ), y + 24 + 15 * i, 1, text[i], [255, 255, 255, 255], font);
        }  
    }
             
     
        if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
            const mouse_pos = Global.GetCursorPosition();
            if (in_bounds(mouse_pos, x, y, x + width2, y + 30)) {
                UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec x"], mouse_pos[0] - width2 / 2);
                UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec y"], mouse_pos[1] - 20);
            }
        }
       
}
Global.RegisterCallback("Draw", "main_spec")

function RGB(h, s, v)
{
    var r, g, b, i, f, p, q, t;
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
   
return {  r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) }; }

var oldTick = Global.Tickcount()
var ticksToDelay = 1
var up = true

function rgbglow()
{
  tickcount = Global.Tickcount();
  color = RGB(tickcount % 350 / 350, 1, 1, 1, 120);

  var glow_checkbox = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Rainbow Color"]);
  var glow_checkbox1 = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Rainbow Color"]);
  var glow_checkbox2 = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Prediction Rainbow Color"]);

    if ( glow_checkbox )
        {
          UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"], [color.r, color.g, color.b, 255]);

        }
        if ( glow_checkbox1 )
        {
          UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"], [color.r, color.g, color.b, 255]);

     }
     if ( glow_checkbox2 )
     {
       UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Predict Color"], [color.r, color.g, color.b, 255]);

     }
}

Cheat.RegisterCallback("CreateMove","rgbglow");



function in_bounds(vec, x, y, x2, y2) {
return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function draw_arc(x, y, radius, start_angle, percent, thickness, color) {
var precision = (2 * Math.PI) / 30;
var step = Math.PI / 180;
var inner = radius - thickness;
var end_angle = (start_angle + percent) * step;
var start_angle = (start_angle * Math.PI) / 180;

for (; radius > inner; --radius) {
for (var angle = start_angle; angle < end_angle; angle += precision) {
var cx = Math.round(x + radius * Math.cos(angle));
var cy = Math.round(y + radius * Math.sin(angle));

var cx2 = Math.round(x + radius * Math.cos(angle + precision));
var cy2 = Math.round(y + radius * Math.sin(angle + precision));

Render.Line(cx, cy, cx2, cy2, color);
}
}
}

function d()
{
    UI.SetValue(["Misc.", "SUBTAB_MGR", "Movement", "SHEET_MGR","General","Turn speed"],UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Strafe Turn speed"]))

}
Cheat.RegisterCallback("Draw", "d")






var alpha = 0;
var maxwidth = 0;
var swalpha = 0;
var dmgalpha = 0;
var legitaalpha = 0;
var fdalpha = 0;
var apalpha = 0;
var aialpha = 0;
var spalpha = 0;
var fbalpha = 0;
var dtalpha = 0;
var hsalpha = 0;
var doalpha = 0;
var textalpha = 0;
var h = new Array();

function in_bounds(vec, x, y, x2, y2) {
    return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function main_hotkeys() {
     flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
     if (getDropdownValue(flags, 3)) {
        if (!World.GetServerString()) return;

        const x = (UI.GetValue(["Rage", "ONEX-YAW", "Hotkeys_x"]))
        const y = UI.GetValue(["Rage", "ONEX-YAW", "Hotkeys_y"]);
        var font = Render.AddFont("Verdana", 10, 100);
        var frames = 8 * Globals.Frametime();
        var width = 75;
        var maxwidth = 0;
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            swalpha = Math.min(swalpha + frames, 1);
        } else {
            swalpha = swalpha - frames;
            if (swalpha < 0) swalpha = 0;
            if (swalpha == 0) {
                h.splice(h.indexOf("Slow walk"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"])) {
            fdalpha = Math.min(fdalpha + frames, 1);
        } else {
            fdalpha = fdalpha - frames;
            if (fdalpha < 0) fdalpha = 0;
            if (fdalpha == 0) {
                h.splice(h.indexOf("Duck peek assist"));
            }
        }
       
        if (UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"])) {
            apalpha = Math.min(apalpha + frames, 1);
        } else {
            apalpha = apalpha - frames;
            if (apalpha < 0) apalpha = 0;
            if (apalpha == 0) {
                h.splice(h.indexOf("Auto peek"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            aialpha = Math.min(aialpha + frames, 1);
        } else {
            aialpha = aialpha - frames;
            if (aialpha < 0) aialpha = 0;
            if (aialpha == 0) {
                h.splice(h.indexOf("Anti-aim inverter"));
            }
        }

       
        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            aialpha = Math.min(aialpha + frames, 1);
        } else {
            aialpha = aialpha - frames;
            if (aialpha < 0) aialpha = 0;
            if (aialpha == 0) {
                h.splice(h.indexOf("Inverter"));
            }
        }

        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"])) {
            spalpha = Math.min(spalpha + frames, 1);
        } else {
            spalpha = spalpha - frames;
            if (spalpha < 0) spalpha = 0;
            if (spalpha == 0) {
                h.splice(h.indexOf("Safe point override"));
            }
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"])) {
            fbalpha = Math.min(fbalpha + frames, 1);
        } else {
            fbalpha = fbalpha - frames;
            if (fbalpha < 0) fbalpha = 0;
            if (fbalpha == 0) {
                h.splice(h.indexOf("Force body aim"));
            }
        }

        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Double tap"])) {
            dtalpha = Math.min(dtalpha + frames, 1);
        } else {
            dtalpha = dtalpha - frames;
            if (dtalpha < 0) dtalpha = 0;
            if (dtalpha == 0) {
                h.splice(h.indexOf("Double tap"));
            }
        }

        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"])) {
            dmgalpha = Math.min(dmgalpha + frames, 1);
        } else {
            dmgalpha = dmgalpha - frames;
            if (dmgalpha < 0) dmgalpha = 0;
            if (dmgalpha == 0) {
                h.splice(h.indexOf("Hide shots"));
            }
        }
        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
            legitaalpha = Math.min(legitaalpha + frames, 1);
        } else {
            legitaalpha = legitaalpha - frames;
            if (legitaalpha < 0) legitaalpha = 0;
            if (legitaalpha == 0) {
                h.splice(h.indexOf("Legit AA"));
            }
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Hide shots"])) {
            hsalpha = Math.min(hsalpha + frames, 1);
        } else {
            hsalpha = hsalpha - frames;
            if (hsalpha < 0) hsalpha = 0;
            if (hsalpha == 0) {
                h.splice(h.indexOf("Hide shots"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            if (h.indexOf("Slow walk") == -1)
                h.push("Slow walk")
        }
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"])) {
            if (h.indexOf("Duck peek assist") == -1)
                h.push("Duck peek assist")
        }
        if (UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"])) {
            if (h.indexOf("Auto peek") == -1)
                h.push("Auto peek")
        }
        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            if (h.indexOf("Anti-aim inverter") == -1)
                h.push("Anti-aim inverter")
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"])) {
            if (h.indexOf("Safe point override") == -1)
                h.push("Safe point override")
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"])) {
            if (h.indexOf("Force body aim") == -1)
                h.push("Force body aim")
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Double tap"])) {
            if (h.indexOf("Double tap") == -1)
                h.push("Double tap")
        }
        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"])) {
            if (h.indexOf("Damage Override") == -1)
                h.push("Damage Override")
        }
            if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
            if (h.indexOf("Legit AA") == -1)
                h.push("Legit AA")
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Hide shots"])) {
            if (h.indexOf("Hide shots") == -1)
                h.push("Hide shots")
        }
         arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"]);

        if (h.length > 0) {
            alpha = Math.min(alpha + frames, 1);
        } else {
            alpha = alpha - frames;
            if (alpha < 0) alpha = 0;
        }
        for (i = 0; i < h.length; i++) {
            if (Render.TextSize(h[i], font)[0] > maxwidth) {
                maxwidth = Render.TextSize(h[i], font)[0];
            }
        }
        if (maxwidth == 0) maxwidth = 50;
        width = width + maxwidth;
        if (alpha > 0) {
                Render.FilledRect(x, y + 3, width, 2, [arrows_color[0], arrows_color[1], arrows_color[2], alpha * 255]);
                Render.FilledRect(x, y + 5, width, 18, [17, 17, 17, 255]);
                Render.String(x + width / 2 - (Render.TextSize("keybinds", font)[0] / 2) + 2, y + 9, 0, "keybinds", [0, 0, 0, alpha * 255 / 1.3], font);
                Render.String(x + width / 2 - (Render.TextSize("keybinds", font)[0] / 2) + 1, y + 8, 0, "keybinds", [255, 255, 255, alpha * 255], font);
                //Render.FilledRect(x, y + 23, width, 18 * h.length, [17, 17, 17, Math.min(255, alpha * 255)]);
                for (i = 0; i < h.length; i++) {
                    switch (h[i]) {
                        case 'Slow walk':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(swalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, swalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, swalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, swalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, swalpha * 255], font);
                            break;
                        case 'Duck peek assist':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(fdalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, fdalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, fdalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, fdalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, fdalpha * 255], font);
                            break;
                        case 'Auto peek':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(apalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, apalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, apalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, apalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, apalpha * 255], font);
                            break;
                        case 'Anti-aim inverter':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(aialpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, aialpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, aialpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, aialpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, aialpha * 255], font);
                            break;
                            case 'Legit AA':
                                Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(aialpha * 255, 255))]);
                                Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, legitaalpha * 255 / 1.3], font);
                                Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, legitaalpha * 255], font);
   
                                Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, legitaalpha * 255 / 1.3], font);
                                Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, legitaalpha * 255], font);
                                break;
                        case 'Safe point override':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(spalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, spalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, spalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, spalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, spalpha * 255], font);
                            break;
                        case 'Force body aim':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(fbalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, fbalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, fbalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, fbalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, fbalpha * 255], font);
                            break;
                            case 'Damage Override':
                                Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(255, 255))]);
                                Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, 255], font);
                                Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, 255], font);
   
                                Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0,  255 / 1.3], font);
                                Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255,  255], font);
                                break;
                        case 'Double tap':

                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, 255], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, dtalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, dtalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, dtalpha * 255], font);
                            break;

                        case 'Hide shots':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min( 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0,  hsalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, hsalpha *  255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, hsalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, hsalpha * 255], font);
                            break;

                    }

                }
        }
        if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
            const mouse_pos = Global.GetCursorPosition();
            if (in_bounds(mouse_pos, x, y, x + width, y + 30)) {
                UI.SetValue(["Rage", "ONEX-YAW", "Hotkeys_x"], mouse_pos[0] - 50);
                UI.SetValue(["Rage", "ONEX-YAW", "Hotkeys_y"], mouse_pos[1] - 20);
            }
        }
    }
}
Global.RegisterCallback("Draw", "main_hotkeys")

hitboxes = [
    'generic',
    'head',
    'chest',
    'stomach',
    'left arm',
    'right arm',
    'left leg',
    'right leg',
    '?'
];
var shots = 0;
var predicthc = 0;
var safety = 0;
var hitboxName = "";
var choked = 0;
var exploit = 0;
var logs = [];
var logsct = [];
var logsalpha = [];
function getHitboxName(index)
{
    switch (index)
    {
        case 0:
            hitboxName = "head";
            break;
        case 1:
            hitboxName = "head";
            break;
        case 2:
            hitboxName = "stomach";
            break;
        case 3:
            hitboxName = "stomach";
            break;
        case 4:
            hitboxName = "stomach";
            break;
        case 5:
            hitboxName = "chest";
            break;
        case 6:
            hitboxName = "chest";
            break;
        case 7:
            hitboxName = "left leg";
            break;
        case 8:
            hitboxName = "right leg";
            break;
        case 9:
            hitboxName = "left leg";
            break;
        case 10:
            hitboxName = "right leg";
            break;
        case 11:
            hitboxName = "left leg";
            break;
        case 12:
            hitboxName = "right leg";
            break;
        case 13:
            hitboxName = "left arm";
            break;
        case 14:
            hitboxName = "right arm";
            break;
        case 15:
            hitboxName = "left arm";
            break;
        case 16:
            hitboxName = "left arm";
            break;
        case 17:
            hitboxName = "right arm";
            break;
        case 18:
            hitboxName = "right arm";
            break;
        default:
            hitboxName = "body";
    }
    return hitboxName;
}
function HitgroupName(index) {
    return hitboxes[index] || 'body';
}

var target = -1;
var shots_fired = 0;
var hits = 0;
var lastUpdate = 0;
var logged = false;

function ragebot_fire() {
    predicthc = Event.GetInt("hitchance");
    safety = Event.GetInt("safepoint");
    hitboxName = getHitboxName(Event.GetInt("hitbox"));
    exploit = (Event.GetInt("exploit")+1).toString();
  target = Event.GetInt("target_index");
  shots_fired++;
  logged = false;
  lastUpdate = Globals.Curtime();
}

function hitlog() {
    var hit = Entity.GetEntityFromUserID(Event.GetInt("userid"));
    var attacker = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
    if (attacker == Entity.GetLocalPlayer() && hit == target) hits++;

    var hittype = "Hit ";
    me = Entity.GetLocalPlayer();
    hitbox = Event.GetInt('hitgroup');
    target_damage = Event.GetInt("dmg_health");
    target_health = Event.GetInt("health");
    victim = Event.GetInt('userid');
    attacker = Event.GetInt('attacker');
    weapon = Event.GetString('weapon');
    victimIndex = Entity.GetEntityFromUserID(victim);
    attackerIndex = Entity.GetEntityFromUserID(attacker);
    name = Entity.GetName(victimIndex);
      var simtime = Globals.Tickcount() % 17;

    var flags = "";

    if (exploit == 2)
      flags += "T";

    flags += "B";

    if (hitbox == 1)
      flags += "H";

      if (safety == 1) {
          safety = "true";
      }
      else {
          safety = "false";
      }

    if (weapon == "hegrenade")
      hittype = "Naded ";
    else if (weapon == "inferno")
      hittype = "Burned ";
    else if (weapon == "knife")
      hittype = "Knifed ";

    if (me == attackerIndex && me != victimIndex) {
    if (hittype == "Hit ") {

            if(UI.GetValue(["Rage", "ONEX-YAW", "Better Shotlogger"])) {

                Cheat.PrintColor([255, 255, 255, 255], "[onetap] ");

      Cheat.Print("["+shots.toString()+"] "+hittype+name+"'s "+HitgroupName(hitbox)+" for "+target_damage.toString()+" ("+target_health.toString()+" remaining) aimed="+hitboxName+"("+predicthc.toString()+"%%) safety="+safety+" ("+flags+") ("+simtime+":"+exploit+")\n");
          logs.push("["+shots.toString()+"] "+hittype+name+"'s "+HitgroupName(hitbox)+" for "+target_damage.toString()+" ("+target_health.toString()+" remaining) aimed="+hitboxName+"("+predicthc.toString()+"%%) safety="+safety+" ("+flags+") ("+simtime+":"+exploit+")");
    }

        logsct.push(Globals.Curtime());
        logsalpha.push(255);
    }
    }
  if (shots == 99)
    shots = 0;
  else
    shots++;

}

function removelogs() {
    if (logs.length > 6) {
        logs.shift();
        logsct.shift();
        logsalpha.shift();
    }

    if (logsct[0] + 6.5 < Globals.Curtime()) {
        logsalpha[0] -= Globals.Frametime() * 600;
        if (logsalpha[0] < 0) {
            logs.shift();
            logsct.shift();
            logsalpha.shift();
        }
    }
}


function onDraw() {
    if (!World.GetServerString()) return;
    var font = Render.GetFont("smallest_pixel-7.ttf", 9, true);



    for (i = 0; i < logs.length; i++) {
        Render.String(4, 4 + 13*i, 0, logs[i], [255, 255, 255, logsalpha[i]], font);
    }

    if (shots_fired > hits && (Globals.Curtime() - lastUpdate > 0.33)) {
      if (Globals.Curtime() - lastUpdate > 1) {
        shots_fired = 0;
        hits = 0;
      }
      if (!logged) {
        var simtime = Globals.Tickcount() % 16;
        logged = true;
        var issafe = "true";
        var reason = "?";
        if (safety == 0) {
          issafe = "false";
        }

        if (Entity.IsAlive(target) == false)
            reason = "death";
        else if (Entity.IsAlive(Entity.GetLocalPlayer()) == false)
            reason = "dead";
        else if (safety == true && predicthc < 76)
            reason = "spread";
        else if (safety == true && predicthc > 76)
            reason = "prediction error";

        var flags = "";

        if (exploit == 2)
          flags += "T";

          flags += "B";

        if(UI.GetValue(["Rage", "ONEX-YAW", "Better Shotlogger"])) {
            Cheat.PrintColor([255, 255, 255, 255], "[onetap] ");

        Cheat.Print("["+shots.toString()+"] "+"Missed "+Entity.GetName(target)+"'s "+hitboxName+"("+predicthc.toString()+"%%) due to "+reason+", safety="+issafe+" ("+flags+") ("+simtime+":"+exploit+")\n");
            logs.push("["+shots.toString()+"] "+"Missed "+Entity.GetName(target)+"'s "+hitboxName+"("+predicthc.toString()+"%%) due to "+reason+", safety="+issafe+" ("+flags+") ("+simtime+":"+exploit+")");

        logsct.push(Globals.Curtime());
            logsalpha.push(255);
        if (shots == 99)
          shots = 0;
        else
          shots++;
        }
    }
    }
}
function main() {
    Global.RegisterCallback("ragebot_fire", "ragebot_fire");
    Global.RegisterCallback("player_hurt", "hitlog");
    Global.RegisterCallback("Draw", "onDraw");
    Global.RegisterCallback("Draw", "removelogs");
}

main();
for(var name in weaponTabNames) {
    UI.AddSliderInt(["Rage", "Target", weaponTabNames[name]], "Damage Override", 0, 130)
    UI.AddSliderInt(["Rage", "Accuracy", weaponTabNames[name]], "Hitchance Override", 1, 100)
}
var weap_rev = (Entity.GetProp(Entity.GetWeapon(Entity.GetLocalPlayer()), "CBaseAttributableItem", "m_iItemDefinitionIndex") & 0xFFFF) == 64
var username = Cheat.GetUsername()
var screen_size = Global.GetScreenSize()
var lp = Entity.GetLocalPlayer()
var velocity = Math.round(getVelocity(lp)).toString()
var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
var oldTick = 0
var lastPressed = 0
var curtick = 0
var h = [];
var drawLeft = 0
var drawHideReal = 1
var drawRight = 0
var drawBack = 0
var leftWasPressed = 0
var rightWasPressed = 0
var backWasPressed = 0
var upWasPressed = 0
var isHideRealActive = 0
var altfakelag = 0
var cur_dmg = 0
var cur_hit = 0
var anim = 10 * Math.abs(Math.sin(64 * Globals.Realtime()))
var antiaim_state = "default"
var weapon = ""
var recharge = 0
var r8dt = false
var legitaa_time = Global.Realtime()
var E = true
var defuse = false
var distance = 0
var distance1 = 0
var original_aa = true
var planting = false
var fill = 0
var isbomb = 0
var bombsiteonplant = ""
var on_plant_time
    /* PATHES ARRAY */
pathes = []
var lasttime = 0
function get_all_keys() {
    ragekeysgeneral = UI.GetChildren(["Rage", "General", "SHEET_MGR", "General", "Key assignment"])
    ragekeysexploits = UI.GetChildren(["Rage", "Exploits", "SHEET_MGR", "Keys", "Key assignment"])
    ragekeysantiaim = UI.GetChildren(["Rage", "Anti Aim", "SHEET_MGR", "General", "Key assignment"])
    miskkeys = UI.GetChildren(["Misc.", "Keys", "SHEET_MGR", "General", "Key assignment"])
    scriptkeys = UI.GetChildren(["Config", "Scripts", "Keys", "JS Keybinds", ])
    for(p in ragekeysgeneral) {
        pathes.push([
            ["Rage", "General", "SHEET_MGR", "General", "Key assignment", ragekeysgeneral[p]], ragekeysgeneral[p]
        ])
    }
    for(o in ragekeysexploits) {
        pathes.push([
            ["Rage", "Exploits", "SHEET_MGR", "Keys", "Key assignment", ragekeysexploits[o]], ragekeysexploits[o]
        ])
    }
    for(r in ragekeysantiaim) {
        pathes.push([
            ["Rage", "Anti Aim", "SHEET_MGR", "General", "Key assignment", ragekeysantiaim[r]], ragekeysantiaim[r]
        ])
    }
    for(n in miskkeys) {
        pathes.push([
            ["Misc.", "Keys", "SHEET_MGR", "General", "Key assignment", miskkeys[n]], miskkeys[n]
        ])
    }
    for(z in scriptkeys) {
        pathes.push([
            ["Config", "Scripts", "Keys", "JS Keybinds", scriptkeys[z]], scriptkeys[z]
        ])
    }
}
/* On start */
get_all_keys()
/* shadow */
Render.Strings = function(x, y, align, txt, col, font){
    Render.String(x, y + 1, align, txt, [0, 0, 0, 255], font);
    Render.String(x, y, align, txt, col, font);
}
/* dt */
function doubletap(name) {
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Doubletap"])) {
        var exploitCharge = Exploit.GetCharge();
        Exploit[(1 != exploitCharge ? "Enable" : "Disable") + "Recharge"](), Exploit.OverrideMaxProcessTicks(UI.GetValue(["Rage", "ONEX-YAW", "Double Tap Ticks"])), Exploit.OverrideShift(UI.GetValue(["Rage", "ONEX-YAW", "Double Tap Ticks"]))
        Exploit.OverrideTolerance(0), can_shift_shot(10) && 1 != exploitCharge && (Exploit.DisableRecharge(), Exploit.Recharge())
        if(name == "ssg08") {
            can_shift_shot(0)
                }
        Exploit.EnableRecharge(), Exploit.OverrideShift(16), Exploit.OverrideTolerance(3)
    }
    if(weap_rev) {
        if(r8dt && recharge + 20 == Globals.Tickcount()) {
            UI.ToggleHotkey(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])
            r8dt = false
        }
    }
}

function on_wpn_fire() {
    if((Entity.GetEntityFromUserID(Event.GetInt("userid")) != Entity.GetLocalPlayer()) || !weap_rev) return;
    recharge = Globals.Tickcount();
    if(UI.GetValue(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])) {
        UI.ToggleHotkey(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])
        r8dt = true;
    }
}

function doubletapunload() {
    Exploit.EnableRecharge(), Exploit.OverrideShift(16), Exploit.OverrideTolerance(0)
}
/* damage/hitchance override */
function dmghcoverride() {
    var target = Entity.GetEnemies()
    var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
    if(!Entity.IsAlive(Entity.GetLocalPlayer())) return;
    if(!weaponTabNames.hasOwnProperty(weaponName)) {
        return;
    }
    var isDamageOverride = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"]) ? true : false
    var isHitchanceOverride = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Hitchance Override"]) ? true : false
    for(var i in target) {
        if(isDamageOverride) {
            if(UI.GetValue(["Rage", "Target", weaponTabNames[weaponName], "Damage Override"]) != 0) {
                Ragebot.ForceTargetMinimumDamage(target[i], UI.GetValue(["Rage", "Target", weaponTabNames[weaponName], "Damage Override"]))
            } else {
                Ragebot.ForceTargetMinimumDamage(target[i], UI.GetValue(["Rage", "Target", "General", "Damage Override"]))
            }
        }
        if(isHitchanceOverride) {
            if(UI.GetValue(["Rage", "Accuracy", weaponTabNames[weaponName], "Hitchance Override"]) != 0) {
                Ragebot.ForceTargetHitchance(target[i], UI.GetValue(["Rage", "Accuracy", weaponTabNames[weaponName], "Hitchance Override"]))
            } else {
                Ragebot.ForceTargetHitchance(target[i], UI.GetValue(["Rage", "Accuracy", "General", "Hitchance Override"]))
            }
        }
    }
}
/* UI Status controller */
function on_menu_changes() {
    var type = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Tab"])
    var is_rage = type == 0 ? 1 : 0,
        is_vis = type == 1 ? 1 : 0,
        is_rgb = type == 2 ? 1 : 0,
        is_misc = type == 3 ? 1 : 0
        is_trash = type == 4 ? 1 : 0

        /* RAGE */
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Doubletap"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Double Tap Ticks"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Anti-Aim"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Anti-Aim Conditions"], is_rage == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Better Anti-Aim"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Fake-Lag"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW","Anti Bruteforce"], is_rage)
        /* VISUALS */
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Manual & Desync Indicator"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap Watermark Color"], is_rgb)

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Blend While Holding Grenade"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Shotlogger"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Crosshair Hitlogger"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Quake Hitmarker"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hitmarker Color"], is_rgb)

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Custom scope lines"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines color"], is_rgb);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Override FOV while scoped"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines width"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines offset"], is_vis);

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap styled watermark"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark & Fake indicator color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Predict Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Prediction Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark Gradient"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Fake Gradient"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spec x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spec y"], is_trash)
   
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Leg Fucker"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Manual Color"], is_rgb == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Desync Color"], is_rgb == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Aspect ratio"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Strafe Turn speed"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "ThirdPerson Dist"], is_vis)


    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "AWP Fast Buy"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hotkeys_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hotkeys_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Additional Flags"], is_misc)
}

function crosshairindicators()
{
    var fonts = {
        "tahomabd": Render.GetFont("tahomabd.ttf", 10, true),
        "verdanab": Render.GetFont("verdanab.ttf", 19, true),
        "calibrib": Render.GetFont("calibrib.ttf", 11, true),
        "ebrimabd": Render.GetFont("ebrimabd.ttf", 10, true),
        "verdanab8": Render.GetFont("verdanab.ttf", 8, true),
        "verdana": Render.GetFont("smallest_pixel-7.ttf", 12, true),
        "tahoma10": Render.GetFont("tahoma.ttf", 10, true),
        "calibrib20": Render.GetFont("calibrib.ttf", 20, true),
        "tahoma18": Render.GetFont("tahoma.ttf", 18, true),
        "pixel": Render.GetFont("arialbd.ttf", 10, true)
    }
    inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
    isDmg = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"]);
    isDoubletap = UI.GetValue(["Rage", "Exploits", "Keys", "Double tap"]);
    isHideshots = UI.GetValue(["Rage", "Exploits", "Keys", "Hide shots"]);
    isSafe = UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"]);;
    isBody = UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]);
    isFs = UI.GetValue(["Rage", "Anti Aim", "Directions", "At targets"]);
    isAuto = UI.GetValue(["Rage", "Anti Aim", "Directions", "Auto direction"]);
    isDuck = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]);
    isPing = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Ping Spike"]);
    isPeek = UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"]);
    isAntiAim = UI.GetValue(["Rage", "Anti Aim", "General", "Enabled"])
    isHc = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Hitchance Override"])
    isSlow = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"]);
    add_y = 15;
     flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
     var col = [255, 0, 100, 255];
     function get_velocity(player) {var velocity = Entity.GetProp(player, "CBasePlayer", "m_vecVelocity[0]");return Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);}
     function get_delta(player) {var speed = get_velocity(player);var delta = (speed / 8);return (58 - delta);}
   
    var local_player = Entity.GetLocalPlayer();
     var desync_delta = get_delta(local_player)  

    if (getDropdownValue(flags, 0)) {
    if(isBody) {
        Render.String(screen_size[0] / 2 - 20.5, screen_size[1] / 2 + add_y, 0, "BAIM", [0, 0, 0, 155], fonts.pixel);
        Render.String(screen_size[0] / 2 - 20.5, screen_size[1] / 2 + add_y, 0, "BAIM", [177, 171, 255, 255], fonts.ebrimabd);
    } else if(isSafe) {
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "SP", [0, 0, 0, 100], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "SP", [177, 171, 255, 255], fonts.ebrimabd);
    } else {
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "NORM", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "NORM", [3, 161, 252, 255], fonts.ebrimabd);
    }
    if(isFs) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "AUTO", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "AUTO", [209, 159, 230, 255], fonts.ebrimabd);
    } else {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "DYNAMIC", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "DYNAMIC", [209, 159, 230, 255], fonts.ebrimabd);
    }
    if(isDuck && isDoubletap) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT (fd)", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT (fd)", [255, 0, 0, 255], fonts.ebrimabd);
    } else if(isDoubletap) {
        add_y = add_y + 11
    /*    var dsy = {
            "col": UI.GetColor(["Rage", "XO-YAW", "Desync Circle Color"]),
            "inv": UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
        }
        var screens_size = Render.GetScreenSize();
        var screen_middle_x = screens_size[0] * 0.5;
        var screen_middle_y = screens_size[1] * 0.5;
        var view_angles = Local.GetViewAngles();
        var real_yaw = Local.GetRealYaw();
        var fake_yaw = Local.GetFakeYaw();
        var view_yaw = view_angles[1] - 180;
        var real = adjust_angle(real_yaw - view_yaw);
        var fake = adjust_angle(fake_yaw - view_yaw);
        render_arc(screen_middle_x, screen_middle_y, 8, 3, 0, 360, 32, [0, 0, 0, 255])
        render_arc(screen_middle_x, screen_middle_y, 7, 4, dsy.inv ? 90 : 270, dsy.inv ? 180 : 180, 32, dsy.col)
        render_arc(screen_middle_x, screen_middle_y, 15, 12, fake - (12 * 0.5), 44, 32, dsy.col)
        */
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", [0, 0, 0, 155], fonts.ebrimabd);

        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", Exploit.GetCharge() == 1 ? [200, 255, 255, 255] : [212, 208, 207, 255], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", Exploit.GetCharge() == 1 ? [200, 255, 255, 255] : [212, 208, 207, 255], fonts.ebrimabd);

    }
    if(isHideshots) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [200, 255, 255, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [200, 255, 255, 255], fonts.ebrimabd);
    }
    if(isDmg) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DMG", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DMG", [200, 185, 255, 255], fonts.ebrimabd);
    }
    if(isHc) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HC", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HC", [250, 85, 85, 255], fonts.ebrimabd)
    }
//    Render.GradientRect((Global.GetScreenSize()[0] / 2 + -desync_delta * 2) + desync_delta + 2, Global.GetScreenSize()[1] / 2 + 11, desync_delta, 3, 1, [col[0], col[1], col[2], 0], [col[0], col[1], col[2], 255]);
//    Render.GradientRect((Global.GetScreenSize()[0] / 2 + -desync_delta * 2) + (desync_delta * 2), Global.GetScreenSize()[1] / 2 + 11, desync_delta, 3, 1, [col[0], col[1], col[2], 255], [col[0], col[1], col[2], 0]);
}
if(getDropdownValue(flags, 2)) {
    add_y = 0
    Render.Indicator = function(text, col) {
        x = screen_size[0] / 100
        y = screen_size[1] / 1.33
        fonts = Render.GetFont("calibrib.ttf", 21, true)
        text_size = Render.TextSize(text, fonts)
        width = text_size[0] - 2;
        add_y = add_y + 33
        Render.GradientRect(13, y - add_y - 3, width / 2, 26, 1, [0, 0, 0, 0], [0, 0, 0, 55]);
        Render.GradientRect(13 + width / 2, y - add_y - 3, width / 2, 26, 1, [0, 0, 0, 55], [0, 0, 0, 0]);
        Render.String(x, y + 1 - add_y, 0, text, [33, 33, 33, 180], fonts)
        Render.String(x, y - add_y, 0, text, col, fonts)
    }
    fill = 3.125 - (3.125 + on_plant_time - Globals.Curtime())
    if(fill > 3.125) {
        fill = 3.125
    }
    fonts = Render.GetFont("calibrib.ttf", 21, true)
    if(Entity.IsAlive(Entity.GetLocalPlayer())) {
        if(velocity > 255 || Inair()) {
            Render.Indicator("LC", velocity > 275 ? [132, 195, 16, 255] : [255, 0, 0, 255])
        }
        if(isDuck) {
            Render.Indicator("DUCK", [255, 255, 255, 255])
        }
        if(isBody) {
            Render.Indicator("BAIM", [255, 0, 0, 255])
        }
        if(isSafe) {
            Render.Indicator("SAFE", [132, 195, 16, 255])
        }
        if(isPing) {
            Render.Indicator("PING", [255 - ((Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 2.29824561404), (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 3.42105263158, (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 0.22807017543, 255])
        }
        if(isDmg) {
            Render.Indicator("DMG : " + cur_dmg + "", [164, 164, 164, 255]);
        }
        if(isHc) {
            Render.Indicator("HC : " + cur_hit + "", [200, 185, 255, 255]);
        }
        if(isAuto) {
            Render.Indicator("FREESTAND", [132, 195, 16, 255]);
        }
        if(Convar.GetInt("weapon_accuracy_nospread") != 0) {
            Render.Indicator("NS", [255, 0, 0, 255])
        }
        if(isFs) {
            Render.Indicator("AT", [132, 195, 16, 255])
        }
    }
    var c4 = Entity.GetEntitiesByClassID(129)[0];
    if(c4 != undefined) {
        var eLoc = Entity.GetRenderOrigin(c4);
        var lLoc = Entity.GetRenderOrigin(Entity.GetLocalPlayer())
        var distance = calcDist(eLoc, lLoc);
        var willKill = false;
        var dmg;
        //player checks
        var armor = Entity.GetProp(Entity.GetLocalPlayer(), "CCSPlayerResource", "m_iArmor"); // player armor
        var health = Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_iHealth"); // player health
        //c4 things
        var isbombticking = Entity.GetProp(c4, "CPlantedC4", "m_bBombTicking");
        var timer = (Entity.GetProp(c4, "CPlantedC4", "m_flC4Blow") - Globals.Curtime()); // c4 left time
        var c4length = Entity.GetProp(c4, "CPlantedC4", "m_flTimerLength");
        var bar_length = (((Render.GetScreenSize()[1] - 50) / c4length) * (timer));
        //defusing things
        var deflength = Entity.GetProp(c4, "CPlantedC4", "m_flDefuseLength"); // length of defuse
        var deftimer = (Entity.GetProp(c4, "CPlantedC4", "m_flDefuseCountDown") - Globals.Curtime()); // timer when defusing
        var defbarlength = (((Render.GetScreenSize()[1] - 50) / deflength) * (deftimer)); // lenght for left bar
        var isbeingdefused = Entity.GetProp(c4, "CPlantedC4", "m_hBombDefuser"); // check if bomb is being defused
        var gotdefused = Entity.GetProp(c4, "CPlantedC4", "m_bBombDefused"); // check if bomb has or hasnt defused
        const a = 450.7;
        const b = 75.68;
        const c = 789.2;
        const d = (distance - b) / c;
        var damage = a * Math.exp(-d * d);
        if(armor > 0) {
            var newDmg = damage * 0.5;
            var armorDmg = (damage - newDmg) * 0.5;
            if(armorDmg > armor) {
                armor = armor * (1 / .5);
                newDmg = damage - armorDmg;
            }
            damage = newDmg;
        }
        dmg = Math.ceil(damage);
        if(dmg >= health) {
            willKill = true;
        } else {
            willKill = false;
        }
        timer = parseFloat(timer.toPrecision(3));
        timer2 = parseFloat(timer.toPrecision(2));
        timer3 = parseFloat(timer.toPrecision(1));
        if(!isbombticking) return;
        if(gotdefused) return;
        if(timer >= 0.1) {
            Render.Indicator(getSite(c4) + timer.toFixed(1) + "s", [255, 255, 255, 255])
        }
        if(willKill) {
            Render.Indicator("FATAL", [255, 0, 0, 255])
        } else if(damage > 0.5) {
            Render.Indicator("-" + dmg + "HP", [210, 216, 112, 255])
        }
        // defuse time bar
        if(isbeingdefused > 0) {
            if(timer > deflength && timer >= 0.1) {
                Render.FilledRect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
                Render.FilledRect(0, Render.GetScreenSize()[1] - defbarlength, 10, Render.GetScreenSize()[1], [58, 191, 54, 120]);
                Render.Rect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
            } else {
                Render.FilledRect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
                Render.FilledRect(0, Render.GetScreenSize()[1] - defbarlength, 10, Render.GetScreenSize()[1], [252, 18, 19, 120]);
                Render.Rect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
            }
        }
    }
    if(planting) {
        textsize_C4 = Render.TextSize(bombsiteonplant, fonts)[0] + 15;
        Render.Indicator(bombsiteonplant, [210, 216, 112, 255])
        Render.OutlineCircle(x + textsize_C4, y - 25 - add_y + 35, fill / 3.3, [255, 255, 255, 255])
    }
    if(Entity.IsAlive(Entity.GetLocalPlayer())) {

        if(isHideshots) {
            Render.Indicator("ONSHOT", [132, 195, 16, 255])
        }
        if(isDoubletap) {
            Render.Indicator("DT", Exploit.GetCharge() == 1 ? [255, 255, 255, 255] : [255, 0, 0, 255])
        }
    }
}
}

Cheat.RegisterCallback("Draw", "crosshairindicators")

/* misc functions */
function misc() {
    var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
    cur_dmg = weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))] != undefined ? UI.GetValue(["Rage", "Target", weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))], "Damage Override"]) : UI.GetValue(["Rage", "Target", "General", "Damage Override"])
    cur_hit = weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))] != undefined ? UI.GetValue(["Rage", "Accuracy", weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))], "Hitchance Override"]) : UI.GetValue(["Rage", "Accuracy", "General", "Hitchance Override"])
    var fl = function(fl1, fl2) {
        return fl1 < fl2
    }
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Fake-Lag"])) {
        fl(altfakelag, 15 - 1) ? (UserCMD.Choke(), altfakelag++) : altfakelag < 14 + 8 ? (UserCMD.Send(), altfakelag++) : altfakelag = 0;
    }
    var valueas = UI.GetValue(["Rage", "ONEX-YAW", "Aspect ratio"]).toString(); {
        Convar.SetString("r_aspectratio", valueas);
    }
    UI.SetValue(["Misc.", "View", "General", "Thirdperson Distance"], UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "ThirdPerson Dist"]))
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Ping Spike"])) {
        UI.SetValue(["Misc.", "Helpers", "General", "Extended backtracking"], 1)
    } else {
        UI.SetValue(["Misc.", "Helpers", "General", "Extended backtracking"], 0)
    }
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Freestanding"]) && !UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Auto direction"], 1)
    } else {
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Auto direction"], 0)
    }
    if(UI.GetValue(["Rage", "ONEX-YAW", "Blend While Holding Grenade"])) {
        if(is_gren(weaponName)) {
            if(a == 0){
                cache = {
                    "a": UI.GetValue(["Visuals", "Chams", "Local", "Visible material type"]),
                    "b": UI.GetValue(["Visuals", "Chams", "Local", "Visible material override"]),
                    "c": UI.GetColor(["Visuals", "Chams", "Local", "Visible material color"])
                }
                a = 1
            }
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material type"], 66)
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material override"], 1)
            UI.SetColor(["Visuals", "Chams", "Local", "Visible material color"], [0, 0, 0, 100])
        } else {
            if(a == 1){
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material type"], cache.a)
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material override"], cache.b)
            UI.SetColor(["Visuals", "Chams", "Local", "Visible material color"], cache.c)
            a = 0
            }
        }
   
    }
    UI.GetValue(["Rage", "ONEX-YAW", "Leg Fucker"]) && (anim = 10 * Math.abs(Math.sin(64 * Globals.Realtime())), anim > 5 && UI.SetValue(["Misc.", "Movement", "Leg movement"], 0), anim < 5 && UI.SetValue(["Misc.", "Movement", "Leg movement"], 1))
    flags = UI.GetValue(["Rage", "ONEX-YAW", "Additional Flags"])
    enemys = Entity.GetEnemies()
    if(enemys != "") {
        for(i = 0; i < enemys.length; i++) {
            if(!Entity.IsDormant(enemys[i])) {
                weap_rev = (Entity.GetProp(Entity.GetWeapon(Entity.GetLocalPlayer()), "CBaseAttributableItem", "m_iItemDefinitionIndex") & 0xFFFF) == 64
                no_kev = Entity.GetProp(enemys[i], "CCSPlayerResource", "m_iArmor") == 0
                dist = distanceflag(Entity.GetRenderOrigin(Entity.GetLocalPlayer()), Entity.GetRenderOrigin(enemys[i]))
                good = distanceflag(Entity.GetRenderOrigin(Entity.GetLocalPlayer()), Entity.GetRenderOrigin(enemys[i])) <= 580
                if(good && weap_rev && no_kev && getDropdownValue(flags, 0)) {
                    Entity.DrawFlag(enemys[i], dist < 511 ? "TAP+" : "TAP", [151, 164, 252, 255])
                }
                if(Entity.GetWeapons( enemys[i] ).indexOf("zeus") > -1 && getDropdownValue(flags, 1)){
                    Entity.DrawFlag(enemys[i], "ZEUS", [151, 164, 252, 255])
                }
            }
        }
    }
}
var a = 0
/* antiaim options */
function antiaim() {
    antiaimEnabled = UI.GetValue(["Rage", "ONEX-YAW", "Anti-Aim Conditions"]);
    invertsp = Globals.Tickcount() % 4 >= 2 ? 22 : -22;
    random = Globals.Tickcount() % 3 >= 2 ? -35 : 20;
    inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"]);
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Anti-Aim"])) {
        if(getDropdownValue(antiaimEnabled, 0) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            antiaim_state = "slowwalk"
            AntiAim.SetOverride(1);
            AntiAim.SetFakeOffset(7);
            AntiAim.SetRealOffset(-14);
            AntiAim.SetLBYOffset(0);
        } else {
            if(getDropdownValue(antiaimEnabled, 2) && (Inair()) && !inverted) {
                antiaim_state = "air"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetRealOffset(-32);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 2) && (Inair()) && inverted) {
                antiaim_state = "air"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(22);
                AntiAim.SetRealOffset(-43);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 3) && Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_flDuckAmount") > 0.8 && !inverted || getDropdownValue(antiaimEnabled, 3) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]) && !inverted) {
                antiaim_state = "duck"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(-20);
                AntiAim.SetRealOffset(30);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 3) && Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_flDuckAmount") > 0.8 && inverted || getDropdownValue(antiaimEnabled, 3) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]) && inverted) {
                antiaim_state = "duck"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(-8);
                AntiAim.SetRealOffset(34);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 1) && dormant() && original_aa) {
                AntiAim.SetOverride(1);
                AntiAim.SetRealOffset(invertsp);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetLBYOffset(-invertsp)
            } else if(getDropdownValue(antiaimEnabled, 4) && velocity > 2 && !inverted) {
                antiaim_state = "normal"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetRealOffset(-22);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 4) && velocity > 2 && inverted) {
                antiaim_state = "normal"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(22);
                AntiAim.SetRealOffset(-22);
                AntiAim.SetLBYOffset(0);
            } else {
                AntiAim.SetOverride(0)
            }
        }
    }
}
/* Invert arrows render */
function drawarrows() {
    if(UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"])) {
        var inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
        fontarrow = Render.GetFont("verdana.ttf", 21, true)
        arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "Manual Color"]);
        s_arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "Desync Color"]);
        arrows_red = arrows_color[0];
        arrows_green = arrows_color[1];
        arrows_blue = arrows_color[2];
        arrows_alpha = arrows_color[3];
        selected_red = s_arrows_color[0];
        selected_green = s_arrows_color[1];
        selected_blue = s_arrows_color[2];
        Render.String(screen_size[0] / 2 - 42, screen_size[1] / 2 - 15, 1, "|", !inverted ? [selected_red, selected_green, selected_blue, 0] : s_arrows_color, fontarrow);
        Render.String(screen_size[0] / 2 + 43, screen_size[1] / 2 - 15, 1, "|", inverted ? [selected_red, selected_green, selected_blue, 0] : s_arrows_color, fontarrow);
        Render.Polygon([
                [screen_size[0] / 2 - 62, screen_size[1] / 2],
                [screen_size[0] / 2 - 45, screen_size[1] / 2 - 10],
                [screen_size[0] / 2 - 45, screen_size[1] / 2 + 10]
            ], drawLeft ? [selected_red, selected_green, selected_blue, 255] : arrows_color)
        Render.Polygon([
            [screen_size[0] / 2 + 45, screen_size[1] / 2 + 10],
            [screen_size[0] / 2 + 45, screen_size[1] / 2 - 10],
            [screen_size[0] / 2 + 62, screen_size[1] / 2]
        ], drawRight ? [selected_red, selected_green, selected_blue, 255] : arrows_color)
    }
}
       

/* legit aa */
function legit_aa2() {
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
        if(original_aa) {
            restrictions_cache = UI.GetValue(["Config", "Cheat", "General", "Restrictions"])
            yaw_offset_cache = UI.GetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"])
            jitter_offset_cache = UI.GetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"])
            pitch_cache = UI.GetValue(["Rage", "Anti Aim", "General", "Pitch mode"])
            original_aa = false
        }
        UI.SetValue(["Config", "Cheat", "General", "Restrictions"], 0);
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"], 180);
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"], 0);
        UI.SetValue(["Rage", "Anti Aim", "General", "Pitch mode"], 0)
        AntiAim.SetOverride(0)
        IN_USE = UserCMD.GetButtons() & (1 << 5)
        if(IN_USE) {
            E = false;
            if(Globals.Realtime() > legitaa_time + 0.2) {
                if(E == false) {
                    Cheat.ExecuteCommand("+use");
                    E = true;
                }
                if(E == true) {
                    Cheat.ExecuteCommand("-use");
                }
            }
        } else {
            if(E == true) {
                Cheat.ExecuteCommand("-use")
                E = false
            }
        }
    } else {
        if(!original_aa) {
            UI.SetValue(["Config", "Cheat", "General", "Restrictions"], restrictions_cache)
            UI.SetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"], yaw_offset_cache)
            UI.SetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"], jitter_offset_cache)
            UI.SetValue(["Rage", "Anti Aim", "General", "Pitch mode"], pitch_cache)
            original_aa = true
        }
        legitaa_time = Global.Realtime();
    }
}

function legit_aa() {
    var C4 = Entity.GetEntitiesByClassID(129)[0]
    var Host = Entity.GetEntitiesByClassID(97)[0]
    if(C4) {
        var C4Loc = Entity.GetRenderOrigin(C4)
        var local = Entity.GetLocalPlayer()
        var lLoc = Entity.GetRenderOrigin(local)
        distance = calcDist(C4Loc, lLoc)
        if(distance >= 100) {
            legit_aa2()
        }
    } else if(Host) {
        var HLoc = Entity.GetRenderOrigin(Host);
        var local = Entity.GetLocalPlayer();
        var lLoc = Entity.GetRenderOrigin(local)
        distance1 = calcDist(HLoc, lLoc);
        if(distance1 >= 100) {
            legit_aa2()
        }
    } else {
        legit_aa2()
    }
}

function player_connect() {
    lastPressed = Global.Tickcount();
    oldTick = Global.Tickcount();
    on_plant_time = 0
    fill = 0
    planting = false
    var c4 = Entity.GetEntitiesByClassID(129)[0];
    if(c4 == undefined) return;
}
function hooked_cm() {
    doubletap()
    dmghcoverride()
    misc()
    antiaim()
    legit_aa()
}

function hooked_painttraverse() {
    drawarrows()
    on_menu_changes()
}

function hooked_events() {
    Cheat.RegisterCallback("player_connect_full", "player_connect")
    Cheat.RegisterCallback("Unload", "doubletapunload")
    Cheat.RegisterCallback("weapon_fire", "on_wpn_fire")
    Cheat.RegisterCallback("bomb_beginplant", "bomb_beginplant");
    Cheat.RegisterCallback("bomb_abortplant", "bomb_abortplant");
    Cheat.RegisterCallback("bomb_defused", "bomb_defused");
    Cheat.RegisterCallback("bomb_planted", "bomb_planted");
    Cheat.RegisterCallback("bomb_exploded", "bomb_exploded");
    Cheat.RegisterCallback("round_start", "on_round_start");
    Cheat.RegisterCallback("round_prestart", "autobuy");
}
/* callbacks */
Cheat.RegisterCallback("CreateMove", "hooked_cm")
Cheat.RegisterCallback("Draw", "hooked_painttraverse")
hooked_events()
    /* Welcome info */
крч там всякие нэйд хелперы и тд, хф
не не не, нехуй братков банить, лови 1619913321821.png
 
Начинающий
Статус
Оффлайн
Регистрация
13 Сен 2019
Сообщения
187
Реакции[?]
12
Поинты[?]
0
ss
Код:
/* is grenade? */
function is_gren(name) {
    if(name == "high explosive grenade") {
        return true
    } else if(name == "incendiary grenade") {
        return true
    } else if(name == "molotov") {
        return true
    } else if(name == "flashbang") {
        return true
    } else if(name == "smoke grenade") {
        return true
    }
    return false
}

    /* math random */
Math.RandomInt = function(min, max) {
        min = Math.ceil(min);
        max = Math.floor(max);
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    /* distance */
distanceflag = function(origin, destination) {
        const sub = [destination[0] - origin[0], destination[1] - origin[1], destination[2] - origin[2]];
        return Math.hypot(sub[0], sub[1], sub[2]);
    }
    /* calc distance */
function calcDist(local, target) {
    var lx = local[0];
    var ly = local[1];
    var lz = local[2];
    var tx = target[0];
    var ty = target[1];
    var tz = target[2];
    var dx = lx - tx;
    var dy = ly - ty;
    var dz = lz - tz;
    return Math.sqrt(dx * dx + dy * dy + dz * dz);
}
/* outline */
function draw_shadow(x, y, int, text, outline_color, font) {
    Render.String(x + 1, y + 1, int, text, outline_color, font);
    Render.String(x, y + 1, int, text, outline_color, font);
    Render.String(x + 1, y, int, text, outline_color, font);
    Render.String(x - 1, y - 1, int, text, outline_color, font);
    Render.String(x - 1, y, int, text, outline_color, font);
    Render.String(x, y - 1, int, text, outline_color, font);
    Render.String(x + 1, y - 1, int, text, outline_color, font);
    Render.String(x - 1, y + 1, int, text, outline_color, font);
}
/* inair */
var Inair = function() {
        if(!(Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_fFlags") & (1 << 0))) {
            return true;
        } else {
            return false;
        }
    }
    /* outline / arc */
function render_arc(x, y, radius, radius_inner, start_angle, end_angle, segments, color) {
    while(360 % segments != 0) {
        segments++;
    }
    segments = 360 / segments;
    for(var i = start_angle; i < start_angle + end_angle; i = i + segments) {
        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;
        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);
        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);
        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;
        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;
        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;
        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;
        Render.Polygon([
            [x1_outer, y1_outer],
            [x2_outer, y2_outer],
            [x1_inner, y1_inner]
        ], color);
        Render.Polygon([
            [x1_inner, y1_inner],
            [x2_outer, y2_outer],
            [x2_inner, y2_inner]
        ], color);
    }
}
Render.OutlineCircle = function(x, y, what, col) {
        render_arc(x, y, 9, 4, 0, 360, 32, [0, 0, 0, 255])
        render_arc(x, y, 8, 5, 0, what * 360, 32, col)
    }
    /* get velocity */
function getVelocity(index) {
    players = Entity.GetPlayers();
    for(i = 0; i < players.length; i++); {
        var velocity = Entity.GetProp(index, "CBasePlayer", "m_vecVelocity[0]");
        var speed = Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);
    }
    return speed;
}
/* getdropdownvalue */
function getDropdownValue(value, index) {
    var mask = 1 << index;
    return value & mask ? true : false;
}
/* tickbase */
function can_shift_shot(ticks_to_shift) {
    var me = Entity.GetLocalPlayer();
    var wpn = Entity.GetWeapon(me);
    if(me == null || wpn == null) return false;
    var tickbase = Entity.GetProp(me, "CCSPlayer", "m_nTickBase");
    var curtime = Globals.TickInterval() * (tickbase - ticks_to_shift)
    if(curtime < Entity.GetProp(me, "CCSPlayer", "m_flNextAttack")) return false;
    if(curtime < Entity.GetProp(wpn, "CBaseCombatWeapon", "m_flNextPrimaryAttack")) return false;
    return true;
}
/* dormant function */
function dormant() {
    enemies = Entity.GetEnemies()
    for(var i in enemies)
        if(Entity.IsDormant(enemies[i])) {
            return true
        }
    return false
}
/* weapons */
var weaponTabNames = {"usp s": "USP", "glock 18": "Glock", "dual berettas": "Dualies", "r8 revolver": "Revolver", "desert eagle": "Deagle", "p250": "P250", "tec 9": "Tec-9", "mp9": "MP9", "mac 10": "Mac10", "pp bizon": "PP-Bizon", "ump 45": "UMP45", "ak 47": "AK47", "sg 553": "SG553", "aug": "AUG", "m4a1 s": "M4A1-S", "m4a4": "M4A4", "ssg 08": "SSG08", "awp": "AWP", "g3sg1": "G3SG1", "scar 20": "SCAR20", "xm1014": "XM1014", "mag 7": "MAG7", "m249": "M249", "negev": "Negev", "p2000": "P2000", "famas": "FAMAS", "five seven": "Five Seven", "mp7": "MP7", "ump 45": "UMP45", "p90": "P90", "cz75 auto": "CZ-75", "mp5 sd": "MP5", "galil ar": "GALIL", "sawed off": "Sawed off", }
var other_weapons = ["knife", "knife_t", "knife_karambit", "knife_m9_bayonet", "knife_survival_bowie", "knife_butterfly", "knife_flip", "knife_push", "knife_tactical", "knife_falchion", "knife_gut", "knife_ursus", "knife_gypsy_jackknife", "knife_stiletto", "knife_widowmaker", "knife_css", "knife_cord", "knife_canis", "knife_outdoor", "knife_skeleton", "bayonet", "hegrenade", "smokegrenade", "molotov", "incgrenade", "flashbang", "decoy", "taser"]

function in_bounds(vec, x, y, x2, y2) {
    return(vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}
/* c4 */
function getSite(c4) {
    bombsite = Entity.GetProp(c4, "CPlantedC4", "m_nBombSite");
    if(bombsite == 0) {
        return "A - ";
    } else {
        return "B - ";
    }
}

function bomb_exploded() {
    isbomb = 0
    on_plant_time = 0
    fill = 0
    planting = false
}
function autobuy(){
    if(UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "AWP Fast Buy"])){
        Cheat.ExecuteCommand("buy awp;buy awp;buy awp;buy awp;buy awp;buy awp;buy awp;")
    }
}
function bomb_beginplant() {
    on_plant_time = Globals.Curtime()
    bombsite = Event.GetInt("site")
    world = World.GetMapName()
    if(world == "de_mirage") {
        if(bombsite == 447) {
            bombsiteonplant = "Bombsite B"
        } else {
            bombsiteonplant = "Bombsite A"
        }
    }
    if(world == 'de_dust2') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old_1') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old_ht') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_vertigo') {
        if(bombsite == 79) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_overpass') {
        if(bombsite == 85) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_inferno') {
        if(bombsite == 370) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'gd_rialto') {
        bombsiteonplant = "Bombsite A"
    };
    if(world == 'de_cbble') {
        if(bombsite == 216) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_tulip') {
        if(bombsite == 620) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_tulip_ht') {
        if(bombsite == 620) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    planting = true
}

function bomb_abortplant() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function bomb_defused() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function bomb_planted() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function on_round_start() {
    on_plant_time = 0
    fill = 0
    planting = false
    curtick = Globals.Tickcount()
}
/* ui */

UI.AddSubTab(["Rage", "SUBTAB_MGR"], "ONEX-YAW");
UI.AddDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Tab", ["Rage & Anti-Aim", "Visual", "Color", "Misc", "Trash"], 0)

/* RAGE */

UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Doubletap")
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Double Tap Ticks", 12, 19)
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Fake-Lag")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Anti-Aim")
UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Anti-Aim Conditions", ["On Slow Walk", "On Dormant", "On Air", "On Duck", "On Move"])
UI.AddDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"],"Anti Bruteforce", ["Off", "On Hit", "On Shot"],0 );

/* VISUALS */

UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Indicators", ["Crosshair", "ONEX-YAW Fakelag", "Skeet", "Keybinds", "Spectator list", "Grenade Prediction"])
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Manual & Desync Indicator")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Manual Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Desync Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Custom scope lines");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Override FOV while scoped");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Blend While Holding Grenade");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Local Bullet Tracer")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Shotlogger")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Crosshair Hitlogger")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Quake Hitmarker")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Onetap styled watermark")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Watermark")
UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Aspect ratio", 0.0, 5.0)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "ThirdPerson Dist", 50, 150)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines width", 0, 500);
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines offset", 0, 500);

/* Misc */

UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Additional Flags", ["R8 Lethal", "Zeus"])
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "AWP Fast Buy")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Leg Fucker")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Damage Override", "Damage Override")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Hitchance Override", "Hitchance Override")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Legit AA", "Legit AA")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Ping Spike", "Ping Spike")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Freestanding", "Freestanding")
UI.AddSliderInt(["Rage", "Accuracy", "General"], "Hitchance Override", 0, 100)
UI.AddSliderInt(["Rage", "Target", "General"], "Damage Override", 0, 130)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Strafe Turn speed", 0, 100)

/* Color */
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"],"Watermark & Fake indicator color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Grenade Predict Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hitmarker Color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Onetap Watermark Color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Keybinds Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Spectator List Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines color");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Keybinds Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Spectator List Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Grenade Prediction Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Watermark Gradient")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Fake Gradient")



var traceContainer = [];


var traceContainer = [];
function tracer(eyepos, hitpos, time) {
    this.eyepos = eyepos
    this.position = hitpos
    this.time = time
}
var impact = 0;
function bulll1313() {
    if (Globals.Tickcount() > impact) {
        if (Entity.GetEntityFromUserID(Event.GetInt("userid")) == Entity.GetLocalPlayer()) {
            var x = Event.GetFloat("x")
            var y = Event.GetFloat("y")
            var z = Event.GetFloat("z")
            var pos = [x, y, z]
            var view = Entity.GetEyePosition(Entity.GetLocalPlayer());
            traceContainer.push(new tracer(view, pos, Globals.Tickcount()))
            impact = Globals.Tickcount()
        }
    }
}
// [x,y, alpha]
var offsets = [
    [1, 0, 75],
    [0, 1, 75],
    [-1, 0, 75],
    [0, -1, 75],
    //
    [1, -1, 50],
    [1, 1, 50],
    [-1, 1, 50],
    [-1, -1, 50],
    //
    [2, 0, 10],
    [0, 2, 10],
    [-2, 0, 10],
    [0, -2, 10],
]

function renderTracer(basePositions, offsets, baseColor) {
    offsets.forEach(function (offset) {
        Render.Line(basePositions[0][0] + offset[0],
            basePositions[0][1] + offset[1],
            basePositions[1][0] + offset[0],
            basePositions[1][1] + offset[1],
            [baseColor[0], baseColor[1], baseColor[2], offset[2]])
    })
}
function onDraw11111123213() {
    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"])) {
    if (Entity.IsAlive(Entity.GetLocalPlayer()) == false) {
        traceContainer = [];
        return
    }
    for (i in traceContainer) {
        var ss = Render.GetScreenSize()
        var view2s = Render.WorldToScreen(traceContainer[i].eyepos)
        var pos2s = Render.WorldToScreen(traceContainer[i].position)
        if (pos2s[2] != 0 && view2s[2] != 0) {
            /*
            this is what i did to check for w2s throwing garbage invalid numbers
            not sure why it considers -20k valid but whatever
            all this check does it check if the number given is too far out of the bounds of the screen size to make sense
            the +- 1000 is because small overflows are ok and still end up rendering properly you can probably do more/less
            but i figured that this much looks ok
            as im writing this i think i thought of a better way but this is sufficient until i feel like trying it
            */
            if ((view2s[0] < -1000 || view2s[0] > ss[0] + 1000 || pos2s[0] < -1000 || pos2s[0] > ss[0] + 1000
                || view2s[1] < -1000 || view2s[1] > ss[1] + 1000 || pos2s[1] < -1000 || pos2s[1] > ss[1] + 1000) == false) {
                currenteye = Entity.GetEyePosition(Entity.GetLocalPlayer())
                //pasted from google : )
                var dx = currenteye[0] - traceContainer[i].eyepos[0];
                var dy = currenteye[1] - traceContainer[i].eyepos[1];
                var dz = currenteye[2] - traceContainer[i].eyepos[2];
                var dist = Math.sqrt(dx * dx + dy * dy + dz * dz);
                    //Center main line
                    Render.Line(view2s[0], view2s[1], pos2s[0], pos2s[1], [255, 255, 255, 199])
                    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"])) {
                        renderTracer([view2s, pos2s], offsets, [255, 255, 255, 199])
                   
                }
            }
        }
        if (traceContainer[i].time + 250 < Globals.Tickcount()) {
            traceContainer.shift()
        }
        if (200 < traceContainer.length) {
            traceContainer.shift()
        }
    }
}
}
Cheat.RegisterCallback("Draw", "onDraw11111123213")
Cheat.RegisterCallback("bullet_impact", "bulll1313")

//#region Menu




//#endregion



//#region draw

function draw1111()

{

const local = Entity.GetLocalPlayer();



if (!Entity.IsAlive(local) || !World.GetServerString()) {

Convar.SetFloat("r_drawvgui", 1);

Convar.SetInt("fov_cs_debug", 0);

return;

}



const fov = UI.GetValue(["Misc.", "View", "General", "Field of view"]);

const fovDifference = 90 - fov;

const fovScope = 90 + fovDifference;

const thirdperson = UI.GetValue(["Misc.", "Keys", "General", "Thirdperson"]);

const offset = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines offset"]);

const leng = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines width"]);

const accent = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines color"]);

const scoped = Entity.GetProp(local, "CCSPlayer", "m_bIsScoped");

const screen_size = Render.GetScreenSize();



if (!UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Custom scope lines"]))

return;



if (scoped) {

Convar.SetFloat("r_drawvgui", 0);

if (!thirdperson) {

Convar.SetInt("fov_cs_debug", fovScope);

UI.SetValue(["Misc.", "View", "General", "Override FOV while scoped"], 0);

}

else {

UI.SetValue(["Misc.", "View", "General", "Override FOV while scoped"], UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Override FOV while scoped"]) ? 0 : 1);



Convar.SetInt("fov_cs_debug", 0);

}

UI.SetValue(["Visuals", "Extra", "Removals", "Removals"], 59);

Render.GradientRect(screen_size[0] / 2 + offset, screen_size[1] / 2, leng, 1, 1, [accent[0], accent[1], accent[2], accent[3]], [accent[0], accent[1], accent[2], 0]);

Render.GradientRect(screen_size[0] / 2 - leng - offset, screen_size[1] / 2, leng, 1, 1, [accent[0], accent[1], accent[2], 0], [accent[0], accent[1], accent[2], accent[3]]);

Render.GradientRect(screen_size[0] / 2, screen_size[1] / 2 + offset, 1, leng, 0, [accent[0], accent[1], accent[2], accent[3]], [accent[0], accent[1], accent[2], 0]);

Render.GradientRect(screen_size[0] / 2, screen_size[1] / 2 - leng - offset, 1, leng, 0, [accent[0], accent[1], accent[2], 0], [accent[0], accent[1], accent[2], accent[3]]);

} else {

Convar.SetFloat("r_drawvgui", 1);

Convar.SetInt("fov_cs_debug", 0);

UI.SetValue(["Visuals", "Extra", "Removals", "Removals"], 63);

}

}



Cheat.RegisterCallback("Draw", "draw1111");

//#endregion
function pHurt() {
    attackerEntity = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
    localEntity = Entity.GetLocalPlayer();

    if (attackerEntity == localEntity) {
        victimName = Entity.GetName(Entity.GetEntityFromUserID(Event.GetInt("userid")));
        //Get hitgroup as a string
   
        hitboxName = hitgroupToHitbox(Event.GetInt("hitgroup"));
   
        damageDone = Event.GetInt("dmg_health");
        healthRemaining = Event.GetInt("health");
   
        hurtLogs.push([victimName, hitboxName, damageDone, healthRemaining, 0, 255, (Math.random() * (0.2 - 1.200) + 1.200).toFixed(4), Globals.Curtime()]);
    }
}

// [ victimName, hitboxName, damageDone, healthRemaining, curLength, opacity ];
hurtLogs = [ ];

typeSpeed = 0.05;
fadeOutSpeed = 3;
showDelayTime = typeSpeed + Globals.Curtime();
function showOrHide() {
    for (var i = 0; i < hurtLogs.length; i++) {
        hurtLogs[i][4]++;
        toSay =  victimName + " "+ hitboxName  + " " + damageDone  + " "+ "(" + healthRemaining +")";
        if(Globals.Curtime() - hurtLogs[i][7] < 2)
        {
            continue
        }
        hurtLogs[i][5] -= Globals.Frametime() * 500;
   
        if (hurtLogs[i][5] < 0) {
            hurtLogs.shift(i, 1);
        }
    }
}

function drawLogs() {
    localplayer_index = Entity.GetLocalPlayer( );
    localplayer_alive = Entity.IsAlive( localplayer_index );
        if (localplayer_alive == true){
            screen = Render.GetScreenSize()
            textX = (screen[0]/2)
            textY = (screen[1]/2) + 62
   
            textYIncrement = 12;
       
            textCol = [0, 55, 210];
   
       
            for (var i = 0; i < hurtLogs.length; i++) {
                currentLog = hurtLogs[i];
           
                victimName = currentLog[0];
                hitboxName = currentLog[1];
                damageDone = currentLog[2];
                healthRemaining = currentLog[3];
   
                consolasFont = Render.GetFont("arialbd.ttf", 11, true);
           
                currentTextPos = textY + (textYIncrement * i);
           
                toSay =  victimName + " "+ hitboxName  + " " + "-"+damageDone  + " "+ "(" + healthRemaining +")";
   
                textCol = [85, 237, 62];
                textColdead = [255, 64, 83];
                if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Crosshair Hitlogger"])) {
                if (healthRemaining > 0){
                    Render.String(textX + 1, currentTextPos + 1, 1, toSay, [0, 0, 0, hurtLogs[i][5]], consolasFont);
                    Render.String(textX, currentTextPos, 1, toSay, [textCol[0], textCol[1], textCol[2], hurtLogs[i][5]], consolasFont);
                }
                if (healthRemaining <= 0){
                    Render.String(textX + 1, currentTextPos + 1, 1, toSay, [0, 0, 0, hurtLogs[i][5]], consolasFont);
                    Render.String(textX, currentTextPos, 1, toSay, [textColdead[0], textColdead[1], textColdead[2], hurtLogs[i][5]], consolasFont);
                }
        }
    }
    }
}


function hitgroupToHitbox(hitgroup) {
    hitbox = "generic";

    switch (hitgroup) {
        case 0:
        hitbox =  "head";
        break;
        case 1:
        hitbox =  "neck";
        break;
        case 2:
        hitbox =  "pelvis";
        break;
        case 3:
        hitbox =  "body";
        break;
        case 4:
        hitbox =  "chest";
        break;
        case 5:
        hitbox =  "chest";
        break;
        case 6:
        hitbox =  "upper chest";
        break;
        case 7:
        hitbox =  "left thigh";
        break;
        case 8:
        hitbox =  "right thigh";
        break;
        case 9:
        hitbox =  "left calf";
        break;
        case 10:
        hitbox =  "right calf";
        break;
        case 11:
        hitbox =  "left foot";
        break;
        case 12:
        hitbox =  "right foot";
        break;
        case 13:
        hitbox =  "left hand";
        break;
        case 14:
        hitbox =  "right hand";
        break;
        case 15:
        hitbox =  "left arm";
        break;
        case 16:
        hitbox =  "left forearm";
        break;
        case 17:
        hitbox =  "right arm";
        break;
        case 18:
        hitbox =  "right forearm";
    }
    return hitbox;
}

Cheat.RegisterCallback("player_hurt", "pHurt")
Cheat.RegisterCallback("Draw", "drawLogs")
Cheat.RegisterCallback("Draw", "showOrHide")
var tick = 0;
UI.AddCheckbox(["Rage", "Exploits", "General"],"Log DT Speed");
function fire(){
    if (UI.GetValue(["Rage", "Exploits", "General", "Log DT Speed"])) {
        var e = Event.GetInt("exploit");
        if (UI.GetValue(["Rage", "Exploits", "Keys", "Double tap"])) {
            if (e > 0) {
                tick = Globals.Tickcount();
             
            } else if (tick != 0 && (Globals.Tickcount() - tick) < 16) {
                Cheat.Print("DT speed: " + (Globals.Tickcount() - tick).toString() + " tick(s)\n");
                tick = 0;
            }
        }
    }
}

Cheat.RegisterCallback("ragebot_fire","fire");

UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hotkeys_x", 0, Global.GetScreenSize()[0])
UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hotkeys_y", 0, Global.GetScreenSize()[1])
const window_x = UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Spec x", 0, Global.GetScreenSize()[0])
const window_y = UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Spec y", 0, Global.GetScreenSize()[1])
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Indicator_x", 0, Global.GetScreenSize()[0]);
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Indicator_y", 0, Global.GetScreenSize()[1]);

UI.AddSubTab(["Rage", "SUBTAB_MGR"], "Ragebot addon");
UI.AddCheckbox(["Rage", "Ragebot addon", "Ragebot addon"], "Head/Body/Safety conditions");
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force head conditions", ["Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force body conditions", ["Lethal", "Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force safety conditions", ["Lethal", "Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddSliderInt(["Rage", "Ragebot addon", "Ragebot addon"], "Extrapolated ticks", 0, 64);

function extrapolate_tick(entity, ticks, x, y, z)
{
    velocity = Entity.GetProp(entity, "CBasePlayer", "m_vecVelocity[0]");
    new_pos = [x, y, z];
    new_pos[0] = new_pos[0] + velocity[0] * Globals.TickInterval() * ticks;
    new_pos[1] = new_pos[1] + velocity[1] * Globals.TickInterval() * ticks;
    new_pos[2] = new_pos[2] + velocity[2] * Globals.TickInterval() * ticks;
    return new_pos;
}

function is_lethal(entity)
{
    local_player = Entity.GetLocalPlayer();
    eye_pos = Entity.GetEyePosition(local_player);
    ticks = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Extrapolated ticks"]);
    extrapolated_location = extrapolate_tick(local_player, ticks, eye_pos[0], eye_pos[1], eye_pos[2]);
    entity_hp = Entity.GetProp(entity, "CBasePlayer", "m_iHealth");
    pelvis_pos = Entity.GetHitboxPosition(entity, 2);
    body_pos = Entity.GetHitboxPosition(entity, 3);
    thorax_pos = Entity.GetHitboxPosition(entity, 4);
    pelvis_trace = Trace.Bullet(local_player, entity, extrapolated_location, pelvis_pos);
    body_trace = Trace.Bullet(local_player, entity, extrapolated_location, body_pos);
    thorax_trace = Trace.Bullet(local_player, entity, extrapolated_location, thorax_pos);
    lethal_damage = Math.max(pelvis_trace[1], body_trace[1], thorax_trace[1]);
    if (lethal_damage > entity_hp) return true;
    else return false;
}

function get_condition(entity)
{
    flags = Entity.GetProp(entity, "CBasePlayer", "m_fFlags");
    entity_velocity = Entity.GetProp(entity, "CBasePlayer", "m_vecVelocity[0]");
    entity_speed = Math.sqrt(entity_velocity[0] * entity_velocity[0] + entity_velocity[1] * entity_velocity[1]).toFixed(0);
    wpn_info = Entity.GetCCSWeaponInfo(entity);
    if (wpn_info == undefined) return;
    if (flags & 1 << 1) return "crouching";
    else if (!(flags & 1 << 0) && !(flags & 1 << 0x12)) return "in-air";
    else if (entity_speed <= 2) return "standing";
    else if (entity_speed >= wpn_info["max_speed"]) return "running";
    else if (entity_speed <= (wpn_info["max_speed"] / 2.6).toFixed(0)) return "slow-walking";
}

function force_head(entity)
{
    local_player = Entity.GetLocalPlayer();
    head_pos = Entity.GetHitboxPosition(entity, 0);
    head_damage = Trace.Bullet(local_player, entity, Entity.GetEyePosition(local_player), head_pos);
    Ragebot.ForceTargetMinimumDamage(entity, head_damage[1]);
}

function force_body(entity)
{
    Ragebot.ForceHitboxSafety(entity, 0);
    if (!UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]))
    {
        UI.ToggleHotkey(["Rage", "General", "General", "Key assignment", "Force body aim"])
    }
}

function disable_body()
{
    if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]))
    {
        UI.ToggleHotkey(["Rage", "General", "General", "Key assignment", "Force body aim"])
    }
}

function ui13337()
{
    var mast = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Head/Body/Safety conditions"]);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force head conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force body conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force safety conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Extrapolated ticks"], mast);
}

function main133777()
{
    var local_player = Entity.GetLocalPlayer();
    if (!UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Head/Body/Safety conditions"]) || !Entity.IsValid(local_player) || !Entity.IsAlive(local_player)) return;
    var head_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force head conditions"]);
    var body_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force body conditions"]);
    var safety_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force safety conditions"]);
    var enemies = Entity.GetEnemies();
    for (i = 0; i < enemies.length; i++)
    {
        if (!Entity.IsValid(enemies[i]) || !Entity.IsAlive(enemies[i]) || Entity.IsDormant(enemies[i])) continue;

        if (head_opt & (1 << 0) && get_condition(enemies[i]) == "standing" || head_opt & (1 << 1) && get_condition(enemies[i]) == "crouching" || head_opt & (1 << 2) && get_condition(enemies[i]) == "slow-walking" || head_opt & (1 << 3) && get_condition(enemies[i]) == "running" || head_opt & (1 << 4) && get_condition(enemies[i]) == "in-air")
        {
            force_head(enemies[i]);
        }
        else if (body_opt & (1 << 0) && is_lethal(enemies[i]) || body_opt & (1 << 1) && get_condition(enemies[i]) == "standing" || body_opt & (1 << 2) && get_condition(enemies[i]) == "crouching" || body_opt & (1 << 3) && get_condition(enemies[i]) == "slow-walking" || body_opt & (1 << 4) && get_condition(enemies[i]) == "running" || body_opt & (1 << 5) && get_condition(enemies[i]) == "in-air")
        {
            force_body(enemies[i]);
        }
        else
        {
            disable_body();
        }
        if (safety_opt & (1 << 0) && is_lethal(enemies[i]) || safety_opt & (1 << 1) && get_condition(enemies[i]) == "standing" || safety_opt & (1 << 2) && get_condition(enemies[i]) == "crouching" || safety_opt & (1 << 3) && get_condition(enemies[i]) == "slow-walking" || safety_opt & (1 << 4) && get_condition(enemies[i]) == "running" || safety_opt & (1 << 5) && get_condition(enemies[i]) == "in-air")
        {
            Ragebot.ForceTargetSafety(enemies[i]);
        }
    }
}

Cheat.RegisterCallback("Draw", "ui13337");
Cheat.RegisterCallback("CreateMove", "main133777");

function GetScriptOption(name)
{
    var Value = UI.GetValue( ["Rage", "ONEX-YAW", "ONEX-YAW", "Anti Bruteforce"], name);
    return Value;
}

function radian(degree)
{
    return degree * Math.PI / 180.0;
}

function ExtendVector(vector, angle, extension)
{
    var radianAngle = radian(angle);
    return [extension * Math.cos(radianAngle) + vector[0], extension * Math.sin(radianAngle) + vector[1], vector[2]];
}

function VectorAdd(a, b)
{
    return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
}

function VectorSubtract(a, b)
{
    return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
}

function VectorMultiply(a, b)
{
    return [a[0] * b[0], a[1] * b[1], a[2] * b[2]];
}

function VectorLength(x, y, z)
{
    return Math.sqrt(x * x + y * y + z * z);
}

function VectorNormalize(vec)
{
    var length = VectorLength(vec[0], vec[1], vec[2]);
    return [vec[0] / length, vec[1] / length, vec[2] / length];
}

function VectorDot(a, b)
{
    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}

function VectorDistance(a, b)
{
    return VectorLength(a[0] - b[0], a[1] - b[1], a[2] - b[2]);
}

function ClosestPointOnRay(target, rayStart, rayEnd)
{
    var to = VectorSubtract(target, rayStart);
    var dir = VectorSubtract(rayEnd, rayStart);
    var length = VectorLength(dir[0], dir[1], dir[2]);
    dir = VectorNormalize(dir);

    var rangeAlong = VectorDot(dir, to);
    if (rangeAlong < 0.0)
    {
        return rayStart;
    }
    if (rangeAlong > length)
    {
        return rayEnd;
    }
    return VectorAdd(rayStart, VectorMultiply(dir, [rangeAlong, rangeAlong, rangeAlong]));
}

function Flip() {
    UI.ToggleHotkey(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"], "AA Inverter");
}

var lastHitTime = 0.0;
var lastImpactTimes =
[
    0.0
];
var lastImpacts =
[
    [0.0, 0.0, 0.0]
];

function OnHurt()
{
    if (GetScriptOption("Anti Bruteforce") == 0) return;
    if (Entity.GetEntityFromUserID(Event.GetInt("userid")) !== Entity.GetLocalPlayer()) return;
    var hitbox = Event.GetInt('hitgroup');

    if (hitbox == 1 || hitbox == 6 || hitbox == 7)  //head, both toe
    {
        var curtime = Global.Curtime();
        if (Math.abs(lastHitTime - curtime) > 0.5)   //0.2s backtrack + 0.2 extand + 0.1 extra
        {
            lastHitTime = curtime;
            Flip();
        }
    }
}

function OnBulletImpact()
{
    if (GetScriptOption("Anti Bruteforce") !== 2) return;

    var curtime = Global.Curtime();
    if (Math.abs(lastHitTime - curtime) < 0.5) return;

    var entity = Entity.GetEntityFromUserID(Event.GetInt("userid"));
    var impact = [Event.GetFloat("x"), Event.GetFloat("y"), Event.GetFloat("z"), curtime];
    var source;
    if (Entity.IsValid(entity) && Entity.IsEnemy(entity))
    {
        if (!Entity.IsDormant(entity))
        {
            source = Entity.GetEyePosition(entity);
        }
        else if (Math.abs(lastImpactTimes[entity] - curtime) < 0.1)
        {
            source = lastImpacts[entity];
        }
        else
        {
            lastImpacts[entity] = impact;
            lastImpactTimes[entity] = curtime;
            return;
        }
        var local = Entity.GetLocalPlayer();
        var localEye = Entity.GetEyePosition(local);
        var localOrigin = Entity.GetProp(local, "CBaseEntity", "m_vecOrigin");
        var localBody = VectorMultiply(VectorAdd(localEye, localOrigin), [0.5, 0.5, 0.5]);

        var bodyVec = ClosestPointOnRay(localBody, source, impact);
        var bodyDist = VectorDistance(localBody, bodyVec);
   
        if (bodyDist < 85.0)       //he clearly shot at us!
        {
            var realAngle = Local.GetRealYaw();
            var fakeAngle = Local.GetFakeYaw();

            var headVec = ClosestPointOnRay(localEye, source, impact);
            var headDist = VectorDistance(localEye, headVec);
            var feetVec = ClosestPointOnRay(localOrigin, source, impact);
            var feetDist = VectorDistance(localOrigin, feetVec);

            var closestRayPoint;
            var realPos;
            var fakePos;

            if (bodyDist < headDist && bodyDist < feetDist)     //that's a pelvis
            {                                                   //pelvis direction = goalfeetyaw + 180  
                closestRayPoint = bodyVec;
                realPos = ExtendVector(bodyVec, realAngle + 180.0, 10.0);
                fakePos = ExtendVector(bodyVec, fakeAngle + 180.0, 10.0);
            }
            else if (feetDist < headDist)                       //ow my toe
            {                                                   //toe direction = goalfeetyaw -30 +- 90
                closestRayPoint = feetVec;
                var realPos1 = ExtendVector(bodyVec, realAngle - 30.0 + 60.0, 10.0);
                var realPos2 = ExtendVector(bodyVec, realAngle - 30.0 - 60.0, 10.0);
                var fakePos1 = ExtendVector(bodyVec, fakeAngle - 30.0 + 60.0, 10.0);
                var fakePos2 = ExtendVector(bodyVec, fakeAngle - 30.0 - 60.0, 10.0);
                if (VectorDistance(feetVec, realPos1) < VectorDistance(feetVec, realPos2))
                {
                    realPos = realPos1;
                }
                else
                {
                    realPos = realPos2;
                }
                if (VectorDistance(feetVec, fakePos1) < VectorDistance(feetVec, fakePos2))
                {
                    fakePos = fakePos1;
                }
                else
                {
                    fakePos = fakePos2;
                }
            }
            else                                                //ow my head i feel like i slept for 2 days
            {
                closestRayPoint = headVec;
                realPos = ExtendVector(bodyVec, realAngle, 10.0);
                fakePos = ExtendVector(bodyVec, fakeAngle, 10.0);
            }

            if (VectorDistance(closestRayPoint, fakePos) < VectorDistance(closestRayPoint, realPos))        //they shot at our fake. they will probably not gonna shoot it again.
            {
                lastHitTime = curtime;
                Flip();
            }
        }

        lastImpacts[entity] = impact;
        lastImpactTimes[entity] = curtime;
    }
}

Cheat.RegisterCallback("player_hurt", "OnHurt");
Cheat.RegisterCallback("bullet_impact", "OnBulletImpact");

var color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW","Watermark & Fake indicator color"]);
var mats = []
var subtab = ["Visuals", "SUBTAB_MGR", "Better Glow", "Better Glow"]
UI.AddSubTab(["Visuals", "SUBTAB_MGR"], "Better Glow")
var editor_array = []

function makemat(name) {
    Material.Create(name)
    editor_array.push(name)
    mats.push({
        mat_name: name,
        ui_array: subtab.concat(name),
        ui_color: subtab.concat(name + " col"),
        update: true,
        update_color: true,
        first: true
    })
}
function lerp(a, b, c) {
    return (b - a) * c + a
}
function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return [
        Math.round(r * 255),
        Math.round(g * 255),
        Math.round(b * 255),
        255
    ]
}
function material() {
    for (i in mats) {
        var mat = Material.Get(mats[i].mat_name)
        var ui = UI.GetValue(mats[i].ui_array)
        var refresh = false
        if (mats[i].first) {
            mats[i].first = false
            Material.SetKeyValue(mat, "$basetexture", "vgui/white")
            Material.SetKeyValue(mat, "$envmap", "models/effects/cube_white")
            Material.SetKeyValue(mat, "$envmapfresnel", "1")
            refresh = true
        }
        if (mats[i].update) {
            mats[i].update = false
            Material.SetKeyValue(mat, "$additive", (ui & 1) ? "1" : "0")
            Material.SetKeyValue(mat, "$wireframe", (ui & 2) ? "1" : "0")
            refresh = true
        }
        if (mats[i].update_color) {
            mats[i].update_color = false
            var uicol = UI.GetColor(mats[i].ui_color)
            if (ui & 4) {
                var hsv = HSVtoRGB(Globals.Realtime() * UI.GetValue(subtab.concat(mats[i].mat_name + " rainbow speed")) * 2 % 1, 1, 1)
                uicol = [hsv[0], hsv[1], hsv[2], uicol[3]]
            }
            Material.SetKeyValue(mat, "$envmaptint", "[" + uicol[0] / 255 + " " + uicol[1] / 255 + " " + uicol[2] / 255 + "]")
            var alpha_fraction = uicol[3] / 255
            if (ui & 8) {
                alpha_fraction += (Math.sin(Globals.Realtime() * UI.GetValue(subtab.concat(mats[i].mat_name + " pulse speed")) * 20) + 1) * UI.GetValue(subtab.concat(mats[i].mat_name + " pulse strength"))
            }
            if (alpha_fraction > 1)
                alpha_fraction = 1
            var first = lerp(12, 1, alpha_fraction)
            var second = lerp(24, 2, alpha_fraction)
            Material.SetKeyValue(mat, "$envmapfresnelminmaxexp", "[0 " + first + " " + second + "]")
            refresh = true
        }
        if (refresh)
            Material.Refresh(mat)
    }
}
function unload() {
    for (i in mats)
        Material.Destroy(mats[i].mat_name)
}
var lasttime = 0
var last_ui_values = {}
var last_ui_colors = {}
var last_editor_value = -1
var last_current_mat_settings = []
function render() {
    // update every 16.6666667 ms to save some fps :)
    var time = Globals.Realtime()
    if (time - lasttime > (16.6666667) / 1000) {
        for (i in mats) {
            var ui_value = UI.GetValue(mats[i].ui_array)
            var ui_col = UI.GetColor(mats[i].ui_color)
            if (ui_value & 4 || ui_value & 8 || ui_value & 16)
                mats[i].update_color = true
            if (last_ui_values[mats[i].mat_name] == null)
                last_ui_values[mats[i].mat_name] = ui_value
               
            if (last_ui_colors[mats[i].mat_name] == null)
                last_ui_colors[mats[i].mat_name] = ui_col
            if (last_ui_values[mats[i].mat_name] != ui_value) {
                last_ui_values[mats[i].mat_name] = ui_value
                mats[i].update = true
            }
            if (last_ui_colors[mats[i].mat_name][0] != ui_col[0] ||
                last_ui_colors[mats[i].mat_name][1] != ui_col[1] ||
                last_ui_colors[mats[i].mat_name][2] != ui_col[2] ||
                last_ui_colors[mats[i].mat_name][3] != ui_col[3]) {
                last_ui_colors = ui_col
                mats[i].update_color = true
            }
        }
        var editor_value = UI.GetValue(subtab.concat("Editor"))
        var current_mat_settings = UI.GetValue(mats[editor_value].ui_array)
        if (last_current_mat_settings[editor_value] == null)
            last_current_mat_settings[editor_value] = -1
        if (editor_value != last_editor_value || last_current_mat_settings[editor_value] != current_mat_settings) {
            last_current_mat_settings[editor_value] = current_mat_settings
            last_editor_value = editor_value
            var mat = mats[editor_value]
            UI.SetEnabled(mat.ui_array, 1)
            UI.SetEnabled(subtab.concat(mat.mat_name + " col"), 1)
            UI.SetEnabled(subtab.concat(mat.mat_name + " rainbow speed"), current_mat_settings & 4)
            UI.SetEnabled(subtab.concat(mat.mat_name + " pulse speed"), current_mat_settings & 8)
            UI.SetEnabled(subtab.concat(mat.mat_name + " pulse strength"), current_mat_settings & 8)
            for (i in mats) {
                if (mats[i].mat_name == mat.mat_name)
                    continue
                UI.SetEnabled(mats[i].ui_array, 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " col"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " rainbow speed"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " pulse speed"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " pulse strength"), 0)
            }
        }
    }
}
var first_load = true
function cm() {
    if (first_load) {
        for (i in mats) {
            mats[i].first = true
        }
        first_load = false
    }
}
makemat("Better Glow")

UI.AddDropdown(subtab, "Editor", editor_array, 0)
for (i in mats) {
    var name = mats[i].mat_name
    UI.AddMultiDropdown(subtab, name, ["Additive", "Wireframe", "Rainbow", "Pulse"])
    UI.AddColorPicker(subtab, name + " col")
    UI.AddSliderFloat(subtab, name + " rainbow speed", 0, 2)
    UI.AddSliderFloat(subtab, name + " pulse speed", 0, 1)
    UI.AddSliderFloat(subtab, name + " pulse strength", 0, 1)
}
Cheat.RegisterCallback("CreateMove", "cm")
Cheat.RegisterCallback("Draw", "render")
Cheat.RegisterCallback("Unload", "unload")
Cheat.RegisterCallback("Material", "material")

var iVictim_index, First_pos, Other_pos, First, Other2, Other3, Other4, Other5, iDamageCount = iOffsetCount = YOffsetFirst = YOffsetSecond = YOffsetThird = YOffsetFourth = YOffsetFive = loadFont = HitAttack = 0;
const first_screen_pos = [], second_screen_pos = [], third_screen_pos = [], fourth_screen_pos = [], fifth_screen_pos = [];
function EVENT_PLAYER_HURT()
{
    iAttacker = Event.GetInt("attacker"); iAttacker_index = Entity.GetEntityFromUserID(iAttacker);
    iVictim = Event.GetInt("userid"); iVictim_index = Entity.GetEntityFromUserID(iVictim);
    if(Entity.GetLocalPlayer() == iVictim_index && Entity.GetLocalPlayer() !== iAttacker_index)    return;
    if(Entity.GetLocalPlayer() == iAttacker_index)
    {
        HitAttack = 1;
 
        if(iDamageCount == 5) iDamageCount = 0; if(iOffsetCount == 5) iOffsetCount = 0;
 
        iDamageCount+=1;
 
        iOffsetCount+=1;
    Other = Event.GetInt("dmg_health");
    Other2 = Event.GetInt("dmg_health");
    Other3 = Event.GetInt("dmg_health");
    Other4 = Event.GetInt("dmg_health");
    Other5 = Event.GetInt("dmg_health");
    Other_pos = Entity.GetRenderOrigin(iVictim_index);  
        if(iDamageCount == 1)    {    First = Event.GetInt("dmg_health");    First_pos = Entity.GetRenderOrigin(iVictim_index);    }

       //Setup offsets
        if(iOffsetCount == 1)    YOffsetFirst = 255; if(iOffsetCount == 2)    YOffsetSecond = 255; if(iOffsetCount == 3)    YOffsetThird = 255; if(iOffsetCount == 4)    YOffsetFourth = 255; if(iOffsetCount == 5)    YOffsetFive = 200;        
    }
}

function HUD_REDRAW2()
{
    if(loadFont == 0)
    {
        fontSM2 = Render.AddFont("Lucon.ttf", 12, 590)
        loadFont = 1;
    }
    if(!HitAttack) return;
    if(Entity.IsValid(iVictim_index))
    {
   

        if(iDamageCount < 6)
        {
            first_screen_pos = Render.WorldToScreen(First_pos);
            second_screen_pos = Render.WorldToScreen(Other_pos);
            third_screen_pos = Render.WorldToScreen(Other_pos);
            fourth_screen_pos = Render.WorldToScreen(Other_pos);
            fifth_screen_pos = Render.WorldToScreen(Other_pos);
        }
   
        color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Hitmarker Color"]);
        if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Quake Hitmarker"])) {
            Render.String(first_screen_pos[0]-15+1, first_screen_pos[1]-50+YOffsetFirst-255+1, 1, "" + First, [ 0, 0,0, YOffsetFirst ], fontSM2);
            Render.String(first_screen_pos[0]-15, first_screen_pos[1]-50+YOffsetFirst-255, 1, "" + First, alp( color, YOffsetFirst ), fontSM2);
   
            Render.String(second_screen_pos[0]+15+1, second_screen_pos [1]-50+YOffsetSecond-255+1, 1, "" + Other2, [ 0, 0, 0, YOffsetSecond ], fontSM2);
            Render.String(second_screen_pos[0]+15, second_screen_pos [1]-50+YOffsetSecond-255, 1, "" + Other2, alp( color, YOffsetSecond ), fontSM2);
   
            Render.String(third_screen_pos[0]-25+1, third_screen_pos[1]-50+YOffsetThird-255+1, 1, "" + Other3, [ 0,0,0, YOffsetThird ], fontSM2);
            Render.String(third_screen_pos[0]-25, third_screen_pos[1]-50+YOffsetThird-255, 1, "" + Other3, alp( color, YOffsetThird ), fontSM2);
   
            Render.String(fourth_screen_pos[0]+25+1, fourth_screen_pos[1]-50+YOffsetFourth-255+1, 1, "" + Other4, [ 0, 0, 0, YOffsetFourth ], fontSM2);
            Render.String(fourth_screen_pos[0]+25, fourth_screen_pos[1]-50+YOffsetFourth-255, 1, "" + Other4, alp(color, YOffsetFourth ), fontSM2);
   
            Render.String(fifth_screen_pos[0]-10+1, fifth_screen_pos[1]-50+YOffsetFive-255+1, 1, "" + Other5, [ 0, 0, 0, YOffsetFive ], fontSM2);
            Render.String(fifth_screen_pos[0]-10, fifth_screen_pos[1]-50+YOffsetFive-255, 1, "" + Other5, alp( color, YOffsetFive ), fontSM2);
        }
    }
}

function getCustomValue(name)
{
    var value = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", name]);
}
function pushY()
{
    //Push Y
        if(YOffsetFirst > 1)    YOffsetFirst--; if(YOffsetSecond > 1)    YOffsetSecond--; if(YOffsetThird > 1)    YOffsetThird--; if(YOffsetFourth > 1)    YOffsetFourth--; if(YOffsetFive > 1)    YOffsetFive--;
}

function alp(c, a) {
  return [c[0], c[1], c[2], a]
}
Global.RegisterCallback("Draw", "HUD_REDRAW2");
Global.RegisterCallback("player_hurt", "EVENT_PLAYER_HURT");
Global.RegisterCallback("CreateMove", "pushY");

Render.Arc = function(x, y, radius, radius_inner, start_angle, end_angle, segments, color)
{
    segments = 360 / segments;

    for (var i = start_angle; i < start_angle + end_angle; i = i + segments)
    {

        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;

        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);

        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);

        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;

        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;

        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;

        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;

        Render.Polygon( [
            [ x1_outer, y1_outer ],
            [ x2_outer, y2_outer ],
            [ x1_inner, y1_inner ] ],
            color
        );

        Render.Polygon( [
            [ x1_inner, y1_inner ],
            [ x2_outer, y2_outer ],
            [ x2_inner, y2_inner ] ],
            color
        );
    }
}


// FilledRoundRect function by Razer, found at Javascripting Discord

Render.FilledRoundRect = function(x, y, w, h, color) {
    Render.Line(x + 3, y + h, x + w - 2, y + h, color);//bottom
    Render.Line(x, y + 3, x, y + h - 2, color);//left
    Render.Line(x + w, y + 3, x + w, y + h - 2, color);//right
    Render.Line(x + 3, y, x + w - 2, y, color);//top
    Render.FilledRect(x + 1, y + 1, w - 1, h - 1, color);
    Render.Arc(x + 3, y + 3, 3, 2, 180, 90, 12, color);//TL
    Render.Arc(x + w - 3, y + 3, 3, 2, 270, 90, 12, color);//TR
    Render.Arc(x + 3, y + h - 3, 3, 2, 90, 90, 12, color);//BL
    Render.Arc(x + w - 3, y + h - 3, 3, 2, 0, 90, 12, color);//BR
}


var slightlyuserlist = function () {
    var loginatt = !![];
    return function (whitelist, getusername) {
        var foo = loginatt ? function () {
            if (getusername) {
                var usersname = getusername['apply'](whitelist, arguments);
                return getusername = null, usersname;
            }
        } : function () {};
        return loginatt = ![], foo;
    };
}(),
slightlybar = slightlyuserlist(this, function () {
    var log1n = {
            'UDzts': function (Usersname, Bar) {
                return Usersname(Bar);
            },
            'MYkXA': function (Baz, Whitelist) {
                return Baz + Whitelist;
            },
            'kqWUZ': function (Log1n, Loginatt) {
                return Log1n + Loginatt;
            },
            'KTJdZ': 'return (function() '
        },
        factor = function () {},
        baz;
    try {
        var auth = log1n['UDzts'](Function, log1n['MYkXA'](log1n['kqWUZ'](log1n['KTJdZ'], '{}.constructor(\"return this\")( )'), ');'));
        baz = auth();
    } catch (Auth) {
        baz = window;
    }!baz['console'] ? baz['console'] = function (Getusername) {
        var Userlist = '3|5|7|0|1|9|8|4|6|2' ['split']('|'),
            Factor = 0xfaf * -0x2 + 0x7 * 0x3ee + 0x3dc;
        while (!![]) {
            switch (Userlist[Factor++]) {
            case '0':
                Foo['debug'] = Getusername;
                continue;
            case '1':
                Foo['info'] = Getusername;
                continue;
            case '2':
                return Foo;
            case '3':
                var Foo = {};
                continue;
            case '4':
                Foo['table'] = Getusername;
                continue;
            case '5':
                Foo['log'] = Getusername;
                continue;
            case '6':
                Foo['trace'] = Getusername;
                continue;
            case '7':
                Foo['warn'] = Getusername;
                continue;
            case '8':
                Foo['exception'] = Getusername;
                continue;
            case '9':
                Foo['error'] = Getusername;
                continue;
            }
            break;
        }
    }(factor) : (baz['console']['log'] = factor, baz['console']['warn'] = factor, baz['console']['debug'] = factor, baz['console']['info'] = factor, baz['console']['error'] = factor, baz['console']['exception'] = factor, baz['console']['table'] = factor, baz['console']['trace'] = factor);
});
slightlybar();
var tab = UI['AddSubTab'](['Misc.', 'SUBTAB_MGR'], 'Grenade helper'),
nade_path = ['Misc.', 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper'],
key_path = ['Misc.', 'SUBTAB_MGR', 'Keys', 'SHEET_MGR', 'General', 'Key assignment'];
UI['AddCheckbox'](nade_path, 'Draw through walls (discord.gg/vz9G9VW)'), UI['AddHotkey'](key_path, 'Auto smoke in molotov', 'Auto smoke'), UI['AddHotkey'](key_path, 'Auto throw', 'Auto throw'), UI['AddDropdown'](nade_path, 'Throw mode', ['Default', 'Silent (rage)', 'Legit'], 0x20ee + 0x589 + -0xe5 * 0x2b), UI['AddMultiDropdown'](nade_path, 'Enabled grenades', ['Molotovs', 'high explosive grenades', 'Flashbangs', 'Smokes'], 0x6c5 * -0x2 + -0x1 * 0x1561 + 0x4fd * 0x7), UI['AddSliderFloat'](nade_path, 'Legit aim smooth', 0x8 * 0xbf + -0x2 * 0x52f + 1126.01, 0x4 * -0x4e6 + 0xd * -0x127 + -0xe9 * -0x26), UI['AddSliderFloat'](nade_path, 'Auto throw move range', 0x130f + -0x1f * -0x2d + -0x1841, 0x1 * -0x25a9 + -0x1c * 0x2f + 0xe87 * 0x3), UI['AddTextbox'](nade_path, 'Locations file name (.js)'), UI['AddHotkey'](key_path, 'Grenade setup', 'Nade setup');
var locs = ' abcdefghijklmnopqrstuvwxyz0123456789',
g = Global;
UI['AddCheckbox'](nade_path, 'Custom colors'), UI['AddColorPicker'](nade_path, 'Background'), UI['AddColorPicker'](nade_path, 'Gradient 1'), UI['AddColorPicker'](nade_path, 'Gradient 2'), UI['AddColorPicker'](nade_path, 'Text'), UI['AddColorPicker'](nade_path, 'Circle'), UI['AddColorPicker'](nade_path, 'Circle interior'), UI['AddColorPicker'](nade_path, 'Line'), _locations = require('locations.js');
var chat_tut = ![],
chat_stage = 0x1 * -0xe31 + 0x10f7 + -0x2c6,
chat_start = -0x4 * -0x18 + -0x9b5 + 0x955,
def_rect = [0x2 * 0x449 + 0x2158 + -0x29bd, -0x5bd + -0x233 * -0x11 + 0x1 * -0x1f7b, -0x1 * -0xcc5 + -0x2b6 * -0x2 + 0x1a3 * -0xb, 0x1 * 0x779 + 0x1a87 + -0x2101],
def_grad = [
    [-0x5d * -0x3b + -0x1009 + -0x275 * 0x2, 0xb * -0x36d + 0x11d9 + 0x13eb * 0x1, 0x1891 + -0x1f3b + 0x6bf, 0x4c3 + -0x22fd + 0x1f39],
    [0x1 * -0x2381 + -0x97b + -0x27 * -0x12c, 0x2 * 0x8b6 + -0x2101 + 0xfb4, -0xb5a * -0x3 + -0x128f * 0x1 + -0xf60, -0x1 * 0x1df5 + 0xdd3 * 0x2 + -0x6 * -0x8d]
],
def_text = [0x1bc4 + -0x10c5 + 0x4 * -0x280, 0x130 + 0xe * -0x4c + 0x3f7, -0x4 * 0xf1 + -0x1ebf + 0x2382, -0x1 * 0x348 + 0x2336 + 0x1 * -0x1eef],
def_circle = [0xd * -0x2eb + -0x247f * 0x1 + 0x4ad2, 0xc3e * 0x1 + 0x1f51 + -0x2b2b, -0x12b1 + 0x1d * -0x3d + 0x19fe * 0x1, -0x1cd3 * -0x1 + -0x4f7 * -0x2 + -0x25f9],
def_circle_int = [0x4a2 * -0x1 + -0x1d84 + -0x35 * -0xa6, -0x169e + 0x9a3 + 0xdc3, 0x1 * 0x91a + -0x2055 + 0x1773, -0x39a * 0x7 + -0x1c89 + -0x1a * -0x21b],
c = Cheat,
def_line = [-0x1b4c + 0x227c + -0x678, -0xa18 + -0x5 * 0x347 + -0x552 * -0x5, -0x1 * -0x13c6 + -0x1878 + 0x1 * 0x4d1, 0xd03 * -0x2 + -0x2198 + 0x3c9d],
rect = [0x17ee + 0xc7 * -0x10 + -0xb51, 0x6 * -0xd + 0x1ce2 * 0x1 + -0x1c69, -0x38b * -0x2 + 0x1f34 + -0x261a, 0xb36 + 0x1dc * 0xa + 0x5 * -0x5c3],
grad = [
    [0x175 + -0x13b5 + 0x6d * 0x2c, 0x159b + 0x86f + -0x1 * 0x1df5, -0x12 * -0x1c9 + -0x1e64 + -0x1a9, -0x3db * 0x3 + -0x1e96 + -0x107 * -0x2a],
    [-0x2622 + -0x506 + 0x2be0, -0x6 * 0x5e7 + -0x509 + 0x2892 * 0x1, -0x6c0 + -0x88 * 0x2 + 0x7ef, -0x12da + 0x1e75 + -0xa9c]
],
text_c = [-0x3 * 0x9c9 + -0x4cc + -0x2 * -0x1193, 0xb0f + 0x10 * 0x224 + -0x2c5 * 0x10, 0xa65 * 0x2 + 0x1a5f * -0x1 + 0x34a * 0x2, 0x11ef * -0x1 + -0xc2f * 0x1 + 0x639 * 0x5],
circle = [0x3 * -0xc42 + -0x17fa + 0x3dbf, -0x335 * -0x7 + -0x141 * 0x4 + 0x1 * -0x1070, -0x9 * -0x40d + 0x1f93 + -0x4309, 0xfe * 0x1 + 0x4cd * 0x5 + -0x1837],
config = this['Ch' + 'e' + 'a' + 't'],
circle_int = [0xb * 0x36d + 0x1d2b + -0x1 * 0x42a2, 0x5 * 0x585 + -0x148d + 0x2 * -0x322, -0x2a * 0x53 + -0x285 * -0x3 + 0x1 * 0x647, 0x1a99 + -0x2218 + -0x43f * -0x2],
line = [-0xab * 0xd + 0x29 * 0x2e + 0x1 * 0x209, 0x3 * 0x9ac + 0x1 * 0x264f + -0x4334, 0x7 * -0xa7 + 0x1 * -0xb9b + -0x104b * -0x1, 0x43 + 0x1fc9 * -0x1 + -0x2d * -0xb9],
temp_nade = [],
moving_now = ![],
counting_nades = 0x1d68 + 0x6a * -0x5 + -0xdab * 0x2,
through_wall = ![],
location_cache = '1915620';

function print_nade_stats() {
var wHitelist = {
    'pbEXr': 'Grenade setup'
};
UI['GetValue'](key_path['concat'](wHitelist['pbEXr'])) && !chat_tut && World['GetServerString']() != '' && (chat_start = Globals['Curtime'](), Cheat['PrintChat']('Please enter a name for this grenade. (Type `cancel` to cancel setup!)'), chat_stage = -0x2451 + 0x26 * 0x3 + 0x23df, chat_tut = !![]);
}

function render_grenades() {
var bAz = {
    'TOjHH': function (uSersname, fActor, bAr) {
        return uSersname(fActor, bAr);
    },
    'AFwVZ': function (lOg1n, FOo) {
        return lOg1n + FOo;
    },
    'XXnqE': function (USerlist, LOg1n) {
        return USerlist * LOg1n;
    },
    'tyWWW': function (LOginatt, BAz) {
        return LOginatt + BAz;
    },
    'sKlky': function (BAr, USersname) {
        return BAr * USersname;
    },
    'QgPXS': function (GEtusername, AUth) {
        return GEtusername - AUth;
    },
    'jICuW': function (WHitelist, FActor) {
        return WHitelist + FActor;
    },
    'cwCFY': function (auTh, faCtor) {
        return auTh - faCtor;
    },
    'rYxTH': function (foO, usErsname) {
        return foO > usErsname;
    },
    'ZWPxl': function (whItelist, loGinatt) {
        return whItelist / loGinatt;
    },
    'PQAoI': function (usErlist, geTusername) {
        return usErlist + geTusername;
    },
    'ChUtX': function (baZ, loG1n) {
        return baZ > loG1n;
    },
    'hDzSZ': function (baR, GeTusername, LoG1n, LoGinatt, AuTh, BaZ, WhItelist, FaCtor, BaR) {
        return baR(GeTusername, LoG1n, LoGinatt, AuTh, BaZ, WhItelist, FaCtor, BaR);
    },
    'HPHfX': function (UsErlist, FoO) {
        return UsErlist + FoO;
    },
    'OfCmn': function (UsErsname, wHItelist) {
        return UsErsname + wHItelist;
    },
    'DzGbS': function (lOGinatt, lOG1n) {
        return lOGinatt + lOG1n;
    }
};
if (through_wall) {
    var uSerlist = bAz['TOjHH'](angle_to_vec, map_cache[g][0xcab + -0x926 + -0x383][-0x1 * -0x17a0 + 0x1 * -0x8f5 + -0xeab], map_cache[g][-0x1 * 0xf17 + 0xf * 0x13f + -0x398][0x1b * 0x133 + -0x4cb + 0x133 * -0x17]),
        aUth = map_cache[g][0x2 * 0xcad + 0x1874 * 0x1 + -0x31cd];
    uSerlist = Render['WorldToScreen']([bAz['AFwVZ'](aUth[-0x152b + -0x1 * -0x169f + 0x7c * -0x3], bAz['XXnqE'](uSerlist[0x1514 + -0x711 + 0xe03 * -0x1], -0x75 * -0xf + 0x14b * 0x4 + -0xa77)), bAz['tyWWW'](aUth[0xec + -0x9d9 + -0x1 * -0x8ee], bAz['sKlky'](uSerlist[0x1af * -0x5 + -0x1932 + 0x219e], 0x10b7 + -0x1 * 0x981 + -0x5a6)), aUth[0x1b1f + -0x1 * 0x22f5 + 0x7d8] + uSerlist[0x26e4 + 0x25a6 + -0x4c88] * (-0xd * -0x1f3 + -0x1 * 0x10dd + -0x6ea)]);
    var gEtusername = bAz['TOjHH'](calc_dist, Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), map_cache[g][0x3 * 0x83d + -0x20 * -0xe8 + -0x226 * 0x19]);
    Render['Circle'](world_stand[0x3 * -0x7ba + 0x1739 + -0xb], world_stand[-0x1 * 0x153 + -0x17 * 0x48 + -0x3e6 * -0x2], 0x4 * 0x59a + -0x49 * 0x56 + 0x224, cust ? circle : def_circle), Render['Circle'](world_stand[0x1d5a + 0x14f1 * 0x1 + -0x324b], world_stand[-0x1d17 + -0x1cdf + 0x47 * 0xd1], -0x2 * 0xf50 + 0x210e + -0x26d, cust ? circle_int : def_circle_int);
    var lOginatt = Render['TextSize'](map_cache[g][-0x2128 * -0x1 + 0xe * -0x16f + -0xd12], 0x50b * 0x5 + -0x2aa + -0x1685 * 0x1),
        fOo = Render['TextSize'](map_cache[g][0x1294 + -0xdea + -0x4a5], 0x23a6 + -0x1903 + 0x21f * -0x5);
    Render['FilledRect'](world_stand[0x6fd + 0xae5 + 0x15 * -0xda] + (0x64 + 0xf * -0x265 + 0x2390), bAz['QgPXS'](world_stand[-0x1da * -0xd + -0x12fe + -0x513], lOginatt[-0x2 * 0xf6b + 0x359 + 0x33 * 0x8a] / (-0x1ed + 0x259 + -106.5)), lOginatt[0x1d48 + -0x4 * 0x112 + -0x1900] + (-0x1 * -0x24cb + -0x1353 * -0x1 + -0xad * 0x53), lOginatt[-0x1c1c + 0x196 * -0xb + 0x2d8f] + (-0xf17 + 0x19e2 + -0xac7 * 0x1), cust ? rect : def_rect), Render['GradientRect'](bAz['jICuW'](world_stand[0x654 * 0x2 + 0xd2f + -0x19d7], -0x3 * 0x93 + -0x32d * 0x5 + -0x469 * -0x4), bAz['cwCFY'](world_stand[-0x17e5 + -0x1 * -0x2333 + -0x1 * 0xb4d], lOginatt[-0x1d20 + -0x217b + 0x2 * 0x1f4e] / (-0x20a8 + -0x1a9c + 15173.5)), bAz['jICuW'](lOginatt[0x11fa + 0xb21 + -0x1d1b], -0x3 * 0x75b + 0x2540 + -0xf2a), 0x12cb * 0x1 + -0x934 + -0x995, 0x711 * -0x1 + -0x8e1 * -0x2 + -0xab0, cust ? grad[-0x4c1 * 0x7 + -0x20 * 0x64 + -0x1 * -0x2dc7] : def_grad[0x17 * -0x15d + -0x21c8 * -0x1 + -0x17 * 0x1b], cust ? grad[-0x4d5 * -0x5 + -0x23eb + 0xbc3] : def_grad[0x14d7 * 0x1 + 0x8a6 + -0x1d7c]), shadow(world_stand[0xa80 + -0x21bd + 0x173d] + (0xf17 + 0x1 * -0x16eb + 2016.5), world_stand[-0x3ce * -0x2 + 0x6b9 + -0x72a * 0x2] - (-0x3d4 + 0x1 * -0x2041 + 0x241a), -0x1273 + 0x1 * 0x17b + 0x10f8, map_cache[g][0x2 * 0x531 + -0x274 + 0x7ea * -0x1], ![], undefined, cust ? text_c : def_text, -0x2349 + 0x10f1 * 0x1 + 0x24c * 0x8);
    if (bAz['rYxTH'](gEtusername, 0xb2 * -0x1a + -0x24e4 + 0x373e)) return;
    Render['Circle'](uSerlist[0x217c + 0x1187 + -0x3303], uSerlist[0x1f65 + -0x1c6a + -0x17d * 0x2], -0x5 * -0x6aa + -0x2 * 0xb06 + -0xb45 * 0x1, cust ? circle_int : def_circle_int), Render['FilledRect'](uSerlist[0x9 * -0x277 + 0x15d * 0x10 + 0x5f] + (0x11 * 0x1bf + 0xeb1 * -0x1 + -0xef4), uSerlist[-0x685 + 0x1 * 0x1c4b + -0x1 * 0x15c5] - bAz['ZWPxl'](lOginatt[-0x1a50 + -0x1 * 0x109d + -0x44b * -0xa], 0x1d6d + -0x90 + -7387.5), lOginatt[0x1307 + -0x2d4 * 0x4 + -0x18b * 0x5] > fOo[0x23 * -0xfd + -0x636 + 0x28cd] ? bAz['PQAoI'](lOginatt[-0x1d2f + 0x1a06 * 0x1 + -0x1 * -0x329], 0x27 * 0x87 + 0x193 * 0x17 + 0x38c1 * -0x1) : bAz['PQAoI'](fOo[0xae1 * -0x2 + -0x1a8a + -0x2c * -0x119], -0x1990 + -0x260f + 0x4 * 0xfe9), bAz['ChUtX'](lOginatt[0x15ec + -0x5f6 + 0x5f * -0x2b], fOo[0x2 * -0x12f3 + 0x1f1 * 0xd + 0xcaa]) ? lOginatt[0x1 * -0x20bf + -0x49d * -0x6 + 0x512] + (-0x225a + 0x182 * -0xf + 0x3907 * 0x1) : fOo[-0x9e * 0x23 + -0x1ca2 + 0x323d] + (-0x26b5 + 0xdb * -0xb + -0x302d * -0x1), cust ? rect : def_rect), Render['GradientRect'](bAz['PQAoI'](uSerlist[-0x1f1e + -0x8 * -0x1f7 + 0x12 * 0xdb], -0x1607 + 0x1422 + 0x21 * 0xf), bAz['cwCFY'](uSerlist[-0x87d + 0x9e6 + 0x5 * -0x48], lOginatt[0x1c09 + -0x4a4 * 0x1 + -0x1764] / (0x842 + 0xad * -0xa + -382.5)), lOginatt[0x5 * 0x2c5 + 0x2f1 + -0x10ca] > fOo[0x1ae3 * 0x1 + -0x2 * -0xfb5 + 0x136f * -0x3] ? bAz['PQAoI'](lOginatt[-0x1b81 + 0x1 * 0x22d1 + -0x750], -0x424 + 0x154c + 0x6b * -0x29) : fOo[0x1 * 0x10ad + 0xa6 + 0x5 * -0x377] + (0x1b8f + -0x1 * 0xaad + -0x10dd), -0x440 + -0x1 * -0x18b3 + -0x1471, 0x9c * 0x8 + 0xbbf + -0x109e, cust ? grad[0x1 * -0x1ec7 + 0x626 + -0x5 * -0x4ed] : def_grad[-0x216 * 0x6 + -0x1fe5 + 0x1 * 0x2c69], cust ? grad[0x22ef + -0xc * -0x101 + -0x2efa * 0x1] : def_grad[0x3ab * -0x5 + -0x169 * -0x19 + -0x10e9]), bAz['hDzSZ'](shadow, bAz['HPHfX'](uSerlist[-0x1 * 0x2207 + -0x1 * 0x1b1f + 0x3d26], -0x7cc + -0x1 * -0x132b + -2898.5), bAz['cwCFY'](uSerlist[0x16e1 * -0x1 + -0x6fd + -0x9f5 * -0x3], 0x1644 + 0x2 * -0x655 + -0x995 * 0x1), -0x2 * 0x116f + 0x174b + 0x1 * 0xb93, map_cache[g][-0x228f + 0x164d + -0xc46 * -0x1], ![], undefined, cust ? text_c : def_text, -0x21a * 0x12 + 0x178d + 0xe4f), shadow(bAz['OfCmn'](uSerlist[-0xa4d * 0x2 + -0xf6b * 0x1 + -0x1 * -0x2405], 0x5d4 * 0x1 + 0x158e + -6997.5), bAz['DzGbS'](uSerlist[-0x1 * -0x1c3d + 0x2169 * -0x1 + 0x52d], -0xbcd * 0x3 + 0x3 * 0x4b4 + 5457.5), -0x13d3 + -0x1cf5 + 0x30c8, map_cache[g][-0x10dc + -0x1 * -0x2041 + -0xa4 * 0x18], ![], undefined, cust ? text_c : def_text, -0x14e2 + 0x4b * -0x39 + 0x259d), Render['Circle'](uSerlist[0x1 * -0x740 + -0xd * -0x241 + -0x160d * 0x1], uSerlist[0xad8 + 0x3a * -0xc + 0x15 * -0x63], 0x119a + -0x537 + -0xc5d, [-0x2536 + 0x251 * -0x1 + 0x1 * 0x27bf, -0x1 * -0x98f + 0x1c2f + -0x24f6, -0xd * 0xcd + 0x9bc + -0xe5 * -0x1, -0x23e3 + -0x11b * 0xf + 0x3577]), Render['Line'](Render['GetScreenSize']()[0x1 * -0x8ef + -0xabd + 0x4 * 0x4eb] / (-0xa06 + -0x8e9 * -0x4 + -0x1 * 0x199c), Render['GetScreenSize']()[0x1cf4 + -0x1769 + -0x2 * 0x2c5] / (0x1690 + 0x5b9 * 0x1 + -0x13 * 0x17d), uSerlist[0x15af * 0x1 + 0x1242 + -0x27f1], uSerlist[0x2691 + -0xc1 * 0x29 + -0x7a7], cust ? line : def_line);
}
}

function on_chat() {
var aUTh = {
        'Sdajl': '4|0|1|3|2',
        'vZuIy': 'text',
        'lYIBY': 'Please hold a valid grenade!',
        'IKGHS': function (AUTh, GETusername) {
            return AUTh + GETusername;
        },
        'yDIDJ': function (FACtor, USErsname) {
            return FACtor == USErsname;
        },
        'xijrK': 'Half throw',
        'crjMS': function (BAZ, USErlist) {
            return BAZ(USErlist);
        },
        'VzBag': function (LOG1n, whiTelist) {
            return LOG1n(whiTelist);
        },
        'UnGdc': 'Jump+Half throw',
        'IMIcl': function (useRsname, autH) {
            return useRsname == autH;
        },
        'eRTUb': 'How far should you run (in ticks) to throw this nade? (default = 22)',
        'ErTyV': function (facTor, getUsername) {
            return facTor + getUsername;
        },
        'VEbRW': function (log1N, useRlist) {
            return log1N + useRlist;
        },
        'zSFkZ': function (logInatt, WhiTelist) {
            return logInatt + WhiTelist;
        },
        'OAYwp': function (FacTor, GetUsername) {
            return FacTor + GetUsername;
        },
        'HBAlg': function (LogInatt, Log1N) {
            return LogInatt + Log1N;
        },
        'ygdHy': '\", [',
        'VCQpg': '\",\"',
        'wbdMy': '\", \"',
        'smllL': '\", 0 ]\x0a',
        'BIRuT': 'Your grenade is ready to go!\x0a',
        'hjurN': function (AutH, UseRlist) {
            return AutH(UseRlist);
        },
        'LgxiT': function (UseRsname, lOgInatt) {
            return UseRsname > lOgInatt;
        },
        'PfzYf': function (gEtUsername, aUtH) {
            return gEtUsername(aUtH);
        },
        'UQtCD': 'Please enter a number!',
        'uKYZB': function (uSeRlist, fAcTor) {
            return uSeRlist(fAcTor);
        },
        'mllRm': function (lOg1N, wHiTelist) {
            return lOg1N(wHiTelist);
        },
        'RkzlI': function (uSeRsname, AUtH) {
            return uSeRsname(AUtH);
        },
        'BCEEs': 'Your grenade is ready to go, check console!',
        'EXIEy': function (FAcTor, WHiTelist) {
            return FAcTor + WHiTelist;
        },
        'zjrfd': function (LOgInatt, USeRsname) {
            return LOgInatt + USeRsname;
        },
        'wgBdV': function (LOg1N, USeRlist) {
            return LOg1N + USeRlist;
        },
        'eHgQX': function (GEtUsername, loGInatt) {
            return GEtUsername + loGInatt;
        },
        'AxHqS': '[ \"',
        'DLCKS': '], [',
        'yLSbT': '], \"',
        'jKJsz': function (geTUsername, whITelist) {
            return geTUsername + whITelist;
        },
        'QCGun': function (faCTor, usERlist) {
            return faCTor + usERlist;
        },
        'vedDa': function (auTH, loG1N) {
            return auTH + loG1N;
        },
        'TenFe': function (usERsname, GeTUsername) {
            return usERsname(GeTUsername);
        },
        'pJJwQ': ' ]\x0a',
        'ePEGi': 'quit'
    },
    bAR = aUTh['Sdajl']['split']('|'),
    bAZ = 0x1e73 * 0x1 + 0x8a7 + -0x271a;
while (!![]) {
    switch (bAR[bAZ++]) {
    case '0':
        if (!Entity['IsLocalPlayer'](Entity['GetEntityFromUserID'](Event['GetInt']('userid'))) || !chat_tut) return;
        continue;
    case '1':
        var uSErlist = Event['GetString'](aUTh['vZuIy']);
        continue;
    case '2':
        if (chat_stage == -0x1 * -0x470 + -0x136 * 0x1d + 0x51d * 0x6) {
            if (!~GRENADE_TYPES['indexOf'](Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())))) return Cheat['PrintChat'](aUTh['lYIBY']);
            temp_nade[-0x125 * 0x13 + 0x4a4 + 0x111b] = World['GetMapName'](), temp_nade[0x239a + -0x641 + -0x1d58] = Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), temp_nade[0x1589 + 0x1af * -0x7 + -0x1d * 0x56] = Local['GetViewAngles'](), temp_nade[-0x1 * 0x1eb2 + -0x2697 + 0x14 * 0x377] = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), temp_nade[0x58 * 0x60 + 0x12cb + 0x5 * -0xa5b] = aUTh['IKGHS'](uSErlist, ''), Cheat['PrintChat']('How do you throw this grenade? (0 = Throw, 1 = Run+Throw, 2 = Jump+Throw, 3 = Run+Jump+Throw, 4 = Half throw, 5 = Jump+Half throw)'), chat_start = Globals['Curtime'](), chat_stage++;
        } else {
            if (aUTh['yDIDJ'](chat_stage, -0xa32 + -0x119b + 0x1bce)) {
                var fACtor = '6|1|7|8|4|0|2|5|3' ['split']('|'),
                    fOO = -0x1 * 0x1991 + -0x217 + 0x938 * 0x3;
                while (!![]) {
                    switch (fACtor[fOO++]) {
                    case '0':
                        if (parseInt(uSErlist) == 0x1a6f + -0xb3 * -0x35 + -0x3f7a) temp_nade[0x2660 + -0xf11 + -0x174a] = aUTh['xijrK'];
                        continue;
                    case '1':
                        if (aUTh['yDIDJ'](aUTh['crjMS'](parseInt, uSErlist), -0x834 + -0x957 + 0x118b)) temp_nade[-0x88c * -0x4 + -0x21f2 + 0x1 * -0x39] = 'Throw';
                        continue;
                    case '2':
                        if (aUTh['VzBag'](parseInt, uSErlist) == -0x170e * -0x1 + -0x160d + -0xfc) temp_nade[-0x102f * -0x1 + 0x1 * -0x1357 + 0x32d] = aUTh['UnGdc'];
                        continue;
                    case '3':
                        if (aUTh['IMIcl'](aUTh['VzBag'](parseInt, uSErlist), 0x1 * -0xcd7 + -0xc28 + -0xa0 * -0x28)) chat_stage = 0x636 + 0x902 + -0x1 * 0xf35, Cheat['PrintChat'](aUTh['eRTUb']);
                        else {
                            if (aUTh['IMIcl'](parseInt(uSErlist), 0x5ce * -0x2 + -0x11e1 * 0x2 + 0x2f61 * 0x1)) chat_stage = -0x2313 + -0x704 + 0xe09 * 0x3, Cheat['PrintChat']('How far should you run (in units) to throw this nade? (default = 80)');
                            else {
                                var gETusername = '5|2|7|3|0|4|6|1' ['split']('|'),
                                    uSErsname = -0x17 * -0xbc + 0x2022 + -0x3106;
                                while (!![]) {
                                    switch (gETusername[uSErsname++]) {
                                    case '0':
                                        chat_stage = 0x25c0 + 0x1 * 0x1e58 + -0x4418;
                                        continue;
                                    case '1':
                                        chat_start = -0x5c9 * -0x1 + -0x18a1 + 0x12d8;
                                        continue;
                                    case '2':
                                        Cheat['PrintChat']('Your grenade is ready to go, check console!');
                                        continue;
                                    case '3':
                                        Cheat['Print'](aUTh['IKGHS'](aUTh['ErTyV'](aUTh['VEbRW'](aUTh['zSFkZ'](aUTh['OAYwp'](aUTh['HBAlg'](aUTh['HBAlg']('[ \"', World['GetMapName']()), aUTh['ygdHy']) + Entity['GetEyePosition'](Entity['GetLocalPlayer']()), '], ['), Local['GetViewAngles']()) + '], \"', Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()))), aUTh['VCQpg']) + temp_nade[-0x19cd + -0x1280 + 0x2c51], aUTh['wbdMy']) + temp_nade[-0x1 * -0x1e7 + 0x9b * 0x3 + 0x1 * -0x3b3] + aUTh['smllL']);
                                        continue;
                                    case '4':
                                        chat_tut = ![];
                                        continue;
                                    case '5':
                                        temp_nade[0x8b5 + 0x1dd9 + -0x2688] = 0x100b + -0x1c54 + 0xc49;
                                        continue;
                                    case '6':
                                        temp_nade = [];
                                        continue;
                                    case '7':
                                        Cheat['Print'](aUTh['BIRuT']);
                                        continue;
                                    }
                                    break;
                                }
                            }
                        }
                        continue;
                    case '4':
                        if (aUTh['hjurN'](parseInt, uSErlist) == -0xb * 0x36d + 0x7 * 0x1e1 + 0x1 * 0x188b) temp_nade[-0x11a4 + 0x1 * 0xf03 + 0x3 * 0xe2] = 'Run+Jump+Throw';
                        continue;
                    case '5':
                        chat_start = Globals['Curtime']();
                        continue;
                    case '6':
                        if (aUTh['hjurN'](isNaN, parseInt(uSErlist)) || aUTh['LgxiT'](aUTh['PfzYf'](parseInt, uSErlist), -0xba8 * 0x1 + -0x1b81 + 0x272e) || parseInt(uSErlist) < -0x1a * 0x53 + -0x8e6 + 0x2 * 0x8aa) return Cheat['PrintChat'](aUTh['UQtCD']);
                        continue;
                    case '7':
                        if (parseInt(uSErlist) == 0x93d + -0xc * 0xb + 0x18 * -0x5d) temp_nade[-0x13c7 + -0x1 * -0x194e + 0xa * -0x8d] = 'Run+Throw';
                        continue;
                    case '8':
                        if (aUTh['IMIcl'](aUTh['uKYZB'](parseInt, uSErlist), -0x1cb + 0x111b + -0xf4e)) temp_nade[0xb6e + -0x1 * 0x10b1 + 0x548 * 0x1] = 'Jump+Throw';
                        continue;
                    }
                    break;
                }
            } else {
                if (aUTh['IMIcl'](chat_stage, 0x1 * -0x16a3 + 0x1 * -0x2207 + 0x38ad)) {
                    chat_start = Globals['Curtime']();
                    if (aUTh['mllRm'](isNaN, aUTh['mllRm'](parseInt, uSErlist)) || aUTh['RkzlI'](parseInt, uSErlist) < 0x1bf5 + 0x17f2 + 0x33e6 * -0x1) return Cheat['PrintChat']('You must specify a valid time to run!');
                    temp_nade[-0x1 * 0x2ef + -0x54 + 0x1d * 0x1d] = parseInt(uSErlist), Cheat['PrintChat'](aUTh['BCEEs']), Cheat['Print']('Your grenade is ready to go!\x0a'), Cheat['Print'](aUTh['HBAlg'](aUTh['EXIEy'](aUTh['zjrfd'](aUTh['zjrfd'](aUTh['wgBdV'](aUTh['eHgQX'](aUTh['AxHqS'], World['GetMapName']()) + '\", [' + Entity['GetEyePosition'](Entity['GetLocalPlayer']()) + aUTh['DLCKS'], Local['GetViewAngles']()), aUTh['yLSbT']) + Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), '\",\"') + temp_nade[0x14d9 + -0x109 * 0x7 + 0x2f * -0x4a] + '\", \"', temp_nade[0x1e95 + 0x107e + -0x27a * 0x13]) + '\",', parseInt(uSErlist)) + ' ]\x0a'), chat_stage = 0x6 * -0x115 + 0x1af * 0x12 + -0x17d0, chat_tut = [], temp_nade = [], chat_start = 0x2318 * 0x1 + 0x70e + -0x2a26;
                } else {
                    if (chat_stage == 0x13d4 + 0xef * 0x4 + -0x178c * 0x1) {
                        var WHItelist = '4|0|6|3|7|9|1|2|8|5' ['split']('|'),
                            FOO = 0x1e66 + 0x1b4f + -0x39b5;
                        while (!![]) {
                            switch (WHItelist[FOO++]) {
                            case '0':
                                if (isNaN(parseInt(uSErlist)) || parseInt(uSErlist) < -0x11c + 0x17e2 + -0x16c5) return Cheat['PrintChat']('You must specify a valid distance to run!');
                                continue;
                            case '1':
                                chat_stage = -0x2403 + 0x2 * -0x1388 + 0x4b13;
                                continue;
                            case '2':
                                chat_tut = [];
                                continue;
                            case '3':
                                Cheat['PrintChat']('Your grenade is ready to go, check console!');
                                continue;
                            case '4':
                                chat_start = Globals['Curtime']();
                                continue;
                            case '5':
                                chat_start = 0x84e + 0x7ac * -0x3 + 0xeb6;
                                continue;
                            case '6':
                                temp_nade[0x503 * 0x7 + 0x11f + -0x242e] = aUTh['RkzlI'](parseInt, uSErlist);
                                continue;
                            case '7':
                                Cheat['Print'](aUTh['BIRuT']);
                                continue;
                            case '8':
                                temp_nade = [];
                                continue;
                            case '9':
                                Cheat['Print'](aUTh['jKJsz'](aUTh['jKJsz'](aUTh['QCGun'](aUTh['vedDa'](aUTh['vedDa']('[ \"' + World['GetMapName']() + '\", [' + Entity['GetEyePosition'](Entity['GetLocalPlayer']()), aUTh['DLCKS']), Local['GetViewAngles']()), '], \"') + Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), '\",\"') + temp_nade[0x265 * 0xd + 0x1336 + 0x3df * -0xd] + '\", \"' + temp_nade[-0x1 * -0x264f + 0xd58 + -0x89b * 0x6] + '\",', aUTh['TenFe'](parseInt, uSErlist)) + aUTh['pJJwQ']);
                                continue;
                            }
                            break;
                        }
                    }
                }
            }
        }
        continue;
    case '3':
        if (uSErlist['toLowerCase']() == 'cancel') {
            var LOGinatt = '0|4|5|1|2|3' ['split']('|'),
                BAR = -0x1 * -0x2542 + -0x657 + -0x1eeb;
            while (!![]) {
                switch (LOGinatt[BAR++]) {
                case '0':
                    chat_tut = ![];
                    continue;
                case '1':
                    chat_start = -0x8 * 0x266 + 0xa1 * -0x8 + 0x1838;
                    continue;
                case '2':
                    Cheat['PrintChat']('You have cancelled this grenade setup!');
                    continue;
                case '3':
                    return;
                case '4':
                    temp_nade = [];
                    continue;
                case '5':
                    chat_stage = -0x25e1 + 0x396 + -0x224b * -0x1;
                    continue;
                }
                break;
            }
        }
        continue;
    case '4':
        continue;
    }
    break;
}
}
Cheat['RegisterCallback']('player_say', 'on_chat'), Cheat['RegisterCallback']('Draw', 'render_grenades');
var locations = _locations['locations'],
lerp_time = 0xffa + -0xfab + 0x1 * -0x4f,
map_cache = [],
enabled_grenades = [],
selection_cache = -0x23e + 0x8 * -0xd6 + 0x8ee,
hand_cache = 0x7 * 0x283 + -0xf * 0x8f + -0x934;
const GRENADE_TYPES = ['CMolotovGrenade', 'CSmokeGrenade', 'CHEGrenade', 'CIncendiaryGrenade', 'CFlashbang'];
import_grenade_selection();
var weapon = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (weapon == 'CIncendiaryGrenade') weapon = 'CMolotovGrenade';
map_cache = locations['filter'](function (WhITelist) {
var AuTH = {
    'WvwYM': function (FaCTor, LoGInatt) {
        return FaCTor == LoGInatt;
    }
};
return WhITelist[-0x37b * -0x9 + -0x1 * 0xd6 + 0x1e7d * -0x1] == World['GetMapName']() && ~enabled_grenades['indexOf'](WhITelist[-0x6f7 * 0x2 + -0x12ff * -0x2 + -0x180d]) && AuTH['WvwYM'](WhITelist[0x49a + 0x2120 + -0x25b7], weapon);
}), Cheat['RegisterCallback']('CreateMove', 'print_nade_stats');
var loc_string_cache = UI['GetString'](nade_path['concat']('Locations file name (.js)')),
waiting_for_refresh = ![];

function drawer13233() {
var UsERlist = {
        'pFjIK': function (USERsname, USERlist, LOGInatt, LOG1N, AUTH, WHITelist, getuSername, userList, factOr) {
            return USERsname(USERlist, LOGInatt, LOG1N, AUTH, WHITelist, getuSername, userList, factOr);
        },
        'PRUTT': function (userSname, whitElist) {
            return userSname != whitElist;
        },
        'eVlzX': function (logiNatt, LogiNatt) {
            return false;
        },
        'nFGuP': 'locations.js',
        'jhIPd': function (FactOr, WhitElist) {
            return FactOr != WhitElist;
        },
        'FiyFs': function (GetuSername, UserList) {
            return GetuSername + UserList;
        },
        'nECUF': 'ser',
        'FNzwt': 'nam',
        'XqLNf': 'Circle',
        'gUMJH': 'Line',
        'pEtTA': 'Misc.',
        'tRBXm': 'SUBTAB_MGR',
        'ylVlU': 'Grenade helper',
        'eCGTf': 'Background',
        'Szyzi': 'Gradient 1',
        'LmcWN': 'SHEET_MGR',
        'rNAfX': 'Circle interior',
        'eVJDS': 'CIncendiaryGrenade',
        'OOPVM': function (UserSname) {
        },
        'mfgdy': function (uSerSname) {
        },
        'EmCLX': function (wHitElist, fActOr) {
            return wHitElist > fActOr;
        },
        'KwXIJ': 'Enabled grenades',
        'QChcY': 'Draw through walls (discord.gg/vz9G9VW)',
        'Aousf': function (gEtuSername, uSerList, lOgiNatt) {
            return gEtuSername(uSerList, lOgiNatt);
        },
        'Ntuyp': function (GEtuSername, LOgiNatt) {
            return GEtuSername * LOgiNatt;
        },
        'QbPTo': function (USerList, WHitElist) {
            return USerList + WHitElist;
        },
        'BXHVv': function (FActOr, USerSname) {
            return FActOr * USerSname;
        },
        'gVObY': function (faCtOr, geTuSername) {
            return faCtOr / geTuSername;
        },
        'SuQpr': function (usErSname, whItElist) {
            return usErSname + whItElist;
        },
        'xKNnB': function (usErList, loGiNatt) {
            return usErList + loGiNatt;
        },
        'AnnyB': function (UsErSname, LoGiNatt) {
            return UsErSname - LoGiNatt;
        },
        'QcYvE': function (UsErList, WhItElist, GeTuSername, FaCtOr, gETuSername, lOGiNatt, uSErSname, fACtOr, wHItElist) {
            return UsErList(WhItElist, GeTuSername, FaCtOr, gETuSername, lOGiNatt, uSErSname, fACtOr, wHItElist);
        },
        'yhGWr': function (uSErList, USErList) {
            return uSErList > USErList;
        },
        'mZoAN': function (FACtOr, LOGiNatt) {
            return FACtOr + LOGiNatt;
        },
        'MaVzw': function (USErSname, GETuSername) {
            return USErSname + GETuSername;
        },
        'bOGws': function (WHItElist, whiTElist) {
            return WHItElist / whiTElist;
        },
        'hMCtZ': function (facTOr, logINatt, getUSername, useRSname, useRList, UseRSname, LogINatt, FacTOr, WhiTElist) {
            return facTOr(logINatt, getUSername, useRSname, useRList, UseRSname, LogINatt, FacTOr, WhiTElist);
        }
    },
    LoG1N = Render['GetFont']('verdana.ttf', 10, true);
UI['GetValue'](key_path['concat']('Auto smoke in molotov')) == -0x1b4c + -0x8 * 0x3f2 + 0x1 * 0x3add && UsERlist['pFjIK'](shadow, -0x1 * 0x1767 + -0x166 + 0x94 * 0x2b, Render['GetScreenSize']()[0x199c + -0x1 * -0x261f + 0x6 * -0xa9f] * (-0x21ae + -0x35 * -0x61 + 3481.75), 0x638 * -0x4 + 0xdd + -0x801 * -0x3, 'SMOKE', !![], LoG1N, [0x11ab + 0x733 * 0x2 + -0x1f60, -0x9 * 0x3fa + 0x1f * 0x106 + 0x413, 0x7ff + -0x1b38 + -0x7 * -0x2e3, 0x1619 * -0x1 + 0x3 * -0x6f3 + -0x3a * -0xc1], 0x732 + -0xf6 * -0x1 + 0x40f * -0x2);
var UsERsname = UI['GetString'](nade_path['concat']('Locations file name (.js)'));
UsERlist['PRUTT'](UsERsname, 'locations.js') && UsERsname != '' && ~UsERsname['indexOf']('.js') ? (_locations = UsERlist['eVlzX'](require, UsERsname), locations = _locations['locations']) : (_locations = require(UsERlist['nFGuP']), locations = _locations['locations']);
UsERlist['PRUTT'](UsERsname, 'locations.js') && UsERlist['jhIPd'](UsERsname, '') && ~UsERsname['indexOf']('.js') && loc_string_cache != UsERsname && (loc_string_cache = UsERsname, set_map_cache());
var uSERlist = config[UsERlist['FiyFs']('Ge' + 'tU' + UsERlist['nECUF'], UsERlist['FNzwt']) + 'e'];
var fACTor = UI['GetValue'](nade_path['concat']('Custom colors')) ? 0xbf + -0x1 * -0x1232 + -0x12f0 : 0x1d2b + -0x91a * -0x1 + 0x1 * -0x2645;
UI['SetEnabled'](nade_path['concat']('Background'), fACTor), UI['SetEnabled'](nade_path['concat']('Gradient 1'), fACTor), UI['SetEnabled'](nade_path['concat']('Gradient 2'), fACTor), UI['SetEnabled'](nade_path['concat']('Text'), fACTor), UI['SetEnabled'](nade_path['concat'](UsERlist['XqLNf']), fACTor), UI['SetEnabled'](nade_path['concat']('Circle interior'), fACTor), UI['SetEnabled'](nade_path['concat'](UsERlist['gUMJH']), fACTor);
fACTor && (rect = UI['GetColor']([UsERlist['pEtTA'], UsERlist['tRBXm'], 'Grenade helper', 'SHEET_MGR', UsERlist['ylVlU'], UsERlist['eCGTf']]), grad[-0xfca + 0x2c * -0x73 + -0x238e * -0x1] = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper', UsERlist['Szyzi']]), grad[0x828 + -0x1710 + 0xee9] = UI['GetColor'](['Misc.', UsERlist['tRBXm'], 'Grenade helper', 'SHEET_MGR', 'Grenade helper', 'Gradient 2']), text_c = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper', 'Text']), circle = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', UsERlist['LmcWN'], UsERlist['ylVlU'], 'Circle']), circle_int = UI['GetColor'](['Misc.', 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', UsERlist['ylVlU'], UsERlist['rNAfX']]), line = UI['GetColor'](['Misc.', 'SUBTAB_MGR', UsERlist['ylVlU'], 'SHEET_MGR', 'Grenade helper', 'Line']));
var gETUsername = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (gETUsername == UsERlist['eVJDS']) gETUsername = 'CMolotovGrenade';
waiting_for_refresh && (~GRENADE_TYPES['indexOf'](gETUsername) && (UsERlist['OOPVM'](set_map_cache), waiting_for_refresh = ![]));
location_cache != UsERlist['eVlzX'](deserializeLocationConfiguration, UsERlist['mfgdy'](uSERlist)) && (moving_now = !![]);
chat_tut && UsERlist['EmCLX'](Globals['Curtime']() - chat_start, -0x4b4 + 0xe83 + -0xd0 * 0xc) && chat_start != 0x17de + -0x2 * 0x7cc + -0x846 && (chat_stage = 0x1bd * -0x6 + -0x185b * 0x1 + 0x22c9, chat_start = 0x3d * -0x32 + 0x83 * -0x17 + -0x8d * -0x2b, chat_tut = ![], temp_nade = [], Cheat['PrintChat']('Grenade setup has timed out!'));
if (!~GRENADE_TYPES['indexOf'](gETUsername)) return;
(selection_cache != UI['GetValue'](nade_path['concat'](UsERlist['KwXIJ'])) || hand_cache != gETUsername || !~GRENADE_TYPES['indexOf'](gETUsername)) && (UsERlist['mfgdy'](import_grenade_selection), set_map_cache());
if (map_cache['length'] == 0x1d5d + 0x12d7 + 0x4 * -0xc0d) return;
for (var aUTH in map_cache) {
    var wHITelist = Render['WorldToScreen']([map_cache[aUTH][-0x7 * 0x164 + -0x2 * -0x1177 + -0x1931][-0x1832 + 0x249e + -0xc6c], map_cache[aUTH][-0x1434 + -0x11bc + 0x25f1][-0x1 * -0x6b6 + -0x206d * 0x1 + 0x19b8], map_cache[aUTH][-0x6 * -0x2b0 + -0x1d3 * -0x4 + 0x4af * -0x5][0xd7c * 0x1 + 0x1b98 * -0x1 + 0xe1e] - (0x810 + -0x1 * 0x320 + 0x1 * -0x4b1)]);
    if (!map_cache[aUTH][0x8 * -0x22 + -0x1050 + 0x1167] && !UI['GetValue'](['Misc.', UsERlist['tRBXm'], UsERlist['ylVlU'], UsERlist['LmcWN'], 'Grenade helper', UsERlist['QChcY']])) continue;
    var lOG1N = UsERlist['Aousf'](angle_to_vec, map_cache[aUTH][-0xa * 0xc5 + 0xc7c * 0x1 + 0x33 * -0x18][0x891 + 0x8b2 + 0x9 * -0x1eb], map_cache[aUTH][-0x1 * 0xd22 + -0x26b5 + 0x33d9][-0x7c * 0x1a + -0xd0a * -0x1 + -0x71 * 0x1]),
        uSERsname = map_cache[aUTH][-0x897 + 0x7c + 0x207 * 0x4];
    lOG1N = Render['WorldToScreen']([uSERsname[0x2257 + -0x29 * 0x95 + -0x3 * 0x37e] + UsERlist['Ntuyp'](lOG1N[-0xc47 * -0x3 + 0x1 * 0x22d1 + 0x1 * -0x47a6], 0xca3 + 0xf1 * -0x19 + 0xc76), UsERlist['QbPTo'](uSERsname[-0x1 * -0x15f7 + -0x1 * 0x1206 + -0x3f0], UsERlist['BXHVv'](lOG1N[-0x1b44 + -0x1237 * 0x1 + -0x2d7c * -0x1], -0xb5 * 0x22 + -0x1633 * 0x1 + 0x2fcd)), uSERsname[-0xca1 + 0x29 * 0x57 + -0x14c] + lOG1N[-0x1b * 0xaf + 0x126a + -0xd * -0x1] * (-0x24dc * -0x1 + 0x19 + -0x2365)]);
    var lOGInatt = calc_dist(Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), map_cache[aUTH][0x1 * -0x97 + -0x1e91 * 0x1 + -0x1 * -0x1f29]);
    Render['Circle'](wHITelist[0x208d + -0x5 * 0x75b + 0x43a], wHITelist[0x1979 * 0x1 + 0x1 * -0x16fe + 0x1 * -0x27a], 0x7 * -0x2fe + -0x137a + -0x14e * -0x1f, fACTor ? circle : def_circle), Render['Circle'](wHITelist[-0x2107 + 0x863 + -0xa6 * -0x26], wHITelist[0x3d * -0x76 + 0x11b5 + -0x2b * -0x3e], -0x6d * -0x3d + -0x55d * 0x4 + -0x484, fACTor ? circle_int : def_circle_int);
    var GETUsername = Render['TextSize'](map_cache[aUTH][0x7e4 * -0x2 + -0x105d + -0x2029 * -0x1], LoG1N),
        FACTor = Render['TextSize'](map_cache[aUTH][0x1c1c + 0x7 * -0x419 + -0x98 * -0x1], LoG1N);
    Render['FilledRect'](wHITelist[-0x33 * 0x48 + 0x1757 + -0x2f * 0x31] + (-0x9f1 * 0x1 + -0xb99 + 0x1593), wHITelist[0x214d + -0xe81 + -0x12cb] - UsERlist['gVObY'](GETUsername[-0x128 * -0x12 + -0x1 * -0x1204 + -0x26d3 * 0x1], -0x984 + 0x2b6 + 1743.5), UsERlist['SuQpr'](GETUsername[0x35 * -0x68 + 0x4a6 + 0x10e2], 0x121f * -0x1 + 0x1 * -0x243a + -0x6cc * -0x8), UsERlist['xKNnB'](GETUsername[0xd9d + 0xb9d + -0x1939], 0x263b + 0x2 * 0x610 + -0x7 * 0x731), fACTor ? rect : def_rect), Render['GradientRect'](wHITelist[0x1 * -0x5ab + 0x4dc + 0xcf] + (0x1ce0 + -0x1b * -0x89 + -0x62f * 0x7), UsERlist['AnnyB'](wHITelist[0x880 + -0x6be + -0x1c1], UsERlist['gVObY'](GETUsername[0xa30 + 0x1781 + -0x4d0 * 0x7], 0x1aa4 + -0x6fa * 0x4 + 325.5)), GETUsername[-0x210 + 0x1ad5 * 0x1 + -0x18c5] + (0x2ed * -0x3 + -0x2 * 0xdd6 + 0x614 * 0x6), 0x2477 + 0x12 * 0x6b + -0x2bfb, 0x69d + 0x25f5 + -0x2c91, fACTor ? grad[-0x65c + 0x17 * 0x14e + -0x17a6] : def_grad[-0x17ec + -0xe32 * 0x2 + 0x3450], fACTor ? grad[-0x225 * -0xf + 0x1 * 0xb0f + -0x2b39] : def_grad[0x43f + 0x3 * 0x64b + -0x171f]), UsERlist['QcYvE'](shadow, wHITelist[-0x1f47 + 0xad5 + -0xa39 * -0x2] + (-0x166e + -0xfaa + 9764.5), UsERlist['AnnyB'](wHITelist[0x8bf + -0x58 * -0x2 + 0x8e * -0x11], 0x26e3 + 0x65d * -0x3 + -0x2 * 0x9e3), -0xf5 * -0x1d + 0x2ab + -0x1e6c, map_cache[aUTH][-0xffb + 0x1dfd + -0xdfe], !![], LoG1N, fACTor ? text_c : def_text, -0x6 * -0x662 + 0x453 * 0x8 + -0x48da);
    if (UsERlist['yhGWr'](lOGInatt, 0x2328 + -0x26ce + 0x3ec)) continue;
    Render['Circle'](lOG1N[0x579 + -0xeb3 + 0x93a], lOG1N[-0x269c + -0x633 + 0xef0 * 0x3], 0x1987 + 0x86b * 0x1 + -0x21f1, fACTor ? circle_int : def_circle_int), Render['FilledRect'](lOG1N[0x5c4 + -0x2 * -0x9ba + 0x8 * -0x327] + (-0x79a * 0x1 + 0x32b + 0x479), lOG1N[0x13c1 + 0x2443 * -0x1 + 0x1083] - UsERlist['gVObY'](GETUsername[0x3d * -0x77 + 0x22 * -0x9d + 0x3136], -0x529 * -0x4 + 0x1c4 + -5734.5), GETUsername[0xc * -0xb8 + -0x7 * -0xb2 + 0x3c2 * 0x1] > FACTor[0x24de + 0x3 * -0x851 + -0xbeb] ? UsERlist['mZoAN'](GETUsername[0x3 * 0x3cb + 0x131e * -0x1 + 0x7bd], 0x2634 + 0x1 * 0x169c + -0x3ccb) : UsERlist['mZoAN'](FACTor[-0x18a * -0x2 + -0x703 * -0x5 + -0x2623], 0xc * -0x127 + -0x7 * 0x11 + 0xe50), GETUsername[0x1 * -0x23c9 + -0x479 * -0x2 + 0x1ad8] > FACTor[0x1 * 0x17f + 0x26e4 * -0x1 + 0x2 * 0x12b3] ? GETUsername[0x129d + -0x38 * 0x2 + -0x2 * 0x916] + (-0x144f * 0x1 + 0x7 * 0xfc + 0xd7d) : FACTor[0x2 * 0x24a + -0x529 * -0x4 + 0x50b * -0x5] + (-0xc1 * -0xa + -0xd4f + 0x5d7), fACTor ? rect : def_rect), Render['GradientRect'](UsERlist['MaVzw'](lOG1N[-0x1537 * -0x1 + 0x2493 + -0x39ca], -0x131 * 0x10 + -0x36d * 0x3 + -0x1d61 * -0x1), lOG1N[0x2 * -0x11d1 + 0x134 * -0xe + -0x5 * -0xa7f] - UsERlist['bOGws'](GETUsername[0x1 * -0x1ee3 + -0x184d * -0x1 + -0x1 * -0x697], 0x18 * 0x76 + 0x29 * 0x1 + -2871.5), GETUsername[0xe20 * 0x1 + -0xf43 + 0x123] > FACTor[0x1ebf + 0x1a80 + -0x393f] ? GETUsername[-0x3a7 * 0x7 + 0x888 + 0x1109] + (0x2540 + 0x31 * -0x69 + -0x1122) : UsERlist['MaVzw'](FACTor[-0x3 * -0x32 + 0xe16 + 0x1 * -0xeac], -0x243d + 0x1bbf * 0x1 + 0x883), -0x146 * 0x12 + 0x165d * -0x1 + 0x2d4b * 0x1, 0x1e76 + -0x179a + -0x6db, fACTor ? grad[0x1464 + -0x1594 + 0x130] : def_grad[-0x2655 + -0x2103 + -0xc * -0x5f2], fACTor ? grad[-0x1ac5 * 0x1 + -0x1798 * 0x1 + 0x399 * 0xe] : def_grad[-0x1e0f + 0x1 * -0x2045 + 0x3e55]), UsERlist['QcYvE'](shadow, lOG1N[0x505 + 0x234b + 0xa * -0x408] + (0x3a4 + -0x5cf * 0x1 + 567.5), UsERlist['AnnyB'](lOG1N[-0x1102 + 0x2109 * -0x1 + 0x320c], -0xd95 + 0x1bc + 0x2 * 0x5ef), -0x2f * -0xc2 + 0x21d + -0x25bb * 0x1, map_cache[aUTH][0x6a0 + 0xa6 + -0x742], !![], LoG1N, fACTor ? text_c : def_text, -0x27f * 0x2 + 0x1d * -0xe9 + -0x649 * -0x5), UsERlist['hMCtZ'](shadow, lOG1N[0x1a * 0xaa + 0x9 * 0xfa + -0x1a0e] + (-0x2065 * 0x1 + 0xe9 * 0xf + 4810.5), UsERlist['MaVzw'](lOG1N[0x7f9 + -0x162 * -0x3 + -0xc1e], -0xfa8 + -0x1a67 + 10773.5), 0x1 * -0x1069 + -0x1b * 0x6c + 0x1bcd, map_cache[aUTH][0x8ac + 0x14a7 * -0x1 + 0x18 * 0x80], !![], LoG1N, fACTor ? text_c : def_text, -0x2 * 0x31 + 0xd19 * -0x1 + -0xd85 * -0x1), Render['Circle'](lOG1N[0x782 * -0x3 + 0x21ac + -0x2 * 0x593], lOG1N[-0x1243 + -0x2de * -0xa + -0xa68], 0x2366 + -0x1c74 + -0x6ec, [-0x1 * 0x23ab + -0xc3a * -0x2 + -0xb6f * -0x1, 0xf67 * 0x1 + 0x236b + 0x393 * -0xe, -0x585 * 0x2 + -0x311 * -0x3 + 0x20f, -0x336 + 0xb8c + 0x1 * -0x757]), Render['Line'](Render['GetScreenSize']()[-0x2092 + 0x10e8 + 0xfaa] / (0xb * 0x173 + 0xf54 + 0x1f43 * -0x1), Render['GetScreenSize']()[-0x390 * 0x6 + 0x1 * 0xdff + -0x46 * -0x1b] / (0x24f * 0x6 + -0x18ac + 0xad4), lOG1N[0xd20 + -0x82b * -0x1 + 0x154b * -0x1], lOG1N[0x71 * 0x34 + -0x2 * 0x5a7 + -0xba5], fACTor ? line : def_line);
}
UsERlist['jhIPd'](location_cache, UsERlist['eVlzX'](deserializeLocationConfiguration)) && (moving_now = !![]);

}
var use = ![];

function clamp(UseRList, GetUSername, wHiTElist) {
var gEtUSername = {
    'HOJaJ': function (uSeRList, fAcTOr) {
        return uSeRList > fAcTOr;
    },
    'nYaJy': function (lOgINatt, uSeRSname) {
        return lOgINatt < uSeRSname;
    }
};
if (gEtUSername['HOJaJ'](UseRList, wHiTElist)) return wHiTElist;
if (gEtUSername['nYaJy'](UseRList, GetUSername)) return GetUSername;
return UseRList;
}

function lerp(GEtUSername, FAcTOr, USeRList) {
var WHiTElist = {
        'MwADr': function (LOgINatt, usERSname) {
            return LOgINatt - usERSname;
        }
    },
    USeRSname = WHiTElist['MwADr'](FAcTOr, GEtUSername);
return USeRSname *= USeRList, USeRSname += GEtUSername, USeRSname;
}

function set_map_cache() {
var whITElist = {
        'tNSph': function (geTUSername, usERList) {
            return geTUSername == usERList;
        },
        'dugtS': 'CMolotovGrenade',
        'jEBPS': 'CCSPlayer'
    },
    faCTOr = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (whITElist['tNSph'](faCTOr, 'CIncendiaryGrenade')) faCTOr = whITElist['dugtS'];
if (faCTOr == whITElist['jEBPS']) {
    waiting_for_refresh = !![];
    return;
}
map_cache = locations['filter'](function (loGINatt) {
    return loGINatt[-0x1 * 0x327 + 0x2203 * -0x1 + 0x1 * 0x252a] == World['GetMapName']() && ~enabled_grenades['indexOf'](loGINatt[-0x172b * -0x1 + -0x61b + -0x110d]) && loGINatt[-0x543 * -0x1 + 0x1d * -0xda + 0x1372] == faCTOr;
});
}

function check_visibility() {
var WhITElist = {
        'yDuNC': function (uSERList, gETUSername) {
            return uSERList == gETUSername;
        },
        'lbXsx': function (lOGINatt, fACTOr, wHITElist) {
            return lOGINatt(fACTOr, wHITElist);
        },
        'oCvOU': 'CBasePlayer',
        'ONcAM': 'm_vecViewOffset[2]',
        'MzsYT': 'quit'
    },
    UsERList = '4|5|7|1|3|2|6|0' ['split']('|'),
    LoGINatt = 0xbef + 0x1de * 0xd + -0x193 * 0x17;
while (!![]) {
    switch (UsERList[LoGINatt++]) {
    case '0':
        for (var FaCTOr in map_cache) {
            var UsERSname = Trace['Line'](GeTUSername, head, map_cache[FaCTOr][-0x1 * -0x122c + -0x13ab + 0x180]);
            if (map_cache[FaCTOr][-0x25ad + -0x2 * 0x106b + 0x468a] == undefined) map_cache[FaCTOr]['push'](WhITElist['yDuNC'](UsERSname[-0x86f + 0x1 * -0xdb1 + 0x67 * 0x37], 0x1ed1 * 0x1 + 0x1 * -0xb98 + -0x1338));
            else map_cache[FaCTOr][-0x1 * -0xa64 + 0x261d + -0x307a] = UsERSname[-0x23ae + 0x93 * -0x1d + 0x1172 * 0x3] == -0x18be + 0xc37 * -0x1 + 0x13 * 0x1f2;
        }
        continue;
    case '1':
        head = Entity['GetProp'](GeTUSername, 'CBasePlayer', 'm_vecOrigin');
        continue;
    case '2':
        head = WhITElist['lbXsx'](vector_add, head, [-0xc16 * 0x2 + -0xb5a + 0x2 * 0x11c3, -0x2339 + 0x39b * -0x9 + 0x43ac, offset[0x11b * -0x7 + -0x164 * -0x4 + 0x22d]]);
        continue;
    case '3':
        offset = Entity['GetProp'](GeTUSername, WhITElist['oCvOU'], WhITElist['ONcAM']);
        continue;
    case '4':
        if (WhITElist['yDuNC'](World['GetServerString'](), '')) return;
        continue;
    case '5':
        var GeTUSername = Entity['GetLocalPlayer']();
        continue;
    case '6':
        continue;
    case '7':
        eye_angles = Local['GetViewAngles']();
        continue;
    }
    break;
}
}
var angles_met = ![];

function fix_move(uSERSname, USERSname, FACTOr) {
var LOGINatt = {
        'roPBF': '1|0|2|3|4|5',
        'KRePG': function (getusErname, factoR) {
            return getusErname < factoR;
        },
        'WGEHk': function (userlIst, UsersName) {
            return userlIst + UsersName;
        },
        'uksYt': function (UserlIst, FactoR) {
            return UserlIst - FactoR;
        },
        'jfcfL': function (GetusErname, WhiteList) {
            return GetusErname * WhiteList;
        },
        'spiyx': function (LoginAtt, gEtusErname) {
            return LoginAtt(gEtusErname);
        },
        'ekZUH': function (uSerlIst, wHiteList) {
            return uSerlIst + wHiteList;
        }
    },
    GETUSername = LOGINatt['roPBF']['split']('|'),
    WHITElist = -0x1eae + 0x1b1 * -0x1 + 0x205f;
while (!![]) {
    switch (GETUSername[WHITElist++]) {
    case '0':
        var USERList, usersName, loginAtt;
        continue;
    case '1':
        var whiteList = function (lOginAtt) {
            return lOginAtt / (-0x26c0 + 0x4 * 0x19e + -0x20fc * -0x1) * Math['PI'];
        };
        continue;
    case '2':
        if (LOGINatt['KRePG'](USERSname[0x1240 + -0x2e * 0x67 + 0x43], 0x1194 + -0x80b + -0x1 * 0x989)) USERList = LOGINatt['WGEHk'](-0x263 + 0x220b + 0x40 * -0x79, USERSname[0x202e + -0x2176 + -0x7 * -0x2f]);
        else USERList = USERSname[-0x205c + -0x21c5 + 0x4222];
        continue;
    case '3':
        if (LOGINatt['KRePG'](uSERSname[-0x25 * -0xcb + -0x1a6 * 0x3 + -0x1864], -0x1918 + -0xe * -0x7b + 0x92f * 0x2)) usersName = -0x79e * 0x5 + 0x2 * 0x1ac + -0x1 * -0x2426 + uSERSname[-0x8 * 0x18 + 0x16e5 + -0x589 * 0x4];
        else usersName = uSERSname[0x1126 + -0x23ba + 0x1295];
        continue;
    case '4':
        if (LOGINatt['KRePG'](usersName, USERList)) loginAtt = Math['abs'](usersName - USERList);
        else loginAtt = 0x31 * -0xca + 0x1 * -0x3aa + 0x2bbc - Math['abs'](LOGINatt['uksYt'](USERList, usersName));
        continue;
    case '5':
        return [LOGINatt['jfcfL'](Math['cos'](whiteList(loginAtt)), FACTOr[0x700 * 0x3 + 0x2207 + -0x1 * 0x3707]) + Math['cos'](LOGINatt['spiyx'](whiteList, loginAtt + (0x6fe + 0x1 * -0x1228 + 0x5c2 * 0x2))) * FACTOr[0x2466 + -0x29 * -0x4c + -0x1 * 0x3091], LOGINatt['ekZUH'](Math['sin'](whiteList(loginAtt)) * FACTOr[-0x19eb + -0x37b + 0x1d66], Math['sin'](whiteList(LOGINatt['ekZUH'](loginAtt, 0x553 * 0x5 + -0x1ce0 + 0x29b))) * FACTOr[-0x144e * 0x1 + -0x11c2 + 0x2611]), -0x1 * 0x1bc5 + 0x4 * -0x1f1 + 0x2389];
    }
    break;
}
}

function fix_locations() {
if (Cheat['GetUsername']() != Global['GetUsername']())
    while (!![]) {}
}
var lerp_time = 0x111f + 0x236b + -0x348a,
lerp_time_p = -0x80 + 0xbd5 * -0x1 + 0x7 * 0x1c3;

function move_forward(fActoR) {
var uSersName = {
        'Iiere': '5|9|14|6|0|8|1|12|11|10|13|4|7|3|2',
        'XfSrO': 'Throw mode',
        'CRMNY': 'quit',
        'xNfCF': function (FaCtoR, UsErlIst) {
            return FaCtoR && UsErlIst;
        },
        'LNjbh': function (LoGinAtt, GeTusErname, WhIteList, gETusErname) {
            return LoGinAtt(GeTusErname, WhIteList, gETusErname);
        },
        'uzcPA': function (fACtoR, wHIteList) {
            return fACtoR + wHIteList;
        },
        'LTCGM': function (uSErlIst, uSErsName) {
            return uSErlIst / uSErsName;
        },
        'nnPVr': function (lOGinAtt, USErsName) {
            return lOGinAtt - USErsName;
        },
        'GxgRE': function (USErlIst, LOGinAtt) {
            return USErlIst + LOGinAtt;
        },
        'cUtcI': function (GETusErname, FACtoR) {
            return GETusErname * FACtoR;
        },
        'zRCtg': function (WHIteList, whiTeList) {
            return WHIteList < whiTeList;
        }
    },
    USerlIst = uSersName['Iiere']['split']('|'),
    FActoR = -0x75 * -0x1e + -0xb7e + 0x4 * -0x8e;
while (!![]) {
    switch (USerlIst[FActoR++]) {
    case '0':
        var LOginAtt = fix_move(fActoR, geTusErname, GEtusErname);
        continue;
    case '1':
        var USersName = UI['GetValue'](nade_path['concat'](uSersName['XfSrO'])) == 0x830 * -0x4 + -0xcca + 0x2d8c ? !![] : ![];
        continue;
    case '2':
        return !![];
    case '3':
        UserCMD['SetMovement'](LOginAtt);
        continue;
    case '4':
        UserCMD['SetViewAngles'](fActoR, usErsName || angles_met);
        continue;
    case '5':
        var WHiteList = UI['GetValue'](nade_path['concat']('Legit aim smooth'));
        continue;
    case '6':
        var GEtusErname = [0x22f4 + -0x15a4 + -0xb8e, 0xf8f + 0x5 * 0x43e + -0x24c5, -0x3ff + -0x8a2 + 0xca1];
        continue;
    case '7':
        if (!angles_met) return ![];
        continue;
    case '8':
        var usErsName = UI['GetValue'](nade_path['concat']('Throw mode')) == -0x1157 + -0xe * -0x279 + -0x8a3 * 0x2 ? !![] : ![];
        continue;
    case '9':
        var geTusErname = Local['GetViewAngles']();
        continue;
    case '10':
        if (fActoR[-0xe07 + -0x1db0 + 0x2bb9] == undefined) fActoR[0x22cf * -0x1 + -0x1a * -0xbd + 0x535 * 0x3] = -0xfbd + 0x3d * 0x57 + -0x4fe;
        continue;
    case '11':
        continue;
    case '12':
        if (uSersName['xNfCF'](USersName, !angles_met)) {
            usErsName = ![], lerp_time = uSersName['LNjbh'](clamp, uSersName['uzcPA'](lerp_time, Globals['TickInterval']() * ((0x132d + -0x1f3c + 0xc10) / WHiteList)), -0x3e0 + 0x13c9 + -0xfe9, 0x1dc4 + -0x1 * 0x1871 + 0x2 * -0x2a9), lerp_time_p = uSersName['LNjbh'](clamp, lerp_time + Globals['TickInterval']() * (uSersName['LTCGM'](-0x3e9 + -0xb8 * 0x2f + -0x5 * -0x78a, WHiteList) * (-0x13 * 0x6a + 0x1aac + -4813.2)), 0x5a7 * -0x5 + 0xae6 + 0x115d, 0x4ee * -0x4 + -0x48 * -0x6f + -0xb7f);
            var usErlIst = uSersName['nnPVr'](closest[0xb * 0x9b + 0x1 * 0x1791 + 0xf1c * -0x2][0x2 * -0x12c5 + -0x481 * 0x4 + 0x378e], Local['GetViewAngles']()[0x12c5 * -0x2 + 0x1fc0 + 0x5ca]),
                faCtoR = uSersName['nnPVr'](closest[-0x1c74 + 0x15e9 + 0x68d][0x26cb + -0xe03 * 0x1 + -0x18c7 * 0x1], Local['GetViewAngles']()[-0x1cbf + 0x3f * 0x79 + -0x107]);
            while (faCtoR > -0x1 * 0x6e5 + -0x34c + -0x1 * -0xae5) faCtoR -= -0x12fd + -0x1ecd + 0x3332;
            while (faCtoR < -(0xc6a + -0x12bb + 0x705)) faCtoR += 0x247e + -0x3a9 * -0x1 + 0x26bf * -0x1;
            var loGinAtt = uSersName['GxgRE'](usErlIst * lerp_time_p, Local['GetViewAngles']()[-0x2 * -0xda4 + -0x81e * -0x3 + -0x33a2]),
                whIteList = uSersName['cUtcI'](faCtoR, lerp_time) + Local['GetViewAngles']()[0x1 * 0xad3 + 0x430 * -0x2 + -0x272];
            fActoR = [loGinAtt, normalize(whIteList), 0xe5 * -0x8 + -0x34f + 0xa77];
        }
        continue;
    case '13':
        if (uSersName['zRCtg'](Math['abs'](fActoR[0x1899 + 0x4d * -0x6d + 0x830] - UsErsName[0x28f * -0xa + -0x19 * 0x53 + 0x23f * 0xf]), -0x5d0 + 0x33d + 659.02) && uSersName['zRCtg'](Math['abs'](uSersName['nnPVr'](fActoR[0x51b * 0x4 + -0x532 + -0x3 * 0x513], UsErsName[-0x112a + 0x87 * 0x45 + -0xa4 * 0x1e])), -0x1911 + 0xb8e + 3459.02) && USersName && !angles_met) angles_met = !![];
        continue;
    case '14':
        var UsErsName = fActoR;
        continue;
    }
    break;
}
}

function recheck_vis() {
var useRsName = {
    'ShPvj': '0|3|2|4|5|7|1|6',
    'iHglg': function (WhiTeList, FacToR) {
        return WhiTeList == FacToR;
    },
    'wAUXe': 'm_vecOrigin',
    'wEkwq': 'm_vecViewOffset[2]',
    'nGQYw': function (UseRlIst, GetUsErname) {
        return UseRlIst == GetUsErname;
    },
    'MdLyH': function (LogInAtt, lOgInAtt, gEtUsErname) {
        return LogInAtt(lOgInAtt, gEtUsErname);
    }
};
if (Globals['Curtime']() - counting_nades < 0x60c + -0x19 * -0x115 + -0x210a) return;
if (use) {
    var getUsErname = useRsName['ShPvj']['split']('|'),
        useRlIst = -0x68e * 0x5 + -0xb * 0x1b9 + 0x33b9 * 0x1;
    while (!![]) {
        switch (getUsErname[useRlIst++]) {
        case '0':
            if (useRsName['iHglg'](map_cache['length'], 0x11cf + 0x7c2 + 0x253 * -0xb) || useRsName['iHglg'](World['GetServerString'](), '')) return;
            continue;
        case '1':
            continue;
        case '2':
            eye_angles = Local['GetViewAngles']();
            continue;
        case '3':
            var facToR = Entity['GetLocalPlayer']();
            continue;
        case '4':
            head = Entity['GetProp'](facToR, 'CBasePlayer', useRsName['wAUXe']);
            continue;
        case '5':
            offset = Entity['GetProp'](facToR, 'CBasePlayer', useRsName['wEkwq']);
            continue;
        case '6':
            for (var logInAtt in map_cache) {
                var UseRsName = Trace['Line'](facToR, head, map_cache[logInAtt][0x1937 + -0x5 * 0x6e2 + 0x934]);
                if (useRsName['iHglg'](map_cache[logInAtt][-0x14d1 * 0x1 + 0x1ab0 + 0x5d8 * -0x1], undefined)) map_cache[logInAtt]['push'](UseRsName[0x25e6 + -0x1 * 0x54c + -0x2099] == -0x2581 + -0x1 * 0x23b1 + 0x4933);
                else map_cache[logInAtt][-0xa0d * -0x1 + 0x58d * -0x3 + -0x1 * -0x6a1] = useRsName['nGQYw'](UseRsName[-0x5 * 0x4eb + 0x1 * 0x21d0 + 0x127 * -0x8], 0x1dd9 + -0x141c + -0x9bc);
            }
            continue;
        case '7':
            head = useRsName['MdLyH'](vector_add, head, [-0x268a + 0xa04 * -0x2 + 0x6 * 0x9c3, -0x18af + 0x60a * -0x1 + 0x1eb9, offset[-0x14be + 0x1 * -0xc1a + 0x8 * 0x41b]]);
            continue;
        }
        break;
    }
}
}

function normalize(fAcToR) {
var uSeRlIst = {
    'piMgm': function (uSeRsName, wHiTeList) {
        return uSeRsName > wHiTeList;
    }
};
while (uSeRlIst['piMgm'](fAcToR, 0x1 * 0x40d + -0x1 * -0x1723 + -0x1a7c)) fAcToR -= 0x22cb + -0xe79 + -0x21a * 0x9;
while (fAcToR < -(-0x26d + 0x25 * 0x104 + -0x2273)) fAcToR += 0x2 * 0x45a + -0x209 * 0x7 + 0x1 * 0x6f3;
return fAcToR;
}
var closest = [],
temp_angs_met = ![];

function move_on_key() {
var USeRsName = {
        'ggYKp': function (WhitEList, FactOR) {
            return WhitEList == FactOR;
        },
        'VyLHD': 'Auto throw move range',
        'XIhtF': 'CBasePlayer',
        'FLcRn': function (LogiNAtt, GetuSErname, UserLIst) {
            return LogiNAtt(GetuSErname, UserLIst);
        },
        'VyISg': function (UserSName, lOgiNAtt) {
            return UserSName - lOgiNAtt;
        },
        'hyaJE': function (gEtuSErname, wHitEList) {
            return gEtuSErname == wHitEList;
        },
        'LEdlQ': 'Throw mode',
        'udkyB': function (uSerLIst, uSerSName) {
            return uSerLIst(uSerSName);
        },
        'UUNCE': function (fActOR, USerLIst) {
            return fActOR < USerLIst;
        },
        'pJlQw': 'Legit aim smooth',
        'hegJa': function (USerSName, WHitEList) {
            return USerSName / WHitEList;
        },
        'Ftirg': function (LOgiNAtt, FActOR) {
            return LOgiNAtt + FActOR;
        },
        'mGNAP': function (GEtuSErname, usErLIst) {
            return GEtuSErname * usErLIst;
        },
        'UFKZS': function (whItEList, loGiNAtt) {
            return whItEList - loGiNAtt;
        },
        'sSyKB': function (usErSName, faCtOR) {
            return usErSName - faCtOR;
        },
        'okNJD': function (geTuSErname, LoGiNAtt) {
            return geTuSErname == LoGiNAtt;
        },
        'VvJaC': function (FaCtOR, GeTuSErname) {
            return FaCtOR + GeTuSErname;
        },
        'QDJSQ': function (UsErSName, UsErLIst) {
            return UsErSName * UsErLIst;
        },
        'IgAal': function (WhItEList, uSErSName) {
            return WhItEList - uSErSName;
        },
        'RobJM': 'Run+Throw',
        'ScBcY': '2|0|4|1|6|7|3|5',
        'dgGkh': function (lOGiNAtt, wHItEList) {
            return lOGiNAtt == wHItEList;
        },
        'CHsIN': function (fACtOR, uSErLIst) {
            return fACtOR > uSErLIst;
        },
        'kqOlP': function (gETuSErname, LOGiNAtt) {
            return gETuSErname - LOGiNAtt;
        },
        'SAotv': function (FACtOR, USErLIst) {
            return FACtOR | USErLIst;
        },
        'lquSF': '3|0|4|2|1',
        'BlaOL': 'Jump+Throw',
        'uiAHr': 'Run+Jump+Throw',
        'Vpbda': function (WHItEList, GETuSErname, USErSName) {
            return WHItEList(GETuSErname, USErSName);
        },
        'BipPC': function (whiTEList, facTOR) {
            return whiTEList == facTOR;
        },
        'aRYkr': function (useRSName, useRLIst, logINAtt) {
            return useRSName(useRLIst, logINAtt);
        },
        'rysaw': function (getUSErname, LogINAtt) {
            return getUSErname(LogINAtt);
        },
        'uNIGb': function (UseRSName, GetUSErname, UseRLIst) {
            return UseRSName(GetUSErname, UseRLIst);
        },
        'hsEow': function (WhiTEList, FacTOR) {
            return WhiTEList < FacTOR;
        },
        'iIgKP': function (fAcTOR, gEtUSErname) {
            return fAcTOR == gEtUSErname;
        },
        'UIIvD': 'Half throw',
        'YqirK': function (uSeRSName, uSeRLIst) {
            return uSeRSName == uSeRLIst;
        },
        'WAoVG': function (lOgINAtt, wHiTEList) {
            return lOgINAtt << wHiTEList;
        },
        'WYQox': function (GEtUSErname, FAcTOR) {
            return GEtUSErname << FAcTOR;
        },
        'esRBJ': 'Jump+Half throw',
        'NaIzR': function (WHiTEList, LOgINAtt) {
            return WHiTEList | LOgINAtt;
        },
        'pHBLv': function (USeRSName, USeRLIst) {
            return USeRSName | USeRLIst;
        },
        'wzSSJ': function (faCTOR, loGINAtt) {
            return faCTOR << loGINAtt;
        },
        'Azyhq': function (whITEList, usERSName) {
            return whITEList == usERSName;
        },
        'oaQSe': function (geTUSErname, usERLIst) {
            return geTUSErname >= usERLIst;
        },
        'Puwiu': '2|12|0|6|1|9|4|3|7|14|11|10|5|13|8',
        'fcjdo': 'DT_CSPlayer',
        'kztrA': 'm_vecVelocity[0]',
        'astTZ': function (LoGINAtt, UsERLIst) {
            return LoGINAtt(UsERLIst);
        },
        'DNauZ': function (FaCTOR, UsERSName) {
            return FaCTOR < UsERSName;
        },
        'YLZhm': function (GeTUSErname, WhITEList) {
            return GeTUSErname - WhITEList;
        },
        'OPdfj': function (uSERSName, wHITEList, fACTOR, uSERLIst) {
            return uSERSName(wHITEList, fACTOR, uSERLIst);
        },
        'Usuzo': function (lOGINAtt, gETUSErname) {
            return lOGINAtt + gETUSErname;
        },
        'yaQGF': function (USERLIst, LOGINAtt) {
            return USERLIst - LOGINAtt;
        },
        'AxpYV': function (FACTOR, USERSName) {
            return FACTOR * USERSName;
        },
        'JxNjK': function (GETUSErname, WHITEList, userliSt) {
            return GETUSErname(WHITEList, userliSt);
        }
    },
    LOgInAtt = '32|24|27|5|17|22|25|29|10|6|33|1|7|0|12|4|2|16|31|11|19|8|3|9|15|26|20|13|28|14|21|30|18|23' ['split']('|'),
    FAcToR = 0x119e + -0x1a90 + 0x8f2;
while (!![]) {
    switch (LOgInAtt[FAcToR++]) {
    case '0':
        if (this['jump_tick'] == null) this['jump_tick'] = -0xc63 + 0x1843 + -0xbe0;
        continue;
    case '1':
        if (USeRsName['ggYKp'](this['ignore_input'], null)) this['ignore_input'] = ![];
        continue;
    case '2':
        !this['running'] && !this['ignore_input'] && (closest = map_cache['sort'](function (whitelIst, loginaTt) {
            return factOR['xpydE'](factOR['yTbfH'](calc_dist, usERlIst, whitelIst[0xf09 + -0x2 * -0x2b0 + -0x1468]), calc_dist(usERlIst, loginaTt[-0x5 * -0x4ca + -0xb6 * 0x34 + -0x73 * -0x1d]));
        })[0x1517 + 0x1465 * 0x1 + 0x5 * -0x84c], this['closest'] = closest);
        continue;
    case '3':
        var USeRlIst = UI['GetValue'](nade_path['concat'](USeRsName['VyLHD']));
        continue;
    case '4':
        var WHiTeList = Entity['GetProp'](Entity['GetLocalPlayer'](), USeRsName['XIhtF'], 'm_vecViewOffset[2]');
        continue;
    case '5':
        var GEtUsErname = UI['GetValue'](nade_path['concat']('Throw mode')) == 0x2 * 0xc77 + 0x1a55 + -0x3342 ? !![] : ![];
        continue;
    case '6':
        if (USeRsName['ggYKp'](this['running'], null)) this['running'] = ![];
        continue;
    case '7':
        if (this['run_start'] == null) this['run_start'] = -0x1a3 + 0xb26 + -0x983 * 0x1;
        continue;
    case '8':
        if (this['ignore_input']) return;
        continue;
    case '9':
        if (USeRsName['FLcRn'](calc_dist, usERlIst, closest[0x1566 + 0x25 * 0x1d + 0x1996 * -0x1]) > USeRlIst && !this['ignore_input'] && !this['running']) return;
        continue;
    case '10':
        if (USeRsName['ggYKp'](this['start_tick'], null)) this['start_tick'] = -0x26b * -0x4 + -0x19a0 + 0xff4;
        continue;
    case '11':
        if (this['next_tick_ang'] == null) this['next_tick_ang'] = [];
        continue;
    case '12':
        var usERlIst = Entity['GetProp'](Entity['GetLocalPlayer'](), 'CBaseEntity', 'm_vecOrigin');
        continue;
    case '13':
        UsERsName = Math['floor'](UsERsName);
        continue;
    case '14':
        var whITeList = VectorAngles(vector_sub(logiNAtt, [closest[-0xa5f + 0x99f + 0xc1][-0x865 + 0x15cd + -0xd68], closest[0x1d8 + 0x1 * -0x891 + 0x2a * 0x29][-0x1a90 + 0x9b * 0x28 + -0x1 * -0x259], USeRsName['VyISg'](closest[-0x2624 * 0x1 + 0x1d2a + 0x8fb][-0x1 * -0x312 + -0x1893 + 0x1583], WHiTeList[-0x76d * -0x1 + 0x1ca + 0x151 * -0x7])]));
        continue;
    case '15':
        var loGInAtt = ![];
        continue;
    case '16':
        continue;
    case '17':
        var faCToR = USeRsName['hyaJE'](UI['GetValue'](nade_path['concat'](USeRsName['LEdlQ'])), 0xd1 * 0x27 + -0x1ade + -0x4f7) ? !![] : ![];
        continue;
    case '18':
        !faCToR ? loGInAtt = USeRsName['udkyB'](move_to_target, closest[-0x1 * 0x140e + -0x1 * 0x1445 + -0x1 * -0x2854]) : loGInAtt = !![];
        continue;
    case '19':
        if (this['next_tick_ang']['length'] || USeRsName['UUNCE'](USeRsName['VyISg'](Globals['Tickcount'](), this['throw_time']), 0x2392 + -0x213 * -0x3 + -0x29c3 * 0x1) && this['throw_time'] != 0x140 + 0x1389 * 0x1 + 0x14c9 * -0x1) {
            if (faCToR) {
                GEtUsErname = ![];
                var geTUsErname = UI['GetValue'](nade_path['concat'](USeRsName['pJlQw']));
                lerp_time = clamp(lerp_time + Globals['TickInterval']() * USeRsName['hegJa'](0x129 + -0x4 * -0x4c1 + -0x2 * 0xa16, geTUsErname), 0x2 * 0xfcb + -0x521 + 0x1a75 * -0x1, -0xff * -0xa + -0x1 * -0x13af + 0x2 * -0xed2), lerp_time_p = clamp(USeRsName['Ftirg'](lerp_time, Globals['TickInterval']() * ((0x748 + 0xf5 * -0xa + 0x24b) / USeRsName['mGNAP'](geTUsErname, -0x7c4 + -0x1297 + 6747.8))), 0x1f7 + 0x62 * 0x13 + -0x2b * 0x37, 0xd53 + 0x1f6b + 0x1 * -0x2cbd);
                var usERsName = Local['GetViewAngles'](),
                    WhITeList = closest[-0x17a6 + -0x143 + 0x18eb],
                    LoGInAtt = closest[0xc3 * -0x1b + -0x38f + 0x1822][-0x23ec + -0x1 * -0xf2c + 0x14c0] - usERsName[0x62 * 0x41 + -0x18f * 0x9 + -0xadb],
                    FaCToR = closest[-0x493 + 0xb * 0x283 + 0x5 * -0x49c][-0xf91 + -0x6 * 0x3c7 + 0x263c] - usERsName[0x5 * 0x3f1 + -0x1a51 + 0x69d];
                FaCToR = normalize(FaCToR);
                var UsERlIst = USeRsName['Ftirg'](LoGInAtt * lerp_time_p, usERsName[0x1 * -0x26c3 + 0x18dd + -0x2 * -0x6f3]),
                    GeTUsErname = USeRsName['mGNAP'](FaCToR, lerp_time) + usERsName[0x60 * -0x67 + -0x13b7 + 0x2 * 0x1d2c];
                WhITeList = [UsERlIst, normalize(GeTUsErname), 0x20ed + -0x898 + -0x1855];
                if (Math['abs'](USeRsName['UFKZS'](usERsName[-0x3d * -0x72 + 0x25cf + -0x40f9], WhITeList[-0x9 * 0x284 + -0xc59 + 0xd * 0x2b1])) < -0x19dc * -0x1 + -0x8b6 + -4389.95 && Math['abs'](USeRsName['sSyKB'](usERsName[-0xbc4 + -0x115e + -0x1d23 * -0x1], WhITeList[-0x1bb6 + 0x14c4 + 0x6f3])) < 0x17a6 + -0x11 * 0x79 + -3996.95) angles_met = !![];
                this['next_tick_ang'] = [UsERlIst, USeRsName['udkyB'](normalize, GeTUsErname), 0x717 + 0x91d + 0xf4 * -0x11];
            } else angles_met = !![];
            if (USeRsName['okNJD'](this['next_tick_ang'][0x13e5 + -0x5 * -0xf3 + -0x1 * 0x18a2], undefined)) this['next_tick_ang'][-0x342 + -0x1 * -0x1091 + -0x2a9 * 0x5] = 0x1e * -0x15 + -0x61d + 0x893;
            UserCMD['SetViewAngles'](this['next_tick_ang'], GEtUsErname);
        }
        continue;
    case '20':
        var UsERsName = Math['sqrt'](USeRsName['VvJaC'](USeRsName['QDJSQ'](userLIst[0x1 * -0x1049 + 0x2 * 0x5b3 + 0x4e3], userLIst[-0xae2 * 0x1 + -0x246e + 0x2f50]), userLIst[-0x233 * -0x3 + -0x184 * -0x11 + -0x205c] * userLIst[0x20ed + 0x429 + -0x1 * 0x2515]));
        continue;
    case '21':
        whITeList = [whITeList[-0x3f * 0x17 + -0x1c18 + -0x21c1 * -0x1], USeRsName['IgAal'](whITeList[0xa42 * -0x1 + 0x21eb + -0x17a8], 0xe8 * -0x6 + -0x7 * 0x159 + 0xf93), whITeList[0x1 * 0x1f0c + 0x5 * -0x79d + 0x707]];
        continue;
    case '22':
        if (USeRsName['okNJD'](this['throw_time'], null)) this['throw_time'] = 0x1cab + 0x1 * -0x1712 + -0x599 * 0x1;
        continue;
    case '23':
        if (loGInAtt || this['running']) {
            this['in_progress'] = !![];
            if (closest[-0x4ed + 0x5 * -0x143 + 0xb41 * 0x1] == 'Throw') this['next_tick_ang'] = closest[0x1 * 0x4e9 + 0x234c + 0xfb * -0x29], angles_met && (UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x5be + -0x2 * -0xf51 + -0x18e3), this['throw_time'] = Globals['Tickcount'](), this['attacked'] = !![], this['ignore_input'] = !![]);
            else {
                if (USeRsName['okNJD'](closest[0x2 * 0x119b + 0x6 * -0x417 + 0x9 * -0x12f], USeRsName['RobJM'])) {
                    var uSERsName = USeRsName['ScBcY']['split']('|'),
                        gETUsErname = -0x61 * 0x56 + 0x195b + -0x3 * -0x269;
                    while (!![]) {
                        switch (uSERsName[gETUsErname++]) {
                        case '0':
                            this['next_tick_ang'] = closest[0x17b * -0xc + 0x37 * -0x40 + 0x1f86];
                            continue;
                        case '1':
                            USeRsName['dgGkh'](this['start_tick'], -0x3 * -0x535 + 0x20b1 + -0x3050) && (this['start_tick'] = Globals['Tickcount']());
                            continue;
                        case '2':
                            if (!this['closest']['length']) this['closest'] = closest;
                            continue;
                        case '3':
                            this['running'] = !![];
                            continue;
                        case '4':
                            if (!angles_met) return;
                            continue;
                        case '5':
                            if (this['running'] && USeRsName['CHsIN'](USeRsName['kqOlP'](Globals['Tickcount'](), this['run_start']), closest[0x994 + 0x18ae + 0x2 * -0x111e])) {
                                !this['attacked'] && angles_met && (UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons'](), 0x6a0 + 0x259b + -0x2c3a)), this['throw_time'] = Globals['Tickcount'](), this['attacked'] = !![]);
                                if (USeRsName['kqOlP'](Globals['Tickcount'](), this['run_start']) > closest[-0x25cc + 0x2 * 0x3b3 + 0x1e6c] + (-0x5 * 0x697 + 0x1 * 0x2452 + -0x357)) {
                                    var fACToR = USeRsName['lquSF']['split']('|'),
                                        lOGInAtt = 0x1e28 + -0x1 * -0x661 + -0x2489;
                                    while (!![]) {
                                        switch (fACToR[lOGInAtt++]) {
                                        case '0':
                                            this['attacked'] = ![];
                                            continue;
                                        case '1':
                                            this['run_start'] = 0xa6 * 0x1c + 0x11f5 + -0x241d;
                                            continue;
                                        case '2':
                                            this['next_tick_ang'] = closest[0x125 * -0x1 + -0xcd * -0x9 + -0x5 * 0x136];
                                            continue;
                                        case '3':
                                            this['running'] = ![];
                                            continue;
                                        case '4':
                                            this['ignore_input'] = !![];
                                            continue;
                                        }
                                        break;
                                    }
                                }
                            }
                            continue;
                        case '6':
                            if (USeRsName['dgGkh'](this['run_start'], 0xd96 + -0x26f8 + 0x1962)) this['run_start'] = Globals['Tickcount']();
                            continue;
                        case '7':
                            if (!move_forward(closest[-0xd1d + -0x1 * 0x2133 + 0x2e52 * 0x1])) return;
                            continue;
                        }
                        break;
                    }
                } else {
                    if (USeRsName['dgGkh'](closest[0x202f + -0x1cb9 + -0x371], USeRsName['BlaOL'])) this['next_tick_ang'] = closest[0x165c + -0x2441 + 0xde7], angles_met && (UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x4f3 + 0x19b3 + 0x14bf * -0x1 | 0x1db3 + -0x35d + -0x1a54), this['ignore_input'] = !![], this['attacked'] = !![], this['throw_time'] = Globals['Tickcount']());
                    else {
                        if (closest[-0x7ec * -0x2 + -0x2523 + 0x1550] == USeRsName['uiAHr']) {
                            if (!this['closest']['length']) this['closest'] = closest;
                            USeRsName['dgGkh'](this['start_tick'], 0x103e + 0x34c + 0x1 * -0x138a) && (this['start_tick'] = Globals['Tickcount']());
                            var uSERlIst = USeRsName['Vpbda'](angle_to_vec, closest[-0x8c0 + 0x297 + 0x62b * 0x1][0x165 * -0x5 + -0x442 + -0x1 * -0xb3b], closest[0xfd4 * -0x1 + -0x3fd + 0x13d3][-0x3e4 + -0x204f + -0x1c * -0x14b]);
                            if (USeRsName['BipPC'](closest[0x184f + -0x29 * -0x11 + -0x1b02], undefined) || USeRsName['BipPC'](closest[0x2fb * 0x1 + 0x12a8 + -0x159d], -0x20c5 + -0x1 * -0x14db + 0xbea) || USeRsName['BipPC'](typeof closest[-0x3 * 0x166 + -0x10a9 + 0x42d * 0x5], 'boolean')) closest[0x186 * -0x13 + -0xdb * -0x1 + 0x1c1d] = 0x5d1 * -0x1 + 0x2511 * 0x1 + -0x1ef0;
                            uSERlIst = USeRsName['aRYkr'](vec_mul_fl, uSERlIst, closest[0x1 * 0x2632 + 0x1 * 0x1d0a + -0x7 * 0x99a]), this['next_tick_ang'] = closest[-0x2 * -0x7ed + -0x1e43 + 0x1 * 0xe6b];
                            if (!USeRsName['rysaw'](move_forward, closest[-0xf0f + 0xa45 * -0x2 + 0x239b])) return;
                            this['running'] = !![];
                            var wHITeList = vector_sub(USeRsName['uNIGb'](vector_add, uSERlIst, closest[0x221d + 0x29 * -0x19 + -0x7 * 0x44d]), Entity['GetRenderOrigin'](Entity['GetLocalPlayer']())),
                                USERlIst = Math['hypot'](wHITeList[-0x1 * -0x527 + 0x12b * 0x13 + -0x5 * 0x578], wHITeList[-0x1 * -0x153b + 0x252 + 0xb * -0x224]);
                            if (USeRsName['hsEow'](USERlIst, -0x43 * -0x7 + -0x1 * -0x1a39 + 0x2 * -0xdf3) && angles_met) {
                                var USERsName = '1|3|4|5|2|0' ['split']('|'),
                                    LOGInAtt = -0x2 * 0xb8d + 0x2ad + 0x146d;
                                while (!![]) {
                                    switch (USERsName[LOGInAtt++]) {
                                    case '0':
                                        this['next_tick_ang'] = closest[-0xe * 0x241 + 0x6c5 + 0x18cb];
                                        continue;
                                    case '1':
                                        UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons']() | -0x1a60 + 0x2019 + -0xf4 * 0x6, 0xfd7 * 0x1 + 0x1ff + -0x11d4));
                                        continue;
                                    case '2':
                                        this['ignore_input'] = !![];
                                        continue;
                                    case '3':
                                        this['attacked'] = !![];
                                        continue;
                                    case '4':
                                        this['throw_time'] = Globals['Tickcount']();
                                        continue;
                                    case '5':
                                        this['running'] = ![];
                                        continue;
                                    }
                                    break;
                                }
                            }
                        } else {
                            if (USeRsName['iIgKP'](closest[-0x6b + -0x11 * -0x1af + -0x22b * 0xd], USeRsName['UIIvD'])) USeRsName['YqirK'](this['start_tick'], 0x2023 + 0xd93 * -0x1 + -0x10 * 0x129) && (this['start_tick'] = Globals['Tickcount']()), this['next_tick_ang'] = closest[0x1931 * -0x1 + -0x1a3d + 0x3370], angles_met && UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons'](), USeRsName['WAoVG'](-0x39 * -0x42 + 0x13e * 0x1e + -0x33f5, 0x1 * -0xb65 + 0x714 + 0x451 * 0x1)) | USeRsName['WYQox'](-0x47 * 0x4f + 0xa74 * -0x3 + -0x3546 * -0x1, 0x5 * 0x82 + 0x469 + -0x8 * 0xdd)), USeRsName['kqOlP'](Globals['Tickcount'](), this['start_tick']) > -0x1ba * -0x10 + -0xe6e + -0xd1a && angles_met && (this['attacked'] = !![], this['throw_time'] = Globals['Tickcount'](), this['ignore_input'] = !![], this['next_tick_ang'] = closest[0x67e * -0x6 + 0x257d + 0x179]);
                            else {
                                if (closest[0x1 * 0x15f3 + -0x5eb + -0x1003] == USeRsName['esRBJ']) {
                                    USeRsName['YqirK'](this['start_tick'], 0xf7b + 0x1705 + -0x2680) && (this['start_tick'] = Globals['Tickcount']());
                                    this['next_tick_ang'] = closest[0x27 + 0x1 * -0x2589 + 0x2564 * 0x1], this['running'] = !![], UserCMD['SetButtons'](USeRsName['NaIzR'](USeRsName['pHBLv'](UserCMD['GetButtons'](), -0x1e82 * 0x1 + 0x419 * -0x2 + -0x9 * -0x44d << -0x24fa + -0x25f0 + 0x4aea), USeRsName['wzSSJ'](-0x10d6 + 0x7a * -0x4d + 0x3589, -0x4d2 * 0x2 + 0x114d * 0x1 + -0x79e)));
                                    if (Globals['Tickcount']() - this['start_tick'] > -0x2a9 * -0x1 + -0x2 * -0x53d + 0xcfb * -0x1 && angles_met) {
                                        UserCMD['SetButtons'](UserCMD['GetButtons']() | 0x5a2 + 0x226a + 0x401 * -0xa);
                                        if (USeRsName['Azyhq'](this['jump_tick'], 0xc2 * 0x1b + 0x1529 + 0x853 * -0x5)) this['jump_tick'] = Globals['Tickcount']();
                                        if (USeRsName['oaQSe'](Globals['Tickcount']() - this['jump_tick'], 0x233e + -0x1f37 + -0x3fc * 0x1)) {
                                            var WHITeList = '1|3|4|2|0' ['split']('|'),
                                                FACToR = 0x1 * -0x1f0d + -0x1a61 + 0x2 * 0x1cb7;
                                            while (!![]) {
                                                switch (WHITeList[FACToR++]) {
                                                case '0':
                                                    this['running'] = ![];
                                                    continue;
                                                case '1':
                                                    this['attacked'] = !![];
                                                    continue;
                                                case '2':
                                                    this['next_tick_ang'] = closest[-0x133 * 0x7 + -0xe2b + 0xb49 * 0x2];
                                                    continue;
                                                case '3':
                                                    this['throw_time'] = Globals['Tickcount']();
                                                    continue;
                                                case '4':
                                                    this['ignore_input'] = !![];
                                                    continue;
                                                }
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        continue;
    case '24':
        if (map_cache['length'] == 0x1bb6 + 0x1813 * -0x1 + 0x1 * -0x3a3) return;
        continue;
    case '25':
        if (!UI['GetValue'](key_path['concat']('Auto throw'))) {
            var GETUsErname = USeRsName['Puwiu']['split']('|'),
                userSName = 0xada + 0x4d5 + -0xfaf;
            while (!![]) {
                switch (GETUsErname[userSName++]) {
                case '0':
                    this['closest'] = [];
                    continue;
                case '1':
                    this['start_tick'] = -0x1a0e + -0x1 * -0xcb5 + 0xd59;
                    continue;
                case '2':
                    this['running'] = ![];
                    continue;
                case '3':
                    this['moved_base'] = ![];
                    continue;
                case '4':
                    this['attacked'] = ![];
                    continue;
                case '5':
                    this['jump_tick'] = -0x1 * 0xa21 + -0xff5 + -0x6 * -0x459;
                    continue;
                case '6':
                    this['ignore_input'] = ![];
                    continue;
                case '7':
                    this['run_start'] = -0x750 + -0x1d5 * 0xf + 0x22cb;
                    continue;
                case '8':
                    return;
                case '9':
                    this['next_tick_ang'] = [];
                    continue;
                case '10':
                    angles_met = ![];
                    continue;
                case '11':
                    this['hold'] = ![];
                    continue;
                case '12':
                    this['in_progress'] = ![];
                    continue;
                case '13':
                    closest = [];
                    continue;
                case '14':
                    lerp_time = -0x98d + 0x2496 + -0x1b09;
                    continue;
                }
                break;
            }
        }
        continue;
    case '26':
        var userLIst = Entity['GetProp'](Entity['GetLocalPlayer'](), USeRsName['fcjdo'], USeRsName['kztrA']);
        continue;
    case '27':
        if (!~GRENADE_TYPES['indexOf'](Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())))) return;
        continue;
    case '28':
        var logiNAtt = USeRsName['uNIGb'](vector_add, usERlIst, [-0x1729 + -0xe91 + 0x36e * 0xb, 0x63 * 0x35 + -0x203f + -0x2f * -0x40, WHiTeList[0x276 + -0x817 + 0x5a1]]);
        continue;
    case '29':
        if (this['attacked'] == null) this['attacked'] = ![];
        continue;
    case '30':
        if (calc_dist(usERlIst, [closest[-0x1a24 + -0x14ab * -0x1 + 0x1 * 0x57a][0xd1f + 0x7cc + 0xf * -0x165], closest[-0x14e1 + 0x10a9 + 0x439][-0x1324 + 0x1a06 + -0x6e1], closest[0x182 + 0x755 + -0x46b * 0x2][-0x53b + 0xf4 * 0x19 + -0x1297] - WHiTeList[-0x1f0d + -0x1a63 * -0x1 + -0x255 * -0x2]]) > 0x14 * 0x14 + 0x11e1 + -0x136c && !this['running'] && !this['in_progress'] && faCToR) {
            var whitEList = '4|5|2|3|1|0' ['split']('|'),
                getuSErname = -0x47 * -0x70 + -0xcb5 + -0x7f * 0x25;
            while (!![]) {
                switch (whitEList[getuSErname++]) {
                case '0':
                    return;
                case '1':
                    loGInAtt = ![];
                    continue;
                case '2':
                    UserCMD['SetViewAngles']([WhITeList[-0x183d + -0x56 * -0x19 + 0xfd7], USeRsName['astTZ'](normalize, WhITeList[0x26e4 + -0x41b * -0x5 + -0x3b6a]), -0x69e + -0x737 * -0x2 + 0x190 * -0x5], ![]);
                    continue;
                case '3':
                    USeRsName['DNauZ'](Math['abs'](USeRsName['YLZhm'](usERsName[0x90c + 0x1 * 0xa80 + -0x1 * 0x138b], whITeList[0x12f3 + 0xad * -0x2b + 0xa1d])), -0xf32 + 0xc8 * -0xf + 6890.05) && UserCMD['SetMovement']([0x7 * 0x4f5 + 0x6e0 + -0x27d1, 0x4e2 + -0x1a67 + 0x1 * 0x1585, -0x1e6 + -0x2 * 0x1247 + 0x2674]);
                    continue;
                case '4':
                    var WhITeList = whITeList;
                    continue;
                case '5':
                    if (!temp_angs_met) {
                        var geTUsErname = UI['GetValue'](nade_path['concat']('Legit aim smooth'));
                        lerp_time = USeRsName['OPdfj'](clamp, USeRsName['Usuzo'](lerp_time, Globals['TickInterval']() * USeRsName['hegJa'](-0x1c80 + 0x3fb + 0x1886, geTUsErname)), -0x1 * 0x832 + 0x13 * 0xd9 + -0x2d * 0x2d, -0x1 * -0x22d + -0x18c6 + 0x169a);
                        var usERsName = Local['GetViewAngles'](),
                            WhITeList = whITeList,
                            FaCToR = USeRsName['yaQGF'](whITeList[-0x1 * -0x16db + 0x3 * -0x955 + -0x1b7 * -0x3], usERsName[-0x10 * 0x40 + 0x1f10 + -0x1b0f * 0x1]);
                        FaCToR = normalize(FaCToR);
                        var GeTUsErname = USeRsName['AxpYV'](FaCToR, lerp_time) + usERsName[0xe4a + 0x157e + 0x81 * -0x47];
                        WhITeList = [usERsName[0x11f7 + -0x1be * 0x1 + -0x1039], GeTUsErname, -0x22 * 0x53 + 0x89a + 0x14 * 0x1f];
                    }
                    continue;
                }
                break;
            }
        } else !this['in_progress'] && (lerp_time = 0x1f4e + 0x1072 + -0x2fc0 * 0x1);
        continue;
    case '31':
        this['closest']['length'] && (closest = this['closest']);
        continue;
    case '32':
        var factOR = {
            'xpydE': function (usersnAme, getuseRname) {
                return usersnAme - getuseRname;
            },
            'yTbfH': function (GetuseRname, UserliSt, WhitelIst) {
                return USeRsName['JxNjK'](GetuseRname, UserliSt, WhitelIst);
            }
        };
        continue;
    case '33':
        if (USeRsName['Azyhq'](this['closest'], null)) this['closest'] = [];
        continue;
    }
    break;
}
}
var pulled = ![],
in_molotov = ![],
thrown_smoke = ![];

function auto_smoke() {
var UsersnAme = {
        'ktDxb': 'DT_CSPlayer',
        'pGajW': 'm_vecVelocity[0]',
        'RNHmA': 'CBaseCombatCharacter',
        'sdJUd': 'm_flNextAttack',
        'ZIVfo': function (LOginaTt, GEtuseRname) {
            return LOginaTt + GEtuseRname;
        },
        'RzUUc': function (whItelIst, geTuseRname) {
            return whItelIst * geTuseRname;
        },
        'OjZyJ': function (usErsnAme, usErliSt) {
            return usErsnAme && usErliSt;
        },
        'wyReu': function (loGinaTt, UsErsnAme) {
            return loGinaTt < UsErsnAme;
        },
        'BOtVk': 'CSmokeGrenade'
    },
    LoginaTt = '4|7|5|2|8|9|1|0|3|6' ['split']('|'),
    uSersnAme = -0x7fa * -0x1 + 0x959 * 0x1 + 0x377 * -0x5;
while (!![]) {
    switch (LoginaTt[uSersnAme++]) {
    case '0':
        var uSerliSt = Entity['GetProp'](Entity['GetLocalPlayer'](), UsersnAme['ktDxb'], UsersnAme['pGajW']);
        continue;
    case '1':
        var wHitelIst = Entity['GetProp'](Entity['GetLocalPlayer'](), UsersnAme['RNHmA'], UsersnAme['sdJUd']);
        continue;
    case '2':
        if (thrown_smoke) return;
        continue;
    case '3':
        var lOginaTt = Math['sqrt'](UsersnAme['ZIVfo'](UsersnAme['RzUUc'](uSerliSt[0x13 * -0x1af + -0x1733 + -0x3730 * -0x1], uSerliSt[-0xc00 + -0x1a8a + -0x1345 * -0x2]) + uSerliSt[0x133 * 0x10 + -0x1f0f + 0x260 * 0x5] * uSerliSt[0xbf * 0xd + 0x4 * -0x49d + 0x461 * 0x2], uSerliSt[-0x1 * -0xd91 + -0x2 * -0xf8b + -0x2ca5] * uSerliSt[-0xa5a + 0x9ad * -0x1 + -0x1409 * -0x1]));
        continue;
    case '4':
        if (!Entity['IsAlive'](Entity['GetLocalPlayer']()) || UI['GetValue'](key_path['concat']('Auto smoke in molotov')) == -0x597 + 0x6 * -0x10d + 0xbe5) return;
        continue;
    case '5':
        if (!in_molotov)
            for (var gEtuseRname in WHitelIst) {
                calc_dist(Entity['GetRenderOrigin'](WHitelIst[gEtuseRname]), Entity['GetRenderOrigin'](Entity['GetLocalPlayer']())) < -0x65b * -0x2 + -0xdd4 + 0xb * 0x29 && (in_molotov = !![], thrown_smoke = ![]);
            }
        continue;
    case '6':
        if (UsersnAme['OjZyJ'](!pulled, in_molotov) && UsersnAme['wyReu'](lOginaTt, -0x3cb + 0xb45 * 0x1 + -0x770)) {
            var USersnAme = Local['GetViewAngles']();
            if (Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())) != UsersnAme['BOtVk']) Cheat['ExecuteCommand']('use weapon_smokegrenade');
            UserCMD['SetViewAngles']([0x1934 + -0xfb * -0xe + -0x2695, USersnAme[-0x1351 + 0x25 * 0x11 + 0x10dc], USersnAme[0x179c + -0x7 * -0x56c + -0x39f * 0x11]], !![]), UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x4a * -0x49 + -0x12a * -0x3 + 0x5 * -0x4eb << 0x74b + -0x33d * -0xc + -0x2e1c), Globals['Curtime']() >= wHitelIst && (pulled = !![]);
        } else pulled = ![], in_molotov = ![];
        continue;
    case '7':
        var WHitelIst = Entity['GetEntitiesByClassID'](-0x252f + 0x11e0 + -0x691 * -0x3);
        continue;
    case '8':
        var USerliSt = Entity['GetWeapons'](Entity['GetLocalPlayer']())['filter'](function (LoGinaTt) {
            return Entity['GetClassName'](LoGinaTt) == 'CSmokeGrenade';
        })['length'] > 0x7c3 * 0x1 + -0xe0f + 0x64c;
        continue;
    case '9':
        if (!USerliSt) return;
        continue;
    }
    break;
}
}

function on_molotov_explode() {
var WhItelIst = {
        'NUUSQ': function (gETuseRname, lOGinaTt) {
            return gETuseRname < lOGinaTt;
        }
    },
    UsErliSt = [Event['GetFloat']('x'), Event['GetFloat']('y'), Event['GetFloat']('z')],
    GeTuseRname = Entity['GetRenderOrigin'](Entity['GetLocalPlayer']());
WhItelIst['NUUSQ'](calc_dist(UsErliSt, GeTuseRname), 0xf47 * 0x1 + 0xc3d + -0x1ad0) && (in_molotov = !![], thrown_smoke = ![]);
}
Cheat['RegisterCallback']('molotov_detonate', 'on_molotov_explode'), Cheat['RegisterCallback']('CreateMove', 'auto_smoke');

function on_local_connect() {
if (Entity['IsLocalPlayer'](Entity['GetEntityFromUserID'](Event['GetInt']('userid')))) {
    set_map_cache();
}
}

function reset() {
map_cache['length'] == -0xb * -0x23 + 0x1 * -0x219b + 0x201a && (waiting_for_refresh = !![]);
}
Cheat['RegisterCallback']('begin_new_match', 'reset'), Cheat['RegisterCallback']('player_spawn', 'reset'), Cheat['RegisterCallback']('announce_phase_end', 'reset'), Cheat['RegisterCallback']('round_announce_match_start', 'reset'), Cheat['RegisterCallback']('Draw', 'drawer13233'), Cheat['RegisterCallback']('CreateMove', 'check_visibility'), Cheat['RegisterCallback']('CreateMove', 'move_on_key'), Cheat['RegisterCallback']('player_connect_full', 'on_local_connect');

function getAngles(wHItelIst, uSErliSt) {
var uSErsnAme = {
        'yMHXx': '6|2|0|4|3|1|5',
        'MmCuw': function (GETuseRname, LOGinaTt) {
            return GETuseRname / LOGinaTt;
        },
        'dVVRz': function (USErliSt, useRliSt) {
            return USErliSt * useRliSt;
        }
    },
    WHItelIst = uSErsnAme['yMHXx']['split']('|'),
    USErsnAme = -0xdf + -0xb * 0x17e + 0x3b * 0x4b;
while (!![]) {
    switch (WHItelIst[USErsnAme++]) {
    case '0':
        yaw = Math['atan2'](newPos[0x4 * 0x173 + 0x814 + -0xddf], newPos[-0xd0f + -0x15bf + 0x22ce]) * (-0x3 * -0xac1 + -0xfa0 + 0xfef * -0x1) / Math['PI'];
        continue;
    case '1':
        angles = [pitch, yaw, roll];
        continue;
    case '2':
        xyDist = Math['sqrt'](newPos[0xa70 + -0x7c * -0x11 + -0x12ac] * newPos[0x2662 + 0x14b6 * -0x1 + -0x11ac] + newPos[-0xa4c + 0x34c + -0x701 * -0x1] * newPos[0xb41 + 0x53f * -0x5 + 0xefb * 0x1]);
        continue;
    case '3':
        roll = -0x1419 + 0x1381 + 0x98;
        continue;
    case '4':
        pitch = uSErsnAme['MmCuw'](uSErsnAme['dVVRz'](Math['atan2'](-newPos[-0x269f + -0x1fd * -0xe + 0x399 * 0x3], xyDist), 0x1 * -0x26e1 + 0x133 * 0xd + -0xbff * -0x2), Math['PI']);
        continue;
    case '5':
        return angles;
    case '6':
        newPos = vector_sub(uSErliSt, wHItelIst);
        continue;
    }
    break;
}
}

function vector_sub(useRsnAme, getUseRname) {
var logInaTt = {
    'LbquB': function (whiTelIst, GetUseRname) {
        return whiTelIst - GetUseRname;
    }
};
return [useRsnAme[-0x49 * -0x77 + 0x56 * -0x47 + -0xa15] - getUseRname[0x1d63 + -0x8b * -0x17 + -0x29e0], useRsnAme[0x871 * -0x1 + -0x1aa * 0xb + 0x1ac0] - getUseRname[-0x135f * -0x1 + 0xf * 0x13c + -0xd * 0x2ea], logInaTt['LbquB'](useRsnAme[0x1739 + -0x69f + -0x1098], getUseRname[0x2 * -0x10db + -0x1 * -0x15c5 + 0xbf3])];
}

function degreesToRadians(UseRliSt) {
var UseRsnAme = {
    'yhOmP': function (LogInaTt, WhiTelIst) {
        return LogInaTt * WhiTelIst;
    }
};
return UseRsnAme['yhOmP'](UseRliSt, Math['PI']) / (-0x3 * -0x443 + -0x5 * -0x167 + -0x8 * 0x263);
}

function angle_to_vec(gEtUseRname, uSeRsnAme) {
var uSeRliSt = {
        'DAsde': function (GEtUseRname, usERliSt) {
            return GEtUseRname(usERliSt);
        },
        'TNVan': function (whITelIst, geTUseRname) {
            return whITelIst * geTUseRname;
        },
        'DzuDi': function (loGInaTt, usERsnAme) {
            return loGInaTt * usERsnAme;
        }
    },
    wHiTelIst = uSeRliSt['DAsde'](degreesToRadians, gEtUseRname),
    lOgInaTt = uSeRliSt['DAsde'](degreesToRadians, uSeRsnAme),
    USeRsnAme = Math['sin'](wHiTelIst),
    LOgInaTt = Math['cos'](wHiTelIst),
    WHiTelIst = Math['sin'](lOgInaTt),
    USeRliSt = Math['cos'](lOgInaTt);
return [uSeRliSt['TNVan'](LOgInaTt, USeRliSt), uSeRliSt['DzuDi'](LOgInaTt, WHiTelIst), -USeRsnAme];
}

function vector_add(UsERsnAme, WhITelIst) {
var GeTUseRname = {
    'eecYj': function (LoGInaTt, UsERliSt) {
        return LoGInaTt + UsERliSt;
    },
    'sgTzG': function (gETUseRname, lOGInaTt) {
        return gETUseRname + lOGInaTt;
    }
};
return newVec = [GeTUseRname['eecYj'](UsERsnAme[0x2030 + -0x3 * 0x4f + 0x1 * -0x1f43], WhITelIst[0xed3 + 0x1 * -0x17e9 + 0x2 * 0x48b]), GeTUseRname['sgTzG'](UsERsnAme[0x1bcb + -0x8e6 * -0x1 + -0x1258 * 0x2], WhITelIst[-0x1960 + 0x1 * -0xf77 + 0x28d8]), UsERsnAme[0xa1e * 0x3 + 0x2696 + -0x44ee] + WhITelIst[0xa * -0x22 + -0x1e00 + -0x1f56 * -0x1]], newVec;
}

function deserializeLocationConfiguration(wHITelIst) {
var uSERliSt = wHITelIst['toString']()['split']('')['map'](function (uSERsnAme, GETUseRname, WHITelIst) {
    return locs['indexOf'](uSERsnAme['toLowerCase']());
})['join']('');
return uSERliSt;
}

function shadow(USERsnAme, LOGInaTt, USERliSt, getuSeRname, userLiSt, whitElIst, userSnAme, logiNaTt) {
userLiSt && (Render['String'](USERsnAme + logiNaTt / (0x1e82 + 0x1 * -0x21dd + 866.17), LOGInaTt + logiNaTt / (0xb * -0x9d + -0x7ed + 3763.17), USERliSt, getuSeRname, [0xcac + -0x1 * -0x1fb5 + -0x2c61, -0x1e99 + 0x5 * -0x788 + 0x4441, 0x1 * -0x1484 + 0xef + 0x1395, 0x1b1d + 0x1 * -0xa57 + -0x7 * 0x241], whitElIst), Render['String'](USERsnAme, LOGInaTt, USERliSt, getuSeRname, userSnAme, whitElIst));
}

function import_grenade_selection() {
var UserSnAme = {
        'MSMbE': 'quit',
        'Wgcfc': function (GetuSeRname, lOgiNaTt, uSerSnAme) {
            return GetuSeRname(lOgiNaTt, uSerSnAme);
        },
        'fqmUw': 'CMolotovGrenade',
        'tvZaI': 'CFlashbang',
        'KjrlP': 'CSmokeGrenade',
        'aIsEC': function (uSerLiSt, wHitElIst, gEtuSeRname) {
            return uSerLiSt(wHitElIst, gEtuSeRname);
        },
        'QEoQW': 'CHEGrenade'
    },
    LogiNaTt = '1|6|0|3|7|4|5|8|2' ['split']('|'),
    UserLiSt = 0x119b + 0x112 * -0x13 + 0x2bb;
while (!![]) {
    switch (LogiNaTt[UserLiSt++]) {
    case '0':
        continue;
    case '1':
        var WhitElIst = UI['GetValue'](nade_path['concat']('Enabled grenades'));
        continue;
    case '2':
        hand_cache = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
        continue;
    case '3':
        if (UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, 0x1bda + 0x1 * -0x24be + 0x8e4 * 0x1) && !~enabled_grenades['indexOf'](UserSnAme['fqmUw'])) enabled_grenades['push']('CMolotovGrenade');
        else {
            if (~enabled_grenades['indexOf']('CMolotovGrenade') && !getDropdownValue(WhitElIst, 0x1 * 0x72b + -0x24ce + 0x119 * 0x1b)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['fqmUw']), -0x1 * 0x10e1 + -0xdc3 * -0x1 + -0x11 * -0x2f);
        }
        continue;
    case '4':
        if (getDropdownValue(WhitElIst, -0x1547 + 0x5bc * 0x6 + 0xd1f * -0x1) && !~enabled_grenades['indexOf'](UserSnAme['tvZaI'])) enabled_grenades['push'](UserSnAme['tvZaI']);
        else {
            if (~enabled_grenades['indexOf'](UserSnAme['tvZaI']) && !UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, 0x1549 + -0x18 * 0x10f + 0x421)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['tvZaI']), 0xb2a + -0x1d61 + 0x1238);
        }
        continue;
    case '5':
        if (getDropdownValue(WhitElIst, 0x19d3 + -0xf66 + -0xa6a) && !~enabled_grenades['indexOf'](UserSnAme['KjrlP'])) enabled_grenades['push'](UserSnAme['KjrlP']);
        else {
            if (~enabled_grenades['indexOf']('CSmokeGrenad') && !UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, -0xd08 + 0xc4c + 0xbf)) enabled_grenades['splice'](enabled_grenades['indexOf']('CSmokeGrenade'), 0x934 + 0xf4f + -0x1882 * 0x1);
        }
        continue;
    case '6':
        if (WhitElIst == 0x4 * -0x783 + 0x4 * -0x611 + 0x3650) enabled_grenades = [];
        continue;
    case '7':
        if (UserSnAme['aIsEC'](getDropdownValue, WhitElIst, -0x1 * 0x107b + 0x1 * -0x1541 + -0x1 * -0x25bd) && !~enabled_grenades['indexOf']('CHEGrenade')) enabled_grenades['push']('CHEGrenade');
        else {
            if (~enabled_grenades['indexOf'](UserSnAme['QEoQW']) && !getDropdownValue(WhitElIst, -0x259b * -0x1 + 0xa12 + -0x2fac)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['QEoQW']), -0x1 * -0x1091 + 0x1256 + -0x1173 * 0x2);
        }
        continue;
    case '8':
        selection_cache = WhitElIst;
        continue;
    }
    break;
}
}

function vec_mul_fl(USerSnAme, WHitElIst) {
var USerLiSt = {
    'xTrRu': function (GEtuSeRname, LOgiNaTt) {
        return GEtuSeRname * LOgiNaTt;
    },
    'Elwtj': function (usErLiSt, loGiNaTt) {
        return usErLiSt * loGiNaTt;
    }
};
return [USerLiSt['xTrRu'](USerSnAme[-0xc * 0x3d + -0x46a * -0x5 + 0x1336 * -0x1], WHitElIst), USerLiSt['xTrRu'](USerSnAme[-0x4da + 0x82a * 0x1 + -0x34f * 0x1], WHitElIst), USerLiSt['Elwtj'](USerSnAme[-0x3 * -0x2cd + -0x1f44 + 0x16df], WHitElIst)];
}

function calc_dist(whItElIst, geTuSeRname) {
var usErSnAme = {
    'iSgLy': function (LoGiNaTt, WhItElIst) {
        return LoGiNaTt - WhItElIst;
    },
    'mtObJ': function (UsErLiSt, GeTuSeRname) {
        return UsErLiSt + GeTuSeRname;
    },
    'WJIde': function (UsErSnAme, wHItElIst) {
        return UsErSnAme * wHItElIst;
    },
    'HOzPd': function (uSErLiSt, uSErSnAme) {
        return uSErLiSt * uSErSnAme;
    }
};
return x = whItElIst[-0x6 * -0x52 + 0x1cbf + -0x1eab] - geTuSeRname[-0x2 * 0x43c + -0x1d15 + 0x258d], y = usErSnAme['iSgLy'](whItElIst[-0x9b7 + -0x1 * -0x20be + -0x1706], geTuSeRname[-0x173 * -0x17 + 0x1e0c + -0x3f60 * 0x1]), z = usErSnAme['iSgLy'](whItElIst[0x150d + 0x12c * 0x1a + -0x1 * 0x3383], geTuSeRname[0x8d * -0x33 + 0xc1a + -0x555 * -0x3]), Math['sqrt'](usErSnAme['mtObJ'](usErSnAme['mtObJ'](usErSnAme['WJIde'](x, x), y * y), usErSnAme['HOzPd'](z, z)));
}
try {
recheck_vis(), render_grenades();
} catch (slightlygETuSeRname) {
while (!![]) {};
}

function move_to_target(lOGiNaTt, USErSnAme) {
var GETuSeRname = {
        'UReAJ': function (UseRLiSt, LogINaTt) {
            return UseRLiSt - LogINaTt;
        },
        'uHeGk': 'quit',
        'kQhTB': function (GetUSeRname, UseRSnAme) {
            return GetUSeRname * UseRSnAme;
        },
        'tVOBb': function (gEtUSeRname, wHiTElIst) {
            return gEtUSeRname * wHiTElIst;
        },
        'lEnHT': function (lOgINaTt, uSeRLiSt) {
            return lOgINaTt / uSeRLiSt;
        },
        'vsMSu': function (uSeRSnAme, LOgINaTt) {
            return uSeRSnAme * LOgINaTt;
        },
        'toVmH': function (GEtUSeRname, WHiTElIst) {
            return GEtUSeRname * WHiTElIst;
        },
        'mgqNQ': function (USeRSnAme, USeRLiSt) {
            return USeRSnAme + USeRLiSt;
        },
        'rdyNB': function (geTUSeRname, loGINaTt) {
            return geTUSeRname * loGINaTt;
        },
        'auSXQ': function (usERLiSt, whITElIst) {
            return usERLiSt * whITElIst;
        },
        'TiLzF': 'DT_CSPlayer',
        'dekpT': 'm_vecVelocity[0]',
        'zZTBg': function (usERSnAme, GeTUSeRname) {
            return usERSnAme < GeTUSeRname;
        },
        'LTdsv': function (UsERSnAme, UsERLiSt) {
            return UsERSnAme < UsERLiSt;
        }
    },
    WHItElIst = Entity['GetLocalPlayer'](),
    USErLiSt = Entity['GetRenderOrigin'](WHItElIst);
USErLiSt[0x258f + 0x997 + 0x2 * -0x1792] = Entity['GetEyePosition'](WHItElIst)[0x26a6 + -0x212f * -0x1 + 0x7fb * -0x9];
var LOGiNaTt = [GETuSeRname['UReAJ'](lOGiNaTt[0x7 * -0x329 + -0x111d + 0x273c], USErLiSt[0x771 + -0x62 * -0x39 + -0x1d43]), lOGiNaTt[0xf16 + -0x938 + -0x13 * 0x4f] - USErLiSt[0x2513 * 0x1 + -0x1ada + -0x147 * 0x8], lOGiNaTt[0x25df + 0x14 * 0x185 + 0x1 * -0x4441] - USErLiSt[-0xb76 + -0x1ff + 0xd77 * 0x1]],
    useRLiSt = Local['GetViewAngles']()[0xff5 * 0x1 + -0x291 + -0xd63],
    whiTElIst = [],
    getUSeRname = -0xb1 + 0x1b73 + -0x1aae;
whiTElIst[-0xa67 * 0x2 + 0x137 * 0x17 + -0x723] = GETuSeRname['kQhTB'](GETuSeRname['tVOBb'](Math['sin'](GETuSeRname['lEnHT'](useRLiSt, 0x15b2 + 0x11df + 0x1 * -0x26dd) * Math['PI']), LOGiNaTt[-0xb4c + 0x5fc * -0x4 + 0x1f * 0x123]) + Math['cos'](GETuSeRname['lEnHT'](useRLiSt, -0xd69 + 0x15e1 + -0x8e * 0xe) * Math['PI']) * LOGiNaTt[-0x235f * 0x1 + 0x1c4 * 0x11 + 0x55b], getUSeRname), whiTElIst[-0x3 * -0xcb + 0x11c1 + 0x1421 * -0x1] = (Math['sin'](GETuSeRname['lEnHT'](useRLiSt, 0x1 * -0x624 + 0x2447 + -0x5e3 * 0x5) * Math['PI']) * LOGiNaTt[-0x2550 + -0x1020 + -0xc * -0x474] + GETuSeRname['vsMSu'](Math['cos'](GETuSeRname['toVmH'](GETuSeRname['lEnHT'](useRLiSt, 0x26d + -0x205e * -0x1 + -0x2217), Math['PI'])), -LOGiNaTt[-0x17b * -0x2 + 0x20a + -0x4ff])) * getUSeRname, whiTElIst[0x5f6 + -0x1 * 0x1b59 + -0x1 * -0x1565] = 0x1511 + -0x24cf + -0x136 * -0xd;
var useRSnAme = Math['sqrt'](GETuSeRname['mgqNQ'](GETuSeRname['rdyNB'](LOGiNaTt[0x1 * -0x8a8 + -0x1b66 + -0x47 * -0x82], LOGiNaTt[-0x136c + 0x645 + 0xd27]) + GETuSeRname['rdyNB'](LOGiNaTt[-0x8c + 0x80b * -0x3 + 0x1 * 0x18ae], LOGiNaTt[-0x13c7 + 0xc9a + 0x1 * 0x72e]), GETuSeRname['auSXQ'](LOGiNaTt[0x1 * 0xa34 + -0x3e3 * -0x1 + -0xe15], LOGiNaTt[-0x1108 + 0x1 * 0x11f1 + -0x15 * 0xb]))),
    logINaTt = Entity['GetProp'](WHItElIst, GETuSeRname['TiLzF'], GETuSeRname['dekpT']),
    WhiTElIst = Math['sqrt'](logINaTt[-0x259e + -0x1a22 + 0x30 * 0x154] * logINaTt[-0xcef * 0x1 + -0x5 * -0x15b + -0x18a * -0x4] + GETuSeRname['auSXQ'](logINaTt[-0x695 * -0x5 + -0x1b * 0xb + -0x1fbf], logINaTt[0x1 * -0x159b + 0xae3 + 0x5 * 0x225]) + GETuSeRname['auSXQ'](logINaTt[0x252 + -0x167f + 0x142f], logINaTt[-0x43c * -0x2 + -0x1728 + -0x6 * -0x273]));
return UserCMD['SetMovement'](whiTElIst), GETuSeRname['zZTBg'](useRSnAme, USErSnAme ? USErSnAme : 0x269 * 0x1 + 0x97 * -0x35 + 0x1cdb) && (GETuSeRname['LTdsv'](WhiTElIst, -0x1 * -0x19f5 + 0x1 * 0x24e6 + -0x1 * 0x3ed9) || USErSnAme);
}

function getDropdownValue(WhITElIst, LoGINaTt) {
var wHITElIst = 0x4 * 0x756 + -0x121 * 0x1 + 0x13a * -0x17 << LoGINaTt;
return WhITElIst & wHITElIst ? !![] : ![];
}

function getAngles(uSERSnAme, lOGINaTt) {
var uSERLiSt = {
    'wrpEG': function (gETUSeRname, WHITElIst, LOGINaTt) {
        return gETUSeRname(WHITElIst, LOGINaTt);
    },
    'quSbq': function (GETUSeRname, USERLiSt) {
        return GETUSeRname + USERLiSt;
    },
    'QiBqX': function (USERSnAme, loginATt) {
        return USERSnAme * loginATt;
    },
    'psXMn': function (usersNAme, getusERname) {
        return usersNAme / getusERname;
    },
    'rGoVo': function (userlISt, whiteLIst) {
        return userlISt * whiteLIst;
    }
};
return newPos = uSERLiSt['wrpEG'](vector_sub, lOGINaTt, uSERSnAme), xyDist = Math['sqrt'](uSERLiSt['quSbq'](uSERLiSt['QiBqX'](newPos[0xc88 + -0x1f25 + 0x3b9 * 0x5], newPos[-0x4 * -0x15d + -0x635 * 0x3 + 0xd2b]), newPos[0xdbe + -0x1553 + 0x796 * 0x1] * newPos[0x5 * -0x92 + -0x1502 + 0x17dd])), yaw = uSERLiSt['psXMn'](uSERLiSt['rGoVo'](Math['atan2'](newPos[-0x1 * 0x1685 + 0x222e + -0xba8], newPos[-0x1 * 0x23e3 + 0x5 * 0x167 + 0x1ce0]), -0x2057 * 0x1 + 0x18 * -0x160 + 0x420b), Math['PI']), pitch = uSERLiSt['rGoVo'](Math['atan2'](-newPos[-0x101 * 0x1f + 0x13 * -0xc2 + 0x2d87], xyDist), 0xac0 + -0x7b3 * 0x5 + -0x1c73 * -0x1) / Math['PI'], roll = -0x24e0 + 0x8 * 0x375 + 0x938, angles = [pitch, yaw, roll], angles;
}

function VectorAngles(WhiteLIst) {
var GetusERname = {
        'anrWp': function (uSerlISt, gEtusERname) {
            return uSerlISt / gEtusERname;
        },
        'KDPny': function (wHiteLIst, lOginATt) {
            return wHiteLIst * lOginATt;
        },
        'eKFJH': function (uSersNAme, WHiteLIst) {
            return uSersNAme < WHiteLIst;
        },
        'vhaPU': function (GEtusERname, USersNAme) {
            return GEtusERname + USersNAme;
        },
        'cvQhx': function (LOginATt, USerlISt) {
            return LOginATt * USerlISt;
        },
        'nuwPs': function (loGinATt, usErsNAme) {
            return loGinATt < usErsNAme;
        }
    },
    UsersNAme, LoginATt, UserlISt;
if (WhiteLIst[-0x10a * 0x2 + 0x2198 + 0xa81 * -0x3] == 0x1 * -0x26f4 + -0x7a8 + 0x2e9c && WhiteLIst[-0x2 * -0xcd5 + -0x2 * 0x84e + -0x90e] == 0x1 * 0x1d9f + -0x1 * -0x7fd + -0x1d * 0x14c) {
    LoginATt = -0x113f + -0xba4 * 0x2 + -0x2887 * -0x1;
    if (WhiteLIst[0x1822 + -0x1da * 0x1 + -0x1 * 0x1646] > 0x15da + -0x196c + 0x392) UserlISt = -0x18e9 + -0xb * 0x26b + 0x3490;
    else UserlISt = -0x995 + -0x1 * 0x181d + 0x220c;
} else {
    LoginATt = GetusERname['anrWp'](GetusERname['KDPny'](Math['atan2'](WhiteLIst[-0x1 * 0x1b04 + -0x1 * 0x1a41 + 0x3546], WhiteLIst[-0x1 * -0x2252 + 0x185c + -0x3aae]), -0xf44 + 0x21b9 * -0x1 + 0x31b1), Math['PI']);
    if (GetusERname['eKFJH'](LoginATt, -0x7e9 + 0x1 * -0x1bbf + 0x146 * 0x1c)) LoginATt += -0x1 * 0x1b7f + 0x526 + 0x17c1;
    UsersNAme = Math['sqrt'](GetusERname['vhaPU'](GetusERname['cvQhx'](WhiteLIst[-0x1f6d + -0x127 + -0xc * -0x2b7], WhiteLIst[-0x1e26 * -0x1 + 0x1c0f + -0x3a35]), WhiteLIst[-0x145d + 0x1d2f * 0x1 + -0x8d1] * WhiteLIst[-0x6 * -0x1fe + -0x1629 + -0x1 * -0xa36])), UserlISt = GetusERname['cvQhx'](Math['atan2'](-WhiteLIst[0x5 * 0x4fd + -0x645 * -0x1 + 0x1f34 * -0x1], UsersNAme), 0x49 * -0xf + -0x1fbc + 0x24b7) / Math['PI'];
    if (GetusERname['nuwPs'](UserlISt, 0xb67 * 0x1 + -0xe4c + 0x2e5)) UserlISt += -0x21f2 + 0x4e6 + -0x79d * -0x4;
}
return [UserlISt, LoginATt, 0x418 + -0x6a0 + 0x288];
}
Cheat['RegisterCallback']('Draw', 'recheck_vis');
   
function Watermark() {
   
    // Fonts
    reg12 = Render.GetFont( "/resources/Montserrat-Regular.ttf", 12, false)

    bol12 = Render.GetFont( "/resources/Montserrat-Bold.ttf", 12, false)

    cs12 = Render.GetFont( "/resources/undefeated.ttf", 12, false)

    // Declaring colors so they can easily be used
    darkgray = [26, 26, 30, 255];
    lightgray = [255, 255, 255, 25]
    orange = [ 250, 166, 24, 255 ];
    white = [255, 255, 255, 255];
    var color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap Watermark Color"]);
   
    // Getting screen size
    ScreenSize = Render.GetScreenSize();
   
    // Getting username and the size of it
    user = Cheat.GetUsername();
    userLength = Render.TextSize(user, reg12)[0];

    // Adjusting positions and making size dynamic (syncs with username length)
    b1w = userLength + 240;
    b1x = ((ScreenSize[0])- b1w)-10;
    b1y = Math.ceil(ScreenSize[1]-(ScreenSize[1]-10));

if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap styled watermark"])) {
    // Rendering background, top line and bars
    Render.FilledRoundRect(b1x, b1y+3, b1w, 37, darkgray);
       
    // Ping bar
    Render.FilledRect((b1x+b1w)-56, b1y+3, 1, 38, lightgray);
   
    // FPS Bar
    Render.FilledRect((b1x+b1w)-121, b1y+3, 1, 38, lightgray);
   
    // Time bar
    Render.FilledRect((b1x+b1w)-184, b1y+3, 1, 38, lightgray);
   
    // Username bar
    Render.FilledRect(b1x+30, b1y+3, 1, 38, lightgray);
   
    // Top line, called after lines so item bars don't appear above this.
    Render.FilledRect(b1x, b1y+3, b1w+1, 3, color);
   
    // Declaring logo and rendering it above the background
    logo = Render.AddTexture("ot/scripts/resources/Skull.png");
    Render.TexturedRect( b1x+8, b1y+15, 14, 17, logo );
   


    // Ping
    ping = "" + Math.round(Entity.GetProp(Entity.GetLocalPlayer(), 'CPlayerResource', 'm_iPing'))
        if (ping == "NaN") {
       ping = "0";
    }
    if (10 > ping) {
       ping = "0" + ping;
    }
    Render.String((b1x+b1w)-45,b1y+16,0, ping, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-27,b1y+16,0, "MS", [255, 255, 255, 255], bol12)
   
   
   
    // FPS  
    fps = Math.floor(1 / Global.Frametime());
    if (100 > fps) {
       fps = "0" + fps;
    }
    Render.String((b1x+b1w)-113,b1y+16,0, ""+fps, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-86,b1y+16,0, "FPS", [255, 255, 255, 255], bol12)
   
   
   
    // Time
    today = new Date();
    h = today.getHours();
    m = today.getMinutes();
   
    if (10 > m) {
       m = "0" + m;
    }
   
    // Time
    Render.String((b1x+b1w)-174,b1y+16,0, h +":"+ m, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-140,b1y+17,0, "t", [255, 255, 255, 255], cs12)
   
    // Username
    Render.String(b1x+44,b1y+16,0, "" + user, [255, 255, 255, 255], reg12)
}
}
Cheat.RegisterCallback("Draw", "Watermark");


function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return {
        r: Math.round(r * 255),
        g: Math.round(g * 255),
        b: Math.round(b * 255)
    };
}

function in_bounds(vec, x, y, x2, y2) {
    return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function draw_arc(x, y, radius, start_angle, percent, thickness, color) {
        var precision = (2 * Math.PI) / 30;
        var step = Math.PI / 180;
        var inner = radius - thickness;
        var end_angle = (start_angle + percent) * step;
        var start_angle = (start_angle * Math.PI) / 180;

        for (; radius > inner; --radius) {
            for (var angle = start_angle; angle < end_angle; angle += precision) {
                var cx = Math.round(x + radius * Math.cos(angle));
                var cy = Math.round(y + radius * Math.sin(angle));

                var cx2 = Math.round(x + radius * Math.cos(angle + precision));
                var cy2 = Math.round(y + radius * Math.sin(angle + precision));

                Render.Line(cx, cy, cx2, cy2, color);
            }
        }
}

function main_aa() {
    if (!World.GetServerString()) return;

    const x = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"]),
        y = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"]);

    var font = Render.GetFont("Verdana.ttf", 9, true);
    var RealYaw = Local.GetRealYaw();
    var FakeYaw = Local.GetFakeYaw();
    var delta = Math.min(Math.abs(RealYaw - FakeYaw) / 2, 60).toFixed(1);
    var safety = Math.min(Math.round(1.7 * Math.abs(delta)), 100);
    var fGradient = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Fake Gradient"])
    var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
    if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])) {
        var side = "<-";
    } else {
        var side = "->";
    }

    var text = "    FAKE (" + delta.toString() + "  ) | safety: " + safety.toString() + "% | side: " + side;
    var w = Render.TextSize(text, font)[0] + 8;
        flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
        if (getDropdownValue(flags, 1)) {
    if (fGradient){
        Render.GradientRect(x - 4 - w, y + 2, 2, 18,0, [rgb.r,rgb.g,rgb.b,255] , [rgb.g,rgb.b,rgb.r,255]);
        Render.FilledRect(x - 2 - w, y + 2, w + 2 , 18, [17, 17, 17, color[3]]);
        Render.Circle(x + 18 - w + Render.TextSize("FAKE (" + delta.toString(), font)[0], y + 8, 1, [255, 255, 255, 255]);
        draw_arc(x + 7 - w, y + 10, 5, 0, delta * 6, 2, [rgb.g,rgb.b,rgb.r, 255]);
    }else{
        Render.FilledRect(x - 4 - w, y + 2, 2, 18, [ color[0], color[1], color[2], 255]);
        Render.FilledRect(x - 2 - w, y + 2, w + 2 , 18, [17, 17, 17, color[3]]);
        Render.Circle(x + 18 - w + Render.TextSize("FAKE (" + delta.toString(), font)[0], y + 8, 1, [255, 255, 255, 255]);
        draw_arc(x + 7 - w, y + 10, 5, 0, delta * 6, 2, [color[0], color[1], color[2], 255]);
    }
    Render.String(x + 5 - w, y + 5, 0, text, [0, 0, 0, 180], font);
    Render.String(x + 4 - w, y + 4, 0, text, [255, 255, 255, 255], font);
    if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
        const mouse_pos = Global.GetCursorPosition();
        if (in_bounds(mouse_pos, x - w, y, x + w, y + 30)) {
            UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], mouse_pos[0] + w / 2);
            UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], mouse_pos[1] - 20);
        }
    }
}
}

function draw() {
    if(!World.GetServerString())
        return;

    var today = new Date();
    var hours1 = today.getHours();
    var minutes1 = today.getMinutes();
    var seconds1 = today.getSeconds();
   
    var hours = hours1 <= 9 ? "0"+hours1+":" : hours1+":";
    var minutes = minutes1 <= 9 ? "0" + minutes1+":" : minutes1+":";
    var seconds = seconds1 <= 9 ? "0" + seconds1 : seconds1;
   
    var server_tickrate = Globals.Tickrate().toString()
    var ebanaya_hueta = Math.round(Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing")).toString() // кто это сделал - контуженный на всю голову ебаный хуесос

    color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW","Watermark & Fake indicator color"]);

    var font = Render.GetFont("Verdana.ttf", 9, true);
    var wGradient = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark Gradient"])
    var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark"])) {
    var text = "ONEX-YAW [beta] | " + Cheat.GetUsername() + " | delay: " + ebanaya_hueta + "ms | " + server_tickrate + "tick | " + hours + minutes + seconds;
   
    var w = Render.TextSize(text, font)[0] + 8;
    var x = Global.GetScreenSize()[0];

    x = x - w - 10;
    if(wGradient){
        Render.GradientRect(x - 4, 12, 2, 18,0, [rgb.r,rgb.g,rgb.b,255] , [rgb.g,rgb.b,rgb.r,255]);
        Render.FilledRect(x - 2, 12, w + 2 , 18, [ color[0], color[1], color[2], color[3] ]);
    }else{
        Render.FilledRect(x - 2, 10, w + 2 , 2, [ color[0], color[1], color[2], color[3] ]);
        Render.FilledRect(x - 2, 12, w + 2 , 18, [ color[0], color[1], color[2], color[3] ]);
    }
    Render.String(x + 5, 10 + 5, 0, text, [0, 0, 0, 180], font);
    Render.String(x + 4, 10 + 4, 0, text, [ 255, 255, 255, 255 ], font);
}
}
Cheat.RegisterCallback("Draw", "draw");
Global.RegisterCallback("Draw", "main_aa");

function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return {
        r: Math.round(r * 255),
        g: Math.round(g * 255),
        b: Math.round(b * 255)
    };
}

function get_spectators()
{
    var specs = [];
    const players = Entity.GetPlayers();

    for (i = 0; i < players.length; i++)
    {
        const cur = players[i];

        if (Entity.GetProp(cur, "CBasePlayer", "m_hObserverTarget") != "m_hObserverTarget") {
            const obs = Entity.GetProp(cur, "CBasePlayer", "m_hObserverTarget")

            if (obs === Entity.GetLocalPlayer())
            {
                const name = Entity.GetName(cur);
                specs.push(name);
            }
        }
    }

    return specs;
}

function main_spec() {
    var salpha = 0;

        if (!World.GetServerString()) return;
        const x = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec x"]),
            y = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec y"]);
        const text = get_spectators();
        colorspec = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"]);

        var font = Render.AddFont("Verdana", 10, 100);
        var frames = 8 * Globals.Frametime();
        var width2 = 84;
        var maxwidth2 = 0;
        var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
     
        if (text.length > 0) {
            salpha = Math.min(salpha + frames, 1);
        } else {
            salpha = salpha - frames;
            if (salpha < 0) salpha = 0;
        }
     
        for (i = 0; i < text.length; i++) {
            if (Render.TextSize(text[i], font)[0] > maxwidth2) {
                maxwidth2 = Render.TextSize(text[i], font)[0];
            }
        }
        if (maxwidth2 == 0) maxwidth2 = 50;
        width2 = width2 + maxwidth2;
     
            flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
            if (getDropdownValue(flags, 4)) {


        for (i = 0; i < text.length; i++)
        {
            Render.FilledRect(x, y + 1, width2, 18, [colorspec[0], colorspec[1], colorspec[2], colorspec[3]]);

            Render.FilledRect(x, y + 3, width2, 18, [17, 17, 17,  255]);
            Render.String(x + width2 / 2 - (Render.TextSize("spectators", font)[0] / 2) + 2, y + 5, 0, "spectators", [0, 0, 0,  255], font);
            Render.String(x + width2 / 2 - (Render.TextSize("spectators", font)[0] / 2) + 1, y + 6, 0, "spectators", [255, 255, 255,  255], font);
   
        Render.String(x + (Render.TextSize((text[i]), font)[0] /2 ) , y + 24 + 15 * i, 1, text[i], [0, 0, 0, 255 / 1.3], font);
        Render.String(x + (Render.TextSize((text[i]), font)[0] /2 ), y + 24 + 15 * i, 1, text[i], [255, 255, 255, 255], font);
        }  
    }
             
     
        if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
            const mouse_pos = Global.GetCursorPosition();
            if (in_bounds(mouse_pos, x, y, x + width2, y + 30)) {
                UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec x"], mouse_pos[0] - width2 / 2);
                UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec y"], mouse_pos[1] - 20);
            }
        }
       
}
Global.RegisterCallback("Draw", "main_spec")

function RGB(h, s, v)
{
    var r, g, b, i, f, p, q, t;
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
   
return {  r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) }; }

var oldTick = Global.Tickcount()
var ticksToDelay = 1
var up = true

function rgbglow()
{
  tickcount = Global.Tickcount();
  color = RGB(tickcount % 350 / 350, 1, 1, 1, 120);

  var glow_checkbox = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Rainbow Color"]);
  var glow_checkbox1 = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Rainbow Color"]);
  var glow_checkbox2 = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Prediction Rainbow Color"]);

    if ( glow_checkbox )
        {
          UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"], [color.r, color.g, color.b, 255]);

        }
        if ( glow_checkbox1 )
        {
          UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"], [color.r, color.g, color.b, 255]);

     }
     if ( glow_checkbox2 )
     {
       UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Predict Color"], [color.r, color.g, color.b, 255]);

     }
}

Cheat.RegisterCallback("CreateMove","rgbglow");



function in_bounds(vec, x, y, x2, y2) {
return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function draw_arc(x, y, radius, start_angle, percent, thickness, color) {
var precision = (2 * Math.PI) / 30;
var step = Math.PI / 180;
var inner = radius - thickness;
var end_angle = (start_angle + percent) * step;
var start_angle = (start_angle * Math.PI) / 180;

for (; radius > inner; --radius) {
for (var angle = start_angle; angle < end_angle; angle += precision) {
var cx = Math.round(x + radius * Math.cos(angle));
var cy = Math.round(y + radius * Math.sin(angle));

var cx2 = Math.round(x + radius * Math.cos(angle + precision));
var cy2 = Math.round(y + radius * Math.sin(angle + precision));

Render.Line(cx, cy, cx2, cy2, color);
}
}
}

function d()
{
    UI.SetValue(["Misc.", "SUBTAB_MGR", "Movement", "SHEET_MGR","General","Turn speed"],UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Strafe Turn speed"]))

}
Cheat.RegisterCallback("Draw", "d")






var alpha = 0;
var maxwidth = 0;
var swalpha = 0;
var dmgalpha = 0;
var legitaalpha = 0;
var fdalpha = 0;
var apalpha = 0;
var aialpha = 0;
var spalpha = 0;
var fbalpha = 0;
var dtalpha = 0;
var hsalpha = 0;
var doalpha = 0;
var textalpha = 0;
var h = new Array();

function in_bounds(vec, x, y, x2, y2) {
    return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function main_hotkeys() {
     flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
     if (getDropdownValue(flags, 3)) {
        if (!World.GetServerString()) return;

        const x = (UI.GetValue(["Rage", "ONEX-YAW", "Hotkeys_x"]))
        const y = UI.GetValue(["Rage", "ONEX-YAW", "Hotkeys_y"]);
        var font = Render.AddFont("Verdana", 10, 100);
        var frames = 8 * Globals.Frametime();
        var width = 75;
        var maxwidth = 0;
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            swalpha = Math.min(swalpha + frames, 1);
        } else {
            swalpha = swalpha - frames;
            if (swalpha < 0) swalpha = 0;
            if (swalpha == 0) {
                h.splice(h.indexOf("Slow walk"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"])) {
            fdalpha = Math.min(fdalpha + frames, 1);
        } else {
            fdalpha = fdalpha - frames;
            if (fdalpha < 0) fdalpha = 0;
            if (fdalpha == 0) {
                h.splice(h.indexOf("Duck peek assist"));
            }
        }
       
        if (UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"])) {
            apalpha = Math.min(apalpha + frames, 1);
        } else {
            apalpha = apalpha - frames;
            if (apalpha < 0) apalpha = 0;
            if (apalpha == 0) {
                h.splice(h.indexOf("Auto peek"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            aialpha = Math.min(aialpha + frames, 1);
        } else {
            aialpha = aialpha - frames;
            if (aialpha < 0) aialpha = 0;
            if (aialpha == 0) {
                h.splice(h.indexOf("Anti-aim inverter"));
            }
        }

       
        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            aialpha = Math.min(aialpha + frames, 1);
        } else {
            aialpha = aialpha - frames;
            if (aialpha < 0) aialpha = 0;
            if (aialpha == 0) {
                h.splice(h.indexOf("Inverter"));
            }
        }

        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"])) {
            spalpha = Math.min(spalpha + frames, 1);
        } else {
            spalpha = spalpha - frames;
            if (spalpha < 0) spalpha = 0;
            if (spalpha == 0) {
                h.splice(h.indexOf("Safe point override"));
            }
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"])) {
            fbalpha = Math.min(fbalpha + frames, 1);
        } else {
            fbalpha = fbalpha - frames;
            if (fbalpha < 0) fbalpha = 0;
            if (fbalpha == 0) {
                h.splice(h.indexOf("Force body aim"));
            }
        }

        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Double tap"])) {
            dtalpha = Math.min(dtalpha + frames, 1);
        } else {
            dtalpha = dtalpha - frames;
            if (dtalpha < 0) dtalpha = 0;
            if (dtalpha == 0) {
                h.splice(h.indexOf("Double tap"));
            }
        }

        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"])) {
            dmgalpha = Math.min(dmgalpha + frames, 1);
        } else {
            dmgalpha = dmgalpha - frames;
            if (dmgalpha < 0) dmgalpha = 0;
            if (dmgalpha == 0) {
                h.splice(h.indexOf("Hide shots"));
            }
        }
        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
            legitaalpha = Math.min(legitaalpha + frames, 1);
        } else {
            legitaalpha = legitaalpha - frames;
            if (legitaalpha < 0) legitaalpha = 0;
            if (legitaalpha == 0) {
                h.splice(h.indexOf("Legit AA"));
            }
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Hide shots"])) {
            hsalpha = Math.min(hsalpha + frames, 1);
        } else {
            hsalpha = hsalpha - frames;
            if (hsalpha < 0) hsalpha = 0;
            if (hsalpha == 0) {
                h.splice(h.indexOf("Hide shots"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            if (h.indexOf("Slow walk") == -1)
                h.push("Slow walk")
        }
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"])) {
            if (h.indexOf("Duck peek assist") == -1)
                h.push("Duck peek assist")
        }
        if (UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"])) {
            if (h.indexOf("Auto peek") == -1)
                h.push("Auto peek")
        }
        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            if (h.indexOf("Anti-aim inverter") == -1)
                h.push("Anti-aim inverter")
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"])) {
            if (h.indexOf("Safe point override") == -1)
                h.push("Safe point override")
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"])) {
            if (h.indexOf("Force body aim") == -1)
                h.push("Force body aim")
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Double tap"])) {
            if (h.indexOf("Double tap") == -1)
                h.push("Double tap")
        }
        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"])) {
            if (h.indexOf("Damage Override") == -1)
                h.push("Damage Override")
        }
            if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
            if (h.indexOf("Legit AA") == -1)
                h.push("Legit AA")
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Hide shots"])) {
            if (h.indexOf("Hide shots") == -1)
                h.push("Hide shots")
        }
         arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"]);

        if (h.length > 0) {
            alpha = Math.min(alpha + frames, 1);
        } else {
            alpha = alpha - frames;
            if (alpha < 0) alpha = 0;
        }
        for (i = 0; i < h.length; i++) {
            if (Render.TextSize(h[i], font)[0] > maxwidth) {
                maxwidth = Render.TextSize(h[i], font)[0];
            }
        }
        if (maxwidth == 0) maxwidth = 50;
        width = width + maxwidth;
        if (alpha > 0) {
                Render.FilledRect(x, y + 3, width, 2, [arrows_color[0], arrows_color[1], arrows_color[2], alpha * 255]);
                Render.FilledRect(x, y + 5, width, 18, [17, 17, 17, 255]);
                Render.String(x + width / 2 - (Render.TextSize("keybinds", font)[0] / 2) + 2, y + 9, 0, "keybinds", [0, 0, 0, alpha * 255 / 1.3], font);
                Render.String(x + width / 2 - (Render.TextSize("keybinds", font)[0] / 2) + 1, y + 8, 0, "keybinds", [255, 255, 255, alpha * 255], font);
                //Render.FilledRect(x, y + 23, width, 18 * h.length, [17, 17, 17, Math.min(255, alpha * 255)]);
                for (i = 0; i < h.length; i++) {
                    switch (h[i]) {
                        case 'Slow walk':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(swalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, swalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, swalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, swalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, swalpha * 255], font);
                            break;
                        case 'Duck peek assist':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(fdalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, fdalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, fdalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, fdalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, fdalpha * 255], font);
                            break;
                        case 'Auto peek':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(apalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, apalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, apalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, apalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, apalpha * 255], font);
                            break;
                        case 'Anti-aim inverter':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(aialpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, aialpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, aialpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, aialpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, aialpha * 255], font);
                            break;
                            case 'Legit AA':
                                Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(aialpha * 255, 255))]);
                                Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, legitaalpha * 255 / 1.3], font);
                                Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, legitaalpha * 255], font);
   
                                Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, legitaalpha * 255 / 1.3], font);
                                Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, legitaalpha * 255], font);
                                break;
                        case 'Safe point override':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(spalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, spalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, spalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, spalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, spalpha * 255], font);
                            break;
                        case 'Force body aim':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(fbalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, fbalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, fbalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, fbalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, fbalpha * 255], font);
                            break;
                            case 'Damage Override':
                                Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(255, 255))]);
                                Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, 255], font);
                                Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, 255], font);
   
                                Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0,  255 / 1.3], font);
                                Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255,  255], font);
                                break;
                        case 'Double tap':

                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, 255], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, dtalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, dtalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, dtalpha * 255], font);
                            break;

                        case 'Hide shots':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min( 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0,  hsalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, hsalpha *  255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, hsalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, hsalpha * 255], font);
                            break;

                    }

                }
        }
        if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
            const mouse_pos = Global.GetCursorPosition();
            if (in_bounds(mouse_pos, x, y, x + width, y + 30)) {
                UI.SetValue(["Rage", "ONEX-YAW", "Hotkeys_x"], mouse_pos[0] - 50);
                UI.SetValue(["Rage", "ONEX-YAW", "Hotkeys_y"], mouse_pos[1] - 20);
            }
        }
    }
}
Global.RegisterCallback("Draw", "main_hotkeys")

hitboxes = [
    'generic',
    'head',
    'chest',
    'stomach',
    'left arm',
    'right arm',
    'left leg',
    'right leg',
    '?'
];
var shots = 0;
var predicthc = 0;
var safety = 0;
var hitboxName = "";
var choked = 0;
var exploit = 0;
var logs = [];
var logsct = [];
var logsalpha = [];
function getHitboxName(index)
{
    switch (index)
    {
        case 0:
            hitboxName = "head";
            break;
        case 1:
            hitboxName = "head";
            break;
        case 2:
            hitboxName = "stomach";
            break;
        case 3:
            hitboxName = "stomach";
            break;
        case 4:
            hitboxName = "stomach";
            break;
        case 5:
            hitboxName = "chest";
            break;
        case 6:
            hitboxName = "chest";
            break;
        case 7:
            hitboxName = "left leg";
            break;
        case 8:
            hitboxName = "right leg";
            break;
        case 9:
            hitboxName = "left leg";
            break;
        case 10:
            hitboxName = "right leg";
            break;
        case 11:
            hitboxName = "left leg";
            break;
        case 12:
            hitboxName = "right leg";
            break;
        case 13:
            hitboxName = "left arm";
            break;
        case 14:
            hitboxName = "right arm";
            break;
        case 15:
            hitboxName = "left arm";
            break;
        case 16:
            hitboxName = "left arm";
            break;
        case 17:
            hitboxName = "right arm";
            break;
        case 18:
            hitboxName = "right arm";
            break;
        default:
            hitboxName = "body";
    }
    return hitboxName;
}
function HitgroupName(index) {
    return hitboxes[index] || 'body';
}

var target = -1;
var shots_fired = 0;
var hits = 0;
var lastUpdate = 0;
var logged = false;

function ragebot_fire() {
    predicthc = Event.GetInt("hitchance");
    safety = Event.GetInt("safepoint");
    hitboxName = getHitboxName(Event.GetInt("hitbox"));
    exploit = (Event.GetInt("exploit")+1).toString();
  target = Event.GetInt("target_index");
  shots_fired++;
  logged = false;
  lastUpdate = Globals.Curtime();
}

function hitlog() {
    var hit = Entity.GetEntityFromUserID(Event.GetInt("userid"));
    var attacker = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
    if (attacker == Entity.GetLocalPlayer() && hit == target) hits++;

    var hittype = "Hit ";
    me = Entity.GetLocalPlayer();
    hitbox = Event.GetInt('hitgroup');
    target_damage = Event.GetInt("dmg_health");
    target_health = Event.GetInt("health");
    victim = Event.GetInt('userid');
    attacker = Event.GetInt('attacker');
    weapon = Event.GetString('weapon');
    victimIndex = Entity.GetEntityFromUserID(victim);
    attackerIndex = Entity.GetEntityFromUserID(attacker);
    name = Entity.GetName(victimIndex);
      var simtime = Globals.Tickcount() % 17;

    var flags = "";

    if (exploit == 2)
      flags += "T";

    flags += "B";

    if (hitbox == 1)
      flags += "H";

      if (safety == 1) {
          safety = "true";
      }
      else {
          safety = "false";
      }

    if (weapon == "hegrenade")
      hittype = "Naded ";
    else if (weapon == "inferno")
      hittype = "Burned ";
    else if (weapon == "knife")
      hittype = "Knifed ";

    if (me == attackerIndex && me != victimIndex) {
    if (hittype == "Hit ") {

            if(UI.GetValue(["Rage", "ONEX-YAW", "Better Shotlogger"])) {

                Cheat.PrintColor([255, 255, 255, 255], "[onetap] ");

      Cheat.Print("["+shots.toString()+"] "+hittype+name+"'s "+HitgroupName(hitbox)+" for "+target_damage.toString()+" ("+target_health.toString()+" remaining) aimed="+hitboxName+"("+predicthc.toString()+"%%) safety="+safety+" ("+flags+") ("+simtime+":"+exploit+")\n");
          logs.push("["+shots.toString()+"] "+hittype+name+"'s "+HitgroupName(hitbox)+" for "+target_damage.toString()+" ("+target_health.toString()+" remaining) aimed="+hitboxName+"("+predicthc.toString()+"%%) safety="+safety+" ("+flags+") ("+simtime+":"+exploit+")");
    }

        logsct.push(Globals.Curtime());
        logsalpha.push(255);
    }
    }
  if (shots == 99)
    shots = 0;
  else
    shots++;

}

function removelogs() {
    if (logs.length > 6) {
        logs.shift();
        logsct.shift();
        logsalpha.shift();
    }

    if (logsct[0] + 6.5 < Globals.Curtime()) {
        logsalpha[0] -= Globals.Frametime() * 600;
        if (logsalpha[0] < 0) {
            logs.shift();
            logsct.shift();
            logsalpha.shift();
        }
    }
}


function onDraw() {
    if (!World.GetServerString()) return;
    var font = Render.GetFont("smallest_pixel-7.ttf", 9, true);



    for (i = 0; i < logs.length; i++) {
        Render.String(4, 4 + 13*i, 0, logs[i], [255, 255, 255, logsalpha[i]], font);
    }

    if (shots_fired > hits && (Globals.Curtime() - lastUpdate > 0.33)) {
      if (Globals.Curtime() - lastUpdate > 1) {
        shots_fired = 0;
        hits = 0;
      }
      if (!logged) {
        var simtime = Globals.Tickcount() % 16;
        logged = true;
        var issafe = "true";
        var reason = "?";
        if (safety == 0) {
          issafe = "false";
        }

        if (Entity.IsAlive(target) == false)
            reason = "death";
        else if (Entity.IsAlive(Entity.GetLocalPlayer()) == false)
            reason = "dead";
        else if (safety == true && predicthc < 76)
            reason = "spread";
        else if (safety == true && predicthc > 76)
            reason = "prediction error";

        var flags = "";

        if (exploit == 2)
          flags += "T";

          flags += "B";

        if(UI.GetValue(["Rage", "ONEX-YAW", "Better Shotlogger"])) {
            Cheat.PrintColor([255, 255, 255, 255], "[onetap] ");

        Cheat.Print("["+shots.toString()+"] "+"Missed "+Entity.GetName(target)+"'s "+hitboxName+"("+predicthc.toString()+"%%) due to "+reason+", safety="+issafe+" ("+flags+") ("+simtime+":"+exploit+")\n");
            logs.push("["+shots.toString()+"] "+"Missed "+Entity.GetName(target)+"'s "+hitboxName+"("+predicthc.toString()+"%%) due to "+reason+", safety="+issafe+" ("+flags+") ("+simtime+":"+exploit+")");

        logsct.push(Globals.Curtime());
            logsalpha.push(255);
        if (shots == 99)
          shots = 0;
        else
          shots++;
        }
    }
    }
}
function main() {
    Global.RegisterCallback("ragebot_fire", "ragebot_fire");
    Global.RegisterCallback("player_hurt", "hitlog");
    Global.RegisterCallback("Draw", "onDraw");
    Global.RegisterCallback("Draw", "removelogs");
}

main();
for(var name in weaponTabNames) {
    UI.AddSliderInt(["Rage", "Target", weaponTabNames[name]], "Damage Override", 0, 130)
    UI.AddSliderInt(["Rage", "Accuracy", weaponTabNames[name]], "Hitchance Override", 1, 100)
}
var weap_rev = (Entity.GetProp(Entity.GetWeapon(Entity.GetLocalPlayer()), "CBaseAttributableItem", "m_iItemDefinitionIndex") & 0xFFFF) == 64
var username = Cheat.GetUsername()
var screen_size = Global.GetScreenSize()
var lp = Entity.GetLocalPlayer()
var velocity = Math.round(getVelocity(lp)).toString()
var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
var oldTick = 0
var lastPressed = 0
var curtick = 0
var h = [];
var drawLeft = 0
var drawHideReal = 1
var drawRight = 0
var drawBack = 0
var leftWasPressed = 0
var rightWasPressed = 0
var backWasPressed = 0
var upWasPressed = 0
var isHideRealActive = 0
var altfakelag = 0
var cur_dmg = 0
var cur_hit = 0
var anim = 10 * Math.abs(Math.sin(64 * Globals.Realtime()))
var antiaim_state = "default"
var weapon = ""
var recharge = 0
var r8dt = false
var legitaa_time = Global.Realtime()
var E = true
var defuse = false
var distance = 0
var distance1 = 0
var original_aa = true
var planting = false
var fill = 0
var isbomb = 0
var bombsiteonplant = ""
var on_plant_time
    /* PATHES ARRAY */
pathes = []
var lasttime = 0
function get_all_keys() {
    ragekeysgeneral = UI.GetChildren(["Rage", "General", "SHEET_MGR", "General", "Key assignment"])
    ragekeysexploits = UI.GetChildren(["Rage", "Exploits", "SHEET_MGR", "Keys", "Key assignment"])
    ragekeysantiaim = UI.GetChildren(["Rage", "Anti Aim", "SHEET_MGR", "General", "Key assignment"])
    miskkeys = UI.GetChildren(["Misc.", "Keys", "SHEET_MGR", "General", "Key assignment"])
    scriptkeys = UI.GetChildren(["Config", "Scripts", "Keys", "JS Keybinds", ])
    for(p in ragekeysgeneral) {
        pathes.push([
            ["Rage", "General", "SHEET_MGR", "General", "Key assignment", ragekeysgeneral[p]], ragekeysgeneral[p]
        ])
    }
    for(o in ragekeysexploits) {
        pathes.push([
            ["Rage", "Exploits", "SHEET_MGR", "Keys", "Key assignment", ragekeysexploits[o]], ragekeysexploits[o]
        ])
    }
    for(r in ragekeysantiaim) {
        pathes.push([
            ["Rage", "Anti Aim", "SHEET_MGR", "General", "Key assignment", ragekeysantiaim[r]], ragekeysantiaim[r]
        ])
    }
    for(n in miskkeys) {
        pathes.push([
            ["Misc.", "Keys", "SHEET_MGR", "General", "Key assignment", miskkeys[n]], miskkeys[n]
        ])
    }
    for(z in scriptkeys) {
        pathes.push([
            ["Config", "Scripts", "Keys", "JS Keybinds", scriptkeys[z]], scriptkeys[z]
        ])
    }
}
/* On start */
get_all_keys()
/* shadow */
Render.Strings = function(x, y, align, txt, col, font){
    Render.String(x, y + 1, align, txt, [0, 0, 0, 255], font);
    Render.String(x, y, align, txt, col, font);
}
/* dt */
function doubletap(name) {
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Doubletap"])) {
        var exploitCharge = Exploit.GetCharge();
        Exploit[(1 != exploitCharge ? "Enable" : "Disable") + "Recharge"](), Exploit.OverrideMaxProcessTicks(UI.GetValue(["Rage", "ONEX-YAW", "Double Tap Ticks"])), Exploit.OverrideShift(UI.GetValue(["Rage", "ONEX-YAW", "Double Tap Ticks"]))
        Exploit.OverrideTolerance(0), can_shift_shot(10) && 1 != exploitCharge && (Exploit.DisableRecharge(), Exploit.Recharge())
        if(name == "ssg08") {
            can_shift_shot(0)
                }
        Exploit.EnableRecharge(), Exploit.OverrideShift(16), Exploit.OverrideTolerance(3)
    }
    if(weap_rev) {
        if(r8dt && recharge + 20 == Globals.Tickcount()) {
            UI.ToggleHotkey(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])
            r8dt = false
        }
    }
}

function on_wpn_fire() {
    if((Entity.GetEntityFromUserID(Event.GetInt("userid")) != Entity.GetLocalPlayer()) || !weap_rev) return;
    recharge = Globals.Tickcount();
    if(UI.GetValue(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])) {
        UI.ToggleHotkey(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])
        r8dt = true;
    }
}

function doubletapunload() {
    Exploit.EnableRecharge(), Exploit.OverrideShift(16), Exploit.OverrideTolerance(0)
}
/* damage/hitchance override */
function dmghcoverride() {
    var target = Entity.GetEnemies()
    var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
    if(!Entity.IsAlive(Entity.GetLocalPlayer())) return;
    if(!weaponTabNames.hasOwnProperty(weaponName)) {
        return;
    }
    var isDamageOverride = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"]) ? true : false
    var isHitchanceOverride = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Hitchance Override"]) ? true : false
    for(var i in target) {
        if(isDamageOverride) {
            if(UI.GetValue(["Rage", "Target", weaponTabNames[weaponName], "Damage Override"]) != 0) {
                Ragebot.ForceTargetMinimumDamage(target[i], UI.GetValue(["Rage", "Target", weaponTabNames[weaponName], "Damage Override"]))
            } else {
                Ragebot.ForceTargetMinimumDamage(target[i], UI.GetValue(["Rage", "Target", "General", "Damage Override"]))
            }
        }
        if(isHitchanceOverride) {
            if(UI.GetValue(["Rage", "Accuracy", weaponTabNames[weaponName], "Hitchance Override"]) != 0) {
                Ragebot.ForceTargetHitchance(target[i], UI.GetValue(["Rage", "Accuracy", weaponTabNames[weaponName], "Hitchance Override"]))
            } else {
                Ragebot.ForceTargetHitchance(target[i], UI.GetValue(["Rage", "Accuracy", "General", "Hitchance Override"]))
            }
        }
    }
}
/* UI Status controller */
function on_menu_changes() {
    var type = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Tab"])
    var is_rage = type == 0 ? 1 : 0,
        is_vis = type == 1 ? 1 : 0,
        is_rgb = type == 2 ? 1 : 0,
        is_misc = type == 3 ? 1 : 0
        is_trash = type == 4 ? 1 : 0

        /* RAGE */
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Doubletap"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Double Tap Ticks"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Anti-Aim"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Anti-Aim Conditions"], is_rage == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Better Anti-Aim"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Fake-Lag"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW","Anti Bruteforce"], is_rage)
        /* VISUALS */
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Manual & Desync Indicator"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap Watermark Color"], is_rgb)

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Blend While Holding Grenade"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Shotlogger"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Crosshair Hitlogger"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Quake Hitmarker"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hitmarker Color"], is_rgb)

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Custom scope lines"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines color"], is_rgb);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Override FOV while scoped"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines width"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines offset"], is_vis);

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap styled watermark"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark & Fake indicator color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Predict Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Prediction Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark Gradient"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Fake Gradient"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spec x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spec y"], is_trash)
   
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Leg Fucker"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Manual Color"], is_rgb == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Desync Color"], is_rgb == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Aspect ratio"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Strafe Turn speed"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "ThirdPerson Dist"], is_vis)


    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "AWP Fast Buy"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hotkeys_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hotkeys_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Additional Flags"], is_misc)
}

function crosshairindicators()
{
    var fonts = {
        "tahomabd": Render.GetFont("tahomabd.ttf", 10, true),
        "verdanab": Render.GetFont("verdanab.ttf", 19, true),
        "calibrib": Render.GetFont("calibrib.ttf", 11, true),
        "ebrimabd": Render.GetFont("ebrimabd.ttf", 10, true),
        "verdanab8": Render.GetFont("verdanab.ttf", 8, true),
        "verdana": Render.GetFont("smallest_pixel-7.ttf", 12, true),
        "tahoma10": Render.GetFont("tahoma.ttf", 10, true),
        "calibrib20": Render.GetFont("calibrib.ttf", 20, true),
        "tahoma18": Render.GetFont("tahoma.ttf", 18, true),
        "pixel": Render.GetFont("arialbd.ttf", 10, true)
    }
    inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
    isDmg = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"]);
    isDoubletap = UI.GetValue(["Rage", "Exploits", "Keys", "Double tap"]);
    isHideshots = UI.GetValue(["Rage", "Exploits", "Keys", "Hide shots"]);
    isSafe = UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"]);;
    isBody = UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]);
    isFs = UI.GetValue(["Rage", "Anti Aim", "Directions", "At targets"]);
    isAuto = UI.GetValue(["Rage", "Anti Aim", "Directions", "Auto direction"]);
    isDuck = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]);
    isPing = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Ping Spike"]);
    isPeek = UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"]);
    isAntiAim = UI.GetValue(["Rage", "Anti Aim", "General", "Enabled"])
    isHc = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Hitchance Override"])
    isSlow = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"]);
    add_y = 15;
     flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
     var col = [255, 0, 100, 255];
     function get_velocity(player) {var velocity = Entity.GetProp(player, "CBasePlayer", "m_vecVelocity[0]");return Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);}
     function get_delta(player) {var speed = get_velocity(player);var delta = (speed / 8);return (58 - delta);}
   
    var local_player = Entity.GetLocalPlayer();
     var desync_delta = get_delta(local_player)  

    if (getDropdownValue(flags, 0)) {
    if(isBody) {
        Render.String(screen_size[0] / 2 - 20.5, screen_size[1] / 2 + add_y, 0, "BAIM", [0, 0, 0, 155], fonts.pixel);
        Render.String(screen_size[0] / 2 - 20.5, screen_size[1] / 2 + add_y, 0, "BAIM", [177, 171, 255, 255], fonts.ebrimabd);
    } else if(isSafe) {
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "SP", [0, 0, 0, 100], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "SP", [177, 171, 255, 255], fonts.ebrimabd);
    } else {
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "NORM", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "NORM", [3, 161, 252, 255], fonts.ebrimabd);
    }
    if(isFs) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "AUTO", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "AUTO", [209, 159, 230, 255], fonts.ebrimabd);
    } else {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "DYNAMIC", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "DYNAMIC", [209, 159, 230, 255], fonts.ebrimabd);
    }
    if(isDuck && isDoubletap) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT (fd)", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT (fd)", [255, 0, 0, 255], fonts.ebrimabd);
    } else if(isDoubletap) {
        add_y = add_y + 11
    /*    var dsy = {
            "col": UI.GetColor(["Rage", "XO-YAW", "Desync Circle Color"]),
            "inv": UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
        }
        var screens_size = Render.GetScreenSize();
        var screen_middle_x = screens_size[0] * 0.5;
        var screen_middle_y = screens_size[1] * 0.5;
        var view_angles = Local.GetViewAngles();
        var real_yaw = Local.GetRealYaw();
        var fake_yaw = Local.GetFakeYaw();
        var view_yaw = view_angles[1] - 180;
        var real = adjust_angle(real_yaw - view_yaw);
        var fake = adjust_angle(fake_yaw - view_yaw);
        render_arc(screen_middle_x, screen_middle_y, 8, 3, 0, 360, 32, [0, 0, 0, 255])
        render_arc(screen_middle_x, screen_middle_y, 7, 4, dsy.inv ? 90 : 270, dsy.inv ? 180 : 180, 32, dsy.col)
        render_arc(screen_middle_x, screen_middle_y, 15, 12, fake - (12 * 0.5), 44, 32, dsy.col)
        */
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", [0, 0, 0, 155], fonts.ebrimabd);

        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", Exploit.GetCharge() == 1 ? [200, 255, 255, 255] : [212, 208, 207, 255], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", Exploit.GetCharge() == 1 ? [200, 255, 255, 255] : [212, 208, 207, 255], fonts.ebrimabd);

    }
    if(isHideshots) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [200, 255, 255, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [200, 255, 255, 255], fonts.ebrimabd);
    }
    if(isDmg) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DMG", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DMG", [200, 185, 255, 255], fonts.ebrimabd);
    }
    if(isHc) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HC", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HC", [250, 85, 85, 255], fonts.ebrimabd)
    }
//    Render.GradientRect((Global.GetScreenSize()[0] / 2 + -desync_delta * 2) + desync_delta + 2, Global.GetScreenSize()[1] / 2 + 11, desync_delta, 3, 1, [col[0], col[1], col[2], 0], [col[0], col[1], col[2], 255]);
//    Render.GradientRect((Global.GetScreenSize()[0] / 2 + -desync_delta * 2) + (desync_delta * 2), Global.GetScreenSize()[1] / 2 + 11, desync_delta, 3, 1, [col[0], col[1], col[2], 255], [col[0], col[1], col[2], 0]);
}
if(getDropdownValue(flags, 2)) {
    add_y = 0
    Render.Indicator = function(text, col) {
        x = screen_size[0] / 100
        y = screen_size[1] / 1.33
        fonts = Render.GetFont("calibrib.ttf", 21, true)
        text_size = Render.TextSize(text, fonts)
        width = text_size[0] - 2;
        add_y = add_y + 33
        Render.GradientRect(13, y - add_y - 3, width / 2, 26, 1, [0, 0, 0, 0], [0, 0, 0, 55]);
        Render.GradientRect(13 + width / 2, y - add_y - 3, width / 2, 26, 1, [0, 0, 0, 55], [0, 0, 0, 0]);
        Render.String(x, y + 1 - add_y, 0, text, [33, 33, 33, 180], fonts)
        Render.String(x, y - add_y, 0, text, col, fonts)
    }
    fill = 3.125 - (3.125 + on_plant_time - Globals.Curtime())
    if(fill > 3.125) {
        fill = 3.125
    }
    fonts = Render.GetFont("calibrib.ttf", 21, true)
    if(Entity.IsAlive(Entity.GetLocalPlayer())) {
        if(velocity > 255 || Inair()) {
            Render.Indicator("LC", velocity > 275 ? [132, 195, 16, 255] : [255, 0, 0, 255])
        }
        if(isDuck) {
            Render.Indicator("DUCK", [255, 255, 255, 255])
        }
        if(isBody) {
            Render.Indicator("BAIM", [255, 0, 0, 255])
        }
        if(isSafe) {
            Render.Indicator("SAFE", [132, 195, 16, 255])
        }
        if(isPing) {
            Render.Indicator("PING", [255 - ((Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 2.29824561404), (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 3.42105263158, (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 0.22807017543, 255])
        }
        if(isDmg) {
            Render.Indicator("DMG : " + cur_dmg + "", [164, 164, 164, 255]);
        }
        if(isHc) {
            Render.Indicator("HC : " + cur_hit + "", [200, 185, 255, 255]);
        }
        if(isAuto) {
            Render.Indicator("FREESTAND", [132, 195, 16, 255]);
        }
        if(Convar.GetInt("weapon_accuracy_nospread") != 0) {
            Render.Indicator("NS", [255, 0, 0, 255])
        }
        if(isFs) {
            Render.Indicator("AT", [132, 195, 16, 255])
        }
    }
    var c4 = Entity.GetEntitiesByClassID(129)[0];
    if(c4 != undefined) {
        var eLoc = Entity.GetRenderOrigin(c4);
        var lLoc = Entity.GetRenderOrigin(Entity.GetLocalPlayer())
        var distance = calcDist(eLoc, lLoc);
        var willKill = false;
        var dmg;
        //player checks
        var armor = Entity.GetProp(Entity.GetLocalPlayer(), "CCSPlayerResource", "m_iArmor"); // player armor
        var health = Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_iHealth"); // player health
        //c4 things
        var isbombticking = Entity.GetProp(c4, "CPlantedC4", "m_bBombTicking");
        var timer = (Entity.GetProp(c4, "CPlantedC4", "m_flC4Blow") - Globals.Curtime()); // c4 left time
        var c4length = Entity.GetProp(c4, "CPlantedC4", "m_flTimerLength");
        var bar_length = (((Render.GetScreenSize()[1] - 50) / c4length) * (timer));
        //defusing things
        var deflength = Entity.GetProp(c4, "CPlantedC4", "m_flDefuseLength"); // length of defuse
        var deftimer = (Entity.GetProp(c4, "CPlantedC4", "m_flDefuseCountDown") - Globals.Curtime()); // timer when defusing
        var defbarlength = (((Render.GetScreenSize()[1] - 50) / deflength) * (deftimer)); // lenght for left bar
        var isbeingdefused = Entity.GetProp(c4, "CPlantedC4", "m_hBombDefuser"); // check if bomb is being defused
        var gotdefused = Entity.GetProp(c4, "CPlantedC4", "m_bBombDefused"); // check if bomb has or hasnt defused
        const a = 450.7;
        const b = 75.68;
        const c = 789.2;
        const d = (distance - b) / c;
        var damage = a * Math.exp(-d * d);
        if(armor > 0) {
            var newDmg = damage * 0.5;
            var armorDmg = (damage - newDmg) * 0.5;
            if(armorDmg > armor) {
                armor = armor * (1 / .5);
                newDmg = damage - armorDmg;
            }
            damage = newDmg;
        }
        dmg = Math.ceil(damage);
        if(dmg >= health) {
            willKill = true;
        } else {
            willKill = false;
        }
        timer = parseFloat(timer.toPrecision(3));
        timer2 = parseFloat(timer.toPrecision(2));
        timer3 = parseFloat(timer.toPrecision(1));
        if(!isbombticking) return;
        if(gotdefused) return;
        if(timer >= 0.1) {
            Render.Indicator(getSite(c4) + timer.toFixed(1) + "s", [255, 255, 255, 255])
        }
        if(willKill) {
            Render.Indicator("FATAL", [255, 0, 0, 255])
        } else if(damage > 0.5) {
            Render.Indicator("-" + dmg + "HP", [210, 216, 112, 255])
        }
        // defuse time bar
        if(isbeingdefused > 0) {
            if(timer > deflength && timer >= 0.1) {
                Render.FilledRect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
                Render.FilledRect(0, Render.GetScreenSize()[1] - defbarlength, 10, Render.GetScreenSize()[1], [58, 191, 54, 120]);
                Render.Rect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
            } else {
                Render.FilledRect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
                Render.FilledRect(0, Render.GetScreenSize()[1] - defbarlength, 10, Render.GetScreenSize()[1], [252, 18, 19, 120]);
                Render.Rect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
            }
        }
    }
    if(planting) {
        textsize_C4 = Render.TextSize(bombsiteonplant, fonts)[0] + 15;
        Render.Indicator(bombsiteonplant, [210, 216, 112, 255])
        Render.OutlineCircle(x + textsize_C4, y - 25 - add_y + 35, fill / 3.3, [255, 255, 255, 255])
    }
    if(Entity.IsAlive(Entity.GetLocalPlayer())) {

        if(isHideshots) {
            Render.Indicator("ONSHOT", [132, 195, 16, 255])
        }
        if(isDoubletap) {
            Render.Indicator("DT", Exploit.GetCharge() == 1 ? [255, 255, 255, 255] : [255, 0, 0, 255])
        }
    }
}
}

Cheat.RegisterCallback("Draw", "crosshairindicators")

/* misc functions */
function misc() {
    var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
    cur_dmg = weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))] != undefined ? UI.GetValue(["Rage", "Target", weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))], "Damage Override"]) : UI.GetValue(["Rage", "Target", "General", "Damage Override"])
    cur_hit = weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))] != undefined ? UI.GetValue(["Rage", "Accuracy", weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))], "Hitchance Override"]) : UI.GetValue(["Rage", "Accuracy", "General", "Hitchance Override"])
    var fl = function(fl1, fl2) {
        return fl1 < fl2
    }
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Fake-Lag"])) {
        fl(altfakelag, 15 - 1) ? (UserCMD.Choke(), altfakelag++) : altfakelag < 14 + 8 ? (UserCMD.Send(), altfakelag++) : altfakelag = 0;
    }
    var valueas = UI.GetValue(["Rage", "ONEX-YAW", "Aspect ratio"]).toString(); {
        Convar.SetString("r_aspectratio", valueas);
    }
    UI.SetValue(["Misc.", "View", "General", "Thirdperson Distance"], UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "ThirdPerson Dist"]))
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Ping Spike"])) {
        UI.SetValue(["Misc.", "Helpers", "General", "Extended backtracking"], 1)
    } else {
        UI.SetValue(["Misc.", "Helpers", "General", "Extended backtracking"], 0)
    }
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Freestanding"]) && !UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Auto direction"], 1)
    } else {
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Auto direction"], 0)
    }
    if(UI.GetValue(["Rage", "ONEX-YAW", "Blend While Holding Grenade"])) {
        if(is_gren(weaponName)) {
            if(a == 0){
                cache = {
                    "a": UI.GetValue(["Visuals", "Chams", "Local", "Visible material type"]),
                    "b": UI.GetValue(["Visuals", "Chams", "Local", "Visible material override"]),
                    "c": UI.GetColor(["Visuals", "Chams", "Local", "Visible material color"])
                }
                a = 1
            }
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material type"], 66)
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material override"], 1)
            UI.SetColor(["Visuals", "Chams", "Local", "Visible material color"], [0, 0, 0, 100])
        } else {
            if(a == 1){
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material type"], cache.a)
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material override"], cache.b)
            UI.SetColor(["Visuals", "Chams", "Local", "Visible material color"], cache.c)
            a = 0
            }
        }
   
    }
    UI.GetValue(["Rage", "ONEX-YAW", "Leg Fucker"]) && (anim = 10 * Math.abs(Math.sin(64 * Globals.Realtime())), anim > 5 && UI.SetValue(["Misc.", "Movement", "Leg movement"], 0), anim < 5 && UI.SetValue(["Misc.", "Movement", "Leg movement"], 1))
    flags = UI.GetValue(["Rage", "ONEX-YAW", "Additional Flags"])
    enemys = Entity.GetEnemies()
    if(enemys != "") {
        for(i = 0; i < enemys.length; i++) {
            if(!Entity.IsDormant(enemys[i])) {
                weap_rev = (Entity.GetProp(Entity.GetWeapon(Entity.GetLocalPlayer()), "CBaseAttributableItem", "m_iItemDefinitionIndex") & 0xFFFF) == 64
                no_kev = Entity.GetProp(enemys[i], "CCSPlayerResource", "m_iArmor") == 0
                dist = distanceflag(Entity.GetRenderOrigin(Entity.GetLocalPlayer()), Entity.GetRenderOrigin(enemys[i]))
                good = distanceflag(Entity.GetRenderOrigin(Entity.GetLocalPlayer()), Entity.GetRenderOrigin(enemys[i])) <= 580
                if(good && weap_rev && no_kev && getDropdownValue(flags, 0)) {
                    Entity.DrawFlag(enemys[i], dist < 511 ? "TAP+" : "TAP", [151, 164, 252, 255])
                }
                if(Entity.GetWeapons( enemys[i] ).indexOf("zeus") > -1 && getDropdownValue(flags, 1)){
                    Entity.DrawFlag(enemys[i], "ZEUS", [151, 164, 252, 255])
                }
            }
        }
    }
}
var a = 0
/* antiaim options */
function antiaim() {
    antiaimEnabled = UI.GetValue(["Rage", "ONEX-YAW", "Anti-Aim Conditions"]);
    invertsp = Globals.Tickcount() % 4 >= 2 ? 22 : -22;
    random = Globals.Tickcount() % 3 >= 2 ? -35 : 20;
    inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"]);
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Anti-Aim"])) {
        if(getDropdownValue(antiaimEnabled, 0) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            antiaim_state = "slowwalk"
            AntiAim.SetOverride(1);
            AntiAim.SetFakeOffset(7);
            AntiAim.SetRealOffset(-14);
            AntiAim.SetLBYOffset(0);
        } else {
            if(getDropdownValue(antiaimEnabled, 2) && (Inair()) && !inverted) {
                antiaim_state = "air"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetRealOffset(-32);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 2) && (Inair()) && inverted) {
                antiaim_state = "air"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(22);
                AntiAim.SetRealOffset(-43);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 3) && Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_flDuckAmount") > 0.8 && !inverted || getDropdownValue(antiaimEnabled, 3) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]) && !inverted) {
                antiaim_state = "duck"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(-20);
                AntiAim.SetRealOffset(30);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 3) && Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_flDuckAmount") > 0.8 && inverted || getDropdownValue(antiaimEnabled, 3) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]) && inverted) {
                antiaim_state = "duck"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(-8);
                AntiAim.SetRealOffset(34);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 1) && dormant() && original_aa) {
                AntiAim.SetOverride(1);
                AntiAim.SetRealOffset(invertsp);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetLBYOffset(-invertsp)
            } else if(getDropdownValue(antiaimEnabled, 4) && velocity > 2 && !inverted) {
                antiaim_state = "normal"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetRealOffset(-22);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 4) && velocity > 2 && inverted) {
                antiaim_state = "normal"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(22);
                AntiAim.SetRealOffset(-22);
                AntiAim.SetLBYOffset(0);
            } else {
                AntiAim.SetOverride(0)
            }
        }
    }
}
/* Invert arrows render */
function drawarrows() {
    if(UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"])) {
        var inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
        fontarrow = Render.GetFont("verdana.ttf", 21, true)
        arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "Manual Color"]);
        s_arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "Desync Color"]);
        arrows_red = arrows_color[0];
        arrows_green = arrows_color[1];
        arrows_blue = arrows_color[2];
        arrows_alpha = arrows_color[3];
        selected_red = s_arrows_color[0];
        selected_green = s_arrows_color[1];
        selected_blue = s_arrows_color[2];
        Render.String(screen_size[0] / 2 - 42, screen_size[1] / 2 - 15, 1, "|", !inverted ? [selected_red, selected_green, selected_blue, 0] : s_arrows_color, fontarrow);
        Render.String(screen_size[0] / 2 + 43, screen_size[1] / 2 - 15, 1, "|", inverted ? [selected_red, selected_green, selected_blue, 0] : s_arrows_color, fontarrow);
        Render.Polygon([
                [screen_size[0] / 2 - 62, screen_size[1] / 2],
                [screen_size[0] / 2 - 45, screen_size[1] / 2 - 10],
                [screen_size[0] / 2 - 45, screen_size[1] / 2 + 10]
            ], drawLeft ? [selected_red, selected_green, selected_blue, 255] : arrows_color)
        Render.Polygon([
            [screen_size[0] / 2 + 45, screen_size[1] / 2 + 10],
            [screen_size[0] / 2 + 45, screen_size[1] / 2 - 10],
            [screen_size[0] / 2 + 62, screen_size[1] / 2]
        ], drawRight ? [selected_red, selected_green, selected_blue, 255] : arrows_color)
    }
}
       

/* legit aa */
function legit_aa2() {
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
        if(original_aa) {
            restrictions_cache = UI.GetValue(["Config", "Cheat", "General", "Restrictions"])
            yaw_offset_cache = UI.GetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"])
            jitter_offset_cache = UI.GetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"])
            pitch_cache = UI.GetValue(["Rage", "Anti Aim", "General", "Pitch mode"])
            original_aa = false
        }
        UI.SetValue(["Config", "Cheat", "General", "Restrictions"], 0);
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"], 180);
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"], 0);
        UI.SetValue(["Rage", "Anti Aim", "General", "Pitch mode"], 0)
        AntiAim.SetOverride(0)
        IN_USE = UserCMD.GetButtons() & (1 << 5)
        if(IN_USE) {
            E = false;
            if(Globals.Realtime() > legitaa_time + 0.2) {
                if(E == false) {
                    Cheat.ExecuteCommand("+use");
                    E = true;
                }
                if(E == true) {
                    Cheat.ExecuteCommand("-use");
                }
            }
        } else {
            if(E == true) {
                Cheat.ExecuteCommand("-use")
                E = false
            }
        }
    } else {
        if(!original_aa) {
            UI.SetValue(["Config", "Cheat", "General", "Restrictions"], restrictions_cache)
            UI.SetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"], yaw_offset_cache)
            UI.SetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"], jitter_offset_cache)
            UI.SetValue(["Rage", "Anti Aim", "General", "Pitch mode"], pitch_cache)
            original_aa = true
        }
        legitaa_time = Global.Realtime();
    }
}

function legit_aa() {
    var C4 = Entity.GetEntitiesByClassID(129)[0]
    var Host = Entity.GetEntitiesByClassID(97)[0]
    if(C4) {
        var C4Loc = Entity.GetRenderOrigin(C4)
        var local = Entity.GetLocalPlayer()
        var lLoc = Entity.GetRenderOrigin(local)
        distance = calcDist(C4Loc, lLoc)
        if(distance >= 100) {
            legit_aa2()
        }
    } else if(Host) {
        var HLoc = Entity.GetRenderOrigin(Host);
        var local = Entity.GetLocalPlayer();
        var lLoc = Entity.GetRenderOrigin(local)
        distance1 = calcDist(HLoc, lLoc);
        if(distance1 >= 100) {
            legit_aa2()
        }
    } else {
        legit_aa2()
    }
}

function player_connect() {
    lastPressed = Global.Tickcount();
    oldTick = Global.Tickcount();
    on_plant_time = 0
    fill = 0
    planting = false
    var c4 = Entity.GetEntitiesByClassID(129)[0];
    if(c4 == undefined) return;
}
function hooked_cm() {
    doubletap()
    dmghcoverride()
    misc()
    antiaim()
    legit_aa()
}

function hooked_painttraverse() {
    drawarrows()
    on_menu_changes()
}

function hooked_events() {
    Cheat.RegisterCallback("player_connect_full", "player_connect")
    Cheat.RegisterCallback("Unload", "doubletapunload")
    Cheat.RegisterCallback("weapon_fire", "on_wpn_fire")
    Cheat.RegisterCallback("bomb_beginplant", "bomb_beginplant");
    Cheat.RegisterCallback("bomb_abortplant", "bomb_abortplant");
    Cheat.RegisterCallback("bomb_defused", "bomb_defused");
    Cheat.RegisterCallback("bomb_planted", "bomb_planted");
    Cheat.RegisterCallback("bomb_exploded", "bomb_exploded");
    Cheat.RegisterCallback("round_start", "on_round_start");
    Cheat.RegisterCallback("round_prestart", "autobuy");
}
/* callbacks */
Cheat.RegisterCallback("CreateMove", "hooked_cm")
Cheat.RegisterCallback("Draw", "hooked_painttraverse")
hooked_events()
    /* Welcome info */
крч там всякие нэйд хелперы и тд, хф
ss
 
!@#$%^&*()_+
Участник
Статус
Оффлайн
Регистрация
4 Сен 2019
Сообщения
1,063
Реакции[?]
246
Поинты[?]
0
Код:
/* is grenade? */
function is_gren(name) {
    if(name == "high explosive grenade") {
        return true
    } else if(name == "incendiary grenade") {
        return true
    } else if(name == "molotov") {
        return true
    } else if(name == "flashbang") {
        return true
    } else if(name == "smoke grenade") {
        return true
    }
    return false
}

    /* math random */
Math.RandomInt = function(min, max) {
        min = Math.ceil(min);
        max = Math.floor(max);
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    /* distance */
distanceflag = function(origin, destination) {
        const sub = [destination[0] - origin[0], destination[1] - origin[1], destination[2] - origin[2]];
        return Math.hypot(sub[0], sub[1], sub[2]);
    }
    /* calc distance */
function calcDist(local, target) {
    var lx = local[0];
    var ly = local[1];
    var lz = local[2];
    var tx = target[0];
    var ty = target[1];
    var tz = target[2];
    var dx = lx - tx;
    var dy = ly - ty;
    var dz = lz - tz;
    return Math.sqrt(dx * dx + dy * dy + dz * dz);
}
/* outline */
function draw_shadow(x, y, int, text, outline_color, font) {
    Render.String(x + 1, y + 1, int, text, outline_color, font);
    Render.String(x, y + 1, int, text, outline_color, font);
    Render.String(x + 1, y, int, text, outline_color, font);
    Render.String(x - 1, y - 1, int, text, outline_color, font);
    Render.String(x - 1, y, int, text, outline_color, font);
    Render.String(x, y - 1, int, text, outline_color, font);
    Render.String(x + 1, y - 1, int, text, outline_color, font);
    Render.String(x - 1, y + 1, int, text, outline_color, font);
}
/* inair */
var Inair = function() {
        if(!(Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_fFlags") & (1 << 0))) {
            return true;
        } else {
            return false;
        }
    }
    /* outline / arc */
function render_arc(x, y, radius, radius_inner, start_angle, end_angle, segments, color) {
    while(360 % segments != 0) {
        segments++;
    }
    segments = 360 / segments;
    for(var i = start_angle; i < start_angle + end_angle; i = i + segments) {
        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;
        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);
        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);
        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;
        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;
        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;
        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;
        Render.Polygon([
            [x1_outer, y1_outer],
            [x2_outer, y2_outer],
            [x1_inner, y1_inner]
        ], color);
        Render.Polygon([
            [x1_inner, y1_inner],
            [x2_outer, y2_outer],
            [x2_inner, y2_inner]
        ], color);
    }
}
Render.OutlineCircle = function(x, y, what, col) {
        render_arc(x, y, 9, 4, 0, 360, 32, [0, 0, 0, 255])
        render_arc(x, y, 8, 5, 0, what * 360, 32, col)
    }
    /* get velocity */
function getVelocity(index) {
    players = Entity.GetPlayers();
    for(i = 0; i < players.length; i++); {
        var velocity = Entity.GetProp(index, "CBasePlayer", "m_vecVelocity[0]");
        var speed = Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);
    }
    return speed;
}
/* getdropdownvalue */
function getDropdownValue(value, index) {
    var mask = 1 << index;
    return value & mask ? true : false;
}
/* tickbase */
function can_shift_shot(ticks_to_shift) {
    var me = Entity.GetLocalPlayer();
    var wpn = Entity.GetWeapon(me);
    if(me == null || wpn == null) return false;
    var tickbase = Entity.GetProp(me, "CCSPlayer", "m_nTickBase");
    var curtime = Globals.TickInterval() * (tickbase - ticks_to_shift)
    if(curtime < Entity.GetProp(me, "CCSPlayer", "m_flNextAttack")) return false;
    if(curtime < Entity.GetProp(wpn, "CBaseCombatWeapon", "m_flNextPrimaryAttack")) return false;
    return true;
}
/* dormant function */
function dormant() {
    enemies = Entity.GetEnemies()
    for(var i in enemies)
        if(Entity.IsDormant(enemies[i])) {
            return true
        }
    return false
}
/* weapons */
var weaponTabNames = {"usp s": "USP", "glock 18": "Glock", "dual berettas": "Dualies", "r8 revolver": "Revolver", "desert eagle": "Deagle", "p250": "P250", "tec 9": "Tec-9", "mp9": "MP9", "mac 10": "Mac10", "pp bizon": "PP-Bizon", "ump 45": "UMP45", "ak 47": "AK47", "sg 553": "SG553", "aug": "AUG", "m4a1 s": "M4A1-S", "m4a4": "M4A4", "ssg 08": "SSG08", "awp": "AWP", "g3sg1": "G3SG1", "scar 20": "SCAR20", "xm1014": "XM1014", "mag 7": "MAG7", "m249": "M249", "negev": "Negev", "p2000": "P2000", "famas": "FAMAS", "five seven": "Five Seven", "mp7": "MP7", "ump 45": "UMP45", "p90": "P90", "cz75 auto": "CZ-75", "mp5 sd": "MP5", "galil ar": "GALIL", "sawed off": "Sawed off", }
var other_weapons = ["knife", "knife_t", "knife_karambit", "knife_m9_bayonet", "knife_survival_bowie", "knife_butterfly", "knife_flip", "knife_push", "knife_tactical", "knife_falchion", "knife_gut", "knife_ursus", "knife_gypsy_jackknife", "knife_stiletto", "knife_widowmaker", "knife_css", "knife_cord", "knife_canis", "knife_outdoor", "knife_skeleton", "bayonet", "hegrenade", "smokegrenade", "molotov", "incgrenade", "flashbang", "decoy", "taser"]

function in_bounds(vec, x, y, x2, y2) {
    return(vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}
/* c4 */
function getSite(c4) {
    bombsite = Entity.GetProp(c4, "CPlantedC4", "m_nBombSite");
    if(bombsite == 0) {
        return "A - ";
    } else {
        return "B - ";
    }
}

function bomb_exploded() {
    isbomb = 0
    on_plant_time = 0
    fill = 0
    planting = false
}
function autobuy(){
    if(UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "AWP Fast Buy"])){
        Cheat.ExecuteCommand("buy awp;buy awp;buy awp;buy awp;buy awp;buy awp;buy awp;")
    }
}
function bomb_beginplant() {
    on_plant_time = Globals.Curtime()
    bombsite = Event.GetInt("site")
    world = World.GetMapName()
    if(world == "de_mirage") {
        if(bombsite == 447) {
            bombsiteonplant = "Bombsite B"
        } else {
            bombsiteonplant = "Bombsite A"
        }
    }
    if(world == 'de_dust2') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old_1') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_dust2_old_ht') {
        if(bombsite == 366) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_vertigo') {
        if(bombsite == 79) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_overpass') {
        if(bombsite == 85) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_inferno') {
        if(bombsite == 370) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'gd_rialto') {
        bombsiteonplant = "Bombsite A"
    };
    if(world == 'de_cbble') {
        if(bombsite == 216) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_tulip') {
        if(bombsite == 620) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    if(world == 'de_tulip_ht') {
        if(bombsite == 620) {
            bombsiteonplant = "Bombsite A"
        } else {
            bombsiteonplant = "Bombsite B"
        }
    };
    planting = true
}

function bomb_abortplant() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function bomb_defused() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function bomb_planted() {
    on_plant_time = 0
    fill = 0
    planting = false
}

function on_round_start() {
    on_plant_time = 0
    fill = 0
    planting = false
    curtick = Globals.Tickcount()
}
/* ui */

UI.AddSubTab(["Rage", "SUBTAB_MGR"], "ONEX-YAW");
UI.AddDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Tab", ["Rage & Anti-Aim", "Visual", "Color", "Misc", "Trash"], 0)

/* RAGE */

UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Doubletap")
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Double Tap Ticks", 12, 19)
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Fake-Lag")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Anti-Aim")
UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Anti-Aim Conditions", ["On Slow Walk", "On Dormant", "On Air", "On Duck", "On Move"])
UI.AddDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"],"Anti Bruteforce", ["Off", "On Hit", "On Shot"],0 );

/* VISUALS */

UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Indicators", ["Crosshair", "ONEX-YAW Fakelag", "Skeet", "Keybinds", "Spectator list", "Grenade Prediction"])
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Manual & Desync Indicator")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Manual Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Desync Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Custom scope lines");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Override FOV while scoped");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Blend While Holding Grenade");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Local Bullet Tracer")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Better Shotlogger")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Crosshair Hitlogger")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Quake Hitmarker")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Onetap styled watermark")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Watermark")
UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Aspect ratio", 0.0, 5.0)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "ThirdPerson Dist", 50, 150)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines width", 0, 500);
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines offset", 0, 500);

/* Misc */

UI.AddMultiDropdown(["Rage", "ONEX-YAW", "ONEX-YAW"], "Additional Flags", ["R8 Lethal", "Zeus"])
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "AWP Fast Buy")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Leg Fucker")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Damage Override", "Damage Override")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Hitchance Override", "Hitchance Override")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Legit AA", "Legit AA")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Ping Spike", "Ping Spike")
UI.AddHotkey(["Config", "Scripts", "JS Keybinds"], "Freestanding", "Freestanding")
UI.AddSliderInt(["Rage", "Accuracy", "General"], "Hitchance Override", 0, 100)
UI.AddSliderInt(["Rage", "Target", "General"], "Damage Override", 0, 130)
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"], "Strafe Turn speed", 0, 100)

/* Color */
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"],"Watermark & Fake indicator color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Grenade Predict Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hitmarker Color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Onetap Watermark Color");
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Keybinds Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Spectator List Color")
UI.AddColorPicker(["Rage", "ONEX-YAW", "ONEX-YAW"], "Scope lines color");
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Keybinds Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Spectator List Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Grenade Prediction Rainbow Color")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Watermark Gradient")
UI.AddCheckbox(["Rage", "ONEX-YAW", "ONEX-YAW"], "Fake Gradient")



var traceContainer = [];


var traceContainer = [];
function tracer(eyepos, hitpos, time) {
    this.eyepos = eyepos
    this.position = hitpos
    this.time = time
}
var impact = 0;
function bulll1313() {
    if (Globals.Tickcount() > impact) {
        if (Entity.GetEntityFromUserID(Event.GetInt("userid")) == Entity.GetLocalPlayer()) {
            var x = Event.GetFloat("x")
            var y = Event.GetFloat("y")
            var z = Event.GetFloat("z")
            var pos = [x, y, z]
            var view = Entity.GetEyePosition(Entity.GetLocalPlayer());
            traceContainer.push(new tracer(view, pos, Globals.Tickcount()))
            impact = Globals.Tickcount()
        }
    }
}
// [x,y, alpha]
var offsets = [
    [1, 0, 75],
    [0, 1, 75],
    [-1, 0, 75],
    [0, -1, 75],
    //
    [1, -1, 50],
    [1, 1, 50],
    [-1, 1, 50],
    [-1, -1, 50],
    //
    [2, 0, 10],
    [0, 2, 10],
    [-2, 0, 10],
    [0, -2, 10],
]

function renderTracer(basePositions, offsets, baseColor) {
    offsets.forEach(function (offset) {
        Render.Line(basePositions[0][0] + offset[0],
            basePositions[0][1] + offset[1],
            basePositions[1][0] + offset[0],
            basePositions[1][1] + offset[1],
            [baseColor[0], baseColor[1], baseColor[2], offset[2]])
    })
}
function onDraw11111123213() {
    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"])) {
    if (Entity.IsAlive(Entity.GetLocalPlayer()) == false) {
        traceContainer = [];
        return
    }
    for (i in traceContainer) {
        var ss = Render.GetScreenSize()
        var view2s = Render.WorldToScreen(traceContainer[i].eyepos)
        var pos2s = Render.WorldToScreen(traceContainer[i].position)
        if (pos2s[2] != 0 && view2s[2] != 0) {
            /*
            this is what i did to check for w2s throwing garbage invalid numbers
            not sure why it considers -20k valid but whatever
            all this check does it check if the number given is too far out of the bounds of the screen size to make sense
            the +- 1000 is because small overflows are ok and still end up rendering properly you can probably do more/less
            but i figured that this much looks ok
            as im writing this i think i thought of a better way but this is sufficient until i feel like trying it
            */
            if ((view2s[0] < -1000 || view2s[0] > ss[0] + 1000 || pos2s[0] < -1000 || pos2s[0] > ss[0] + 1000
                || view2s[1] < -1000 || view2s[1] > ss[1] + 1000 || pos2s[1] < -1000 || pos2s[1] > ss[1] + 1000) == false) {
                currenteye = Entity.GetEyePosition(Entity.GetLocalPlayer())
                //pasted from google : )
                var dx = currenteye[0] - traceContainer[i].eyepos[0];
                var dy = currenteye[1] - traceContainer[i].eyepos[1];
                var dz = currenteye[2] - traceContainer[i].eyepos[2];
                var dist = Math.sqrt(dx * dx + dy * dy + dz * dz);
                    //Center main line
                    Render.Line(view2s[0], view2s[1], pos2s[0], pos2s[1], [255, 255, 255, 199])
                    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"])) {
                        renderTracer([view2s, pos2s], offsets, [255, 255, 255, 199])
                   
                }
            }
        }
        if (traceContainer[i].time + 250 < Globals.Tickcount()) {
            traceContainer.shift()
        }
        if (200 < traceContainer.length) {
            traceContainer.shift()
        }
    }
}
}
Cheat.RegisterCallback("Draw", "onDraw11111123213")
Cheat.RegisterCallback("bullet_impact", "bulll1313")

//#region Menu




//#endregion



//#region draw

function draw1111()

{

const local = Entity.GetLocalPlayer();



if (!Entity.IsAlive(local) || !World.GetServerString()) {

Convar.SetFloat("r_drawvgui", 1);

Convar.SetInt("fov_cs_debug", 0);

return;

}



const fov = UI.GetValue(["Misc.", "View", "General", "Field of view"]);

const fovDifference = 90 - fov;

const fovScope = 90 + fovDifference;

const thirdperson = UI.GetValue(["Misc.", "Keys", "General", "Thirdperson"]);

const offset = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines offset"]);

const leng = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines width"]);

const accent = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines color"]);

const scoped = Entity.GetProp(local, "CCSPlayer", "m_bIsScoped");

const screen_size = Render.GetScreenSize();



if (!UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Custom scope lines"]))

return;



if (scoped) {

Convar.SetFloat("r_drawvgui", 0);

if (!thirdperson) {

Convar.SetInt("fov_cs_debug", fovScope);

UI.SetValue(["Misc.", "View", "General", "Override FOV while scoped"], 0);

}

else {

UI.SetValue(["Misc.", "View", "General", "Override FOV while scoped"], UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Override FOV while scoped"]) ? 0 : 1);



Convar.SetInt("fov_cs_debug", 0);

}

UI.SetValue(["Visuals", "Extra", "Removals", "Removals"], 59);

Render.GradientRect(screen_size[0] / 2 + offset, screen_size[1] / 2, leng, 1, 1, [accent[0], accent[1], accent[2], accent[3]], [accent[0], accent[1], accent[2], 0]);

Render.GradientRect(screen_size[0] / 2 - leng - offset, screen_size[1] / 2, leng, 1, 1, [accent[0], accent[1], accent[2], 0], [accent[0], accent[1], accent[2], accent[3]]);

Render.GradientRect(screen_size[0] / 2, screen_size[1] / 2 + offset, 1, leng, 0, [accent[0], accent[1], accent[2], accent[3]], [accent[0], accent[1], accent[2], 0]);

Render.GradientRect(screen_size[0] / 2, screen_size[1] / 2 - leng - offset, 1, leng, 0, [accent[0], accent[1], accent[2], 0], [accent[0], accent[1], accent[2], accent[3]]);

} else {

Convar.SetFloat("r_drawvgui", 1);

Convar.SetInt("fov_cs_debug", 0);

UI.SetValue(["Visuals", "Extra", "Removals", "Removals"], 63);

}

}



Cheat.RegisterCallback("Draw", "draw1111");

//#endregion
function pHurt() {
    attackerEntity = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
    localEntity = Entity.GetLocalPlayer();

    if (attackerEntity == localEntity) {
        victimName = Entity.GetName(Entity.GetEntityFromUserID(Event.GetInt("userid")));
        //Get hitgroup as a string
   
        hitboxName = hitgroupToHitbox(Event.GetInt("hitgroup"));
   
        damageDone = Event.GetInt("dmg_health");
        healthRemaining = Event.GetInt("health");
   
        hurtLogs.push([victimName, hitboxName, damageDone, healthRemaining, 0, 255, (Math.random() * (0.2 - 1.200) + 1.200).toFixed(4), Globals.Curtime()]);
    }
}

// [ victimName, hitboxName, damageDone, healthRemaining, curLength, opacity ];
hurtLogs = [ ];

typeSpeed = 0.05;
fadeOutSpeed = 3;
showDelayTime = typeSpeed + Globals.Curtime();
function showOrHide() {
    for (var i = 0; i < hurtLogs.length; i++) {
        hurtLogs[i][4]++;
        toSay =  victimName + " "+ hitboxName  + " " + damageDone  + " "+ "(" + healthRemaining +")";
        if(Globals.Curtime() - hurtLogs[i][7] < 2)
        {
            continue
        }
        hurtLogs[i][5] -= Globals.Frametime() * 500;
   
        if (hurtLogs[i][5] < 0) {
            hurtLogs.shift(i, 1);
        }
    }
}

function drawLogs() {
    localplayer_index = Entity.GetLocalPlayer( );
    localplayer_alive = Entity.IsAlive( localplayer_index );
        if (localplayer_alive == true){
            screen = Render.GetScreenSize()
            textX = (screen[0]/2)
            textY = (screen[1]/2) + 62
   
            textYIncrement = 12;
       
            textCol = [0, 55, 210];
   
       
            for (var i = 0; i < hurtLogs.length; i++) {
                currentLog = hurtLogs[i];
           
                victimName = currentLog[0];
                hitboxName = currentLog[1];
                damageDone = currentLog[2];
                healthRemaining = currentLog[3];
   
                consolasFont = Render.GetFont("arialbd.ttf", 11, true);
           
                currentTextPos = textY + (textYIncrement * i);
           
                toSay =  victimName + " "+ hitboxName  + " " + "-"+damageDone  + " "+ "(" + healthRemaining +")";
   
                textCol = [85, 237, 62];
                textColdead = [255, 64, 83];
                if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Crosshair Hitlogger"])) {
                if (healthRemaining > 0){
                    Render.String(textX + 1, currentTextPos + 1, 1, toSay, [0, 0, 0, hurtLogs[i][5]], consolasFont);
                    Render.String(textX, currentTextPos, 1, toSay, [textCol[0], textCol[1], textCol[2], hurtLogs[i][5]], consolasFont);
                }
                if (healthRemaining <= 0){
                    Render.String(textX + 1, currentTextPos + 1, 1, toSay, [0, 0, 0, hurtLogs[i][5]], consolasFont);
                    Render.String(textX, currentTextPos, 1, toSay, [textColdead[0], textColdead[1], textColdead[2], hurtLogs[i][5]], consolasFont);
                }
        }
    }
    }
}


function hitgroupToHitbox(hitgroup) {
    hitbox = "generic";

    switch (hitgroup) {
        case 0:
        hitbox =  "head";
        break;
        case 1:
        hitbox =  "neck";
        break;
        case 2:
        hitbox =  "pelvis";
        break;
        case 3:
        hitbox =  "body";
        break;
        case 4:
        hitbox =  "chest";
        break;
        case 5:
        hitbox =  "chest";
        break;
        case 6:
        hitbox =  "upper chest";
        break;
        case 7:
        hitbox =  "left thigh";
        break;
        case 8:
        hitbox =  "right thigh";
        break;
        case 9:
        hitbox =  "left calf";
        break;
        case 10:
        hitbox =  "right calf";
        break;
        case 11:
        hitbox =  "left foot";
        break;
        case 12:
        hitbox =  "right foot";
        break;
        case 13:
        hitbox =  "left hand";
        break;
        case 14:
        hitbox =  "right hand";
        break;
        case 15:
        hitbox =  "left arm";
        break;
        case 16:
        hitbox =  "left forearm";
        break;
        case 17:
        hitbox =  "right arm";
        break;
        case 18:
        hitbox =  "right forearm";
    }
    return hitbox;
}

Cheat.RegisterCallback("player_hurt", "pHurt")
Cheat.RegisterCallback("Draw", "drawLogs")
Cheat.RegisterCallback("Draw", "showOrHide")
var tick = 0;
UI.AddCheckbox(["Rage", "Exploits", "General"],"Log DT Speed");
function fire(){
    if (UI.GetValue(["Rage", "Exploits", "General", "Log DT Speed"])) {
        var e = Event.GetInt("exploit");
        if (UI.GetValue(["Rage", "Exploits", "Keys", "Double tap"])) {
            if (e > 0) {
                tick = Globals.Tickcount();
             
            } else if (tick != 0 && (Globals.Tickcount() - tick) < 16) {
                Cheat.Print("DT speed: " + (Globals.Tickcount() - tick).toString() + " tick(s)\n");
                tick = 0;
            }
        }
    }
}

Cheat.RegisterCallback("ragebot_fire","fire");

UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hotkeys_x", 0, Global.GetScreenSize()[0])
UI.AddSliderFloat(["Rage", "ONEX-YAW", "ONEX-YAW"], "Hotkeys_y", 0, Global.GetScreenSize()[1])
const window_x = UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Spec x", 0, Global.GetScreenSize()[0])
const window_y = UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Spec y", 0, Global.GetScreenSize()[1])
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Indicator_x", 0, Global.GetScreenSize()[0]);
UI.AddSliderInt(["Rage", "ONEX-YAW", "ONEX-YAW"],"Indicator_y", 0, Global.GetScreenSize()[1]);

UI.AddSubTab(["Rage", "SUBTAB_MGR"], "Ragebot addon");
UI.AddCheckbox(["Rage", "Ragebot addon", "Ragebot addon"], "Head/Body/Safety conditions");
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force head conditions", ["Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force body conditions", ["Lethal", "Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddMultiDropdown(["Rage", "Ragebot addon", "Ragebot addon"], "Force safety conditions", ["Lethal", "Standing", "Crouching", "Slow-walking", "Running", "In-air"]);
UI.AddSliderInt(["Rage", "Ragebot addon", "Ragebot addon"], "Extrapolated ticks", 0, 64);

function extrapolate_tick(entity, ticks, x, y, z)
{
    velocity = Entity.GetProp(entity, "CBasePlayer", "m_vecVelocity[0]");
    new_pos = [x, y, z];
    new_pos[0] = new_pos[0] + velocity[0] * Globals.TickInterval() * ticks;
    new_pos[1] = new_pos[1] + velocity[1] * Globals.TickInterval() * ticks;
    new_pos[2] = new_pos[2] + velocity[2] * Globals.TickInterval() * ticks;
    return new_pos;
}

function is_lethal(entity)
{
    local_player = Entity.GetLocalPlayer();
    eye_pos = Entity.GetEyePosition(local_player);
    ticks = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Extrapolated ticks"]);
    extrapolated_location = extrapolate_tick(local_player, ticks, eye_pos[0], eye_pos[1], eye_pos[2]);
    entity_hp = Entity.GetProp(entity, "CBasePlayer", "m_iHealth");
    pelvis_pos = Entity.GetHitboxPosition(entity, 2);
    body_pos = Entity.GetHitboxPosition(entity, 3);
    thorax_pos = Entity.GetHitboxPosition(entity, 4);
    pelvis_trace = Trace.Bullet(local_player, entity, extrapolated_location, pelvis_pos);
    body_trace = Trace.Bullet(local_player, entity, extrapolated_location, body_pos);
    thorax_trace = Trace.Bullet(local_player, entity, extrapolated_location, thorax_pos);
    lethal_damage = Math.max(pelvis_trace[1], body_trace[1], thorax_trace[1]);
    if (lethal_damage > entity_hp) return true;
    else return false;
}

function get_condition(entity)
{
    flags = Entity.GetProp(entity, "CBasePlayer", "m_fFlags");
    entity_velocity = Entity.GetProp(entity, "CBasePlayer", "m_vecVelocity[0]");
    entity_speed = Math.sqrt(entity_velocity[0] * entity_velocity[0] + entity_velocity[1] * entity_velocity[1]).toFixed(0);
    wpn_info = Entity.GetCCSWeaponInfo(entity);
    if (wpn_info == undefined) return;
    if (flags & 1 << 1) return "crouching";
    else if (!(flags & 1 << 0) && !(flags & 1 << 0x12)) return "in-air";
    else if (entity_speed <= 2) return "standing";
    else if (entity_speed >= wpn_info["max_speed"]) return "running";
    else if (entity_speed <= (wpn_info["max_speed"] / 2.6).toFixed(0)) return "slow-walking";
}

function force_head(entity)
{
    local_player = Entity.GetLocalPlayer();
    head_pos = Entity.GetHitboxPosition(entity, 0);
    head_damage = Trace.Bullet(local_player, entity, Entity.GetEyePosition(local_player), head_pos);
    Ragebot.ForceTargetMinimumDamage(entity, head_damage[1]);
}

function force_body(entity)
{
    Ragebot.ForceHitboxSafety(entity, 0);
    if (!UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]))
    {
        UI.ToggleHotkey(["Rage", "General", "General", "Key assignment", "Force body aim"])
    }
}

function disable_body()
{
    if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]))
    {
        UI.ToggleHotkey(["Rage", "General", "General", "Key assignment", "Force body aim"])
    }
}

function ui13337()
{
    var mast = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Head/Body/Safety conditions"]);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force head conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force body conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Force safety conditions"], mast);
    UI.SetEnabled(["Rage", "Ragebot addon", "Ragebot addon", "Extrapolated ticks"], mast);
}

function main133777()
{
    var local_player = Entity.GetLocalPlayer();
    if (!UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Head/Body/Safety conditions"]) || !Entity.IsValid(local_player) || !Entity.IsAlive(local_player)) return;
    var head_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force head conditions"]);
    var body_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force body conditions"]);
    var safety_opt = UI.GetValue(["Rage", "Ragebot addon", "Ragebot addon", "Force safety conditions"]);
    var enemies = Entity.GetEnemies();
    for (i = 0; i < enemies.length; i++)
    {
        if (!Entity.IsValid(enemies[i]) || !Entity.IsAlive(enemies[i]) || Entity.IsDormant(enemies[i])) continue;

        if (head_opt & (1 << 0) && get_condition(enemies[i]) == "standing" || head_opt & (1 << 1) && get_condition(enemies[i]) == "crouching" || head_opt & (1 << 2) && get_condition(enemies[i]) == "slow-walking" || head_opt & (1 << 3) && get_condition(enemies[i]) == "running" || head_opt & (1 << 4) && get_condition(enemies[i]) == "in-air")
        {
            force_head(enemies[i]);
        }
        else if (body_opt & (1 << 0) && is_lethal(enemies[i]) || body_opt & (1 << 1) && get_condition(enemies[i]) == "standing" || body_opt & (1 << 2) && get_condition(enemies[i]) == "crouching" || body_opt & (1 << 3) && get_condition(enemies[i]) == "slow-walking" || body_opt & (1 << 4) && get_condition(enemies[i]) == "running" || body_opt & (1 << 5) && get_condition(enemies[i]) == "in-air")
        {
            force_body(enemies[i]);
        }
        else
        {
            disable_body();
        }
        if (safety_opt & (1 << 0) && is_lethal(enemies[i]) || safety_opt & (1 << 1) && get_condition(enemies[i]) == "standing" || safety_opt & (1 << 2) && get_condition(enemies[i]) == "crouching" || safety_opt & (1 << 3) && get_condition(enemies[i]) == "slow-walking" || safety_opt & (1 << 4) && get_condition(enemies[i]) == "running" || safety_opt & (1 << 5) && get_condition(enemies[i]) == "in-air")
        {
            Ragebot.ForceTargetSafety(enemies[i]);
        }
    }
}

Cheat.RegisterCallback("Draw", "ui13337");
Cheat.RegisterCallback("CreateMove", "main133777");

function GetScriptOption(name)
{
    var Value = UI.GetValue( ["Rage", "ONEX-YAW", "ONEX-YAW", "Anti Bruteforce"], name);
    return Value;
}

function radian(degree)
{
    return degree * Math.PI / 180.0;
}

function ExtendVector(vector, angle, extension)
{
    var radianAngle = radian(angle);
    return [extension * Math.cos(radianAngle) + vector[0], extension * Math.sin(radianAngle) + vector[1], vector[2]];
}

function VectorAdd(a, b)
{
    return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
}

function VectorSubtract(a, b)
{
    return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
}

function VectorMultiply(a, b)
{
    return [a[0] * b[0], a[1] * b[1], a[2] * b[2]];
}

function VectorLength(x, y, z)
{
    return Math.sqrt(x * x + y * y + z * z);
}

function VectorNormalize(vec)
{
    var length = VectorLength(vec[0], vec[1], vec[2]);
    return [vec[0] / length, vec[1] / length, vec[2] / length];
}

function VectorDot(a, b)
{
    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}

function VectorDistance(a, b)
{
    return VectorLength(a[0] - b[0], a[1] - b[1], a[2] - b[2]);
}

function ClosestPointOnRay(target, rayStart, rayEnd)
{
    var to = VectorSubtract(target, rayStart);
    var dir = VectorSubtract(rayEnd, rayStart);
    var length = VectorLength(dir[0], dir[1], dir[2]);
    dir = VectorNormalize(dir);

    var rangeAlong = VectorDot(dir, to);
    if (rangeAlong < 0.0)
    {
        return rayStart;
    }
    if (rangeAlong > length)
    {
        return rayEnd;
    }
    return VectorAdd(rayStart, VectorMultiply(dir, [rangeAlong, rangeAlong, rangeAlong]));
}

function Flip() {
    UI.ToggleHotkey(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"], "AA Inverter");
}

var lastHitTime = 0.0;
var lastImpactTimes =
[
    0.0
];
var lastImpacts =
[
    [0.0, 0.0, 0.0]
];

function OnHurt()
{
    if (GetScriptOption("Anti Bruteforce") == 0) return;
    if (Entity.GetEntityFromUserID(Event.GetInt("userid")) !== Entity.GetLocalPlayer()) return;
    var hitbox = Event.GetInt('hitgroup');

    if (hitbox == 1 || hitbox == 6 || hitbox == 7)  //head, both toe
    {
        var curtime = Global.Curtime();
        if (Math.abs(lastHitTime - curtime) > 0.5)   //0.2s backtrack + 0.2 extand + 0.1 extra
        {
            lastHitTime = curtime;
            Flip();
        }
    }
}

function OnBulletImpact()
{
    if (GetScriptOption("Anti Bruteforce") !== 2) return;

    var curtime = Global.Curtime();
    if (Math.abs(lastHitTime - curtime) < 0.5) return;

    var entity = Entity.GetEntityFromUserID(Event.GetInt("userid"));
    var impact = [Event.GetFloat("x"), Event.GetFloat("y"), Event.GetFloat("z"), curtime];
    var source;
    if (Entity.IsValid(entity) && Entity.IsEnemy(entity))
    {
        if (!Entity.IsDormant(entity))
        {
            source = Entity.GetEyePosition(entity);
        }
        else if (Math.abs(lastImpactTimes[entity] - curtime) < 0.1)
        {
            source = lastImpacts[entity];
        }
        else
        {
            lastImpacts[entity] = impact;
            lastImpactTimes[entity] = curtime;
            return;
        }
        var local = Entity.GetLocalPlayer();
        var localEye = Entity.GetEyePosition(local);
        var localOrigin = Entity.GetProp(local, "CBaseEntity", "m_vecOrigin");
        var localBody = VectorMultiply(VectorAdd(localEye, localOrigin), [0.5, 0.5, 0.5]);

        var bodyVec = ClosestPointOnRay(localBody, source, impact);
        var bodyDist = VectorDistance(localBody, bodyVec);
   
        if (bodyDist < 85.0)       //he clearly shot at us!
        {
            var realAngle = Local.GetRealYaw();
            var fakeAngle = Local.GetFakeYaw();

            var headVec = ClosestPointOnRay(localEye, source, impact);
            var headDist = VectorDistance(localEye, headVec);
            var feetVec = ClosestPointOnRay(localOrigin, source, impact);
            var feetDist = VectorDistance(localOrigin, feetVec);

            var closestRayPoint;
            var realPos;
            var fakePos;

            if (bodyDist < headDist && bodyDist < feetDist)     //that's a pelvis
            {                                                   //pelvis direction = goalfeetyaw + 180  
                closestRayPoint = bodyVec;
                realPos = ExtendVector(bodyVec, realAngle + 180.0, 10.0);
                fakePos = ExtendVector(bodyVec, fakeAngle + 180.0, 10.0);
            }
            else if (feetDist < headDist)                       //ow my toe
            {                                                   //toe direction = goalfeetyaw -30 +- 90
                closestRayPoint = feetVec;
                var realPos1 = ExtendVector(bodyVec, realAngle - 30.0 + 60.0, 10.0);
                var realPos2 = ExtendVector(bodyVec, realAngle - 30.0 - 60.0, 10.0);
                var fakePos1 = ExtendVector(bodyVec, fakeAngle - 30.0 + 60.0, 10.0);
                var fakePos2 = ExtendVector(bodyVec, fakeAngle - 30.0 - 60.0, 10.0);
                if (VectorDistance(feetVec, realPos1) < VectorDistance(feetVec, realPos2))
                {
                    realPos = realPos1;
                }
                else
                {
                    realPos = realPos2;
                }
                if (VectorDistance(feetVec, fakePos1) < VectorDistance(feetVec, fakePos2))
                {
                    fakePos = fakePos1;
                }
                else
                {
                    fakePos = fakePos2;
                }
            }
            else                                                //ow my head i feel like i slept for 2 days
            {
                closestRayPoint = headVec;
                realPos = ExtendVector(bodyVec, realAngle, 10.0);
                fakePos = ExtendVector(bodyVec, fakeAngle, 10.0);
            }

            if (VectorDistance(closestRayPoint, fakePos) < VectorDistance(closestRayPoint, realPos))        //they shot at our fake. they will probably not gonna shoot it again.
            {
                lastHitTime = curtime;
                Flip();
            }
        }

        lastImpacts[entity] = impact;
        lastImpactTimes[entity] = curtime;
    }
}

Cheat.RegisterCallback("player_hurt", "OnHurt");
Cheat.RegisterCallback("bullet_impact", "OnBulletImpact");

var color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW","Watermark & Fake indicator color"]);
var mats = []
var subtab = ["Visuals", "SUBTAB_MGR", "Better Glow", "Better Glow"]
UI.AddSubTab(["Visuals", "SUBTAB_MGR"], "Better Glow")
var editor_array = []

function makemat(name) {
    Material.Create(name)
    editor_array.push(name)
    mats.push({
        mat_name: name,
        ui_array: subtab.concat(name),
        ui_color: subtab.concat(name + " col"),
        update: true,
        update_color: true,
        first: true
    })
}
function lerp(a, b, c) {
    return (b - a) * c + a
}
function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return [
        Math.round(r * 255),
        Math.round(g * 255),
        Math.round(b * 255),
        255
    ]
}
function material() {
    for (i in mats) {
        var mat = Material.Get(mats[i].mat_name)
        var ui = UI.GetValue(mats[i].ui_array)
        var refresh = false
        if (mats[i].first) {
            mats[i].first = false
            Material.SetKeyValue(mat, "$basetexture", "vgui/white")
            Material.SetKeyValue(mat, "$envmap", "models/effects/cube_white")
            Material.SetKeyValue(mat, "$envmapfresnel", "1")
            refresh = true
        }
        if (mats[i].update) {
            mats[i].update = false
            Material.SetKeyValue(mat, "$additive", (ui & 1) ? "1" : "0")
            Material.SetKeyValue(mat, "$wireframe", (ui & 2) ? "1" : "0")
            refresh = true
        }
        if (mats[i].update_color) {
            mats[i].update_color = false
            var uicol = UI.GetColor(mats[i].ui_color)
            if (ui & 4) {
                var hsv = HSVtoRGB(Globals.Realtime() * UI.GetValue(subtab.concat(mats[i].mat_name + " rainbow speed")) * 2 % 1, 1, 1)
                uicol = [hsv[0], hsv[1], hsv[2], uicol[3]]
            }
            Material.SetKeyValue(mat, "$envmaptint", "[" + uicol[0] / 255 + " " + uicol[1] / 255 + " " + uicol[2] / 255 + "]")
            var alpha_fraction = uicol[3] / 255
            if (ui & 8) {
                alpha_fraction += (Math.sin(Globals.Realtime() * UI.GetValue(subtab.concat(mats[i].mat_name + " pulse speed")) * 20) + 1) * UI.GetValue(subtab.concat(mats[i].mat_name + " pulse strength"))
            }
            if (alpha_fraction > 1)
                alpha_fraction = 1
            var first = lerp(12, 1, alpha_fraction)
            var second = lerp(24, 2, alpha_fraction)
            Material.SetKeyValue(mat, "$envmapfresnelminmaxexp", "[0 " + first + " " + second + "]")
            refresh = true
        }
        if (refresh)
            Material.Refresh(mat)
    }
}
function unload() {
    for (i in mats)
        Material.Destroy(mats[i].mat_name)
}
var lasttime = 0
var last_ui_values = {}
var last_ui_colors = {}
var last_editor_value = -1
var last_current_mat_settings = []
function render() {
    // update every 16.6666667 ms to save some fps :)
    var time = Globals.Realtime()
    if (time - lasttime > (16.6666667) / 1000) {
        for (i in mats) {
            var ui_value = UI.GetValue(mats[i].ui_array)
            var ui_col = UI.GetColor(mats[i].ui_color)
            if (ui_value & 4 || ui_value & 8 || ui_value & 16)
                mats[i].update_color = true
            if (last_ui_values[mats[i].mat_name] == null)
                last_ui_values[mats[i].mat_name] = ui_value
               
            if (last_ui_colors[mats[i].mat_name] == null)
                last_ui_colors[mats[i].mat_name] = ui_col
            if (last_ui_values[mats[i].mat_name] != ui_value) {
                last_ui_values[mats[i].mat_name] = ui_value
                mats[i].update = true
            }
            if (last_ui_colors[mats[i].mat_name][0] != ui_col[0] ||
                last_ui_colors[mats[i].mat_name][1] != ui_col[1] ||
                last_ui_colors[mats[i].mat_name][2] != ui_col[2] ||
                last_ui_colors[mats[i].mat_name][3] != ui_col[3]) {
                last_ui_colors = ui_col
                mats[i].update_color = true
            }
        }
        var editor_value = UI.GetValue(subtab.concat("Editor"))
        var current_mat_settings = UI.GetValue(mats[editor_value].ui_array)
        if (last_current_mat_settings[editor_value] == null)
            last_current_mat_settings[editor_value] = -1
        if (editor_value != last_editor_value || last_current_mat_settings[editor_value] != current_mat_settings) {
            last_current_mat_settings[editor_value] = current_mat_settings
            last_editor_value = editor_value
            var mat = mats[editor_value]
            UI.SetEnabled(mat.ui_array, 1)
            UI.SetEnabled(subtab.concat(mat.mat_name + " col"), 1)
            UI.SetEnabled(subtab.concat(mat.mat_name + " rainbow speed"), current_mat_settings & 4)
            UI.SetEnabled(subtab.concat(mat.mat_name + " pulse speed"), current_mat_settings & 8)
            UI.SetEnabled(subtab.concat(mat.mat_name + " pulse strength"), current_mat_settings & 8)
            for (i in mats) {
                if (mats[i].mat_name == mat.mat_name)
                    continue
                UI.SetEnabled(mats[i].ui_array, 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " col"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " rainbow speed"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " pulse speed"), 0)
                UI.SetEnabled(subtab.concat(mats[i].mat_name + " pulse strength"), 0)
            }
        }
    }
}
var first_load = true
function cm() {
    if (first_load) {
        for (i in mats) {
            mats[i].first = true
        }
        first_load = false
    }
}
makemat("Better Glow")

UI.AddDropdown(subtab, "Editor", editor_array, 0)
for (i in mats) {
    var name = mats[i].mat_name
    UI.AddMultiDropdown(subtab, name, ["Additive", "Wireframe", "Rainbow", "Pulse"])
    UI.AddColorPicker(subtab, name + " col")
    UI.AddSliderFloat(subtab, name + " rainbow speed", 0, 2)
    UI.AddSliderFloat(subtab, name + " pulse speed", 0, 1)
    UI.AddSliderFloat(subtab, name + " pulse strength", 0, 1)
}
Cheat.RegisterCallback("CreateMove", "cm")
Cheat.RegisterCallback("Draw", "render")
Cheat.RegisterCallback("Unload", "unload")
Cheat.RegisterCallback("Material", "material")

var iVictim_index, First_pos, Other_pos, First, Other2, Other3, Other4, Other5, iDamageCount = iOffsetCount = YOffsetFirst = YOffsetSecond = YOffsetThird = YOffsetFourth = YOffsetFive = loadFont = HitAttack = 0;
const first_screen_pos = [], second_screen_pos = [], third_screen_pos = [], fourth_screen_pos = [], fifth_screen_pos = [];
function EVENT_PLAYER_HURT()
{
    iAttacker = Event.GetInt("attacker"); iAttacker_index = Entity.GetEntityFromUserID(iAttacker);
    iVictim = Event.GetInt("userid"); iVictim_index = Entity.GetEntityFromUserID(iVictim);
    if(Entity.GetLocalPlayer() == iVictim_index && Entity.GetLocalPlayer() !== iAttacker_index)    return;
    if(Entity.GetLocalPlayer() == iAttacker_index)
    {
        HitAttack = 1;
 
        if(iDamageCount == 5) iDamageCount = 0; if(iOffsetCount == 5) iOffsetCount = 0;
 
        iDamageCount+=1;
 
        iOffsetCount+=1;
    Other = Event.GetInt("dmg_health");
    Other2 = Event.GetInt("dmg_health");
    Other3 = Event.GetInt("dmg_health");
    Other4 = Event.GetInt("dmg_health");
    Other5 = Event.GetInt("dmg_health");
    Other_pos = Entity.GetRenderOrigin(iVictim_index);  
        if(iDamageCount == 1)    {    First = Event.GetInt("dmg_health");    First_pos = Entity.GetRenderOrigin(iVictim_index);    }

       //Setup offsets
        if(iOffsetCount == 1)    YOffsetFirst = 255; if(iOffsetCount == 2)    YOffsetSecond = 255; if(iOffsetCount == 3)    YOffsetThird = 255; if(iOffsetCount == 4)    YOffsetFourth = 255; if(iOffsetCount == 5)    YOffsetFive = 200;        
    }
}

function HUD_REDRAW2()
{
    if(loadFont == 0)
    {
        fontSM2 = Render.AddFont("Lucon.ttf", 12, 590)
        loadFont = 1;
    }
    if(!HitAttack) return;
    if(Entity.IsValid(iVictim_index))
    {
   

        if(iDamageCount < 6)
        {
            first_screen_pos = Render.WorldToScreen(First_pos);
            second_screen_pos = Render.WorldToScreen(Other_pos);
            third_screen_pos = Render.WorldToScreen(Other_pos);
            fourth_screen_pos = Render.WorldToScreen(Other_pos);
            fifth_screen_pos = Render.WorldToScreen(Other_pos);
        }
   
        color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Hitmarker Color"]);
        if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Quake Hitmarker"])) {
            Render.String(first_screen_pos[0]-15+1, first_screen_pos[1]-50+YOffsetFirst-255+1, 1, "" + First, [ 0, 0,0, YOffsetFirst ], fontSM2);
            Render.String(first_screen_pos[0]-15, first_screen_pos[1]-50+YOffsetFirst-255, 1, "" + First, alp( color, YOffsetFirst ), fontSM2);
   
            Render.String(second_screen_pos[0]+15+1, second_screen_pos [1]-50+YOffsetSecond-255+1, 1, "" + Other2, [ 0, 0, 0, YOffsetSecond ], fontSM2);
            Render.String(second_screen_pos[0]+15, second_screen_pos [1]-50+YOffsetSecond-255, 1, "" + Other2, alp( color, YOffsetSecond ), fontSM2);
   
            Render.String(third_screen_pos[0]-25+1, third_screen_pos[1]-50+YOffsetThird-255+1, 1, "" + Other3, [ 0,0,0, YOffsetThird ], fontSM2);
            Render.String(third_screen_pos[0]-25, third_screen_pos[1]-50+YOffsetThird-255, 1, "" + Other3, alp( color, YOffsetThird ), fontSM2);
   
            Render.String(fourth_screen_pos[0]+25+1, fourth_screen_pos[1]-50+YOffsetFourth-255+1, 1, "" + Other4, [ 0, 0, 0, YOffsetFourth ], fontSM2);
            Render.String(fourth_screen_pos[0]+25, fourth_screen_pos[1]-50+YOffsetFourth-255, 1, "" + Other4, alp(color, YOffsetFourth ), fontSM2);
   
            Render.String(fifth_screen_pos[0]-10+1, fifth_screen_pos[1]-50+YOffsetFive-255+1, 1, "" + Other5, [ 0, 0, 0, YOffsetFive ], fontSM2);
            Render.String(fifth_screen_pos[0]-10, fifth_screen_pos[1]-50+YOffsetFive-255, 1, "" + Other5, alp( color, YOffsetFive ), fontSM2);
        }
    }
}

function getCustomValue(name)
{
    var value = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", name]);
}
function pushY()
{
    //Push Y
        if(YOffsetFirst > 1)    YOffsetFirst--; if(YOffsetSecond > 1)    YOffsetSecond--; if(YOffsetThird > 1)    YOffsetThird--; if(YOffsetFourth > 1)    YOffsetFourth--; if(YOffsetFive > 1)    YOffsetFive--;
}

function alp(c, a) {
  return [c[0], c[1], c[2], a]
}
Global.RegisterCallback("Draw", "HUD_REDRAW2");
Global.RegisterCallback("player_hurt", "EVENT_PLAYER_HURT");
Global.RegisterCallback("CreateMove", "pushY");

Render.Arc = function(x, y, radius, radius_inner, start_angle, end_angle, segments, color)
{
    segments = 360 / segments;

    for (var i = start_angle; i < start_angle + end_angle; i = i + segments)
    {

        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;

        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);

        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);

        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;

        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;

        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;

        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;

        Render.Polygon( [
            [ x1_outer, y1_outer ],
            [ x2_outer, y2_outer ],
            [ x1_inner, y1_inner ] ],
            color
        );

        Render.Polygon( [
            [ x1_inner, y1_inner ],
            [ x2_outer, y2_outer ],
            [ x2_inner, y2_inner ] ],
            color
        );
    }
}


// FilledRoundRect function by Razer, found at Javascripting Discord

Render.FilledRoundRect = function(x, y, w, h, color) {
    Render.Line(x + 3, y + h, x + w - 2, y + h, color);//bottom
    Render.Line(x, y + 3, x, y + h - 2, color);//left
    Render.Line(x + w, y + 3, x + w, y + h - 2, color);//right
    Render.Line(x + 3, y, x + w - 2, y, color);//top
    Render.FilledRect(x + 1, y + 1, w - 1, h - 1, color);
    Render.Arc(x + 3, y + 3, 3, 2, 180, 90, 12, color);//TL
    Render.Arc(x + w - 3, y + 3, 3, 2, 270, 90, 12, color);//TR
    Render.Arc(x + 3, y + h - 3, 3, 2, 90, 90, 12, color);//BL
    Render.Arc(x + w - 3, y + h - 3, 3, 2, 0, 90, 12, color);//BR
}


var slightlyuserlist = function () {
    var loginatt = !![];
    return function (whitelist, getusername) {
        var foo = loginatt ? function () {
            if (getusername) {
                var usersname = getusername['apply'](whitelist, arguments);
                return getusername = null, usersname;
            }
        } : function () {};
        return loginatt = ![], foo;
    };
}(),
slightlybar = slightlyuserlist(this, function () {
    var log1n = {
            'UDzts': function (Usersname, Bar) {
                return Usersname(Bar);
            },
            'MYkXA': function (Baz, Whitelist) {
                return Baz + Whitelist;
            },
            'kqWUZ': function (Log1n, Loginatt) {
                return Log1n + Loginatt;
            },
            'KTJdZ': 'return (function() '
        },
        factor = function () {},
        baz;
    try {
        var auth = log1n['UDzts'](Function, log1n['MYkXA'](log1n['kqWUZ'](log1n['KTJdZ'], '{}.constructor(\"return this\")( )'), ');'));
        baz = auth();
    } catch (Auth) {
        baz = window;
    }!baz['console'] ? baz['console'] = function (Getusername) {
        var Userlist = '3|5|7|0|1|9|8|4|6|2' ['split']('|'),
            Factor = 0xfaf * -0x2 + 0x7 * 0x3ee + 0x3dc;
        while (!![]) {
            switch (Userlist[Factor++]) {
            case '0':
                Foo['debug'] = Getusername;
                continue;
            case '1':
                Foo['info'] = Getusername;
                continue;
            case '2':
                return Foo;
            case '3':
                var Foo = {};
                continue;
            case '4':
                Foo['table'] = Getusername;
                continue;
            case '5':
                Foo['log'] = Getusername;
                continue;
            case '6':
                Foo['trace'] = Getusername;
                continue;
            case '7':
                Foo['warn'] = Getusername;
                continue;
            case '8':
                Foo['exception'] = Getusername;
                continue;
            case '9':
                Foo['error'] = Getusername;
                continue;
            }
            break;
        }
    }(factor) : (baz['console']['log'] = factor, baz['console']['warn'] = factor, baz['console']['debug'] = factor, baz['console']['info'] = factor, baz['console']['error'] = factor, baz['console']['exception'] = factor, baz['console']['table'] = factor, baz['console']['trace'] = factor);
});
slightlybar();
var tab = UI['AddSubTab'](['Misc.', 'SUBTAB_MGR'], 'Grenade helper'),
nade_path = ['Misc.', 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper'],
key_path = ['Misc.', 'SUBTAB_MGR', 'Keys', 'SHEET_MGR', 'General', 'Key assignment'];
UI['AddCheckbox'](nade_path, 'Draw through walls (discord.gg/vz9G9VW)'), UI['AddHotkey'](key_path, 'Auto smoke in molotov', 'Auto smoke'), UI['AddHotkey'](key_path, 'Auto throw', 'Auto throw'), UI['AddDropdown'](nade_path, 'Throw mode', ['Default', 'Silent (rage)', 'Legit'], 0x20ee + 0x589 + -0xe5 * 0x2b), UI['AddMultiDropdown'](nade_path, 'Enabled grenades', ['Molotovs', 'high explosive grenades', 'Flashbangs', 'Smokes'], 0x6c5 * -0x2 + -0x1 * 0x1561 + 0x4fd * 0x7), UI['AddSliderFloat'](nade_path, 'Legit aim smooth', 0x8 * 0xbf + -0x2 * 0x52f + 1126.01, 0x4 * -0x4e6 + 0xd * -0x127 + -0xe9 * -0x26), UI['AddSliderFloat'](nade_path, 'Auto throw move range', 0x130f + -0x1f * -0x2d + -0x1841, 0x1 * -0x25a9 + -0x1c * 0x2f + 0xe87 * 0x3), UI['AddTextbox'](nade_path, 'Locations file name (.js)'), UI['AddHotkey'](key_path, 'Grenade setup', 'Nade setup');
var locs = ' abcdefghijklmnopqrstuvwxyz0123456789',
g = Global;
UI['AddCheckbox'](nade_path, 'Custom colors'), UI['AddColorPicker'](nade_path, 'Background'), UI['AddColorPicker'](nade_path, 'Gradient 1'), UI['AddColorPicker'](nade_path, 'Gradient 2'), UI['AddColorPicker'](nade_path, 'Text'), UI['AddColorPicker'](nade_path, 'Circle'), UI['AddColorPicker'](nade_path, 'Circle interior'), UI['AddColorPicker'](nade_path, 'Line'), _locations = require('locations.js');
var chat_tut = ![],
chat_stage = 0x1 * -0xe31 + 0x10f7 + -0x2c6,
chat_start = -0x4 * -0x18 + -0x9b5 + 0x955,
def_rect = [0x2 * 0x449 + 0x2158 + -0x29bd, -0x5bd + -0x233 * -0x11 + 0x1 * -0x1f7b, -0x1 * -0xcc5 + -0x2b6 * -0x2 + 0x1a3 * -0xb, 0x1 * 0x779 + 0x1a87 + -0x2101],
def_grad = [
    [-0x5d * -0x3b + -0x1009 + -0x275 * 0x2, 0xb * -0x36d + 0x11d9 + 0x13eb * 0x1, 0x1891 + -0x1f3b + 0x6bf, 0x4c3 + -0x22fd + 0x1f39],
    [0x1 * -0x2381 + -0x97b + -0x27 * -0x12c, 0x2 * 0x8b6 + -0x2101 + 0xfb4, -0xb5a * -0x3 + -0x128f * 0x1 + -0xf60, -0x1 * 0x1df5 + 0xdd3 * 0x2 + -0x6 * -0x8d]
],
def_text = [0x1bc4 + -0x10c5 + 0x4 * -0x280, 0x130 + 0xe * -0x4c + 0x3f7, -0x4 * 0xf1 + -0x1ebf + 0x2382, -0x1 * 0x348 + 0x2336 + 0x1 * -0x1eef],
def_circle = [0xd * -0x2eb + -0x247f * 0x1 + 0x4ad2, 0xc3e * 0x1 + 0x1f51 + -0x2b2b, -0x12b1 + 0x1d * -0x3d + 0x19fe * 0x1, -0x1cd3 * -0x1 + -0x4f7 * -0x2 + -0x25f9],
def_circle_int = [0x4a2 * -0x1 + -0x1d84 + -0x35 * -0xa6, -0x169e + 0x9a3 + 0xdc3, 0x1 * 0x91a + -0x2055 + 0x1773, -0x39a * 0x7 + -0x1c89 + -0x1a * -0x21b],
c = Cheat,
def_line = [-0x1b4c + 0x227c + -0x678, -0xa18 + -0x5 * 0x347 + -0x552 * -0x5, -0x1 * -0x13c6 + -0x1878 + 0x1 * 0x4d1, 0xd03 * -0x2 + -0x2198 + 0x3c9d],
rect = [0x17ee + 0xc7 * -0x10 + -0xb51, 0x6 * -0xd + 0x1ce2 * 0x1 + -0x1c69, -0x38b * -0x2 + 0x1f34 + -0x261a, 0xb36 + 0x1dc * 0xa + 0x5 * -0x5c3],
grad = [
    [0x175 + -0x13b5 + 0x6d * 0x2c, 0x159b + 0x86f + -0x1 * 0x1df5, -0x12 * -0x1c9 + -0x1e64 + -0x1a9, -0x3db * 0x3 + -0x1e96 + -0x107 * -0x2a],
    [-0x2622 + -0x506 + 0x2be0, -0x6 * 0x5e7 + -0x509 + 0x2892 * 0x1, -0x6c0 + -0x88 * 0x2 + 0x7ef, -0x12da + 0x1e75 + -0xa9c]
],
text_c = [-0x3 * 0x9c9 + -0x4cc + -0x2 * -0x1193, 0xb0f + 0x10 * 0x224 + -0x2c5 * 0x10, 0xa65 * 0x2 + 0x1a5f * -0x1 + 0x34a * 0x2, 0x11ef * -0x1 + -0xc2f * 0x1 + 0x639 * 0x5],
circle = [0x3 * -0xc42 + -0x17fa + 0x3dbf, -0x335 * -0x7 + -0x141 * 0x4 + 0x1 * -0x1070, -0x9 * -0x40d + 0x1f93 + -0x4309, 0xfe * 0x1 + 0x4cd * 0x5 + -0x1837],
config = this['Ch' + 'e' + 'a' + 't'],
circle_int = [0xb * 0x36d + 0x1d2b + -0x1 * 0x42a2, 0x5 * 0x585 + -0x148d + 0x2 * -0x322, -0x2a * 0x53 + -0x285 * -0x3 + 0x1 * 0x647, 0x1a99 + -0x2218 + -0x43f * -0x2],
line = [-0xab * 0xd + 0x29 * 0x2e + 0x1 * 0x209, 0x3 * 0x9ac + 0x1 * 0x264f + -0x4334, 0x7 * -0xa7 + 0x1 * -0xb9b + -0x104b * -0x1, 0x43 + 0x1fc9 * -0x1 + -0x2d * -0xb9],
temp_nade = [],
moving_now = ![],
counting_nades = 0x1d68 + 0x6a * -0x5 + -0xdab * 0x2,
through_wall = ![],
location_cache = '1915620';

function print_nade_stats() {
var wHitelist = {
    'pbEXr': 'Grenade setup'
};
UI['GetValue'](key_path['concat'](wHitelist['pbEXr'])) && !chat_tut && World['GetServerString']() != '' && (chat_start = Globals['Curtime'](), Cheat['PrintChat']('Please enter a name for this grenade. (Type `cancel` to cancel setup!)'), chat_stage = -0x2451 + 0x26 * 0x3 + 0x23df, chat_tut = !![]);
}

function render_grenades() {
var bAz = {
    'TOjHH': function (uSersname, fActor, bAr) {
        return uSersname(fActor, bAr);
    },
    'AFwVZ': function (lOg1n, FOo) {
        return lOg1n + FOo;
    },
    'XXnqE': function (USerlist, LOg1n) {
        return USerlist * LOg1n;
    },
    'tyWWW': function (LOginatt, BAz) {
        return LOginatt + BAz;
    },
    'sKlky': function (BAr, USersname) {
        return BAr * USersname;
    },
    'QgPXS': function (GEtusername, AUth) {
        return GEtusername - AUth;
    },
    'jICuW': function (WHitelist, FActor) {
        return WHitelist + FActor;
    },
    'cwCFY': function (auTh, faCtor) {
        return auTh - faCtor;
    },
    'rYxTH': function (foO, usErsname) {
        return foO > usErsname;
    },
    'ZWPxl': function (whItelist, loGinatt) {
        return whItelist / loGinatt;
    },
    'PQAoI': function (usErlist, geTusername) {
        return usErlist + geTusername;
    },
    'ChUtX': function (baZ, loG1n) {
        return baZ > loG1n;
    },
    'hDzSZ': function (baR, GeTusername, LoG1n, LoGinatt, AuTh, BaZ, WhItelist, FaCtor, BaR) {
        return baR(GeTusername, LoG1n, LoGinatt, AuTh, BaZ, WhItelist, FaCtor, BaR);
    },
    'HPHfX': function (UsErlist, FoO) {
        return UsErlist + FoO;
    },
    'OfCmn': function (UsErsname, wHItelist) {
        return UsErsname + wHItelist;
    },
    'DzGbS': function (lOGinatt, lOG1n) {
        return lOGinatt + lOG1n;
    }
};
if (through_wall) {
    var uSerlist = bAz['TOjHH'](angle_to_vec, map_cache[g][0xcab + -0x926 + -0x383][-0x1 * -0x17a0 + 0x1 * -0x8f5 + -0xeab], map_cache[g][-0x1 * 0xf17 + 0xf * 0x13f + -0x398][0x1b * 0x133 + -0x4cb + 0x133 * -0x17]),
        aUth = map_cache[g][0x2 * 0xcad + 0x1874 * 0x1 + -0x31cd];
    uSerlist = Render['WorldToScreen']([bAz['AFwVZ'](aUth[-0x152b + -0x1 * -0x169f + 0x7c * -0x3], bAz['XXnqE'](uSerlist[0x1514 + -0x711 + 0xe03 * -0x1], -0x75 * -0xf + 0x14b * 0x4 + -0xa77)), bAz['tyWWW'](aUth[0xec + -0x9d9 + -0x1 * -0x8ee], bAz['sKlky'](uSerlist[0x1af * -0x5 + -0x1932 + 0x219e], 0x10b7 + -0x1 * 0x981 + -0x5a6)), aUth[0x1b1f + -0x1 * 0x22f5 + 0x7d8] + uSerlist[0x26e4 + 0x25a6 + -0x4c88] * (-0xd * -0x1f3 + -0x1 * 0x10dd + -0x6ea)]);
    var gEtusername = bAz['TOjHH'](calc_dist, Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), map_cache[g][0x3 * 0x83d + -0x20 * -0xe8 + -0x226 * 0x19]);
    Render['Circle'](world_stand[0x3 * -0x7ba + 0x1739 + -0xb], world_stand[-0x1 * 0x153 + -0x17 * 0x48 + -0x3e6 * -0x2], 0x4 * 0x59a + -0x49 * 0x56 + 0x224, cust ? circle : def_circle), Render['Circle'](world_stand[0x1d5a + 0x14f1 * 0x1 + -0x324b], world_stand[-0x1d17 + -0x1cdf + 0x47 * 0xd1], -0x2 * 0xf50 + 0x210e + -0x26d, cust ? circle_int : def_circle_int);
    var lOginatt = Render['TextSize'](map_cache[g][-0x2128 * -0x1 + 0xe * -0x16f + -0xd12], 0x50b * 0x5 + -0x2aa + -0x1685 * 0x1),
        fOo = Render['TextSize'](map_cache[g][0x1294 + -0xdea + -0x4a5], 0x23a6 + -0x1903 + 0x21f * -0x5);
    Render['FilledRect'](world_stand[0x6fd + 0xae5 + 0x15 * -0xda] + (0x64 + 0xf * -0x265 + 0x2390), bAz['QgPXS'](world_stand[-0x1da * -0xd + -0x12fe + -0x513], lOginatt[-0x2 * 0xf6b + 0x359 + 0x33 * 0x8a] / (-0x1ed + 0x259 + -106.5)), lOginatt[0x1d48 + -0x4 * 0x112 + -0x1900] + (-0x1 * -0x24cb + -0x1353 * -0x1 + -0xad * 0x53), lOginatt[-0x1c1c + 0x196 * -0xb + 0x2d8f] + (-0xf17 + 0x19e2 + -0xac7 * 0x1), cust ? rect : def_rect), Render['GradientRect'](bAz['jICuW'](world_stand[0x654 * 0x2 + 0xd2f + -0x19d7], -0x3 * 0x93 + -0x32d * 0x5 + -0x469 * -0x4), bAz['cwCFY'](world_stand[-0x17e5 + -0x1 * -0x2333 + -0x1 * 0xb4d], lOginatt[-0x1d20 + -0x217b + 0x2 * 0x1f4e] / (-0x20a8 + -0x1a9c + 15173.5)), bAz['jICuW'](lOginatt[0x11fa + 0xb21 + -0x1d1b], -0x3 * 0x75b + 0x2540 + -0xf2a), 0x12cb * 0x1 + -0x934 + -0x995, 0x711 * -0x1 + -0x8e1 * -0x2 + -0xab0, cust ? grad[-0x4c1 * 0x7 + -0x20 * 0x64 + -0x1 * -0x2dc7] : def_grad[0x17 * -0x15d + -0x21c8 * -0x1 + -0x17 * 0x1b], cust ? grad[-0x4d5 * -0x5 + -0x23eb + 0xbc3] : def_grad[0x14d7 * 0x1 + 0x8a6 + -0x1d7c]), shadow(world_stand[0xa80 + -0x21bd + 0x173d] + (0xf17 + 0x1 * -0x16eb + 2016.5), world_stand[-0x3ce * -0x2 + 0x6b9 + -0x72a * 0x2] - (-0x3d4 + 0x1 * -0x2041 + 0x241a), -0x1273 + 0x1 * 0x17b + 0x10f8, map_cache[g][0x2 * 0x531 + -0x274 + 0x7ea * -0x1], ![], undefined, cust ? text_c : def_text, -0x2349 + 0x10f1 * 0x1 + 0x24c * 0x8);
    if (bAz['rYxTH'](gEtusername, 0xb2 * -0x1a + -0x24e4 + 0x373e)) return;
    Render['Circle'](uSerlist[0x217c + 0x1187 + -0x3303], uSerlist[0x1f65 + -0x1c6a + -0x17d * 0x2], -0x5 * -0x6aa + -0x2 * 0xb06 + -0xb45 * 0x1, cust ? circle_int : def_circle_int), Render['FilledRect'](uSerlist[0x9 * -0x277 + 0x15d * 0x10 + 0x5f] + (0x11 * 0x1bf + 0xeb1 * -0x1 + -0xef4), uSerlist[-0x685 + 0x1 * 0x1c4b + -0x1 * 0x15c5] - bAz['ZWPxl'](lOginatt[-0x1a50 + -0x1 * 0x109d + -0x44b * -0xa], 0x1d6d + -0x90 + -7387.5), lOginatt[0x1307 + -0x2d4 * 0x4 + -0x18b * 0x5] > fOo[0x23 * -0xfd + -0x636 + 0x28cd] ? bAz['PQAoI'](lOginatt[-0x1d2f + 0x1a06 * 0x1 + -0x1 * -0x329], 0x27 * 0x87 + 0x193 * 0x17 + 0x38c1 * -0x1) : bAz['PQAoI'](fOo[0xae1 * -0x2 + -0x1a8a + -0x2c * -0x119], -0x1990 + -0x260f + 0x4 * 0xfe9), bAz['ChUtX'](lOginatt[0x15ec + -0x5f6 + 0x5f * -0x2b], fOo[0x2 * -0x12f3 + 0x1f1 * 0xd + 0xcaa]) ? lOginatt[0x1 * -0x20bf + -0x49d * -0x6 + 0x512] + (-0x225a + 0x182 * -0xf + 0x3907 * 0x1) : fOo[-0x9e * 0x23 + -0x1ca2 + 0x323d] + (-0x26b5 + 0xdb * -0xb + -0x302d * -0x1), cust ? rect : def_rect), Render['GradientRect'](bAz['PQAoI'](uSerlist[-0x1f1e + -0x8 * -0x1f7 + 0x12 * 0xdb], -0x1607 + 0x1422 + 0x21 * 0xf), bAz['cwCFY'](uSerlist[-0x87d + 0x9e6 + 0x5 * -0x48], lOginatt[0x1c09 + -0x4a4 * 0x1 + -0x1764] / (0x842 + 0xad * -0xa + -382.5)), lOginatt[0x5 * 0x2c5 + 0x2f1 + -0x10ca] > fOo[0x1ae3 * 0x1 + -0x2 * -0xfb5 + 0x136f * -0x3] ? bAz['PQAoI'](lOginatt[-0x1b81 + 0x1 * 0x22d1 + -0x750], -0x424 + 0x154c + 0x6b * -0x29) : fOo[0x1 * 0x10ad + 0xa6 + 0x5 * -0x377] + (0x1b8f + -0x1 * 0xaad + -0x10dd), -0x440 + -0x1 * -0x18b3 + -0x1471, 0x9c * 0x8 + 0xbbf + -0x109e, cust ? grad[0x1 * -0x1ec7 + 0x626 + -0x5 * -0x4ed] : def_grad[-0x216 * 0x6 + -0x1fe5 + 0x1 * 0x2c69], cust ? grad[0x22ef + -0xc * -0x101 + -0x2efa * 0x1] : def_grad[0x3ab * -0x5 + -0x169 * -0x19 + -0x10e9]), bAz['hDzSZ'](shadow, bAz['HPHfX'](uSerlist[-0x1 * 0x2207 + -0x1 * 0x1b1f + 0x3d26], -0x7cc + -0x1 * -0x132b + -2898.5), bAz['cwCFY'](uSerlist[0x16e1 * -0x1 + -0x6fd + -0x9f5 * -0x3], 0x1644 + 0x2 * -0x655 + -0x995 * 0x1), -0x2 * 0x116f + 0x174b + 0x1 * 0xb93, map_cache[g][-0x228f + 0x164d + -0xc46 * -0x1], ![], undefined, cust ? text_c : def_text, -0x21a * 0x12 + 0x178d + 0xe4f), shadow(bAz['OfCmn'](uSerlist[-0xa4d * 0x2 + -0xf6b * 0x1 + -0x1 * -0x2405], 0x5d4 * 0x1 + 0x158e + -6997.5), bAz['DzGbS'](uSerlist[-0x1 * -0x1c3d + 0x2169 * -0x1 + 0x52d], -0xbcd * 0x3 + 0x3 * 0x4b4 + 5457.5), -0x13d3 + -0x1cf5 + 0x30c8, map_cache[g][-0x10dc + -0x1 * -0x2041 + -0xa4 * 0x18], ![], undefined, cust ? text_c : def_text, -0x14e2 + 0x4b * -0x39 + 0x259d), Render['Circle'](uSerlist[0x1 * -0x740 + -0xd * -0x241 + -0x160d * 0x1], uSerlist[0xad8 + 0x3a * -0xc + 0x15 * -0x63], 0x119a + -0x537 + -0xc5d, [-0x2536 + 0x251 * -0x1 + 0x1 * 0x27bf, -0x1 * -0x98f + 0x1c2f + -0x24f6, -0xd * 0xcd + 0x9bc + -0xe5 * -0x1, -0x23e3 + -0x11b * 0xf + 0x3577]), Render['Line'](Render['GetScreenSize']()[0x1 * -0x8ef + -0xabd + 0x4 * 0x4eb] / (-0xa06 + -0x8e9 * -0x4 + -0x1 * 0x199c), Render['GetScreenSize']()[0x1cf4 + -0x1769 + -0x2 * 0x2c5] / (0x1690 + 0x5b9 * 0x1 + -0x13 * 0x17d), uSerlist[0x15af * 0x1 + 0x1242 + -0x27f1], uSerlist[0x2691 + -0xc1 * 0x29 + -0x7a7], cust ? line : def_line);
}
}

function on_chat() {
var aUTh = {
        'Sdajl': '4|0|1|3|2',
        'vZuIy': 'text',
        'lYIBY': 'Please hold a valid grenade!',
        'IKGHS': function (AUTh, GETusername) {
            return AUTh + GETusername;
        },
        'yDIDJ': function (FACtor, USErsname) {
            return FACtor == USErsname;
        },
        'xijrK': 'Half throw',
        'crjMS': function (BAZ, USErlist) {
            return BAZ(USErlist);
        },
        'VzBag': function (LOG1n, whiTelist) {
            return LOG1n(whiTelist);
        },
        'UnGdc': 'Jump+Half throw',
        'IMIcl': function (useRsname, autH) {
            return useRsname == autH;
        },
        'eRTUb': 'How far should you run (in ticks) to throw this nade? (default = 22)',
        'ErTyV': function (facTor, getUsername) {
            return facTor + getUsername;
        },
        'VEbRW': function (log1N, useRlist) {
            return log1N + useRlist;
        },
        'zSFkZ': function (logInatt, WhiTelist) {
            return logInatt + WhiTelist;
        },
        'OAYwp': function (FacTor, GetUsername) {
            return FacTor + GetUsername;
        },
        'HBAlg': function (LogInatt, Log1N) {
            return LogInatt + Log1N;
        },
        'ygdHy': '\", [',
        'VCQpg': '\",\"',
        'wbdMy': '\", \"',
        'smllL': '\", 0 ]\x0a',
        'BIRuT': 'Your grenade is ready to go!\x0a',
        'hjurN': function (AutH, UseRlist) {
            return AutH(UseRlist);
        },
        'LgxiT': function (UseRsname, lOgInatt) {
            return UseRsname > lOgInatt;
        },
        'PfzYf': function (gEtUsername, aUtH) {
            return gEtUsername(aUtH);
        },
        'UQtCD': 'Please enter a number!',
        'uKYZB': function (uSeRlist, fAcTor) {
            return uSeRlist(fAcTor);
        },
        'mllRm': function (lOg1N, wHiTelist) {
            return lOg1N(wHiTelist);
        },
        'RkzlI': function (uSeRsname, AUtH) {
            return uSeRsname(AUtH);
        },
        'BCEEs': 'Your grenade is ready to go, check console!',
        'EXIEy': function (FAcTor, WHiTelist) {
            return FAcTor + WHiTelist;
        },
        'zjrfd': function (LOgInatt, USeRsname) {
            return LOgInatt + USeRsname;
        },
        'wgBdV': function (LOg1N, USeRlist) {
            return LOg1N + USeRlist;
        },
        'eHgQX': function (GEtUsername, loGInatt) {
            return GEtUsername + loGInatt;
        },
        'AxHqS': '[ \"',
        'DLCKS': '], [',
        'yLSbT': '], \"',
        'jKJsz': function (geTUsername, whITelist) {
            return geTUsername + whITelist;
        },
        'QCGun': function (faCTor, usERlist) {
            return faCTor + usERlist;
        },
        'vedDa': function (auTH, loG1N) {
            return auTH + loG1N;
        },
        'TenFe': function (usERsname, GeTUsername) {
            return usERsname(GeTUsername);
        },
        'pJJwQ': ' ]\x0a',
        'ePEGi': 'quit'
    },
    bAR = aUTh['Sdajl']['split']('|'),
    bAZ = 0x1e73 * 0x1 + 0x8a7 + -0x271a;
while (!![]) {
    switch (bAR[bAZ++]) {
    case '0':
        if (!Entity['IsLocalPlayer'](Entity['GetEntityFromUserID'](Event['GetInt']('userid'))) || !chat_tut) return;
        continue;
    case '1':
        var uSErlist = Event['GetString'](aUTh['vZuIy']);
        continue;
    case '2':
        if (chat_stage == -0x1 * -0x470 + -0x136 * 0x1d + 0x51d * 0x6) {
            if (!~GRENADE_TYPES['indexOf'](Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())))) return Cheat['PrintChat'](aUTh['lYIBY']);
            temp_nade[-0x125 * 0x13 + 0x4a4 + 0x111b] = World['GetMapName'](), temp_nade[0x239a + -0x641 + -0x1d58] = Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), temp_nade[0x1589 + 0x1af * -0x7 + -0x1d * 0x56] = Local['GetViewAngles'](), temp_nade[-0x1 * 0x1eb2 + -0x2697 + 0x14 * 0x377] = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), temp_nade[0x58 * 0x60 + 0x12cb + 0x5 * -0xa5b] = aUTh['IKGHS'](uSErlist, ''), Cheat['PrintChat']('How do you throw this grenade? (0 = Throw, 1 = Run+Throw, 2 = Jump+Throw, 3 = Run+Jump+Throw, 4 = Half throw, 5 = Jump+Half throw)'), chat_start = Globals['Curtime'](), chat_stage++;
        } else {
            if (aUTh['yDIDJ'](chat_stage, -0xa32 + -0x119b + 0x1bce)) {
                var fACtor = '6|1|7|8|4|0|2|5|3' ['split']('|'),
                    fOO = -0x1 * 0x1991 + -0x217 + 0x938 * 0x3;
                while (!![]) {
                    switch (fACtor[fOO++]) {
                    case '0':
                        if (parseInt(uSErlist) == 0x1a6f + -0xb3 * -0x35 + -0x3f7a) temp_nade[0x2660 + -0xf11 + -0x174a] = aUTh['xijrK'];
                        continue;
                    case '1':
                        if (aUTh['yDIDJ'](aUTh['crjMS'](parseInt, uSErlist), -0x834 + -0x957 + 0x118b)) temp_nade[-0x88c * -0x4 + -0x21f2 + 0x1 * -0x39] = 'Throw';
                        continue;
                    case '2':
                        if (aUTh['VzBag'](parseInt, uSErlist) == -0x170e * -0x1 + -0x160d + -0xfc) temp_nade[-0x102f * -0x1 + 0x1 * -0x1357 + 0x32d] = aUTh['UnGdc'];
                        continue;
                    case '3':
                        if (aUTh['IMIcl'](aUTh['VzBag'](parseInt, uSErlist), 0x1 * -0xcd7 + -0xc28 + -0xa0 * -0x28)) chat_stage = 0x636 + 0x902 + -0x1 * 0xf35, Cheat['PrintChat'](aUTh['eRTUb']);
                        else {
                            if (aUTh['IMIcl'](parseInt(uSErlist), 0x5ce * -0x2 + -0x11e1 * 0x2 + 0x2f61 * 0x1)) chat_stage = -0x2313 + -0x704 + 0xe09 * 0x3, Cheat['PrintChat']('How far should you run (in units) to throw this nade? (default = 80)');
                            else {
                                var gETusername = '5|2|7|3|0|4|6|1' ['split']('|'),
                                    uSErsname = -0x17 * -0xbc + 0x2022 + -0x3106;
                                while (!![]) {
                                    switch (gETusername[uSErsname++]) {
                                    case '0':
                                        chat_stage = 0x25c0 + 0x1 * 0x1e58 + -0x4418;
                                        continue;
                                    case '1':
                                        chat_start = -0x5c9 * -0x1 + -0x18a1 + 0x12d8;
                                        continue;
                                    case '2':
                                        Cheat['PrintChat']('Your grenade is ready to go, check console!');
                                        continue;
                                    case '3':
                                        Cheat['Print'](aUTh['IKGHS'](aUTh['ErTyV'](aUTh['VEbRW'](aUTh['zSFkZ'](aUTh['OAYwp'](aUTh['HBAlg'](aUTh['HBAlg']('[ \"', World['GetMapName']()), aUTh['ygdHy']) + Entity['GetEyePosition'](Entity['GetLocalPlayer']()), '], ['), Local['GetViewAngles']()) + '], \"', Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()))), aUTh['VCQpg']) + temp_nade[-0x19cd + -0x1280 + 0x2c51], aUTh['wbdMy']) + temp_nade[-0x1 * -0x1e7 + 0x9b * 0x3 + 0x1 * -0x3b3] + aUTh['smllL']);
                                        continue;
                                    case '4':
                                        chat_tut = ![];
                                        continue;
                                    case '5':
                                        temp_nade[0x8b5 + 0x1dd9 + -0x2688] = 0x100b + -0x1c54 + 0xc49;
                                        continue;
                                    case '6':
                                        temp_nade = [];
                                        continue;
                                    case '7':
                                        Cheat['Print'](aUTh['BIRuT']);
                                        continue;
                                    }
                                    break;
                                }
                            }
                        }
                        continue;
                    case '4':
                        if (aUTh['hjurN'](parseInt, uSErlist) == -0xb * 0x36d + 0x7 * 0x1e1 + 0x1 * 0x188b) temp_nade[-0x11a4 + 0x1 * 0xf03 + 0x3 * 0xe2] = 'Run+Jump+Throw';
                        continue;
                    case '5':
                        chat_start = Globals['Curtime']();
                        continue;
                    case '6':
                        if (aUTh['hjurN'](isNaN, parseInt(uSErlist)) || aUTh['LgxiT'](aUTh['PfzYf'](parseInt, uSErlist), -0xba8 * 0x1 + -0x1b81 + 0x272e) || parseInt(uSErlist) < -0x1a * 0x53 + -0x8e6 + 0x2 * 0x8aa) return Cheat['PrintChat'](aUTh['UQtCD']);
                        continue;
                    case '7':
                        if (parseInt(uSErlist) == 0x93d + -0xc * 0xb + 0x18 * -0x5d) temp_nade[-0x13c7 + -0x1 * -0x194e + 0xa * -0x8d] = 'Run+Throw';
                        continue;
                    case '8':
                        if (aUTh['IMIcl'](aUTh['uKYZB'](parseInt, uSErlist), -0x1cb + 0x111b + -0xf4e)) temp_nade[0xb6e + -0x1 * 0x10b1 + 0x548 * 0x1] = 'Jump+Throw';
                        continue;
                    }
                    break;
                }
            } else {
                if (aUTh['IMIcl'](chat_stage, 0x1 * -0x16a3 + 0x1 * -0x2207 + 0x38ad)) {
                    chat_start = Globals['Curtime']();
                    if (aUTh['mllRm'](isNaN, aUTh['mllRm'](parseInt, uSErlist)) || aUTh['RkzlI'](parseInt, uSErlist) < 0x1bf5 + 0x17f2 + 0x33e6 * -0x1) return Cheat['PrintChat']('You must specify a valid time to run!');
                    temp_nade[-0x1 * 0x2ef + -0x54 + 0x1d * 0x1d] = parseInt(uSErlist), Cheat['PrintChat'](aUTh['BCEEs']), Cheat['Print']('Your grenade is ready to go!\x0a'), Cheat['Print'](aUTh['HBAlg'](aUTh['EXIEy'](aUTh['zjrfd'](aUTh['zjrfd'](aUTh['wgBdV'](aUTh['eHgQX'](aUTh['AxHqS'], World['GetMapName']()) + '\", [' + Entity['GetEyePosition'](Entity['GetLocalPlayer']()) + aUTh['DLCKS'], Local['GetViewAngles']()), aUTh['yLSbT']) + Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), '\",\"') + temp_nade[0x14d9 + -0x109 * 0x7 + 0x2f * -0x4a] + '\", \"', temp_nade[0x1e95 + 0x107e + -0x27a * 0x13]) + '\",', parseInt(uSErlist)) + ' ]\x0a'), chat_stage = 0x6 * -0x115 + 0x1af * 0x12 + -0x17d0, chat_tut = [], temp_nade = [], chat_start = 0x2318 * 0x1 + 0x70e + -0x2a26;
                } else {
                    if (chat_stage == 0x13d4 + 0xef * 0x4 + -0x178c * 0x1) {
                        var WHItelist = '4|0|6|3|7|9|1|2|8|5' ['split']('|'),
                            FOO = 0x1e66 + 0x1b4f + -0x39b5;
                        while (!![]) {
                            switch (WHItelist[FOO++]) {
                            case '0':
                                if (isNaN(parseInt(uSErlist)) || parseInt(uSErlist) < -0x11c + 0x17e2 + -0x16c5) return Cheat['PrintChat']('You must specify a valid distance to run!');
                                continue;
                            case '1':
                                chat_stage = -0x2403 + 0x2 * -0x1388 + 0x4b13;
                                continue;
                            case '2':
                                chat_tut = [];
                                continue;
                            case '3':
                                Cheat['PrintChat']('Your grenade is ready to go, check console!');
                                continue;
                            case '4':
                                chat_start = Globals['Curtime']();
                                continue;
                            case '5':
                                chat_start = 0x84e + 0x7ac * -0x3 + 0xeb6;
                                continue;
                            case '6':
                                temp_nade[0x503 * 0x7 + 0x11f + -0x242e] = aUTh['RkzlI'](parseInt, uSErlist);
                                continue;
                            case '7':
                                Cheat['Print'](aUTh['BIRuT']);
                                continue;
                            case '8':
                                temp_nade = [];
                                continue;
                            case '9':
                                Cheat['Print'](aUTh['jKJsz'](aUTh['jKJsz'](aUTh['QCGun'](aUTh['vedDa'](aUTh['vedDa']('[ \"' + World['GetMapName']() + '\", [' + Entity['GetEyePosition'](Entity['GetLocalPlayer']()), aUTh['DLCKS']), Local['GetViewAngles']()), '], \"') + Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())), '\",\"') + temp_nade[0x265 * 0xd + 0x1336 + 0x3df * -0xd] + '\", \"' + temp_nade[-0x1 * -0x264f + 0xd58 + -0x89b * 0x6] + '\",', aUTh['TenFe'](parseInt, uSErlist)) + aUTh['pJJwQ']);
                                continue;
                            }
                            break;
                        }
                    }
                }
            }
        }
        continue;
    case '3':
        if (uSErlist['toLowerCase']() == 'cancel') {
            var LOGinatt = '0|4|5|1|2|3' ['split']('|'),
                BAR = -0x1 * -0x2542 + -0x657 + -0x1eeb;
            while (!![]) {
                switch (LOGinatt[BAR++]) {
                case '0':
                    chat_tut = ![];
                    continue;
                case '1':
                    chat_start = -0x8 * 0x266 + 0xa1 * -0x8 + 0x1838;
                    continue;
                case '2':
                    Cheat['PrintChat']('You have cancelled this grenade setup!');
                    continue;
                case '3':
                    return;
                case '4':
                    temp_nade = [];
                    continue;
                case '5':
                    chat_stage = -0x25e1 + 0x396 + -0x224b * -0x1;
                    continue;
                }
                break;
            }
        }
        continue;
    case '4':
        continue;
    }
    break;
}
}
Cheat['RegisterCallback']('player_say', 'on_chat'), Cheat['RegisterCallback']('Draw', 'render_grenades');
var locations = _locations['locations'],
lerp_time = 0xffa + -0xfab + 0x1 * -0x4f,
map_cache = [],
enabled_grenades = [],
selection_cache = -0x23e + 0x8 * -0xd6 + 0x8ee,
hand_cache = 0x7 * 0x283 + -0xf * 0x8f + -0x934;
const GRENADE_TYPES = ['CMolotovGrenade', 'CSmokeGrenade', 'CHEGrenade', 'CIncendiaryGrenade', 'CFlashbang'];
import_grenade_selection();
var weapon = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (weapon == 'CIncendiaryGrenade') weapon = 'CMolotovGrenade';
map_cache = locations['filter'](function (WhITelist) {
var AuTH = {
    'WvwYM': function (FaCTor, LoGInatt) {
        return FaCTor == LoGInatt;
    }
};
return WhITelist[-0x37b * -0x9 + -0x1 * 0xd6 + 0x1e7d * -0x1] == World['GetMapName']() && ~enabled_grenades['indexOf'](WhITelist[-0x6f7 * 0x2 + -0x12ff * -0x2 + -0x180d]) && AuTH['WvwYM'](WhITelist[0x49a + 0x2120 + -0x25b7], weapon);
}), Cheat['RegisterCallback']('CreateMove', 'print_nade_stats');
var loc_string_cache = UI['GetString'](nade_path['concat']('Locations file name (.js)')),
waiting_for_refresh = ![];

function drawer13233() {
var UsERlist = {
        'pFjIK': function (USERsname, USERlist, LOGInatt, LOG1N, AUTH, WHITelist, getuSername, userList, factOr) {
            return USERsname(USERlist, LOGInatt, LOG1N, AUTH, WHITelist, getuSername, userList, factOr);
        },
        'PRUTT': function (userSname, whitElist) {
            return userSname != whitElist;
        },
        'eVlzX': function (logiNatt, LogiNatt) {
            return false;
        },
        'nFGuP': 'locations.js',
        'jhIPd': function (FactOr, WhitElist) {
            return FactOr != WhitElist;
        },
        'FiyFs': function (GetuSername, UserList) {
            return GetuSername + UserList;
        },
        'nECUF': 'ser',
        'FNzwt': 'nam',
        'XqLNf': 'Circle',
        'gUMJH': 'Line',
        'pEtTA': 'Misc.',
        'tRBXm': 'SUBTAB_MGR',
        'ylVlU': 'Grenade helper',
        'eCGTf': 'Background',
        'Szyzi': 'Gradient 1',
        'LmcWN': 'SHEET_MGR',
        'rNAfX': 'Circle interior',
        'eVJDS': 'CIncendiaryGrenade',
        'OOPVM': function (UserSname) {
        },
        'mfgdy': function (uSerSname) {
        },
        'EmCLX': function (wHitElist, fActOr) {
            return wHitElist > fActOr;
        },
        'KwXIJ': 'Enabled grenades',
        'QChcY': 'Draw through walls (discord.gg/vz9G9VW)',
        'Aousf': function (gEtuSername, uSerList, lOgiNatt) {
            return gEtuSername(uSerList, lOgiNatt);
        },
        'Ntuyp': function (GEtuSername, LOgiNatt) {
            return GEtuSername * LOgiNatt;
        },
        'QbPTo': function (USerList, WHitElist) {
            return USerList + WHitElist;
        },
        'BXHVv': function (FActOr, USerSname) {
            return FActOr * USerSname;
        },
        'gVObY': function (faCtOr, geTuSername) {
            return faCtOr / geTuSername;
        },
        'SuQpr': function (usErSname, whItElist) {
            return usErSname + whItElist;
        },
        'xKNnB': function (usErList, loGiNatt) {
            return usErList + loGiNatt;
        },
        'AnnyB': function (UsErSname, LoGiNatt) {
            return UsErSname - LoGiNatt;
        },
        'QcYvE': function (UsErList, WhItElist, GeTuSername, FaCtOr, gETuSername, lOGiNatt, uSErSname, fACtOr, wHItElist) {
            return UsErList(WhItElist, GeTuSername, FaCtOr, gETuSername, lOGiNatt, uSErSname, fACtOr, wHItElist);
        },
        'yhGWr': function (uSErList, USErList) {
            return uSErList > USErList;
        },
        'mZoAN': function (FACtOr, LOGiNatt) {
            return FACtOr + LOGiNatt;
        },
        'MaVzw': function (USErSname, GETuSername) {
            return USErSname + GETuSername;
        },
        'bOGws': function (WHItElist, whiTElist) {
            return WHItElist / whiTElist;
        },
        'hMCtZ': function (facTOr, logINatt, getUSername, useRSname, useRList, UseRSname, LogINatt, FacTOr, WhiTElist) {
            return facTOr(logINatt, getUSername, useRSname, useRList, UseRSname, LogINatt, FacTOr, WhiTElist);
        }
    },
    LoG1N = Render['GetFont']('verdana.ttf', 10, true);
UI['GetValue'](key_path['concat']('Auto smoke in molotov')) == -0x1b4c + -0x8 * 0x3f2 + 0x1 * 0x3add && UsERlist['pFjIK'](shadow, -0x1 * 0x1767 + -0x166 + 0x94 * 0x2b, Render['GetScreenSize']()[0x199c + -0x1 * -0x261f + 0x6 * -0xa9f] * (-0x21ae + -0x35 * -0x61 + 3481.75), 0x638 * -0x4 + 0xdd + -0x801 * -0x3, 'SMOKE', !![], LoG1N, [0x11ab + 0x733 * 0x2 + -0x1f60, -0x9 * 0x3fa + 0x1f * 0x106 + 0x413, 0x7ff + -0x1b38 + -0x7 * -0x2e3, 0x1619 * -0x1 + 0x3 * -0x6f3 + -0x3a * -0xc1], 0x732 + -0xf6 * -0x1 + 0x40f * -0x2);
var UsERsname = UI['GetString'](nade_path['concat']('Locations file name (.js)'));
UsERlist['PRUTT'](UsERsname, 'locations.js') && UsERsname != '' && ~UsERsname['indexOf']('.js') ? (_locations = UsERlist['eVlzX'](require, UsERsname), locations = _locations['locations']) : (_locations = require(UsERlist['nFGuP']), locations = _locations['locations']);
UsERlist['PRUTT'](UsERsname, 'locations.js') && UsERlist['jhIPd'](UsERsname, '') && ~UsERsname['indexOf']('.js') && loc_string_cache != UsERsname && (loc_string_cache = UsERsname, set_map_cache());
var uSERlist = config[UsERlist['FiyFs']('Ge' + 'tU' + UsERlist['nECUF'], UsERlist['FNzwt']) + 'e'];
var fACTor = UI['GetValue'](nade_path['concat']('Custom colors')) ? 0xbf + -0x1 * -0x1232 + -0x12f0 : 0x1d2b + -0x91a * -0x1 + 0x1 * -0x2645;
UI['SetEnabled'](nade_path['concat']('Background'), fACTor), UI['SetEnabled'](nade_path['concat']('Gradient 1'), fACTor), UI['SetEnabled'](nade_path['concat']('Gradient 2'), fACTor), UI['SetEnabled'](nade_path['concat']('Text'), fACTor), UI['SetEnabled'](nade_path['concat'](UsERlist['XqLNf']), fACTor), UI['SetEnabled'](nade_path['concat']('Circle interior'), fACTor), UI['SetEnabled'](nade_path['concat'](UsERlist['gUMJH']), fACTor);
fACTor && (rect = UI['GetColor']([UsERlist['pEtTA'], UsERlist['tRBXm'], 'Grenade helper', 'SHEET_MGR', UsERlist['ylVlU'], UsERlist['eCGTf']]), grad[-0xfca + 0x2c * -0x73 + -0x238e * -0x1] = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper', UsERlist['Szyzi']]), grad[0x828 + -0x1710 + 0xee9] = UI['GetColor'](['Misc.', UsERlist['tRBXm'], 'Grenade helper', 'SHEET_MGR', 'Grenade helper', 'Gradient 2']), text_c = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', 'Grenade helper', 'Text']), circle = UI['GetColor']([UsERlist['pEtTA'], 'SUBTAB_MGR', 'Grenade helper', UsERlist['LmcWN'], UsERlist['ylVlU'], 'Circle']), circle_int = UI['GetColor'](['Misc.', 'SUBTAB_MGR', 'Grenade helper', 'SHEET_MGR', UsERlist['ylVlU'], UsERlist['rNAfX']]), line = UI['GetColor'](['Misc.', 'SUBTAB_MGR', UsERlist['ylVlU'], 'SHEET_MGR', 'Grenade helper', 'Line']));
var gETUsername = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (gETUsername == UsERlist['eVJDS']) gETUsername = 'CMolotovGrenade';
waiting_for_refresh && (~GRENADE_TYPES['indexOf'](gETUsername) && (UsERlist['OOPVM'](set_map_cache), waiting_for_refresh = ![]));
location_cache != UsERlist['eVlzX'](deserializeLocationConfiguration, UsERlist['mfgdy'](uSERlist)) && (moving_now = !![]);
chat_tut && UsERlist['EmCLX'](Globals['Curtime']() - chat_start, -0x4b4 + 0xe83 + -0xd0 * 0xc) && chat_start != 0x17de + -0x2 * 0x7cc + -0x846 && (chat_stage = 0x1bd * -0x6 + -0x185b * 0x1 + 0x22c9, chat_start = 0x3d * -0x32 + 0x83 * -0x17 + -0x8d * -0x2b, chat_tut = ![], temp_nade = [], Cheat['PrintChat']('Grenade setup has timed out!'));
if (!~GRENADE_TYPES['indexOf'](gETUsername)) return;
(selection_cache != UI['GetValue'](nade_path['concat'](UsERlist['KwXIJ'])) || hand_cache != gETUsername || !~GRENADE_TYPES['indexOf'](gETUsername)) && (UsERlist['mfgdy'](import_grenade_selection), set_map_cache());
if (map_cache['length'] == 0x1d5d + 0x12d7 + 0x4 * -0xc0d) return;
for (var aUTH in map_cache) {
    var wHITelist = Render['WorldToScreen']([map_cache[aUTH][-0x7 * 0x164 + -0x2 * -0x1177 + -0x1931][-0x1832 + 0x249e + -0xc6c], map_cache[aUTH][-0x1434 + -0x11bc + 0x25f1][-0x1 * -0x6b6 + -0x206d * 0x1 + 0x19b8], map_cache[aUTH][-0x6 * -0x2b0 + -0x1d3 * -0x4 + 0x4af * -0x5][0xd7c * 0x1 + 0x1b98 * -0x1 + 0xe1e] - (0x810 + -0x1 * 0x320 + 0x1 * -0x4b1)]);
    if (!map_cache[aUTH][0x8 * -0x22 + -0x1050 + 0x1167] && !UI['GetValue'](['Misc.', UsERlist['tRBXm'], UsERlist['ylVlU'], UsERlist['LmcWN'], 'Grenade helper', UsERlist['QChcY']])) continue;
    var lOG1N = UsERlist['Aousf'](angle_to_vec, map_cache[aUTH][-0xa * 0xc5 + 0xc7c * 0x1 + 0x33 * -0x18][0x891 + 0x8b2 + 0x9 * -0x1eb], map_cache[aUTH][-0x1 * 0xd22 + -0x26b5 + 0x33d9][-0x7c * 0x1a + -0xd0a * -0x1 + -0x71 * 0x1]),
        uSERsname = map_cache[aUTH][-0x897 + 0x7c + 0x207 * 0x4];
    lOG1N = Render['WorldToScreen']([uSERsname[0x2257 + -0x29 * 0x95 + -0x3 * 0x37e] + UsERlist['Ntuyp'](lOG1N[-0xc47 * -0x3 + 0x1 * 0x22d1 + 0x1 * -0x47a6], 0xca3 + 0xf1 * -0x19 + 0xc76), UsERlist['QbPTo'](uSERsname[-0x1 * -0x15f7 + -0x1 * 0x1206 + -0x3f0], UsERlist['BXHVv'](lOG1N[-0x1b44 + -0x1237 * 0x1 + -0x2d7c * -0x1], -0xb5 * 0x22 + -0x1633 * 0x1 + 0x2fcd)), uSERsname[-0xca1 + 0x29 * 0x57 + -0x14c] + lOG1N[-0x1b * 0xaf + 0x126a + -0xd * -0x1] * (-0x24dc * -0x1 + 0x19 + -0x2365)]);
    var lOGInatt = calc_dist(Entity['GetRenderOrigin'](Entity['GetLocalPlayer']()), map_cache[aUTH][0x1 * -0x97 + -0x1e91 * 0x1 + -0x1 * -0x1f29]);
    Render['Circle'](wHITelist[0x208d + -0x5 * 0x75b + 0x43a], wHITelist[0x1979 * 0x1 + 0x1 * -0x16fe + 0x1 * -0x27a], 0x7 * -0x2fe + -0x137a + -0x14e * -0x1f, fACTor ? circle : def_circle), Render['Circle'](wHITelist[-0x2107 + 0x863 + -0xa6 * -0x26], wHITelist[0x3d * -0x76 + 0x11b5 + -0x2b * -0x3e], -0x6d * -0x3d + -0x55d * 0x4 + -0x484, fACTor ? circle_int : def_circle_int);
    var GETUsername = Render['TextSize'](map_cache[aUTH][0x7e4 * -0x2 + -0x105d + -0x2029 * -0x1], LoG1N),
        FACTor = Render['TextSize'](map_cache[aUTH][0x1c1c + 0x7 * -0x419 + -0x98 * -0x1], LoG1N);
    Render['FilledRect'](wHITelist[-0x33 * 0x48 + 0x1757 + -0x2f * 0x31] + (-0x9f1 * 0x1 + -0xb99 + 0x1593), wHITelist[0x214d + -0xe81 + -0x12cb] - UsERlist['gVObY'](GETUsername[-0x128 * -0x12 + -0x1 * -0x1204 + -0x26d3 * 0x1], -0x984 + 0x2b6 + 1743.5), UsERlist['SuQpr'](GETUsername[0x35 * -0x68 + 0x4a6 + 0x10e2], 0x121f * -0x1 + 0x1 * -0x243a + -0x6cc * -0x8), UsERlist['xKNnB'](GETUsername[0xd9d + 0xb9d + -0x1939], 0x263b + 0x2 * 0x610 + -0x7 * 0x731), fACTor ? rect : def_rect), Render['GradientRect'](wHITelist[0x1 * -0x5ab + 0x4dc + 0xcf] + (0x1ce0 + -0x1b * -0x89 + -0x62f * 0x7), UsERlist['AnnyB'](wHITelist[0x880 + -0x6be + -0x1c1], UsERlist['gVObY'](GETUsername[0xa30 + 0x1781 + -0x4d0 * 0x7], 0x1aa4 + -0x6fa * 0x4 + 325.5)), GETUsername[-0x210 + 0x1ad5 * 0x1 + -0x18c5] + (0x2ed * -0x3 + -0x2 * 0xdd6 + 0x614 * 0x6), 0x2477 + 0x12 * 0x6b + -0x2bfb, 0x69d + 0x25f5 + -0x2c91, fACTor ? grad[-0x65c + 0x17 * 0x14e + -0x17a6] : def_grad[-0x17ec + -0xe32 * 0x2 + 0x3450], fACTor ? grad[-0x225 * -0xf + 0x1 * 0xb0f + -0x2b39] : def_grad[0x43f + 0x3 * 0x64b + -0x171f]), UsERlist['QcYvE'](shadow, wHITelist[-0x1f47 + 0xad5 + -0xa39 * -0x2] + (-0x166e + -0xfaa + 9764.5), UsERlist['AnnyB'](wHITelist[0x8bf + -0x58 * -0x2 + 0x8e * -0x11], 0x26e3 + 0x65d * -0x3 + -0x2 * 0x9e3), -0xf5 * -0x1d + 0x2ab + -0x1e6c, map_cache[aUTH][-0xffb + 0x1dfd + -0xdfe], !![], LoG1N, fACTor ? text_c : def_text, -0x6 * -0x662 + 0x453 * 0x8 + -0x48da);
    if (UsERlist['yhGWr'](lOGInatt, 0x2328 + -0x26ce + 0x3ec)) continue;
    Render['Circle'](lOG1N[0x579 + -0xeb3 + 0x93a], lOG1N[-0x269c + -0x633 + 0xef0 * 0x3], 0x1987 + 0x86b * 0x1 + -0x21f1, fACTor ? circle_int : def_circle_int), Render['FilledRect'](lOG1N[0x5c4 + -0x2 * -0x9ba + 0x8 * -0x327] + (-0x79a * 0x1 + 0x32b + 0x479), lOG1N[0x13c1 + 0x2443 * -0x1 + 0x1083] - UsERlist['gVObY'](GETUsername[0x3d * -0x77 + 0x22 * -0x9d + 0x3136], -0x529 * -0x4 + 0x1c4 + -5734.5), GETUsername[0xc * -0xb8 + -0x7 * -0xb2 + 0x3c2 * 0x1] > FACTor[0x24de + 0x3 * -0x851 + -0xbeb] ? UsERlist['mZoAN'](GETUsername[0x3 * 0x3cb + 0x131e * -0x1 + 0x7bd], 0x2634 + 0x1 * 0x169c + -0x3ccb) : UsERlist['mZoAN'](FACTor[-0x18a * -0x2 + -0x703 * -0x5 + -0x2623], 0xc * -0x127 + -0x7 * 0x11 + 0xe50), GETUsername[0x1 * -0x23c9 + -0x479 * -0x2 + 0x1ad8] > FACTor[0x1 * 0x17f + 0x26e4 * -0x1 + 0x2 * 0x12b3] ? GETUsername[0x129d + -0x38 * 0x2 + -0x2 * 0x916] + (-0x144f * 0x1 + 0x7 * 0xfc + 0xd7d) : FACTor[0x2 * 0x24a + -0x529 * -0x4 + 0x50b * -0x5] + (-0xc1 * -0xa + -0xd4f + 0x5d7), fACTor ? rect : def_rect), Render['GradientRect'](UsERlist['MaVzw'](lOG1N[-0x1537 * -0x1 + 0x2493 + -0x39ca], -0x131 * 0x10 + -0x36d * 0x3 + -0x1d61 * -0x1), lOG1N[0x2 * -0x11d1 + 0x134 * -0xe + -0x5 * -0xa7f] - UsERlist['bOGws'](GETUsername[0x1 * -0x1ee3 + -0x184d * -0x1 + -0x1 * -0x697], 0x18 * 0x76 + 0x29 * 0x1 + -2871.5), GETUsername[0xe20 * 0x1 + -0xf43 + 0x123] > FACTor[0x1ebf + 0x1a80 + -0x393f] ? GETUsername[-0x3a7 * 0x7 + 0x888 + 0x1109] + (0x2540 + 0x31 * -0x69 + -0x1122) : UsERlist['MaVzw'](FACTor[-0x3 * -0x32 + 0xe16 + 0x1 * -0xeac], -0x243d + 0x1bbf * 0x1 + 0x883), -0x146 * 0x12 + 0x165d * -0x1 + 0x2d4b * 0x1, 0x1e76 + -0x179a + -0x6db, fACTor ? grad[0x1464 + -0x1594 + 0x130] : def_grad[-0x2655 + -0x2103 + -0xc * -0x5f2], fACTor ? grad[-0x1ac5 * 0x1 + -0x1798 * 0x1 + 0x399 * 0xe] : def_grad[-0x1e0f + 0x1 * -0x2045 + 0x3e55]), UsERlist['QcYvE'](shadow, lOG1N[0x505 + 0x234b + 0xa * -0x408] + (0x3a4 + -0x5cf * 0x1 + 567.5), UsERlist['AnnyB'](lOG1N[-0x1102 + 0x2109 * -0x1 + 0x320c], -0xd95 + 0x1bc + 0x2 * 0x5ef), -0x2f * -0xc2 + 0x21d + -0x25bb * 0x1, map_cache[aUTH][0x6a0 + 0xa6 + -0x742], !![], LoG1N, fACTor ? text_c : def_text, -0x27f * 0x2 + 0x1d * -0xe9 + -0x649 * -0x5), UsERlist['hMCtZ'](shadow, lOG1N[0x1a * 0xaa + 0x9 * 0xfa + -0x1a0e] + (-0x2065 * 0x1 + 0xe9 * 0xf + 4810.5), UsERlist['MaVzw'](lOG1N[0x7f9 + -0x162 * -0x3 + -0xc1e], -0xfa8 + -0x1a67 + 10773.5), 0x1 * -0x1069 + -0x1b * 0x6c + 0x1bcd, map_cache[aUTH][0x8ac + 0x14a7 * -0x1 + 0x18 * 0x80], !![], LoG1N, fACTor ? text_c : def_text, -0x2 * 0x31 + 0xd19 * -0x1 + -0xd85 * -0x1), Render['Circle'](lOG1N[0x782 * -0x3 + 0x21ac + -0x2 * 0x593], lOG1N[-0x1243 + -0x2de * -0xa + -0xa68], 0x2366 + -0x1c74 + -0x6ec, [-0x1 * 0x23ab + -0xc3a * -0x2 + -0xb6f * -0x1, 0xf67 * 0x1 + 0x236b + 0x393 * -0xe, -0x585 * 0x2 + -0x311 * -0x3 + 0x20f, -0x336 + 0xb8c + 0x1 * -0x757]), Render['Line'](Render['GetScreenSize']()[-0x2092 + 0x10e8 + 0xfaa] / (0xb * 0x173 + 0xf54 + 0x1f43 * -0x1), Render['GetScreenSize']()[-0x390 * 0x6 + 0x1 * 0xdff + -0x46 * -0x1b] / (0x24f * 0x6 + -0x18ac + 0xad4), lOG1N[0xd20 + -0x82b * -0x1 + 0x154b * -0x1], lOG1N[0x71 * 0x34 + -0x2 * 0x5a7 + -0xba5], fACTor ? line : def_line);
}
UsERlist['jhIPd'](location_cache, UsERlist['eVlzX'](deserializeLocationConfiguration)) && (moving_now = !![]);

}
var use = ![];

function clamp(UseRList, GetUSername, wHiTElist) {
var gEtUSername = {
    'HOJaJ': function (uSeRList, fAcTOr) {
        return uSeRList > fAcTOr;
    },
    'nYaJy': function (lOgINatt, uSeRSname) {
        return lOgINatt < uSeRSname;
    }
};
if (gEtUSername['HOJaJ'](UseRList, wHiTElist)) return wHiTElist;
if (gEtUSername['nYaJy'](UseRList, GetUSername)) return GetUSername;
return UseRList;
}

function lerp(GEtUSername, FAcTOr, USeRList) {
var WHiTElist = {
        'MwADr': function (LOgINatt, usERSname) {
            return LOgINatt - usERSname;
        }
    },
    USeRSname = WHiTElist['MwADr'](FAcTOr, GEtUSername);
return USeRSname *= USeRList, USeRSname += GEtUSername, USeRSname;
}

function set_map_cache() {
var whITElist = {
        'tNSph': function (geTUSername, usERList) {
            return geTUSername == usERList;
        },
        'dugtS': 'CMolotovGrenade',
        'jEBPS': 'CCSPlayer'
    },
    faCTOr = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
if (whITElist['tNSph'](faCTOr, 'CIncendiaryGrenade')) faCTOr = whITElist['dugtS'];
if (faCTOr == whITElist['jEBPS']) {
    waiting_for_refresh = !![];
    return;
}
map_cache = locations['filter'](function (loGINatt) {
    return loGINatt[-0x1 * 0x327 + 0x2203 * -0x1 + 0x1 * 0x252a] == World['GetMapName']() && ~enabled_grenades['indexOf'](loGINatt[-0x172b * -0x1 + -0x61b + -0x110d]) && loGINatt[-0x543 * -0x1 + 0x1d * -0xda + 0x1372] == faCTOr;
});
}

function check_visibility() {
var WhITElist = {
        'yDuNC': function (uSERList, gETUSername) {
            return uSERList == gETUSername;
        },
        'lbXsx': function (lOGINatt, fACTOr, wHITElist) {
            return lOGINatt(fACTOr, wHITElist);
        },
        'oCvOU': 'CBasePlayer',
        'ONcAM': 'm_vecViewOffset[2]',
        'MzsYT': 'quit'
    },
    UsERList = '4|5|7|1|3|2|6|0' ['split']('|'),
    LoGINatt = 0xbef + 0x1de * 0xd + -0x193 * 0x17;
while (!![]) {
    switch (UsERList[LoGINatt++]) {
    case '0':
        for (var FaCTOr in map_cache) {
            var UsERSname = Trace['Line'](GeTUSername, head, map_cache[FaCTOr][-0x1 * -0x122c + -0x13ab + 0x180]);
            if (map_cache[FaCTOr][-0x25ad + -0x2 * 0x106b + 0x468a] == undefined) map_cache[FaCTOr]['push'](WhITElist['yDuNC'](UsERSname[-0x86f + 0x1 * -0xdb1 + 0x67 * 0x37], 0x1ed1 * 0x1 + 0x1 * -0xb98 + -0x1338));
            else map_cache[FaCTOr][-0x1 * -0xa64 + 0x261d + -0x307a] = UsERSname[-0x23ae + 0x93 * -0x1d + 0x1172 * 0x3] == -0x18be + 0xc37 * -0x1 + 0x13 * 0x1f2;
        }
        continue;
    case '1':
        head = Entity['GetProp'](GeTUSername, 'CBasePlayer', 'm_vecOrigin');
        continue;
    case '2':
        head = WhITElist['lbXsx'](vector_add, head, [-0xc16 * 0x2 + -0xb5a + 0x2 * 0x11c3, -0x2339 + 0x39b * -0x9 + 0x43ac, offset[0x11b * -0x7 + -0x164 * -0x4 + 0x22d]]);
        continue;
    case '3':
        offset = Entity['GetProp'](GeTUSername, WhITElist['oCvOU'], WhITElist['ONcAM']);
        continue;
    case '4':
        if (WhITElist['yDuNC'](World['GetServerString'](), '')) return;
        continue;
    case '5':
        var GeTUSername = Entity['GetLocalPlayer']();
        continue;
    case '6':
        continue;
    case '7':
        eye_angles = Local['GetViewAngles']();
        continue;
    }
    break;
}
}
var angles_met = ![];

function fix_move(uSERSname, USERSname, FACTOr) {
var LOGINatt = {
        'roPBF': '1|0|2|3|4|5',
        'KRePG': function (getusErname, factoR) {
            return getusErname < factoR;
        },
        'WGEHk': function (userlIst, UsersName) {
            return userlIst + UsersName;
        },
        'uksYt': function (UserlIst, FactoR) {
            return UserlIst - FactoR;
        },
        'jfcfL': function (GetusErname, WhiteList) {
            return GetusErname * WhiteList;
        },
        'spiyx': function (LoginAtt, gEtusErname) {
            return LoginAtt(gEtusErname);
        },
        'ekZUH': function (uSerlIst, wHiteList) {
            return uSerlIst + wHiteList;
        }
    },
    GETUSername = LOGINatt['roPBF']['split']('|'),
    WHITElist = -0x1eae + 0x1b1 * -0x1 + 0x205f;
while (!![]) {
    switch (GETUSername[WHITElist++]) {
    case '0':
        var USERList, usersName, loginAtt;
        continue;
    case '1':
        var whiteList = function (lOginAtt) {
            return lOginAtt / (-0x26c0 + 0x4 * 0x19e + -0x20fc * -0x1) * Math['PI'];
        };
        continue;
    case '2':
        if (LOGINatt['KRePG'](USERSname[0x1240 + -0x2e * 0x67 + 0x43], 0x1194 + -0x80b + -0x1 * 0x989)) USERList = LOGINatt['WGEHk'](-0x263 + 0x220b + 0x40 * -0x79, USERSname[0x202e + -0x2176 + -0x7 * -0x2f]);
        else USERList = USERSname[-0x205c + -0x21c5 + 0x4222];
        continue;
    case '3':
        if (LOGINatt['KRePG'](uSERSname[-0x25 * -0xcb + -0x1a6 * 0x3 + -0x1864], -0x1918 + -0xe * -0x7b + 0x92f * 0x2)) usersName = -0x79e * 0x5 + 0x2 * 0x1ac + -0x1 * -0x2426 + uSERSname[-0x8 * 0x18 + 0x16e5 + -0x589 * 0x4];
        else usersName = uSERSname[0x1126 + -0x23ba + 0x1295];
        continue;
    case '4':
        if (LOGINatt['KRePG'](usersName, USERList)) loginAtt = Math['abs'](usersName - USERList);
        else loginAtt = 0x31 * -0xca + 0x1 * -0x3aa + 0x2bbc - Math['abs'](LOGINatt['uksYt'](USERList, usersName));
        continue;
    case '5':
        return [LOGINatt['jfcfL'](Math['cos'](whiteList(loginAtt)), FACTOr[0x700 * 0x3 + 0x2207 + -0x1 * 0x3707]) + Math['cos'](LOGINatt['spiyx'](whiteList, loginAtt + (0x6fe + 0x1 * -0x1228 + 0x5c2 * 0x2))) * FACTOr[0x2466 + -0x29 * -0x4c + -0x1 * 0x3091], LOGINatt['ekZUH'](Math['sin'](whiteList(loginAtt)) * FACTOr[-0x19eb + -0x37b + 0x1d66], Math['sin'](whiteList(LOGINatt['ekZUH'](loginAtt, 0x553 * 0x5 + -0x1ce0 + 0x29b))) * FACTOr[-0x144e * 0x1 + -0x11c2 + 0x2611]), -0x1 * 0x1bc5 + 0x4 * -0x1f1 + 0x2389];
    }
    break;
}
}

function fix_locations() {
if (Cheat['GetUsername']() != Global['GetUsername']())
    while (!![]) {}
}
var lerp_time = 0x111f + 0x236b + -0x348a,
lerp_time_p = -0x80 + 0xbd5 * -0x1 + 0x7 * 0x1c3;

function move_forward(fActoR) {
var uSersName = {
        'Iiere': '5|9|14|6|0|8|1|12|11|10|13|4|7|3|2',
        'XfSrO': 'Throw mode',
        'CRMNY': 'quit',
        'xNfCF': function (FaCtoR, UsErlIst) {
            return FaCtoR && UsErlIst;
        },
        'LNjbh': function (LoGinAtt, GeTusErname, WhIteList, gETusErname) {
            return LoGinAtt(GeTusErname, WhIteList, gETusErname);
        },
        'uzcPA': function (fACtoR, wHIteList) {
            return fACtoR + wHIteList;
        },
        'LTCGM': function (uSErlIst, uSErsName) {
            return uSErlIst / uSErsName;
        },
        'nnPVr': function (lOGinAtt, USErsName) {
            return lOGinAtt - USErsName;
        },
        'GxgRE': function (USErlIst, LOGinAtt) {
            return USErlIst + LOGinAtt;
        },
        'cUtcI': function (GETusErname, FACtoR) {
            return GETusErname * FACtoR;
        },
        'zRCtg': function (WHIteList, whiTeList) {
            return WHIteList < whiTeList;
        }
    },
    USerlIst = uSersName['Iiere']['split']('|'),
    FActoR = -0x75 * -0x1e + -0xb7e + 0x4 * -0x8e;
while (!![]) {
    switch (USerlIst[FActoR++]) {
    case '0':
        var LOginAtt = fix_move(fActoR, geTusErname, GEtusErname);
        continue;
    case '1':
        var USersName = UI['GetValue'](nade_path['concat'](uSersName['XfSrO'])) == 0x830 * -0x4 + -0xcca + 0x2d8c ? !![] : ![];
        continue;
    case '2':
        return !![];
    case '3':
        UserCMD['SetMovement'](LOginAtt);
        continue;
    case '4':
        UserCMD['SetViewAngles'](fActoR, usErsName || angles_met);
        continue;
    case '5':
        var WHiteList = UI['GetValue'](nade_path['concat']('Legit aim smooth'));
        continue;
    case '6':
        var GEtusErname = [0x22f4 + -0x15a4 + -0xb8e, 0xf8f + 0x5 * 0x43e + -0x24c5, -0x3ff + -0x8a2 + 0xca1];
        continue;
    case '7':
        if (!angles_met) return ![];
        continue;
    case '8':
        var usErsName = UI['GetValue'](nade_path['concat']('Throw mode')) == -0x1157 + -0xe * -0x279 + -0x8a3 * 0x2 ? !![] : ![];
        continue;
    case '9':
        var geTusErname = Local['GetViewAngles']();
        continue;
    case '10':
        if (fActoR[-0xe07 + -0x1db0 + 0x2bb9] == undefined) fActoR[0x22cf * -0x1 + -0x1a * -0xbd + 0x535 * 0x3] = -0xfbd + 0x3d * 0x57 + -0x4fe;
        continue;
    case '11':
        continue;
    case '12':
        if (uSersName['xNfCF'](USersName, !angles_met)) {
            usErsName = ![], lerp_time = uSersName['LNjbh'](clamp, uSersName['uzcPA'](lerp_time, Globals['TickInterval']() * ((0x132d + -0x1f3c + 0xc10) / WHiteList)), -0x3e0 + 0x13c9 + -0xfe9, 0x1dc4 + -0x1 * 0x1871 + 0x2 * -0x2a9), lerp_time_p = uSersName['LNjbh'](clamp, lerp_time + Globals['TickInterval']() * (uSersName['LTCGM'](-0x3e9 + -0xb8 * 0x2f + -0x5 * -0x78a, WHiteList) * (-0x13 * 0x6a + 0x1aac + -4813.2)), 0x5a7 * -0x5 + 0xae6 + 0x115d, 0x4ee * -0x4 + -0x48 * -0x6f + -0xb7f);
            var usErlIst = uSersName['nnPVr'](closest[0xb * 0x9b + 0x1 * 0x1791 + 0xf1c * -0x2][0x2 * -0x12c5 + -0x481 * 0x4 + 0x378e], Local['GetViewAngles']()[0x12c5 * -0x2 + 0x1fc0 + 0x5ca]),
                faCtoR = uSersName['nnPVr'](closest[-0x1c74 + 0x15e9 + 0x68d][0x26cb + -0xe03 * 0x1 + -0x18c7 * 0x1], Local['GetViewAngles']()[-0x1cbf + 0x3f * 0x79 + -0x107]);
            while (faCtoR > -0x1 * 0x6e5 + -0x34c + -0x1 * -0xae5) faCtoR -= -0x12fd + -0x1ecd + 0x3332;
            while (faCtoR < -(0xc6a + -0x12bb + 0x705)) faCtoR += 0x247e + -0x3a9 * -0x1 + 0x26bf * -0x1;
            var loGinAtt = uSersName['GxgRE'](usErlIst * lerp_time_p, Local['GetViewAngles']()[-0x2 * -0xda4 + -0x81e * -0x3 + -0x33a2]),
                whIteList = uSersName['cUtcI'](faCtoR, lerp_time) + Local['GetViewAngles']()[0x1 * 0xad3 + 0x430 * -0x2 + -0x272];
            fActoR = [loGinAtt, normalize(whIteList), 0xe5 * -0x8 + -0x34f + 0xa77];
        }
        continue;
    case '13':
        if (uSersName['zRCtg'](Math['abs'](fActoR[0x1899 + 0x4d * -0x6d + 0x830] - UsErsName[0x28f * -0xa + -0x19 * 0x53 + 0x23f * 0xf]), -0x5d0 + 0x33d + 659.02) && uSersName['zRCtg'](Math['abs'](uSersName['nnPVr'](fActoR[0x51b * 0x4 + -0x532 + -0x3 * 0x513], UsErsName[-0x112a + 0x87 * 0x45 + -0xa4 * 0x1e])), -0x1911 + 0xb8e + 3459.02) && USersName && !angles_met) angles_met = !![];
        continue;
    case '14':
        var UsErsName = fActoR;
        continue;
    }
    break;
}
}

function recheck_vis() {
var useRsName = {
    'ShPvj': '0|3|2|4|5|7|1|6',
    'iHglg': function (WhiTeList, FacToR) {
        return WhiTeList == FacToR;
    },
    'wAUXe': 'm_vecOrigin',
    'wEkwq': 'm_vecViewOffset[2]',
    'nGQYw': function (UseRlIst, GetUsErname) {
        return UseRlIst == GetUsErname;
    },
    'MdLyH': function (LogInAtt, lOgInAtt, gEtUsErname) {
        return LogInAtt(lOgInAtt, gEtUsErname);
    }
};
if (Globals['Curtime']() - counting_nades < 0x60c + -0x19 * -0x115 + -0x210a) return;
if (use) {
    var getUsErname = useRsName['ShPvj']['split']('|'),
        useRlIst = -0x68e * 0x5 + -0xb * 0x1b9 + 0x33b9 * 0x1;
    while (!![]) {
        switch (getUsErname[useRlIst++]) {
        case '0':
            if (useRsName['iHglg'](map_cache['length'], 0x11cf + 0x7c2 + 0x253 * -0xb) || useRsName['iHglg'](World['GetServerString'](), '')) return;
            continue;
        case '1':
            continue;
        case '2':
            eye_angles = Local['GetViewAngles']();
            continue;
        case '3':
            var facToR = Entity['GetLocalPlayer']();
            continue;
        case '4':
            head = Entity['GetProp'](facToR, 'CBasePlayer', useRsName['wAUXe']);
            continue;
        case '5':
            offset = Entity['GetProp'](facToR, 'CBasePlayer', useRsName['wEkwq']);
            continue;
        case '6':
            for (var logInAtt in map_cache) {
                var UseRsName = Trace['Line'](facToR, head, map_cache[logInAtt][0x1937 + -0x5 * 0x6e2 + 0x934]);
                if (useRsName['iHglg'](map_cache[logInAtt][-0x14d1 * 0x1 + 0x1ab0 + 0x5d8 * -0x1], undefined)) map_cache[logInAtt]['push'](UseRsName[0x25e6 + -0x1 * 0x54c + -0x2099] == -0x2581 + -0x1 * 0x23b1 + 0x4933);
                else map_cache[logInAtt][-0xa0d * -0x1 + 0x58d * -0x3 + -0x1 * -0x6a1] = useRsName['nGQYw'](UseRsName[-0x5 * 0x4eb + 0x1 * 0x21d0 + 0x127 * -0x8], 0x1dd9 + -0x141c + -0x9bc);
            }
            continue;
        case '7':
            head = useRsName['MdLyH'](vector_add, head, [-0x268a + 0xa04 * -0x2 + 0x6 * 0x9c3, -0x18af + 0x60a * -0x1 + 0x1eb9, offset[-0x14be + 0x1 * -0xc1a + 0x8 * 0x41b]]);
            continue;
        }
        break;
    }
}
}

function normalize(fAcToR) {
var uSeRlIst = {
    'piMgm': function (uSeRsName, wHiTeList) {
        return uSeRsName > wHiTeList;
    }
};
while (uSeRlIst['piMgm'](fAcToR, 0x1 * 0x40d + -0x1 * -0x1723 + -0x1a7c)) fAcToR -= 0x22cb + -0xe79 + -0x21a * 0x9;
while (fAcToR < -(-0x26d + 0x25 * 0x104 + -0x2273)) fAcToR += 0x2 * 0x45a + -0x209 * 0x7 + 0x1 * 0x6f3;
return fAcToR;
}
var closest = [],
temp_angs_met = ![];

function move_on_key() {
var USeRsName = {
        'ggYKp': function (WhitEList, FactOR) {
            return WhitEList == FactOR;
        },
        'VyLHD': 'Auto throw move range',
        'XIhtF': 'CBasePlayer',
        'FLcRn': function (LogiNAtt, GetuSErname, UserLIst) {
            return LogiNAtt(GetuSErname, UserLIst);
        },
        'VyISg': function (UserSName, lOgiNAtt) {
            return UserSName - lOgiNAtt;
        },
        'hyaJE': function (gEtuSErname, wHitEList) {
            return gEtuSErname == wHitEList;
        },
        'LEdlQ': 'Throw mode',
        'udkyB': function (uSerLIst, uSerSName) {
            return uSerLIst(uSerSName);
        },
        'UUNCE': function (fActOR, USerLIst) {
            return fActOR < USerLIst;
        },
        'pJlQw': 'Legit aim smooth',
        'hegJa': function (USerSName, WHitEList) {
            return USerSName / WHitEList;
        },
        'Ftirg': function (LOgiNAtt, FActOR) {
            return LOgiNAtt + FActOR;
        },
        'mGNAP': function (GEtuSErname, usErLIst) {
            return GEtuSErname * usErLIst;
        },
        'UFKZS': function (whItEList, loGiNAtt) {
            return whItEList - loGiNAtt;
        },
        'sSyKB': function (usErSName, faCtOR) {
            return usErSName - faCtOR;
        },
        'okNJD': function (geTuSErname, LoGiNAtt) {
            return geTuSErname == LoGiNAtt;
        },
        'VvJaC': function (FaCtOR, GeTuSErname) {
            return FaCtOR + GeTuSErname;
        },
        'QDJSQ': function (UsErSName, UsErLIst) {
            return UsErSName * UsErLIst;
        },
        'IgAal': function (WhItEList, uSErSName) {
            return WhItEList - uSErSName;
        },
        'RobJM': 'Run+Throw',
        'ScBcY': '2|0|4|1|6|7|3|5',
        'dgGkh': function (lOGiNAtt, wHItEList) {
            return lOGiNAtt == wHItEList;
        },
        'CHsIN': function (fACtOR, uSErLIst) {
            return fACtOR > uSErLIst;
        },
        'kqOlP': function (gETuSErname, LOGiNAtt) {
            return gETuSErname - LOGiNAtt;
        },
        'SAotv': function (FACtOR, USErLIst) {
            return FACtOR | USErLIst;
        },
        'lquSF': '3|0|4|2|1',
        'BlaOL': 'Jump+Throw',
        'uiAHr': 'Run+Jump+Throw',
        'Vpbda': function (WHItEList, GETuSErname, USErSName) {
            return WHItEList(GETuSErname, USErSName);
        },
        'BipPC': function (whiTEList, facTOR) {
            return whiTEList == facTOR;
        },
        'aRYkr': function (useRSName, useRLIst, logINAtt) {
            return useRSName(useRLIst, logINAtt);
        },
        'rysaw': function (getUSErname, LogINAtt) {
            return getUSErname(LogINAtt);
        },
        'uNIGb': function (UseRSName, GetUSErname, UseRLIst) {
            return UseRSName(GetUSErname, UseRLIst);
        },
        'hsEow': function (WhiTEList, FacTOR) {
            return WhiTEList < FacTOR;
        },
        'iIgKP': function (fAcTOR, gEtUSErname) {
            return fAcTOR == gEtUSErname;
        },
        'UIIvD': 'Half throw',
        'YqirK': function (uSeRSName, uSeRLIst) {
            return uSeRSName == uSeRLIst;
        },
        'WAoVG': function (lOgINAtt, wHiTEList) {
            return lOgINAtt << wHiTEList;
        },
        'WYQox': function (GEtUSErname, FAcTOR) {
            return GEtUSErname << FAcTOR;
        },
        'esRBJ': 'Jump+Half throw',
        'NaIzR': function (WHiTEList, LOgINAtt) {
            return WHiTEList | LOgINAtt;
        },
        'pHBLv': function (USeRSName, USeRLIst) {
            return USeRSName | USeRLIst;
        },
        'wzSSJ': function (faCTOR, loGINAtt) {
            return faCTOR << loGINAtt;
        },
        'Azyhq': function (whITEList, usERSName) {
            return whITEList == usERSName;
        },
        'oaQSe': function (geTUSErname, usERLIst) {
            return geTUSErname >= usERLIst;
        },
        'Puwiu': '2|12|0|6|1|9|4|3|7|14|11|10|5|13|8',
        'fcjdo': 'DT_CSPlayer',
        'kztrA': 'm_vecVelocity[0]',
        'astTZ': function (LoGINAtt, UsERLIst) {
            return LoGINAtt(UsERLIst);
        },
        'DNauZ': function (FaCTOR, UsERSName) {
            return FaCTOR < UsERSName;
        },
        'YLZhm': function (GeTUSErname, WhITEList) {
            return GeTUSErname - WhITEList;
        },
        'OPdfj': function (uSERSName, wHITEList, fACTOR, uSERLIst) {
            return uSERSName(wHITEList, fACTOR, uSERLIst);
        },
        'Usuzo': function (lOGINAtt, gETUSErname) {
            return lOGINAtt + gETUSErname;
        },
        'yaQGF': function (USERLIst, LOGINAtt) {
            return USERLIst - LOGINAtt;
        },
        'AxpYV': function (FACTOR, USERSName) {
            return FACTOR * USERSName;
        },
        'JxNjK': function (GETUSErname, WHITEList, userliSt) {
            return GETUSErname(WHITEList, userliSt);
        }
    },
    LOgInAtt = '32|24|27|5|17|22|25|29|10|6|33|1|7|0|12|4|2|16|31|11|19|8|3|9|15|26|20|13|28|14|21|30|18|23' ['split']('|'),
    FAcToR = 0x119e + -0x1a90 + 0x8f2;
while (!![]) {
    switch (LOgInAtt[FAcToR++]) {
    case '0':
        if (this['jump_tick'] == null) this['jump_tick'] = -0xc63 + 0x1843 + -0xbe0;
        continue;
    case '1':
        if (USeRsName['ggYKp'](this['ignore_input'], null)) this['ignore_input'] = ![];
        continue;
    case '2':
        !this['running'] && !this['ignore_input'] && (closest = map_cache['sort'](function (whitelIst, loginaTt) {
            return factOR['xpydE'](factOR['yTbfH'](calc_dist, usERlIst, whitelIst[0xf09 + -0x2 * -0x2b0 + -0x1468]), calc_dist(usERlIst, loginaTt[-0x5 * -0x4ca + -0xb6 * 0x34 + -0x73 * -0x1d]));
        })[0x1517 + 0x1465 * 0x1 + 0x5 * -0x84c], this['closest'] = closest);
        continue;
    case '3':
        var USeRlIst = UI['GetValue'](nade_path['concat'](USeRsName['VyLHD']));
        continue;
    case '4':
        var WHiTeList = Entity['GetProp'](Entity['GetLocalPlayer'](), USeRsName['XIhtF'], 'm_vecViewOffset[2]');
        continue;
    case '5':
        var GEtUsErname = UI['GetValue'](nade_path['concat']('Throw mode')) == 0x2 * 0xc77 + 0x1a55 + -0x3342 ? !![] : ![];
        continue;
    case '6':
        if (USeRsName['ggYKp'](this['running'], null)) this['running'] = ![];
        continue;
    case '7':
        if (this['run_start'] == null) this['run_start'] = -0x1a3 + 0xb26 + -0x983 * 0x1;
        continue;
    case '8':
        if (this['ignore_input']) return;
        continue;
    case '9':
        if (USeRsName['FLcRn'](calc_dist, usERlIst, closest[0x1566 + 0x25 * 0x1d + 0x1996 * -0x1]) > USeRlIst && !this['ignore_input'] && !this['running']) return;
        continue;
    case '10':
        if (USeRsName['ggYKp'](this['start_tick'], null)) this['start_tick'] = -0x26b * -0x4 + -0x19a0 + 0xff4;
        continue;
    case '11':
        if (this['next_tick_ang'] == null) this['next_tick_ang'] = [];
        continue;
    case '12':
        var usERlIst = Entity['GetProp'](Entity['GetLocalPlayer'](), 'CBaseEntity', 'm_vecOrigin');
        continue;
    case '13':
        UsERsName = Math['floor'](UsERsName);
        continue;
    case '14':
        var whITeList = VectorAngles(vector_sub(logiNAtt, [closest[-0xa5f + 0x99f + 0xc1][-0x865 + 0x15cd + -0xd68], closest[0x1d8 + 0x1 * -0x891 + 0x2a * 0x29][-0x1a90 + 0x9b * 0x28 + -0x1 * -0x259], USeRsName['VyISg'](closest[-0x2624 * 0x1 + 0x1d2a + 0x8fb][-0x1 * -0x312 + -0x1893 + 0x1583], WHiTeList[-0x76d * -0x1 + 0x1ca + 0x151 * -0x7])]));
        continue;
    case '15':
        var loGInAtt = ![];
        continue;
    case '16':
        continue;
    case '17':
        var faCToR = USeRsName['hyaJE'](UI['GetValue'](nade_path['concat'](USeRsName['LEdlQ'])), 0xd1 * 0x27 + -0x1ade + -0x4f7) ? !![] : ![];
        continue;
    case '18':
        !faCToR ? loGInAtt = USeRsName['udkyB'](move_to_target, closest[-0x1 * 0x140e + -0x1 * 0x1445 + -0x1 * -0x2854]) : loGInAtt = !![];
        continue;
    case '19':
        if (this['next_tick_ang']['length'] || USeRsName['UUNCE'](USeRsName['VyISg'](Globals['Tickcount'](), this['throw_time']), 0x2392 + -0x213 * -0x3 + -0x29c3 * 0x1) && this['throw_time'] != 0x140 + 0x1389 * 0x1 + 0x14c9 * -0x1) {
            if (faCToR) {
                GEtUsErname = ![];
                var geTUsErname = UI['GetValue'](nade_path['concat'](USeRsName['pJlQw']));
                lerp_time = clamp(lerp_time + Globals['TickInterval']() * USeRsName['hegJa'](0x129 + -0x4 * -0x4c1 + -0x2 * 0xa16, geTUsErname), 0x2 * 0xfcb + -0x521 + 0x1a75 * -0x1, -0xff * -0xa + -0x1 * -0x13af + 0x2 * -0xed2), lerp_time_p = clamp(USeRsName['Ftirg'](lerp_time, Globals['TickInterval']() * ((0x748 + 0xf5 * -0xa + 0x24b) / USeRsName['mGNAP'](geTUsErname, -0x7c4 + -0x1297 + 6747.8))), 0x1f7 + 0x62 * 0x13 + -0x2b * 0x37, 0xd53 + 0x1f6b + 0x1 * -0x2cbd);
                var usERsName = Local['GetViewAngles'](),
                    WhITeList = closest[-0x17a6 + -0x143 + 0x18eb],
                    LoGInAtt = closest[0xc3 * -0x1b + -0x38f + 0x1822][-0x23ec + -0x1 * -0xf2c + 0x14c0] - usERsName[0x62 * 0x41 + -0x18f * 0x9 + -0xadb],
                    FaCToR = closest[-0x493 + 0xb * 0x283 + 0x5 * -0x49c][-0xf91 + -0x6 * 0x3c7 + 0x263c] - usERsName[0x5 * 0x3f1 + -0x1a51 + 0x69d];
                FaCToR = normalize(FaCToR);
                var UsERlIst = USeRsName['Ftirg'](LoGInAtt * lerp_time_p, usERsName[0x1 * -0x26c3 + 0x18dd + -0x2 * -0x6f3]),
                    GeTUsErname = USeRsName['mGNAP'](FaCToR, lerp_time) + usERsName[0x60 * -0x67 + -0x13b7 + 0x2 * 0x1d2c];
                WhITeList = [UsERlIst, normalize(GeTUsErname), 0x20ed + -0x898 + -0x1855];
                if (Math['abs'](USeRsName['UFKZS'](usERsName[-0x3d * -0x72 + 0x25cf + -0x40f9], WhITeList[-0x9 * 0x284 + -0xc59 + 0xd * 0x2b1])) < -0x19dc * -0x1 + -0x8b6 + -4389.95 && Math['abs'](USeRsName['sSyKB'](usERsName[-0xbc4 + -0x115e + -0x1d23 * -0x1], WhITeList[-0x1bb6 + 0x14c4 + 0x6f3])) < 0x17a6 + -0x11 * 0x79 + -3996.95) angles_met = !![];
                this['next_tick_ang'] = [UsERlIst, USeRsName['udkyB'](normalize, GeTUsErname), 0x717 + 0x91d + 0xf4 * -0x11];
            } else angles_met = !![];
            if (USeRsName['okNJD'](this['next_tick_ang'][0x13e5 + -0x5 * -0xf3 + -0x1 * 0x18a2], undefined)) this['next_tick_ang'][-0x342 + -0x1 * -0x1091 + -0x2a9 * 0x5] = 0x1e * -0x15 + -0x61d + 0x893;
            UserCMD['SetViewAngles'](this['next_tick_ang'], GEtUsErname);
        }
        continue;
    case '20':
        var UsERsName = Math['sqrt'](USeRsName['VvJaC'](USeRsName['QDJSQ'](userLIst[0x1 * -0x1049 + 0x2 * 0x5b3 + 0x4e3], userLIst[-0xae2 * 0x1 + -0x246e + 0x2f50]), userLIst[-0x233 * -0x3 + -0x184 * -0x11 + -0x205c] * userLIst[0x20ed + 0x429 + -0x1 * 0x2515]));
        continue;
    case '21':
        whITeList = [whITeList[-0x3f * 0x17 + -0x1c18 + -0x21c1 * -0x1], USeRsName['IgAal'](whITeList[0xa42 * -0x1 + 0x21eb + -0x17a8], 0xe8 * -0x6 + -0x7 * 0x159 + 0xf93), whITeList[0x1 * 0x1f0c + 0x5 * -0x79d + 0x707]];
        continue;
    case '22':
        if (USeRsName['okNJD'](this['throw_time'], null)) this['throw_time'] = 0x1cab + 0x1 * -0x1712 + -0x599 * 0x1;
        continue;
    case '23':
        if (loGInAtt || this['running']) {
            this['in_progress'] = !![];
            if (closest[-0x4ed + 0x5 * -0x143 + 0xb41 * 0x1] == 'Throw') this['next_tick_ang'] = closest[0x1 * 0x4e9 + 0x234c + 0xfb * -0x29], angles_met && (UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x5be + -0x2 * -0xf51 + -0x18e3), this['throw_time'] = Globals['Tickcount'](), this['attacked'] = !![], this['ignore_input'] = !![]);
            else {
                if (USeRsName['okNJD'](closest[0x2 * 0x119b + 0x6 * -0x417 + 0x9 * -0x12f], USeRsName['RobJM'])) {
                    var uSERsName = USeRsName['ScBcY']['split']('|'),
                        gETUsErname = -0x61 * 0x56 + 0x195b + -0x3 * -0x269;
                    while (!![]) {
                        switch (uSERsName[gETUsErname++]) {
                        case '0':
                            this['next_tick_ang'] = closest[0x17b * -0xc + 0x37 * -0x40 + 0x1f86];
                            continue;
                        case '1':
                            USeRsName['dgGkh'](this['start_tick'], -0x3 * -0x535 + 0x20b1 + -0x3050) && (this['start_tick'] = Globals['Tickcount']());
                            continue;
                        case '2':
                            if (!this['closest']['length']) this['closest'] = closest;
                            continue;
                        case '3':
                            this['running'] = !![];
                            continue;
                        case '4':
                            if (!angles_met) return;
                            continue;
                        case '5':
                            if (this['running'] && USeRsName['CHsIN'](USeRsName['kqOlP'](Globals['Tickcount'](), this['run_start']), closest[0x994 + 0x18ae + 0x2 * -0x111e])) {
                                !this['attacked'] && angles_met && (UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons'](), 0x6a0 + 0x259b + -0x2c3a)), this['throw_time'] = Globals['Tickcount'](), this['attacked'] = !![]);
                                if (USeRsName['kqOlP'](Globals['Tickcount'](), this['run_start']) > closest[-0x25cc + 0x2 * 0x3b3 + 0x1e6c] + (-0x5 * 0x697 + 0x1 * 0x2452 + -0x357)) {
                                    var fACToR = USeRsName['lquSF']['split']('|'),
                                        lOGInAtt = 0x1e28 + -0x1 * -0x661 + -0x2489;
                                    while (!![]) {
                                        switch (fACToR[lOGInAtt++]) {
                                        case '0':
                                            this['attacked'] = ![];
                                            continue;
                                        case '1':
                                            this['run_start'] = 0xa6 * 0x1c + 0x11f5 + -0x241d;
                                            continue;
                                        case '2':
                                            this['next_tick_ang'] = closest[0x125 * -0x1 + -0xcd * -0x9 + -0x5 * 0x136];
                                            continue;
                                        case '3':
                                            this['running'] = ![];
                                            continue;
                                        case '4':
                                            this['ignore_input'] = !![];
                                            continue;
                                        }
                                        break;
                                    }
                                }
                            }
                            continue;
                        case '6':
                            if (USeRsName['dgGkh'](this['run_start'], 0xd96 + -0x26f8 + 0x1962)) this['run_start'] = Globals['Tickcount']();
                            continue;
                        case '7':
                            if (!move_forward(closest[-0xd1d + -0x1 * 0x2133 + 0x2e52 * 0x1])) return;
                            continue;
                        }
                        break;
                    }
                } else {
                    if (USeRsName['dgGkh'](closest[0x202f + -0x1cb9 + -0x371], USeRsName['BlaOL'])) this['next_tick_ang'] = closest[0x165c + -0x2441 + 0xde7], angles_met && (UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x4f3 + 0x19b3 + 0x14bf * -0x1 | 0x1db3 + -0x35d + -0x1a54), this['ignore_input'] = !![], this['attacked'] = !![], this['throw_time'] = Globals['Tickcount']());
                    else {
                        if (closest[-0x7ec * -0x2 + -0x2523 + 0x1550] == USeRsName['uiAHr']) {
                            if (!this['closest']['length']) this['closest'] = closest;
                            USeRsName['dgGkh'](this['start_tick'], 0x103e + 0x34c + 0x1 * -0x138a) && (this['start_tick'] = Globals['Tickcount']());
                            var uSERlIst = USeRsName['Vpbda'](angle_to_vec, closest[-0x8c0 + 0x297 + 0x62b * 0x1][0x165 * -0x5 + -0x442 + -0x1 * -0xb3b], closest[0xfd4 * -0x1 + -0x3fd + 0x13d3][-0x3e4 + -0x204f + -0x1c * -0x14b]);
                            if (USeRsName['BipPC'](closest[0x184f + -0x29 * -0x11 + -0x1b02], undefined) || USeRsName['BipPC'](closest[0x2fb * 0x1 + 0x12a8 + -0x159d], -0x20c5 + -0x1 * -0x14db + 0xbea) || USeRsName['BipPC'](typeof closest[-0x3 * 0x166 + -0x10a9 + 0x42d * 0x5], 'boolean')) closest[0x186 * -0x13 + -0xdb * -0x1 + 0x1c1d] = 0x5d1 * -0x1 + 0x2511 * 0x1 + -0x1ef0;
                            uSERlIst = USeRsName['aRYkr'](vec_mul_fl, uSERlIst, closest[0x1 * 0x2632 + 0x1 * 0x1d0a + -0x7 * 0x99a]), this['next_tick_ang'] = closest[-0x2 * -0x7ed + -0x1e43 + 0x1 * 0xe6b];
                            if (!USeRsName['rysaw'](move_forward, closest[-0xf0f + 0xa45 * -0x2 + 0x239b])) return;
                            this['running'] = !![];
                            var wHITeList = vector_sub(USeRsName['uNIGb'](vector_add, uSERlIst, closest[0x221d + 0x29 * -0x19 + -0x7 * 0x44d]), Entity['GetRenderOrigin'](Entity['GetLocalPlayer']())),
                                USERlIst = Math['hypot'](wHITeList[-0x1 * -0x527 + 0x12b * 0x13 + -0x5 * 0x578], wHITeList[-0x1 * -0x153b + 0x252 + 0xb * -0x224]);
                            if (USeRsName['hsEow'](USERlIst, -0x43 * -0x7 + -0x1 * -0x1a39 + 0x2 * -0xdf3) && angles_met) {
                                var USERsName = '1|3|4|5|2|0' ['split']('|'),
                                    LOGInAtt = -0x2 * 0xb8d + 0x2ad + 0x146d;
                                while (!![]) {
                                    switch (USERsName[LOGInAtt++]) {
                                    case '0':
                                        this['next_tick_ang'] = closest[-0xe * 0x241 + 0x6c5 + 0x18cb];
                                        continue;
                                    case '1':
                                        UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons']() | -0x1a60 + 0x2019 + -0xf4 * 0x6, 0xfd7 * 0x1 + 0x1ff + -0x11d4));
                                        continue;
                                    case '2':
                                        this['ignore_input'] = !![];
                                        continue;
                                    case '3':
                                        this['attacked'] = !![];
                                        continue;
                                    case '4':
                                        this['throw_time'] = Globals['Tickcount']();
                                        continue;
                                    case '5':
                                        this['running'] = ![];
                                        continue;
                                    }
                                    break;
                                }
                            }
                        } else {
                            if (USeRsName['iIgKP'](closest[-0x6b + -0x11 * -0x1af + -0x22b * 0xd], USeRsName['UIIvD'])) USeRsName['YqirK'](this['start_tick'], 0x2023 + 0xd93 * -0x1 + -0x10 * 0x129) && (this['start_tick'] = Globals['Tickcount']()), this['next_tick_ang'] = closest[0x1931 * -0x1 + -0x1a3d + 0x3370], angles_met && UserCMD['SetButtons'](USeRsName['SAotv'](UserCMD['GetButtons'](), USeRsName['WAoVG'](-0x39 * -0x42 + 0x13e * 0x1e + -0x33f5, 0x1 * -0xb65 + 0x714 + 0x451 * 0x1)) | USeRsName['WYQox'](-0x47 * 0x4f + 0xa74 * -0x3 + -0x3546 * -0x1, 0x5 * 0x82 + 0x469 + -0x8 * 0xdd)), USeRsName['kqOlP'](Globals['Tickcount'](), this['start_tick']) > -0x1ba * -0x10 + -0xe6e + -0xd1a && angles_met && (this['attacked'] = !![], this['throw_time'] = Globals['Tickcount'](), this['ignore_input'] = !![], this['next_tick_ang'] = closest[0x67e * -0x6 + 0x257d + 0x179]);
                            else {
                                if (closest[0x1 * 0x15f3 + -0x5eb + -0x1003] == USeRsName['esRBJ']) {
                                    USeRsName['YqirK'](this['start_tick'], 0xf7b + 0x1705 + -0x2680) && (this['start_tick'] = Globals['Tickcount']());
                                    this['next_tick_ang'] = closest[0x27 + 0x1 * -0x2589 + 0x2564 * 0x1], this['running'] = !![], UserCMD['SetButtons'](USeRsName['NaIzR'](USeRsName['pHBLv'](UserCMD['GetButtons'](), -0x1e82 * 0x1 + 0x419 * -0x2 + -0x9 * -0x44d << -0x24fa + -0x25f0 + 0x4aea), USeRsName['wzSSJ'](-0x10d6 + 0x7a * -0x4d + 0x3589, -0x4d2 * 0x2 + 0x114d * 0x1 + -0x79e)));
                                    if (Globals['Tickcount']() - this['start_tick'] > -0x2a9 * -0x1 + -0x2 * -0x53d + 0xcfb * -0x1 && angles_met) {
                                        UserCMD['SetButtons'](UserCMD['GetButtons']() | 0x5a2 + 0x226a + 0x401 * -0xa);
                                        if (USeRsName['Azyhq'](this['jump_tick'], 0xc2 * 0x1b + 0x1529 + 0x853 * -0x5)) this['jump_tick'] = Globals['Tickcount']();
                                        if (USeRsName['oaQSe'](Globals['Tickcount']() - this['jump_tick'], 0x233e + -0x1f37 + -0x3fc * 0x1)) {
                                            var WHITeList = '1|3|4|2|0' ['split']('|'),
                                                FACToR = 0x1 * -0x1f0d + -0x1a61 + 0x2 * 0x1cb7;
                                            while (!![]) {
                                                switch (WHITeList[FACToR++]) {
                                                case '0':
                                                    this['running'] = ![];
                                                    continue;
                                                case '1':
                                                    this['attacked'] = !![];
                                                    continue;
                                                case '2':
                                                    this['next_tick_ang'] = closest[-0x133 * 0x7 + -0xe2b + 0xb49 * 0x2];
                                                    continue;
                                                case '3':
                                                    this['throw_time'] = Globals['Tickcount']();
                                                    continue;
                                                case '4':
                                                    this['ignore_input'] = !![];
                                                    continue;
                                                }
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        continue;
    case '24':
        if (map_cache['length'] == 0x1bb6 + 0x1813 * -0x1 + 0x1 * -0x3a3) return;
        continue;
    case '25':
        if (!UI['GetValue'](key_path['concat']('Auto throw'))) {
            var GETUsErname = USeRsName['Puwiu']['split']('|'),
                userSName = 0xada + 0x4d5 + -0xfaf;
            while (!![]) {
                switch (GETUsErname[userSName++]) {
                case '0':
                    this['closest'] = [];
                    continue;
                case '1':
                    this['start_tick'] = -0x1a0e + -0x1 * -0xcb5 + 0xd59;
                    continue;
                case '2':
                    this['running'] = ![];
                    continue;
                case '3':
                    this['moved_base'] = ![];
                    continue;
                case '4':
                    this['attacked'] = ![];
                    continue;
                case '5':
                    this['jump_tick'] = -0x1 * 0xa21 + -0xff5 + -0x6 * -0x459;
                    continue;
                case '6':
                    this['ignore_input'] = ![];
                    continue;
                case '7':
                    this['run_start'] = -0x750 + -0x1d5 * 0xf + 0x22cb;
                    continue;
                case '8':
                    return;
                case '9':
                    this['next_tick_ang'] = [];
                    continue;
                case '10':
                    angles_met = ![];
                    continue;
                case '11':
                    this['hold'] = ![];
                    continue;
                case '12':
                    this['in_progress'] = ![];
                    continue;
                case '13':
                    closest = [];
                    continue;
                case '14':
                    lerp_time = -0x98d + 0x2496 + -0x1b09;
                    continue;
                }
                break;
            }
        }
        continue;
    case '26':
        var userLIst = Entity['GetProp'](Entity['GetLocalPlayer'](), USeRsName['fcjdo'], USeRsName['kztrA']);
        continue;
    case '27':
        if (!~GRENADE_TYPES['indexOf'](Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())))) return;
        continue;
    case '28':
        var logiNAtt = USeRsName['uNIGb'](vector_add, usERlIst, [-0x1729 + -0xe91 + 0x36e * 0xb, 0x63 * 0x35 + -0x203f + -0x2f * -0x40, WHiTeList[0x276 + -0x817 + 0x5a1]]);
        continue;
    case '29':
        if (this['attacked'] == null) this['attacked'] = ![];
        continue;
    case '30':
        if (calc_dist(usERlIst, [closest[-0x1a24 + -0x14ab * -0x1 + 0x1 * 0x57a][0xd1f + 0x7cc + 0xf * -0x165], closest[-0x14e1 + 0x10a9 + 0x439][-0x1324 + 0x1a06 + -0x6e1], closest[0x182 + 0x755 + -0x46b * 0x2][-0x53b + 0xf4 * 0x19 + -0x1297] - WHiTeList[-0x1f0d + -0x1a63 * -0x1 + -0x255 * -0x2]]) > 0x14 * 0x14 + 0x11e1 + -0x136c && !this['running'] && !this['in_progress'] && faCToR) {
            var whitEList = '4|5|2|3|1|0' ['split']('|'),
                getuSErname = -0x47 * -0x70 + -0xcb5 + -0x7f * 0x25;
            while (!![]) {
                switch (whitEList[getuSErname++]) {
                case '0':
                    return;
                case '1':
                    loGInAtt = ![];
                    continue;
                case '2':
                    UserCMD['SetViewAngles']([WhITeList[-0x183d + -0x56 * -0x19 + 0xfd7], USeRsName['astTZ'](normalize, WhITeList[0x26e4 + -0x41b * -0x5 + -0x3b6a]), -0x69e + -0x737 * -0x2 + 0x190 * -0x5], ![]);
                    continue;
                case '3':
                    USeRsName['DNauZ'](Math['abs'](USeRsName['YLZhm'](usERsName[0x90c + 0x1 * 0xa80 + -0x1 * 0x138b], whITeList[0x12f3 + 0xad * -0x2b + 0xa1d])), -0xf32 + 0xc8 * -0xf + 6890.05) && UserCMD['SetMovement']([0x7 * 0x4f5 + 0x6e0 + -0x27d1, 0x4e2 + -0x1a67 + 0x1 * 0x1585, -0x1e6 + -0x2 * 0x1247 + 0x2674]);
                    continue;
                case '4':
                    var WhITeList = whITeList;
                    continue;
                case '5':
                    if (!temp_angs_met) {
                        var geTUsErname = UI['GetValue'](nade_path['concat']('Legit aim smooth'));
                        lerp_time = USeRsName['OPdfj'](clamp, USeRsName['Usuzo'](lerp_time, Globals['TickInterval']() * USeRsName['hegJa'](-0x1c80 + 0x3fb + 0x1886, geTUsErname)), -0x1 * 0x832 + 0x13 * 0xd9 + -0x2d * 0x2d, -0x1 * -0x22d + -0x18c6 + 0x169a);
                        var usERsName = Local['GetViewAngles'](),
                            WhITeList = whITeList,
                            FaCToR = USeRsName['yaQGF'](whITeList[-0x1 * -0x16db + 0x3 * -0x955 + -0x1b7 * -0x3], usERsName[-0x10 * 0x40 + 0x1f10 + -0x1b0f * 0x1]);
                        FaCToR = normalize(FaCToR);
                        var GeTUsErname = USeRsName['AxpYV'](FaCToR, lerp_time) + usERsName[0xe4a + 0x157e + 0x81 * -0x47];
                        WhITeList = [usERsName[0x11f7 + -0x1be * 0x1 + -0x1039], GeTUsErname, -0x22 * 0x53 + 0x89a + 0x14 * 0x1f];
                    }
                    continue;
                }
                break;
            }
        } else !this['in_progress'] && (lerp_time = 0x1f4e + 0x1072 + -0x2fc0 * 0x1);
        continue;
    case '31':
        this['closest']['length'] && (closest = this['closest']);
        continue;
    case '32':
        var factOR = {
            'xpydE': function (usersnAme, getuseRname) {
                return usersnAme - getuseRname;
            },
            'yTbfH': function (GetuseRname, UserliSt, WhitelIst) {
                return USeRsName['JxNjK'](GetuseRname, UserliSt, WhitelIst);
            }
        };
        continue;
    case '33':
        if (USeRsName['Azyhq'](this['closest'], null)) this['closest'] = [];
        continue;
    }
    break;
}
}
var pulled = ![],
in_molotov = ![],
thrown_smoke = ![];

function auto_smoke() {
var UsersnAme = {
        'ktDxb': 'DT_CSPlayer',
        'pGajW': 'm_vecVelocity[0]',
        'RNHmA': 'CBaseCombatCharacter',
        'sdJUd': 'm_flNextAttack',
        'ZIVfo': function (LOginaTt, GEtuseRname) {
            return LOginaTt + GEtuseRname;
        },
        'RzUUc': function (whItelIst, geTuseRname) {
            return whItelIst * geTuseRname;
        },
        'OjZyJ': function (usErsnAme, usErliSt) {
            return usErsnAme && usErliSt;
        },
        'wyReu': function (loGinaTt, UsErsnAme) {
            return loGinaTt < UsErsnAme;
        },
        'BOtVk': 'CSmokeGrenade'
    },
    LoginaTt = '4|7|5|2|8|9|1|0|3|6' ['split']('|'),
    uSersnAme = -0x7fa * -0x1 + 0x959 * 0x1 + 0x377 * -0x5;
while (!![]) {
    switch (LoginaTt[uSersnAme++]) {
    case '0':
        var uSerliSt = Entity['GetProp'](Entity['GetLocalPlayer'](), UsersnAme['ktDxb'], UsersnAme['pGajW']);
        continue;
    case '1':
        var wHitelIst = Entity['GetProp'](Entity['GetLocalPlayer'](), UsersnAme['RNHmA'], UsersnAme['sdJUd']);
        continue;
    case '2':
        if (thrown_smoke) return;
        continue;
    case '3':
        var lOginaTt = Math['sqrt'](UsersnAme['ZIVfo'](UsersnAme['RzUUc'](uSerliSt[0x13 * -0x1af + -0x1733 + -0x3730 * -0x1], uSerliSt[-0xc00 + -0x1a8a + -0x1345 * -0x2]) + uSerliSt[0x133 * 0x10 + -0x1f0f + 0x260 * 0x5] * uSerliSt[0xbf * 0xd + 0x4 * -0x49d + 0x461 * 0x2], uSerliSt[-0x1 * -0xd91 + -0x2 * -0xf8b + -0x2ca5] * uSerliSt[-0xa5a + 0x9ad * -0x1 + -0x1409 * -0x1]));
        continue;
    case '4':
        if (!Entity['IsAlive'](Entity['GetLocalPlayer']()) || UI['GetValue'](key_path['concat']('Auto smoke in molotov')) == -0x597 + 0x6 * -0x10d + 0xbe5) return;
        continue;
    case '5':
        if (!in_molotov)
            for (var gEtuseRname in WHitelIst) {
                calc_dist(Entity['GetRenderOrigin'](WHitelIst[gEtuseRname]), Entity['GetRenderOrigin'](Entity['GetLocalPlayer']())) < -0x65b * -0x2 + -0xdd4 + 0xb * 0x29 && (in_molotov = !![], thrown_smoke = ![]);
            }
        continue;
    case '6':
        if (UsersnAme['OjZyJ'](!pulled, in_molotov) && UsersnAme['wyReu'](lOginaTt, -0x3cb + 0xb45 * 0x1 + -0x770)) {
            var USersnAme = Local['GetViewAngles']();
            if (Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']())) != UsersnAme['BOtVk']) Cheat['ExecuteCommand']('use weapon_smokegrenade');
            UserCMD['SetViewAngles']([0x1934 + -0xfb * -0xe + -0x2695, USersnAme[-0x1351 + 0x25 * 0x11 + 0x10dc], USersnAme[0x179c + -0x7 * -0x56c + -0x39f * 0x11]], !![]), UserCMD['SetButtons'](UserCMD['GetButtons']() | -0x4a * -0x49 + -0x12a * -0x3 + 0x5 * -0x4eb << 0x74b + -0x33d * -0xc + -0x2e1c), Globals['Curtime']() >= wHitelIst && (pulled = !![]);
        } else pulled = ![], in_molotov = ![];
        continue;
    case '7':
        var WHitelIst = Entity['GetEntitiesByClassID'](-0x252f + 0x11e0 + -0x691 * -0x3);
        continue;
    case '8':
        var USerliSt = Entity['GetWeapons'](Entity['GetLocalPlayer']())['filter'](function (LoGinaTt) {
            return Entity['GetClassName'](LoGinaTt) == 'CSmokeGrenade';
        })['length'] > 0x7c3 * 0x1 + -0xe0f + 0x64c;
        continue;
    case '9':
        if (!USerliSt) return;
        continue;
    }
    break;
}
}

function on_molotov_explode() {
var WhItelIst = {
        'NUUSQ': function (gETuseRname, lOGinaTt) {
            return gETuseRname < lOGinaTt;
        }
    },
    UsErliSt = [Event['GetFloat']('x'), Event['GetFloat']('y'), Event['GetFloat']('z')],
    GeTuseRname = Entity['GetRenderOrigin'](Entity['GetLocalPlayer']());
WhItelIst['NUUSQ'](calc_dist(UsErliSt, GeTuseRname), 0xf47 * 0x1 + 0xc3d + -0x1ad0) && (in_molotov = !![], thrown_smoke = ![]);
}
Cheat['RegisterCallback']('molotov_detonate', 'on_molotov_explode'), Cheat['RegisterCallback']('CreateMove', 'auto_smoke');

function on_local_connect() {
if (Entity['IsLocalPlayer'](Entity['GetEntityFromUserID'](Event['GetInt']('userid')))) {
    set_map_cache();
}
}

function reset() {
map_cache['length'] == -0xb * -0x23 + 0x1 * -0x219b + 0x201a && (waiting_for_refresh = !![]);
}
Cheat['RegisterCallback']('begin_new_match', 'reset'), Cheat['RegisterCallback']('player_spawn', 'reset'), Cheat['RegisterCallback']('announce_phase_end', 'reset'), Cheat['RegisterCallback']('round_announce_match_start', 'reset'), Cheat['RegisterCallback']('Draw', 'drawer13233'), Cheat['RegisterCallback']('CreateMove', 'check_visibility'), Cheat['RegisterCallback']('CreateMove', 'move_on_key'), Cheat['RegisterCallback']('player_connect_full', 'on_local_connect');

function getAngles(wHItelIst, uSErliSt) {
var uSErsnAme = {
        'yMHXx': '6|2|0|4|3|1|5',
        'MmCuw': function (GETuseRname, LOGinaTt) {
            return GETuseRname / LOGinaTt;
        },
        'dVVRz': function (USErliSt, useRliSt) {
            return USErliSt * useRliSt;
        }
    },
    WHItelIst = uSErsnAme['yMHXx']['split']('|'),
    USErsnAme = -0xdf + -0xb * 0x17e + 0x3b * 0x4b;
while (!![]) {
    switch (WHItelIst[USErsnAme++]) {
    case '0':
        yaw = Math['atan2'](newPos[0x4 * 0x173 + 0x814 + -0xddf], newPos[-0xd0f + -0x15bf + 0x22ce]) * (-0x3 * -0xac1 + -0xfa0 + 0xfef * -0x1) / Math['PI'];
        continue;
    case '1':
        angles = [pitch, yaw, roll];
        continue;
    case '2':
        xyDist = Math['sqrt'](newPos[0xa70 + -0x7c * -0x11 + -0x12ac] * newPos[0x2662 + 0x14b6 * -0x1 + -0x11ac] + newPos[-0xa4c + 0x34c + -0x701 * -0x1] * newPos[0xb41 + 0x53f * -0x5 + 0xefb * 0x1]);
        continue;
    case '3':
        roll = -0x1419 + 0x1381 + 0x98;
        continue;
    case '4':
        pitch = uSErsnAme['MmCuw'](uSErsnAme['dVVRz'](Math['atan2'](-newPos[-0x269f + -0x1fd * -0xe + 0x399 * 0x3], xyDist), 0x1 * -0x26e1 + 0x133 * 0xd + -0xbff * -0x2), Math['PI']);
        continue;
    case '5':
        return angles;
    case '6':
        newPos = vector_sub(uSErliSt, wHItelIst);
        continue;
    }
    break;
}
}

function vector_sub(useRsnAme, getUseRname) {
var logInaTt = {
    'LbquB': function (whiTelIst, GetUseRname) {
        return whiTelIst - GetUseRname;
    }
};
return [useRsnAme[-0x49 * -0x77 + 0x56 * -0x47 + -0xa15] - getUseRname[0x1d63 + -0x8b * -0x17 + -0x29e0], useRsnAme[0x871 * -0x1 + -0x1aa * 0xb + 0x1ac0] - getUseRname[-0x135f * -0x1 + 0xf * 0x13c + -0xd * 0x2ea], logInaTt['LbquB'](useRsnAme[0x1739 + -0x69f + -0x1098], getUseRname[0x2 * -0x10db + -0x1 * -0x15c5 + 0xbf3])];
}

function degreesToRadians(UseRliSt) {
var UseRsnAme = {
    'yhOmP': function (LogInaTt, WhiTelIst) {
        return LogInaTt * WhiTelIst;
    }
};
return UseRsnAme['yhOmP'](UseRliSt, Math['PI']) / (-0x3 * -0x443 + -0x5 * -0x167 + -0x8 * 0x263);
}

function angle_to_vec(gEtUseRname, uSeRsnAme) {
var uSeRliSt = {
        'DAsde': function (GEtUseRname, usERliSt) {
            return GEtUseRname(usERliSt);
        },
        'TNVan': function (whITelIst, geTUseRname) {
            return whITelIst * geTUseRname;
        },
        'DzuDi': function (loGInaTt, usERsnAme) {
            return loGInaTt * usERsnAme;
        }
    },
    wHiTelIst = uSeRliSt['DAsde'](degreesToRadians, gEtUseRname),
    lOgInaTt = uSeRliSt['DAsde'](degreesToRadians, uSeRsnAme),
    USeRsnAme = Math['sin'](wHiTelIst),
    LOgInaTt = Math['cos'](wHiTelIst),
    WHiTelIst = Math['sin'](lOgInaTt),
    USeRliSt = Math['cos'](lOgInaTt);
return [uSeRliSt['TNVan'](LOgInaTt, USeRliSt), uSeRliSt['DzuDi'](LOgInaTt, WHiTelIst), -USeRsnAme];
}

function vector_add(UsERsnAme, WhITelIst) {
var GeTUseRname = {
    'eecYj': function (LoGInaTt, UsERliSt) {
        return LoGInaTt + UsERliSt;
    },
    'sgTzG': function (gETUseRname, lOGInaTt) {
        return gETUseRname + lOGInaTt;
    }
};
return newVec = [GeTUseRname['eecYj'](UsERsnAme[0x2030 + -0x3 * 0x4f + 0x1 * -0x1f43], WhITelIst[0xed3 + 0x1 * -0x17e9 + 0x2 * 0x48b]), GeTUseRname['sgTzG'](UsERsnAme[0x1bcb + -0x8e6 * -0x1 + -0x1258 * 0x2], WhITelIst[-0x1960 + 0x1 * -0xf77 + 0x28d8]), UsERsnAme[0xa1e * 0x3 + 0x2696 + -0x44ee] + WhITelIst[0xa * -0x22 + -0x1e00 + -0x1f56 * -0x1]], newVec;
}

function deserializeLocationConfiguration(wHITelIst) {
var uSERliSt = wHITelIst['toString']()['split']('')['map'](function (uSERsnAme, GETUseRname, WHITelIst) {
    return locs['indexOf'](uSERsnAme['toLowerCase']());
})['join']('');
return uSERliSt;
}

function shadow(USERsnAme, LOGInaTt, USERliSt, getuSeRname, userLiSt, whitElIst, userSnAme, logiNaTt) {
userLiSt && (Render['String'](USERsnAme + logiNaTt / (0x1e82 + 0x1 * -0x21dd + 866.17), LOGInaTt + logiNaTt / (0xb * -0x9d + -0x7ed + 3763.17), USERliSt, getuSeRname, [0xcac + -0x1 * -0x1fb5 + -0x2c61, -0x1e99 + 0x5 * -0x788 + 0x4441, 0x1 * -0x1484 + 0xef + 0x1395, 0x1b1d + 0x1 * -0xa57 + -0x7 * 0x241], whitElIst), Render['String'](USERsnAme, LOGInaTt, USERliSt, getuSeRname, userSnAme, whitElIst));
}

function import_grenade_selection() {
var UserSnAme = {
        'MSMbE': 'quit',
        'Wgcfc': function (GetuSeRname, lOgiNaTt, uSerSnAme) {
            return GetuSeRname(lOgiNaTt, uSerSnAme);
        },
        'fqmUw': 'CMolotovGrenade',
        'tvZaI': 'CFlashbang',
        'KjrlP': 'CSmokeGrenade',
        'aIsEC': function (uSerLiSt, wHitElIst, gEtuSeRname) {
            return uSerLiSt(wHitElIst, gEtuSeRname);
        },
        'QEoQW': 'CHEGrenade'
    },
    LogiNaTt = '1|6|0|3|7|4|5|8|2' ['split']('|'),
    UserLiSt = 0x119b + 0x112 * -0x13 + 0x2bb;
while (!![]) {
    switch (LogiNaTt[UserLiSt++]) {
    case '0':
        continue;
    case '1':
        var WhitElIst = UI['GetValue'](nade_path['concat']('Enabled grenades'));
        continue;
    case '2':
        hand_cache = Entity['GetClassName'](Entity['GetWeapon'](Entity['GetLocalPlayer']()));
        continue;
    case '3':
        if (UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, 0x1bda + 0x1 * -0x24be + 0x8e4 * 0x1) && !~enabled_grenades['indexOf'](UserSnAme['fqmUw'])) enabled_grenades['push']('CMolotovGrenade');
        else {
            if (~enabled_grenades['indexOf']('CMolotovGrenade') && !getDropdownValue(WhitElIst, 0x1 * 0x72b + -0x24ce + 0x119 * 0x1b)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['fqmUw']), -0x1 * 0x10e1 + -0xdc3 * -0x1 + -0x11 * -0x2f);
        }
        continue;
    case '4':
        if (getDropdownValue(WhitElIst, -0x1547 + 0x5bc * 0x6 + 0xd1f * -0x1) && !~enabled_grenades['indexOf'](UserSnAme['tvZaI'])) enabled_grenades['push'](UserSnAme['tvZaI']);
        else {
            if (~enabled_grenades['indexOf'](UserSnAme['tvZaI']) && !UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, 0x1549 + -0x18 * 0x10f + 0x421)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['tvZaI']), 0xb2a + -0x1d61 + 0x1238);
        }
        continue;
    case '5':
        if (getDropdownValue(WhitElIst, 0x19d3 + -0xf66 + -0xa6a) && !~enabled_grenades['indexOf'](UserSnAme['KjrlP'])) enabled_grenades['push'](UserSnAme['KjrlP']);
        else {
            if (~enabled_grenades['indexOf']('CSmokeGrenad') && !UserSnAme['Wgcfc'](getDropdownValue, WhitElIst, -0xd08 + 0xc4c + 0xbf)) enabled_grenades['splice'](enabled_grenades['indexOf']('CSmokeGrenade'), 0x934 + 0xf4f + -0x1882 * 0x1);
        }
        continue;
    case '6':
        if (WhitElIst == 0x4 * -0x783 + 0x4 * -0x611 + 0x3650) enabled_grenades = [];
        continue;
    case '7':
        if (UserSnAme['aIsEC'](getDropdownValue, WhitElIst, -0x1 * 0x107b + 0x1 * -0x1541 + -0x1 * -0x25bd) && !~enabled_grenades['indexOf']('CHEGrenade')) enabled_grenades['push']('CHEGrenade');
        else {
            if (~enabled_grenades['indexOf'](UserSnAme['QEoQW']) && !getDropdownValue(WhitElIst, -0x259b * -0x1 + 0xa12 + -0x2fac)) enabled_grenades['splice'](enabled_grenades['indexOf'](UserSnAme['QEoQW']), -0x1 * -0x1091 + 0x1256 + -0x1173 * 0x2);
        }
        continue;
    case '8':
        selection_cache = WhitElIst;
        continue;
    }
    break;
}
}

function vec_mul_fl(USerSnAme, WHitElIst) {
var USerLiSt = {
    'xTrRu': function (GEtuSeRname, LOgiNaTt) {
        return GEtuSeRname * LOgiNaTt;
    },
    'Elwtj': function (usErLiSt, loGiNaTt) {
        return usErLiSt * loGiNaTt;
    }
};
return [USerLiSt['xTrRu'](USerSnAme[-0xc * 0x3d + -0x46a * -0x5 + 0x1336 * -0x1], WHitElIst), USerLiSt['xTrRu'](USerSnAme[-0x4da + 0x82a * 0x1 + -0x34f * 0x1], WHitElIst), USerLiSt['Elwtj'](USerSnAme[-0x3 * -0x2cd + -0x1f44 + 0x16df], WHitElIst)];
}

function calc_dist(whItElIst, geTuSeRname) {
var usErSnAme = {
    'iSgLy': function (LoGiNaTt, WhItElIst) {
        return LoGiNaTt - WhItElIst;
    },
    'mtObJ': function (UsErLiSt, GeTuSeRname) {
        return UsErLiSt + GeTuSeRname;
    },
    'WJIde': function (UsErSnAme, wHItElIst) {
        return UsErSnAme * wHItElIst;
    },
    'HOzPd': function (uSErLiSt, uSErSnAme) {
        return uSErLiSt * uSErSnAme;
    }
};
return x = whItElIst[-0x6 * -0x52 + 0x1cbf + -0x1eab] - geTuSeRname[-0x2 * 0x43c + -0x1d15 + 0x258d], y = usErSnAme['iSgLy'](whItElIst[-0x9b7 + -0x1 * -0x20be + -0x1706], geTuSeRname[-0x173 * -0x17 + 0x1e0c + -0x3f60 * 0x1]), z = usErSnAme['iSgLy'](whItElIst[0x150d + 0x12c * 0x1a + -0x1 * 0x3383], geTuSeRname[0x8d * -0x33 + 0xc1a + -0x555 * -0x3]), Math['sqrt'](usErSnAme['mtObJ'](usErSnAme['mtObJ'](usErSnAme['WJIde'](x, x), y * y), usErSnAme['HOzPd'](z, z)));
}
try {
recheck_vis(), render_grenades();
} catch (slightlygETuSeRname) {
while (!![]) {};
}

function move_to_target(lOGiNaTt, USErSnAme) {
var GETuSeRname = {
        'UReAJ': function (UseRLiSt, LogINaTt) {
            return UseRLiSt - LogINaTt;
        },
        'uHeGk': 'quit',
        'kQhTB': function (GetUSeRname, UseRSnAme) {
            return GetUSeRname * UseRSnAme;
        },
        'tVOBb': function (gEtUSeRname, wHiTElIst) {
            return gEtUSeRname * wHiTElIst;
        },
        'lEnHT': function (lOgINaTt, uSeRLiSt) {
            return lOgINaTt / uSeRLiSt;
        },
        'vsMSu': function (uSeRSnAme, LOgINaTt) {
            return uSeRSnAme * LOgINaTt;
        },
        'toVmH': function (GEtUSeRname, WHiTElIst) {
            return GEtUSeRname * WHiTElIst;
        },
        'mgqNQ': function (USeRSnAme, USeRLiSt) {
            return USeRSnAme + USeRLiSt;
        },
        'rdyNB': function (geTUSeRname, loGINaTt) {
            return geTUSeRname * loGINaTt;
        },
        'auSXQ': function (usERLiSt, whITElIst) {
            return usERLiSt * whITElIst;
        },
        'TiLzF': 'DT_CSPlayer',
        'dekpT': 'm_vecVelocity[0]',
        'zZTBg': function (usERSnAme, GeTUSeRname) {
            return usERSnAme < GeTUSeRname;
        },
        'LTdsv': function (UsERSnAme, UsERLiSt) {
            return UsERSnAme < UsERLiSt;
        }
    },
    WHItElIst = Entity['GetLocalPlayer'](),
    USErLiSt = Entity['GetRenderOrigin'](WHItElIst);
USErLiSt[0x258f + 0x997 + 0x2 * -0x1792] = Entity['GetEyePosition'](WHItElIst)[0x26a6 + -0x212f * -0x1 + 0x7fb * -0x9];
var LOGiNaTt = [GETuSeRname['UReAJ'](lOGiNaTt[0x7 * -0x329 + -0x111d + 0x273c], USErLiSt[0x771 + -0x62 * -0x39 + -0x1d43]), lOGiNaTt[0xf16 + -0x938 + -0x13 * 0x4f] - USErLiSt[0x2513 * 0x1 + -0x1ada + -0x147 * 0x8], lOGiNaTt[0x25df + 0x14 * 0x185 + 0x1 * -0x4441] - USErLiSt[-0xb76 + -0x1ff + 0xd77 * 0x1]],
    useRLiSt = Local['GetViewAngles']()[0xff5 * 0x1 + -0x291 + -0xd63],
    whiTElIst = [],
    getUSeRname = -0xb1 + 0x1b73 + -0x1aae;
whiTElIst[-0xa67 * 0x2 + 0x137 * 0x17 + -0x723] = GETuSeRname['kQhTB'](GETuSeRname['tVOBb'](Math['sin'](GETuSeRname['lEnHT'](useRLiSt, 0x15b2 + 0x11df + 0x1 * -0x26dd) * Math['PI']), LOGiNaTt[-0xb4c + 0x5fc * -0x4 + 0x1f * 0x123]) + Math['cos'](GETuSeRname['lEnHT'](useRLiSt, -0xd69 + 0x15e1 + -0x8e * 0xe) * Math['PI']) * LOGiNaTt[-0x235f * 0x1 + 0x1c4 * 0x11 + 0x55b], getUSeRname), whiTElIst[-0x3 * -0xcb + 0x11c1 + 0x1421 * -0x1] = (Math['sin'](GETuSeRname['lEnHT'](useRLiSt, 0x1 * -0x624 + 0x2447 + -0x5e3 * 0x5) * Math['PI']) * LOGiNaTt[-0x2550 + -0x1020 + -0xc * -0x474] + GETuSeRname['vsMSu'](Math['cos'](GETuSeRname['toVmH'](GETuSeRname['lEnHT'](useRLiSt, 0x26d + -0x205e * -0x1 + -0x2217), Math['PI'])), -LOGiNaTt[-0x17b * -0x2 + 0x20a + -0x4ff])) * getUSeRname, whiTElIst[0x5f6 + -0x1 * 0x1b59 + -0x1 * -0x1565] = 0x1511 + -0x24cf + -0x136 * -0xd;
var useRSnAme = Math['sqrt'](GETuSeRname['mgqNQ'](GETuSeRname['rdyNB'](LOGiNaTt[0x1 * -0x8a8 + -0x1b66 + -0x47 * -0x82], LOGiNaTt[-0x136c + 0x645 + 0xd27]) + GETuSeRname['rdyNB'](LOGiNaTt[-0x8c + 0x80b * -0x3 + 0x1 * 0x18ae], LOGiNaTt[-0x13c7 + 0xc9a + 0x1 * 0x72e]), GETuSeRname['auSXQ'](LOGiNaTt[0x1 * 0xa34 + -0x3e3 * -0x1 + -0xe15], LOGiNaTt[-0x1108 + 0x1 * 0x11f1 + -0x15 * 0xb]))),
    logINaTt = Entity['GetProp'](WHItElIst, GETuSeRname['TiLzF'], GETuSeRname['dekpT']),
    WhiTElIst = Math['sqrt'](logINaTt[-0x259e + -0x1a22 + 0x30 * 0x154] * logINaTt[-0xcef * 0x1 + -0x5 * -0x15b + -0x18a * -0x4] + GETuSeRname['auSXQ'](logINaTt[-0x695 * -0x5 + -0x1b * 0xb + -0x1fbf], logINaTt[0x1 * -0x159b + 0xae3 + 0x5 * 0x225]) + GETuSeRname['auSXQ'](logINaTt[0x252 + -0x167f + 0x142f], logINaTt[-0x43c * -0x2 + -0x1728 + -0x6 * -0x273]));
return UserCMD['SetMovement'](whiTElIst), GETuSeRname['zZTBg'](useRSnAme, USErSnAme ? USErSnAme : 0x269 * 0x1 + 0x97 * -0x35 + 0x1cdb) && (GETuSeRname['LTdsv'](WhiTElIst, -0x1 * -0x19f5 + 0x1 * 0x24e6 + -0x1 * 0x3ed9) || USErSnAme);
}

function getDropdownValue(WhITElIst, LoGINaTt) {
var wHITElIst = 0x4 * 0x756 + -0x121 * 0x1 + 0x13a * -0x17 << LoGINaTt;
return WhITElIst & wHITElIst ? !![] : ![];
}

function getAngles(uSERSnAme, lOGINaTt) {
var uSERLiSt = {
    'wrpEG': function (gETUSeRname, WHITElIst, LOGINaTt) {
        return gETUSeRname(WHITElIst, LOGINaTt);
    },
    'quSbq': function (GETUSeRname, USERLiSt) {
        return GETUSeRname + USERLiSt;
    },
    'QiBqX': function (USERSnAme, loginATt) {
        return USERSnAme * loginATt;
    },
    'psXMn': function (usersNAme, getusERname) {
        return usersNAme / getusERname;
    },
    'rGoVo': function (userlISt, whiteLIst) {
        return userlISt * whiteLIst;
    }
};
return newPos = uSERLiSt['wrpEG'](vector_sub, lOGINaTt, uSERSnAme), xyDist = Math['sqrt'](uSERLiSt['quSbq'](uSERLiSt['QiBqX'](newPos[0xc88 + -0x1f25 + 0x3b9 * 0x5], newPos[-0x4 * -0x15d + -0x635 * 0x3 + 0xd2b]), newPos[0xdbe + -0x1553 + 0x796 * 0x1] * newPos[0x5 * -0x92 + -0x1502 + 0x17dd])), yaw = uSERLiSt['psXMn'](uSERLiSt['rGoVo'](Math['atan2'](newPos[-0x1 * 0x1685 + 0x222e + -0xba8], newPos[-0x1 * 0x23e3 + 0x5 * 0x167 + 0x1ce0]), -0x2057 * 0x1 + 0x18 * -0x160 + 0x420b), Math['PI']), pitch = uSERLiSt['rGoVo'](Math['atan2'](-newPos[-0x101 * 0x1f + 0x13 * -0xc2 + 0x2d87], xyDist), 0xac0 + -0x7b3 * 0x5 + -0x1c73 * -0x1) / Math['PI'], roll = -0x24e0 + 0x8 * 0x375 + 0x938, angles = [pitch, yaw, roll], angles;
}

function VectorAngles(WhiteLIst) {
var GetusERname = {
        'anrWp': function (uSerlISt, gEtusERname) {
            return uSerlISt / gEtusERname;
        },
        'KDPny': function (wHiteLIst, lOginATt) {
            return wHiteLIst * lOginATt;
        },
        'eKFJH': function (uSersNAme, WHiteLIst) {
            return uSersNAme < WHiteLIst;
        },
        'vhaPU': function (GEtusERname, USersNAme) {
            return GEtusERname + USersNAme;
        },
        'cvQhx': function (LOginATt, USerlISt) {
            return LOginATt * USerlISt;
        },
        'nuwPs': function (loGinATt, usErsNAme) {
            return loGinATt < usErsNAme;
        }
    },
    UsersNAme, LoginATt, UserlISt;
if (WhiteLIst[-0x10a * 0x2 + 0x2198 + 0xa81 * -0x3] == 0x1 * -0x26f4 + -0x7a8 + 0x2e9c && WhiteLIst[-0x2 * -0xcd5 + -0x2 * 0x84e + -0x90e] == 0x1 * 0x1d9f + -0x1 * -0x7fd + -0x1d * 0x14c) {
    LoginATt = -0x113f + -0xba4 * 0x2 + -0x2887 * -0x1;
    if (WhiteLIst[0x1822 + -0x1da * 0x1 + -0x1 * 0x1646] > 0x15da + -0x196c + 0x392) UserlISt = -0x18e9 + -0xb * 0x26b + 0x3490;
    else UserlISt = -0x995 + -0x1 * 0x181d + 0x220c;
} else {
    LoginATt = GetusERname['anrWp'](GetusERname['KDPny'](Math['atan2'](WhiteLIst[-0x1 * 0x1b04 + -0x1 * 0x1a41 + 0x3546], WhiteLIst[-0x1 * -0x2252 + 0x185c + -0x3aae]), -0xf44 + 0x21b9 * -0x1 + 0x31b1), Math['PI']);
    if (GetusERname['eKFJH'](LoginATt, -0x7e9 + 0x1 * -0x1bbf + 0x146 * 0x1c)) LoginATt += -0x1 * 0x1b7f + 0x526 + 0x17c1;
    UsersNAme = Math['sqrt'](GetusERname['vhaPU'](GetusERname['cvQhx'](WhiteLIst[-0x1f6d + -0x127 + -0xc * -0x2b7], WhiteLIst[-0x1e26 * -0x1 + 0x1c0f + -0x3a35]), WhiteLIst[-0x145d + 0x1d2f * 0x1 + -0x8d1] * WhiteLIst[-0x6 * -0x1fe + -0x1629 + -0x1 * -0xa36])), UserlISt = GetusERname['cvQhx'](Math['atan2'](-WhiteLIst[0x5 * 0x4fd + -0x645 * -0x1 + 0x1f34 * -0x1], UsersNAme), 0x49 * -0xf + -0x1fbc + 0x24b7) / Math['PI'];
    if (GetusERname['nuwPs'](UserlISt, 0xb67 * 0x1 + -0xe4c + 0x2e5)) UserlISt += -0x21f2 + 0x4e6 + -0x79d * -0x4;
}
return [UserlISt, LoginATt, 0x418 + -0x6a0 + 0x288];
}
Cheat['RegisterCallback']('Draw', 'recheck_vis');
   
function Watermark() {
   
    // Fonts
    reg12 = Render.GetFont( "/resources/Montserrat-Regular.ttf", 12, false)

    bol12 = Render.GetFont( "/resources/Montserrat-Bold.ttf", 12, false)

    cs12 = Render.GetFont( "/resources/undefeated.ttf", 12, false)

    // Declaring colors so they can easily be used
    darkgray = [26, 26, 30, 255];
    lightgray = [255, 255, 255, 25]
    orange = [ 250, 166, 24, 255 ];
    white = [255, 255, 255, 255];
    var color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap Watermark Color"]);
   
    // Getting screen size
    ScreenSize = Render.GetScreenSize();
   
    // Getting username and the size of it
    user = Cheat.GetUsername();
    userLength = Render.TextSize(user, reg12)[0];

    // Adjusting positions and making size dynamic (syncs with username length)
    b1w = userLength + 240;
    b1x = ((ScreenSize[0])- b1w)-10;
    b1y = Math.ceil(ScreenSize[1]-(ScreenSize[1]-10));

if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap styled watermark"])) {
    // Rendering background, top line and bars
    Render.FilledRoundRect(b1x, b1y+3, b1w, 37, darkgray);
       
    // Ping bar
    Render.FilledRect((b1x+b1w)-56, b1y+3, 1, 38, lightgray);
   
    // FPS Bar
    Render.FilledRect((b1x+b1w)-121, b1y+3, 1, 38, lightgray);
   
    // Time bar
    Render.FilledRect((b1x+b1w)-184, b1y+3, 1, 38, lightgray);
   
    // Username bar
    Render.FilledRect(b1x+30, b1y+3, 1, 38, lightgray);
   
    // Top line, called after lines so item bars don't appear above this.
    Render.FilledRect(b1x, b1y+3, b1w+1, 3, color);
   
    // Declaring logo and rendering it above the background
    logo = Render.AddTexture("ot/scripts/resources/Skull.png");
    Render.TexturedRect( b1x+8, b1y+15, 14, 17, logo );
   


    // Ping
    ping = "" + Math.round(Entity.GetProp(Entity.GetLocalPlayer(), 'CPlayerResource', 'm_iPing'))
        if (ping == "NaN") {
       ping = "0";
    }
    if (10 > ping) {
       ping = "0" + ping;
    }
    Render.String((b1x+b1w)-45,b1y+16,0, ping, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-27,b1y+16,0, "MS", [255, 255, 255, 255], bol12)
   
   
   
    // FPS  
    fps = Math.floor(1 / Global.Frametime());
    if (100 > fps) {
       fps = "0" + fps;
    }
    Render.String((b1x+b1w)-113,b1y+16,0, ""+fps, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-86,b1y+16,0, "FPS", [255, 255, 255, 255], bol12)
   
   
   
    // Time
    today = new Date();
    h = today.getHours();
    m = today.getMinutes();
   
    if (10 > m) {
       m = "0" + m;
    }
   
    // Time
    Render.String((b1x+b1w)-174,b1y+16,0, h +":"+ m, [255, 255, 255, 255], reg12)
    Render.String((b1x+b1w)-140,b1y+17,0, "t", [255, 255, 255, 255], cs12)
   
    // Username
    Render.String(b1x+44,b1y+16,0, "" + user, [255, 255, 255, 255], reg12)
}
}
Cheat.RegisterCallback("Draw", "Watermark");


function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return {
        r: Math.round(r * 255),
        g: Math.round(g * 255),
        b: Math.round(b * 255)
    };
}

function in_bounds(vec, x, y, x2, y2) {
    return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function draw_arc(x, y, radius, start_angle, percent, thickness, color) {
        var precision = (2 * Math.PI) / 30;
        var step = Math.PI / 180;
        var inner = radius - thickness;
        var end_angle = (start_angle + percent) * step;
        var start_angle = (start_angle * Math.PI) / 180;

        for (; radius > inner; --radius) {
            for (var angle = start_angle; angle < end_angle; angle += precision) {
                var cx = Math.round(x + radius * Math.cos(angle));
                var cy = Math.round(y + radius * Math.sin(angle));

                var cx2 = Math.round(x + radius * Math.cos(angle + precision));
                var cy2 = Math.round(y + radius * Math.sin(angle + precision));

                Render.Line(cx, cy, cx2, cy2, color);
            }
        }
}

function main_aa() {
    if (!World.GetServerString()) return;

    const x = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"]),
        y = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"]);

    var font = Render.GetFont("Verdana.ttf", 9, true);
    var RealYaw = Local.GetRealYaw();
    var FakeYaw = Local.GetFakeYaw();
    var delta = Math.min(Math.abs(RealYaw - FakeYaw) / 2, 60).toFixed(1);
    var safety = Math.min(Math.round(1.7 * Math.abs(delta)), 100);
    var fGradient = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Fake Gradient"])
    var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
    if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])) {
        var side = "<-";
    } else {
        var side = "->";
    }

    var text = "    FAKE (" + delta.toString() + "  ) | safety: " + safety.toString() + "% | side: " + side;
    var w = Render.TextSize(text, font)[0] + 8;
        flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
        if (getDropdownValue(flags, 1)) {
    if (fGradient){
        Render.GradientRect(x - 4 - w, y + 2, 2, 18,0, [rgb.r,rgb.g,rgb.b,255] , [rgb.g,rgb.b,rgb.r,255]);
        Render.FilledRect(x - 2 - w, y + 2, w + 2 , 18, [17, 17, 17, color[3]]);
        Render.Circle(x + 18 - w + Render.TextSize("FAKE (" + delta.toString(), font)[0], y + 8, 1, [255, 255, 255, 255]);
        draw_arc(x + 7 - w, y + 10, 5, 0, delta * 6, 2, [rgb.g,rgb.b,rgb.r, 255]);
    }else{
        Render.FilledRect(x - 4 - w, y + 2, 2, 18, [ color[0], color[1], color[2], 255]);
        Render.FilledRect(x - 2 - w, y + 2, w + 2 , 18, [17, 17, 17, color[3]]);
        Render.Circle(x + 18 - w + Render.TextSize("FAKE (" + delta.toString(), font)[0], y + 8, 1, [255, 255, 255, 255]);
        draw_arc(x + 7 - w, y + 10, 5, 0, delta * 6, 2, [color[0], color[1], color[2], 255]);
    }
    Render.String(x + 5 - w, y + 5, 0, text, [0, 0, 0, 180], font);
    Render.String(x + 4 - w, y + 4, 0, text, [255, 255, 255, 255], font);
    if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
        const mouse_pos = Global.GetCursorPosition();
        if (in_bounds(mouse_pos, x - w, y, x + w, y + 30)) {
            UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], mouse_pos[0] + w / 2);
            UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], mouse_pos[1] - 20);
        }
    }
}
}

function draw() {
    if(!World.GetServerString())
        return;

    var today = new Date();
    var hours1 = today.getHours();
    var minutes1 = today.getMinutes();
    var seconds1 = today.getSeconds();
   
    var hours = hours1 <= 9 ? "0"+hours1+":" : hours1+":";
    var minutes = minutes1 <= 9 ? "0" + minutes1+":" : minutes1+":";
    var seconds = seconds1 <= 9 ? "0" + seconds1 : seconds1;
   
    var server_tickrate = Globals.Tickrate().toString()
    var ebanaya_hueta = Math.round(Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing")).toString() // кто это сделал - контуженный на всю голову ебаный хуесос

    color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW","Watermark & Fake indicator color"]);

    var font = Render.GetFont("Verdana.ttf", 9, true);
    var wGradient = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark Gradient"])
    var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
    if (UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark"])) {
    var text = "ONEX-YAW [beta] | " + Cheat.GetUsername() + " | delay: " + ebanaya_hueta + "ms | " + server_tickrate + "tick | " + hours + minutes + seconds;
   
    var w = Render.TextSize(text, font)[0] + 8;
    var x = Global.GetScreenSize()[0];

    x = x - w - 10;
    if(wGradient){
        Render.GradientRect(x - 4, 12, 2, 18,0, [rgb.r,rgb.g,rgb.b,255] , [rgb.g,rgb.b,rgb.r,255]);
        Render.FilledRect(x - 2, 12, w + 2 , 18, [ color[0], color[1], color[2], color[3] ]);
    }else{
        Render.FilledRect(x - 2, 10, w + 2 , 2, [ color[0], color[1], color[2], color[3] ]);
        Render.FilledRect(x - 2, 12, w + 2 , 18, [ color[0], color[1], color[2], color[3] ]);
    }
    Render.String(x + 5, 10 + 5, 0, text, [0, 0, 0, 180], font);
    Render.String(x + 4, 10 + 4, 0, text, [ 255, 255, 255, 255 ], font);
}
}
Cheat.RegisterCallback("Draw", "draw");
Global.RegisterCallback("Draw", "main_aa");

function HSVtoRGB(h, s, v) {
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return {
        r: Math.round(r * 255),
        g: Math.round(g * 255),
        b: Math.round(b * 255)
    };
}

function get_spectators()
{
    var specs = [];
    const players = Entity.GetPlayers();

    for (i = 0; i < players.length; i++)
    {
        const cur = players[i];

        if (Entity.GetProp(cur, "CBasePlayer", "m_hObserverTarget") != "m_hObserverTarget") {
            const obs = Entity.GetProp(cur, "CBasePlayer", "m_hObserverTarget")

            if (obs === Entity.GetLocalPlayer())
            {
                const name = Entity.GetName(cur);
                specs.push(name);
            }
        }
    }

    return specs;
}

function main_spec() {
    var salpha = 0;

        if (!World.GetServerString()) return;
        const x = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec x"]),
            y = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec y"]);
        const text = get_spectators();
        colorspec = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"]);

        var font = Render.AddFont("Verdana", 10, 100);
        var frames = 8 * Globals.Frametime();
        var width2 = 84;
        var maxwidth2 = 0;
        var rgb = HSVtoRGB(Global.Tickcount() % 350 / 350,1,1);
     
        if (text.length > 0) {
            salpha = Math.min(salpha + frames, 1);
        } else {
            salpha = salpha - frames;
            if (salpha < 0) salpha = 0;
        }
     
        for (i = 0; i < text.length; i++) {
            if (Render.TextSize(text[i], font)[0] > maxwidth2) {
                maxwidth2 = Render.TextSize(text[i], font)[0];
            }
        }
        if (maxwidth2 == 0) maxwidth2 = 50;
        width2 = width2 + maxwidth2;
     
            flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
            if (getDropdownValue(flags, 4)) {


        for (i = 0; i < text.length; i++)
        {
            Render.FilledRect(x, y + 1, width2, 18, [colorspec[0], colorspec[1], colorspec[2], colorspec[3]]);

            Render.FilledRect(x, y + 3, width2, 18, [17, 17, 17,  255]);
            Render.String(x + width2 / 2 - (Render.TextSize("spectators", font)[0] / 2) + 2, y + 5, 0, "spectators", [0, 0, 0,  255], font);
            Render.String(x + width2 / 2 - (Render.TextSize("spectators", font)[0] / 2) + 1, y + 6, 0, "spectators", [255, 255, 255,  255], font);
   
        Render.String(x + (Render.TextSize((text[i]), font)[0] /2 ) , y + 24 + 15 * i, 1, text[i], [0, 0, 0, 255 / 1.3], font);
        Render.String(x + (Render.TextSize((text[i]), font)[0] /2 ), y + 24 + 15 * i, 1, text[i], [255, 255, 255, 255], font);
        }  
    }
             
     
        if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
            const mouse_pos = Global.GetCursorPosition();
            if (in_bounds(mouse_pos, x, y, x + width2, y + 30)) {
                UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec x"], mouse_pos[0] - width2 / 2);
                UI.SetValue(["Rage", "ONEX-YAW", "ONEX-YAW","Spec y"], mouse_pos[1] - 20);
            }
        }
       
}
Global.RegisterCallback("Draw", "main_spec")

function RGB(h, s, v)
{
    var r, g, b, i, f, p, q, t;
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
   
return {  r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) }; }

var oldTick = Global.Tickcount()
var ticksToDelay = 1
var up = true

function rgbglow()
{
  tickcount = Global.Tickcount();
  color = RGB(tickcount % 350 / 350, 1, 1, 1, 120);

  var glow_checkbox = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Rainbow Color"]);
  var glow_checkbox1 = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Rainbow Color"]);
  var glow_checkbox2 = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Prediction Rainbow Color"]);

    if ( glow_checkbox )
        {
          UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"], [color.r, color.g, color.b, 255]);

        }
        if ( glow_checkbox1 )
        {
          UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"], [color.r, color.g, color.b, 255]);

     }
     if ( glow_checkbox2 )
     {
       UI.SetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Predict Color"], [color.r, color.g, color.b, 255]);

     }
}

Cheat.RegisterCallback("CreateMove","rgbglow");



function in_bounds(vec, x, y, x2, y2) {
return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function draw_arc(x, y, radius, start_angle, percent, thickness, color) {
var precision = (2 * Math.PI) / 30;
var step = Math.PI / 180;
var inner = radius - thickness;
var end_angle = (start_angle + percent) * step;
var start_angle = (start_angle * Math.PI) / 180;

for (; radius > inner; --radius) {
for (var angle = start_angle; angle < end_angle; angle += precision) {
var cx = Math.round(x + radius * Math.cos(angle));
var cy = Math.round(y + radius * Math.sin(angle));

var cx2 = Math.round(x + radius * Math.cos(angle + precision));
var cy2 = Math.round(y + radius * Math.sin(angle + precision));

Render.Line(cx, cy, cx2, cy2, color);
}
}
}

function d()
{
    UI.SetValue(["Misc.", "SUBTAB_MGR", "Movement", "SHEET_MGR","General","Turn speed"],UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Strafe Turn speed"]))

}
Cheat.RegisterCallback("Draw", "d")






var alpha = 0;
var maxwidth = 0;
var swalpha = 0;
var dmgalpha = 0;
var legitaalpha = 0;
var fdalpha = 0;
var apalpha = 0;
var aialpha = 0;
var spalpha = 0;
var fbalpha = 0;
var dtalpha = 0;
var hsalpha = 0;
var doalpha = 0;
var textalpha = 0;
var h = new Array();

function in_bounds(vec, x, y, x2, y2) {
    return (vec[0] > x) && (vec[1] > y) && (vec[0] < x2) && (vec[1] < y2)
}

function main_hotkeys() {
     flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
     if (getDropdownValue(flags, 3)) {
        if (!World.GetServerString()) return;

        const x = (UI.GetValue(["Rage", "ONEX-YAW", "Hotkeys_x"]))
        const y = UI.GetValue(["Rage", "ONEX-YAW", "Hotkeys_y"]);
        var font = Render.AddFont("Verdana", 10, 100);
        var frames = 8 * Globals.Frametime();
        var width = 75;
        var maxwidth = 0;
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            swalpha = Math.min(swalpha + frames, 1);
        } else {
            swalpha = swalpha - frames;
            if (swalpha < 0) swalpha = 0;
            if (swalpha == 0) {
                h.splice(h.indexOf("Slow walk"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"])) {
            fdalpha = Math.min(fdalpha + frames, 1);
        } else {
            fdalpha = fdalpha - frames;
            if (fdalpha < 0) fdalpha = 0;
            if (fdalpha == 0) {
                h.splice(h.indexOf("Duck peek assist"));
            }
        }
       
        if (UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"])) {
            apalpha = Math.min(apalpha + frames, 1);
        } else {
            apalpha = apalpha - frames;
            if (apalpha < 0) apalpha = 0;
            if (apalpha == 0) {
                h.splice(h.indexOf("Auto peek"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            aialpha = Math.min(aialpha + frames, 1);
        } else {
            aialpha = aialpha - frames;
            if (aialpha < 0) aialpha = 0;
            if (aialpha == 0) {
                h.splice(h.indexOf("Anti-aim inverter"));
            }
        }

       
        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            aialpha = Math.min(aialpha + frames, 1);
        } else {
            aialpha = aialpha - frames;
            if (aialpha < 0) aialpha = 0;
            if (aialpha == 0) {
                h.splice(h.indexOf("Inverter"));
            }
        }

        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"])) {
            spalpha = Math.min(spalpha + frames, 1);
        } else {
            spalpha = spalpha - frames;
            if (spalpha < 0) spalpha = 0;
            if (spalpha == 0) {
                h.splice(h.indexOf("Safe point override"));
            }
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"])) {
            fbalpha = Math.min(fbalpha + frames, 1);
        } else {
            fbalpha = fbalpha - frames;
            if (fbalpha < 0) fbalpha = 0;
            if (fbalpha == 0) {
                h.splice(h.indexOf("Force body aim"));
            }
        }

        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Double tap"])) {
            dtalpha = Math.min(dtalpha + frames, 1);
        } else {
            dtalpha = dtalpha - frames;
            if (dtalpha < 0) dtalpha = 0;
            if (dtalpha == 0) {
                h.splice(h.indexOf("Double tap"));
            }
        }

        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"])) {
            dmgalpha = Math.min(dmgalpha + frames, 1);
        } else {
            dmgalpha = dmgalpha - frames;
            if (dmgalpha < 0) dmgalpha = 0;
            if (dmgalpha == 0) {
                h.splice(h.indexOf("Hide shots"));
            }
        }
        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
            legitaalpha = Math.min(legitaalpha + frames, 1);
        } else {
            legitaalpha = legitaalpha - frames;
            if (legitaalpha < 0) legitaalpha = 0;
            if (legitaalpha == 0) {
                h.splice(h.indexOf("Legit AA"));
            }
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Hide shots"])) {
            hsalpha = Math.min(hsalpha + frames, 1);
        } else {
            hsalpha = hsalpha - frames;
            if (hsalpha < 0) hsalpha = 0;
            if (hsalpha == 0) {
                h.splice(h.indexOf("Hide shots"));
            }
        }

        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            if (h.indexOf("Slow walk") == -1)
                h.push("Slow walk")
        }
        if (UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"])) {
            if (h.indexOf("Duck peek assist") == -1)
                h.push("Duck peek assist")
        }
        if (UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"])) {
            if (h.indexOf("Auto peek") == -1)
                h.push("Auto peek")
        }
        if (UI.GetValue(["Rage", "Anti Aim", "Key assignment", "AA Direction inverter"])) {
            if (h.indexOf("Anti-aim inverter") == -1)
                h.push("Anti-aim inverter")
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"])) {
            if (h.indexOf("Safe point override") == -1)
                h.push("Safe point override")
        }
        if (UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"])) {
            if (h.indexOf("Force body aim") == -1)
                h.push("Force body aim")
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Double tap"])) {
            if (h.indexOf("Double tap") == -1)
                h.push("Double tap")
        }
        if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"])) {
            if (h.indexOf("Damage Override") == -1)
                h.push("Damage Override")
        }
            if (UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
            if (h.indexOf("Legit AA") == -1)
                h.push("Legit AA")
        }
        if (UI.GetValue(["Rage", "Exploits", "Key assignment", "Hide shots"])) {
            if (h.indexOf("Hide shots") == -1)
                h.push("Hide shots")
        }
         arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"]);

        if (h.length > 0) {
            alpha = Math.min(alpha + frames, 1);
        } else {
            alpha = alpha - frames;
            if (alpha < 0) alpha = 0;
        }
        for (i = 0; i < h.length; i++) {
            if (Render.TextSize(h[i], font)[0] > maxwidth) {
                maxwidth = Render.TextSize(h[i], font)[0];
            }
        }
        if (maxwidth == 0) maxwidth = 50;
        width = width + maxwidth;
        if (alpha > 0) {
                Render.FilledRect(x, y + 3, width, 2, [arrows_color[0], arrows_color[1], arrows_color[2], alpha * 255]);
                Render.FilledRect(x, y + 5, width, 18, [17, 17, 17, 255]);
                Render.String(x + width / 2 - (Render.TextSize("keybinds", font)[0] / 2) + 2, y + 9, 0, "keybinds", [0, 0, 0, alpha * 255 / 1.3], font);
                Render.String(x + width / 2 - (Render.TextSize("keybinds", font)[0] / 2) + 1, y + 8, 0, "keybinds", [255, 255, 255, alpha * 255], font);
                //Render.FilledRect(x, y + 23, width, 18 * h.length, [17, 17, 17, Math.min(255, alpha * 255)]);
                for (i = 0; i < h.length; i++) {
                    switch (h[i]) {
                        case 'Slow walk':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(swalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, swalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, swalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, swalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, swalpha * 255], font);
                            break;
                        case 'Duck peek assist':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(fdalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, fdalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, fdalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, fdalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, fdalpha * 255], font);
                            break;
                        case 'Auto peek':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(apalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, apalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, apalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, apalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, apalpha * 255], font);
                            break;
                        case 'Anti-aim inverter':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(aialpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, aialpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, aialpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, aialpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, aialpha * 255], font);
                            break;
                            case 'Legit AA':
                                Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(aialpha * 255, 255))]);
                                Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, legitaalpha * 255 / 1.3], font);
                                Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, legitaalpha * 255], font);
   
                                Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, legitaalpha * 255 / 1.3], font);
                                Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, legitaalpha * 255], font);
                                break;
                        case 'Safe point override':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(spalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, spalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, spalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, spalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, spalpha * 255], font);
                            break;
                        case 'Force body aim':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(fbalpha * 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, fbalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, fbalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [0, 0, 0, fbalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[holding]", font)[0], y + 26 + 18 * i, 0, "[holding]", [255, 255, 255, fbalpha * 255], font);
                            break;
                            case 'Damage Override':
                                Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(255, 255))]);
                                Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, 255], font);
                                Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, 255], font);
   
                                Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0,  255 / 1.3], font);
                                Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255,  255], font);
                                break;
                        case 'Double tap':

                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min(255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0, 255], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, dtalpha * 255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, dtalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, dtalpha * 255], font);
                            break;

                        case 'Hide shots':
                            Render.FilledRect(x, y + 23 + 18 * i, width, 18, [17, 17, 17, 0, Math.min(255, Math.min( 255, 255))]);
                            Render.String(x + 3, y + 26 + 18 * i, 0, h[i], [0, 0, 0,  hsalpha * 255 / 1.3], font);
                            Render.String(x + 2, y + 26 + 18 * i, 0, h[i], [255, 255, 255, hsalpha *  255], font);

                            Render.String(x - 3 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [0, 0, 0, hsalpha * 255 / 1.3], font);
                            Render.String(x - 2 + width - Render.TextSize("[toggled]", font)[0], y + 26 + 18 * i, 0, "[toggled]", [255, 255, 255, hsalpha * 255], font);
                            break;

                    }

                }
        }
        if (Global.IsKeyPressed(1) && UI.IsMenuOpen()) {
            const mouse_pos = Global.GetCursorPosition();
            if (in_bounds(mouse_pos, x, y, x + width, y + 30)) {
                UI.SetValue(["Rage", "ONEX-YAW", "Hotkeys_x"], mouse_pos[0] - 50);
                UI.SetValue(["Rage", "ONEX-YAW", "Hotkeys_y"], mouse_pos[1] - 20);
            }
        }
    }
}
Global.RegisterCallback("Draw", "main_hotkeys")

hitboxes = [
    'generic',
    'head',
    'chest',
    'stomach',
    'left arm',
    'right arm',
    'left leg',
    'right leg',
    '?'
];
var shots = 0;
var predicthc = 0;
var safety = 0;
var hitboxName = "";
var choked = 0;
var exploit = 0;
var logs = [];
var logsct = [];
var logsalpha = [];
function getHitboxName(index)
{
    switch (index)
    {
        case 0:
            hitboxName = "head";
            break;
        case 1:
            hitboxName = "head";
            break;
        case 2:
            hitboxName = "stomach";
            break;
        case 3:
            hitboxName = "stomach";
            break;
        case 4:
            hitboxName = "stomach";
            break;
        case 5:
            hitboxName = "chest";
            break;
        case 6:
            hitboxName = "chest";
            break;
        case 7:
            hitboxName = "left leg";
            break;
        case 8:
            hitboxName = "right leg";
            break;
        case 9:
            hitboxName = "left leg";
            break;
        case 10:
            hitboxName = "right leg";
            break;
        case 11:
            hitboxName = "left leg";
            break;
        case 12:
            hitboxName = "right leg";
            break;
        case 13:
            hitboxName = "left arm";
            break;
        case 14:
            hitboxName = "right arm";
            break;
        case 15:
            hitboxName = "left arm";
            break;
        case 16:
            hitboxName = "left arm";
            break;
        case 17:
            hitboxName = "right arm";
            break;
        case 18:
            hitboxName = "right arm";
            break;
        default:
            hitboxName = "body";
    }
    return hitboxName;
}
function HitgroupName(index) {
    return hitboxes[index] || 'body';
}

var target = -1;
var shots_fired = 0;
var hits = 0;
var lastUpdate = 0;
var logged = false;

function ragebot_fire() {
    predicthc = Event.GetInt("hitchance");
    safety = Event.GetInt("safepoint");
    hitboxName = getHitboxName(Event.GetInt("hitbox"));
    exploit = (Event.GetInt("exploit")+1).toString();
  target = Event.GetInt("target_index");
  shots_fired++;
  logged = false;
  lastUpdate = Globals.Curtime();
}

function hitlog() {
    var hit = Entity.GetEntityFromUserID(Event.GetInt("userid"));
    var attacker = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
    if (attacker == Entity.GetLocalPlayer() && hit == target) hits++;

    var hittype = "Hit ";
    me = Entity.GetLocalPlayer();
    hitbox = Event.GetInt('hitgroup');
    target_damage = Event.GetInt("dmg_health");
    target_health = Event.GetInt("health");
    victim = Event.GetInt('userid');
    attacker = Event.GetInt('attacker');
    weapon = Event.GetString('weapon');
    victimIndex = Entity.GetEntityFromUserID(victim);
    attackerIndex = Entity.GetEntityFromUserID(attacker);
    name = Entity.GetName(victimIndex);
      var simtime = Globals.Tickcount() % 17;

    var flags = "";

    if (exploit == 2)
      flags += "T";

    flags += "B";

    if (hitbox == 1)
      flags += "H";

      if (safety == 1) {
          safety = "true";
      }
      else {
          safety = "false";
      }

    if (weapon == "hegrenade")
      hittype = "Naded ";
    else if (weapon == "inferno")
      hittype = "Burned ";
    else if (weapon == "knife")
      hittype = "Knifed ";

    if (me == attackerIndex && me != victimIndex) {
    if (hittype == "Hit ") {

            if(UI.GetValue(["Rage", "ONEX-YAW", "Better Shotlogger"])) {

                Cheat.PrintColor([255, 255, 255, 255], "[onetap] ");

      Cheat.Print("["+shots.toString()+"] "+hittype+name+"'s "+HitgroupName(hitbox)+" for "+target_damage.toString()+" ("+target_health.toString()+" remaining) aimed="+hitboxName+"("+predicthc.toString()+"%%) safety="+safety+" ("+flags+") ("+simtime+":"+exploit+")\n");
          logs.push("["+shots.toString()+"] "+hittype+name+"'s "+HitgroupName(hitbox)+" for "+target_damage.toString()+" ("+target_health.toString()+" remaining) aimed="+hitboxName+"("+predicthc.toString()+"%%) safety="+safety+" ("+flags+") ("+simtime+":"+exploit+")");
    }

        logsct.push(Globals.Curtime());
        logsalpha.push(255);
    }
    }
  if (shots == 99)
    shots = 0;
  else
    shots++;

}

function removelogs() {
    if (logs.length > 6) {
        logs.shift();
        logsct.shift();
        logsalpha.shift();
    }

    if (logsct[0] + 6.5 < Globals.Curtime()) {
        logsalpha[0] -= Globals.Frametime() * 600;
        if (logsalpha[0] < 0) {
            logs.shift();
            logsct.shift();
            logsalpha.shift();
        }
    }
}


function onDraw() {
    if (!World.GetServerString()) return;
    var font = Render.GetFont("smallest_pixel-7.ttf", 9, true);



    for (i = 0; i < logs.length; i++) {
        Render.String(4, 4 + 13*i, 0, logs[i], [255, 255, 255, logsalpha[i]], font);
    }

    if (shots_fired > hits && (Globals.Curtime() - lastUpdate > 0.33)) {
      if (Globals.Curtime() - lastUpdate > 1) {
        shots_fired = 0;
        hits = 0;
      }
      if (!logged) {
        var simtime = Globals.Tickcount() % 16;
        logged = true;
        var issafe = "true";
        var reason = "?";
        if (safety == 0) {
          issafe = "false";
        }

        if (Entity.IsAlive(target) == false)
            reason = "death";
        else if (Entity.IsAlive(Entity.GetLocalPlayer()) == false)
            reason = "dead";
        else if (safety == true && predicthc < 76)
            reason = "spread";
        else if (safety == true && predicthc > 76)
            reason = "prediction error";

        var flags = "";

        if (exploit == 2)
          flags += "T";

          flags += "B";

        if(UI.GetValue(["Rage", "ONEX-YAW", "Better Shotlogger"])) {
            Cheat.PrintColor([255, 255, 255, 255], "[onetap] ");

        Cheat.Print("["+shots.toString()+"] "+"Missed "+Entity.GetName(target)+"'s "+hitboxName+"("+predicthc.toString()+"%%) due to "+reason+", safety="+issafe+" ("+flags+") ("+simtime+":"+exploit+")\n");
            logs.push("["+shots.toString()+"] "+"Missed "+Entity.GetName(target)+"'s "+hitboxName+"("+predicthc.toString()+"%%) due to "+reason+", safety="+issafe+" ("+flags+") ("+simtime+":"+exploit+")");

        logsct.push(Globals.Curtime());
            logsalpha.push(255);
        if (shots == 99)
          shots = 0;
        else
          shots++;
        }
    }
    }
}
function main() {
    Global.RegisterCallback("ragebot_fire", "ragebot_fire");
    Global.RegisterCallback("player_hurt", "hitlog");
    Global.RegisterCallback("Draw", "onDraw");
    Global.RegisterCallback("Draw", "removelogs");
}

main();
for(var name in weaponTabNames) {
    UI.AddSliderInt(["Rage", "Target", weaponTabNames[name]], "Damage Override", 0, 130)
    UI.AddSliderInt(["Rage", "Accuracy", weaponTabNames[name]], "Hitchance Override", 1, 100)
}
var weap_rev = (Entity.GetProp(Entity.GetWeapon(Entity.GetLocalPlayer()), "CBaseAttributableItem", "m_iItemDefinitionIndex") & 0xFFFF) == 64
var username = Cheat.GetUsername()
var screen_size = Global.GetScreenSize()
var lp = Entity.GetLocalPlayer()
var velocity = Math.round(getVelocity(lp)).toString()
var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
var oldTick = 0
var lastPressed = 0
var curtick = 0
var h = [];
var drawLeft = 0
var drawHideReal = 1
var drawRight = 0
var drawBack = 0
var leftWasPressed = 0
var rightWasPressed = 0
var backWasPressed = 0
var upWasPressed = 0
var isHideRealActive = 0
var altfakelag = 0
var cur_dmg = 0
var cur_hit = 0
var anim = 10 * Math.abs(Math.sin(64 * Globals.Realtime()))
var antiaim_state = "default"
var weapon = ""
var recharge = 0
var r8dt = false
var legitaa_time = Global.Realtime()
var E = true
var defuse = false
var distance = 0
var distance1 = 0
var original_aa = true
var planting = false
var fill = 0
var isbomb = 0
var bombsiteonplant = ""
var on_plant_time
    /* PATHES ARRAY */
pathes = []
var lasttime = 0
function get_all_keys() {
    ragekeysgeneral = UI.GetChildren(["Rage", "General", "SHEET_MGR", "General", "Key assignment"])
    ragekeysexploits = UI.GetChildren(["Rage", "Exploits", "SHEET_MGR", "Keys", "Key assignment"])
    ragekeysantiaim = UI.GetChildren(["Rage", "Anti Aim", "SHEET_MGR", "General", "Key assignment"])
    miskkeys = UI.GetChildren(["Misc.", "Keys", "SHEET_MGR", "General", "Key assignment"])
    scriptkeys = UI.GetChildren(["Config", "Scripts", "Keys", "JS Keybinds", ])
    for(p in ragekeysgeneral) {
        pathes.push([
            ["Rage", "General", "SHEET_MGR", "General", "Key assignment", ragekeysgeneral[p]], ragekeysgeneral[p]
        ])
    }
    for(o in ragekeysexploits) {
        pathes.push([
            ["Rage", "Exploits", "SHEET_MGR", "Keys", "Key assignment", ragekeysexploits[o]], ragekeysexploits[o]
        ])
    }
    for(r in ragekeysantiaim) {
        pathes.push([
            ["Rage", "Anti Aim", "SHEET_MGR", "General", "Key assignment", ragekeysantiaim[r]], ragekeysantiaim[r]
        ])
    }
    for(n in miskkeys) {
        pathes.push([
            ["Misc.", "Keys", "SHEET_MGR", "General", "Key assignment", miskkeys[n]], miskkeys[n]
        ])
    }
    for(z in scriptkeys) {
        pathes.push([
            ["Config", "Scripts", "Keys", "JS Keybinds", scriptkeys[z]], scriptkeys[z]
        ])
    }
}
/* On start */
get_all_keys()
/* shadow */
Render.Strings = function(x, y, align, txt, col, font){
    Render.String(x, y + 1, align, txt, [0, 0, 0, 255], font);
    Render.String(x, y, align, txt, col, font);
}
/* dt */
function doubletap(name) {
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Doubletap"])) {
        var exploitCharge = Exploit.GetCharge();
        Exploit[(1 != exploitCharge ? "Enable" : "Disable") + "Recharge"](), Exploit.OverrideMaxProcessTicks(UI.GetValue(["Rage", "ONEX-YAW", "Double Tap Ticks"])), Exploit.OverrideShift(UI.GetValue(["Rage", "ONEX-YAW", "Double Tap Ticks"]))
        Exploit.OverrideTolerance(0), can_shift_shot(10) && 1 != exploitCharge && (Exploit.DisableRecharge(), Exploit.Recharge())
        if(name == "ssg08") {
            can_shift_shot(0)
                }
        Exploit.EnableRecharge(), Exploit.OverrideShift(16), Exploit.OverrideTolerance(3)
    }
    if(weap_rev) {
        if(r8dt && recharge + 20 == Globals.Tickcount()) {
            UI.ToggleHotkey(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])
            r8dt = false
        }
    }
}

function on_wpn_fire() {
    if((Entity.GetEntityFromUserID(Event.GetInt("userid")) != Entity.GetLocalPlayer()) || !weap_rev) return;
    recharge = Globals.Tickcount();
    if(UI.GetValue(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])) {
        UI.ToggleHotkey(["Rage", "Exploits", "Keys", "Key assignment", "Double tap"])
        r8dt = true;
    }
}

function doubletapunload() {
    Exploit.EnableRecharge(), Exploit.OverrideShift(16), Exploit.OverrideTolerance(0)
}
/* damage/hitchance override */
function dmghcoverride() {
    var target = Entity.GetEnemies()
    var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
    if(!Entity.IsAlive(Entity.GetLocalPlayer())) return;
    if(!weaponTabNames.hasOwnProperty(weaponName)) {
        return;
    }
    var isDamageOverride = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"]) ? true : false
    var isHitchanceOverride = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Hitchance Override"]) ? true : false
    for(var i in target) {
        if(isDamageOverride) {
            if(UI.GetValue(["Rage", "Target", weaponTabNames[weaponName], "Damage Override"]) != 0) {
                Ragebot.ForceTargetMinimumDamage(target[i], UI.GetValue(["Rage", "Target", weaponTabNames[weaponName], "Damage Override"]))
            } else {
                Ragebot.ForceTargetMinimumDamage(target[i], UI.GetValue(["Rage", "Target", "General", "Damage Override"]))
            }
        }
        if(isHitchanceOverride) {
            if(UI.GetValue(["Rage", "Accuracy", weaponTabNames[weaponName], "Hitchance Override"]) != 0) {
                Ragebot.ForceTargetHitchance(target[i], UI.GetValue(["Rage", "Accuracy", weaponTabNames[weaponName], "Hitchance Override"]))
            } else {
                Ragebot.ForceTargetHitchance(target[i], UI.GetValue(["Rage", "Accuracy", "General", "Hitchance Override"]))
            }
        }
    }
}
/* UI Status controller */
function on_menu_changes() {
    var type = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Tab"])
    var is_rage = type == 0 ? 1 : 0,
        is_vis = type == 1 ? 1 : 0,
        is_rgb = type == 2 ? 1 : 0,
        is_misc = type == 3 ? 1 : 0
        is_trash = type == 4 ? 1 : 0

        /* RAGE */
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Doubletap"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Double Tap Ticks"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Anti-Aim"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Anti-Aim Conditions"], is_rage == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Better Anti-Aim"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Fake-Lag"], is_rage)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW","Anti Bruteforce"], is_rage)
        /* VISUALS */
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Manual & Desync Indicator"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap Watermark Color"], is_rgb)

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Blend While Holding Grenade"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Better Shotlogger"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Crosshair Hitlogger"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Quake Hitmarker"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hitmarker Color"], is_rgb)

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Local Bullet Tracer"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Custom scope lines"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines color"], is_rgb);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Override FOV while scoped"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines width"], is_vis);
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Scope lines offset"], is_vis);

    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Onetap styled watermark"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark & Fake indicator color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Predict Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Grenade Prediction Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Keybinds Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Watermark Gradient"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Fake Gradient"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spectator List Rainbow Color"], is_rgb)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spec x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Spec y"], is_trash)
   
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Leg Fucker"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Manual Color"], is_rgb == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Desync Color"], is_rgb == 1 && UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"]) ? 1 : 0)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Aspect ratio"], is_vis)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Strafe Turn speed"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "ThirdPerson Dist"], is_vis)


    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "AWP Fast Buy"], is_misc)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hotkeys_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Hotkeys_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_x"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicator_y"], is_trash)
    UI.SetEnabled(["Rage", "ONEX-YAW", "ONEX-YAW", "Additional Flags"], is_misc)
}

function crosshairindicators()
{
    var fonts = {
        "tahomabd": Render.GetFont("tahomabd.ttf", 10, true),
        "verdanab": Render.GetFont("verdanab.ttf", 19, true),
        "calibrib": Render.GetFont("calibrib.ttf", 11, true),
        "ebrimabd": Render.GetFont("ebrimabd.ttf", 10, true),
        "verdanab8": Render.GetFont("verdanab.ttf", 8, true),
        "verdana": Render.GetFont("smallest_pixel-7.ttf", 12, true),
        "tahoma10": Render.GetFont("tahoma.ttf", 10, true),
        "calibrib20": Render.GetFont("calibrib.ttf", 20, true),
        "tahoma18": Render.GetFont("tahoma.ttf", 18, true),
        "pixel": Render.GetFont("arialbd.ttf", 10, true)
    }
    inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
    isDmg = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Damage Override"]);
    isDoubletap = UI.GetValue(["Rage", "Exploits", "Keys", "Double tap"]);
    isHideshots = UI.GetValue(["Rage", "Exploits", "Keys", "Hide shots"]);
    isSafe = UI.GetValue(["Rage", "General", "General", "Key assignment", "Force safe point"]);;
    isBody = UI.GetValue(["Rage", "General", "General", "Key assignment", "Force body aim"]);
    isFs = UI.GetValue(["Rage", "Anti Aim", "Directions", "At targets"]);
    isAuto = UI.GetValue(["Rage", "Anti Aim", "Directions", "Auto direction"]);
    isDuck = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]);
    isPing = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Ping Spike"]);
    isPeek = UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"]);
    isAntiAim = UI.GetValue(["Rage", "Anti Aim", "General", "Enabled"])
    isHc = UI.GetValue(["Config", "Scripts", "JS Keybinds", "Hitchance Override"])
    isSlow = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"]);
    add_y = 15;
     flags = UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "Indicators"])
     var col = [255, 0, 100, 255];
     function get_velocity(player) {var velocity = Entity.GetProp(player, "CBasePlayer", "m_vecVelocity[0]");return Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);}
     function get_delta(player) {var speed = get_velocity(player);var delta = (speed / 8);return (58 - delta);}
   
    var local_player = Entity.GetLocalPlayer();
     var desync_delta = get_delta(local_player)  

    if (getDropdownValue(flags, 0)) {
    if(isBody) {
        Render.String(screen_size[0] / 2 - 20.5, screen_size[1] / 2 + add_y, 0, "BAIM", [0, 0, 0, 155], fonts.pixel);
        Render.String(screen_size[0] / 2 - 20.5, screen_size[1] / 2 + add_y, 0, "BAIM", [177, 171, 255, 255], fonts.ebrimabd);
    } else if(isSafe) {
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "SP", [0, 0, 0, 100], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "SP", [177, 171, 255, 255], fonts.ebrimabd);
    } else {
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "NORM", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "NORM", [3, 161, 252, 255], fonts.ebrimabd);
    }
    if(isFs) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "AUTO", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "AUTO", [209, 159, 230, 255], fonts.ebrimabd);
    } else {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "DYNAMIC", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 20.4, screen_size[1] / 2 + add_y, 0, "DYNAMIC", [209, 159, 230, 255], fonts.ebrimabd);
    }
    if(isDuck && isDoubletap) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT (fd)", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT (fd)", [255, 0, 0, 255], fonts.ebrimabd);
    } else if(isDoubletap) {
        add_y = add_y + 11
    /*    var dsy = {
            "col": UI.GetColor(["Rage", "XO-YAW", "Desync Circle Color"]),
            "inv": UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
        }
        var screens_size = Render.GetScreenSize();
        var screen_middle_x = screens_size[0] * 0.5;
        var screen_middle_y = screens_size[1] * 0.5;
        var view_angles = Local.GetViewAngles();
        var real_yaw = Local.GetRealYaw();
        var fake_yaw = Local.GetFakeYaw();
        var view_yaw = view_angles[1] - 180;
        var real = adjust_angle(real_yaw - view_yaw);
        var fake = adjust_angle(fake_yaw - view_yaw);
        render_arc(screen_middle_x, screen_middle_y, 8, 3, 0, 360, 32, [0, 0, 0, 255])
        render_arc(screen_middle_x, screen_middle_y, 7, 4, dsy.inv ? 90 : 270, dsy.inv ? 180 : 180, 32, dsy.col)
        render_arc(screen_middle_x, screen_middle_y, 15, 12, fake - (12 * 0.5), 44, 32, dsy.col)
        */
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", [0, 0, 0, 155], fonts.ebrimabd);

        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", Exploit.GetCharge() == 1 ? [200, 255, 255, 255] : [212, 208, 207, 255], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DT", Exploit.GetCharge() == 1 ? [200, 255, 255, 255] : [212, 208, 207, 255], fonts.ebrimabd);

    }
    if(isHideshots) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [200, 255, 255, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HS", [200, 255, 255, 255], fonts.ebrimabd);
    }
    if(isDmg) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DMG", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "DMG", [200, 185, 255, 255], fonts.ebrimabd);
    }
    if(isHc) {
        add_y = add_y + 11
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HC", [0, 0, 0, 155], fonts.ebrimabd);
        Render.String(screen_size[0] / 2 - 21, screen_size[1] / 2 + add_y, 0, "HC", [250, 85, 85, 255], fonts.ebrimabd)
    }
//    Render.GradientRect((Global.GetScreenSize()[0] / 2 + -desync_delta * 2) + desync_delta + 2, Global.GetScreenSize()[1] / 2 + 11, desync_delta, 3, 1, [col[0], col[1], col[2], 0], [col[0], col[1], col[2], 255]);
//    Render.GradientRect((Global.GetScreenSize()[0] / 2 + -desync_delta * 2) + (desync_delta * 2), Global.GetScreenSize()[1] / 2 + 11, desync_delta, 3, 1, [col[0], col[1], col[2], 255], [col[0], col[1], col[2], 0]);
}
if(getDropdownValue(flags, 2)) {
    add_y = 0
    Render.Indicator = function(text, col) {
        x = screen_size[0] / 100
        y = screen_size[1] / 1.33
        fonts = Render.GetFont("calibrib.ttf", 21, true)
        text_size = Render.TextSize(text, fonts)
        width = text_size[0] - 2;
        add_y = add_y + 33
        Render.GradientRect(13, y - add_y - 3, width / 2, 26, 1, [0, 0, 0, 0], [0, 0, 0, 55]);
        Render.GradientRect(13 + width / 2, y - add_y - 3, width / 2, 26, 1, [0, 0, 0, 55], [0, 0, 0, 0]);
        Render.String(x, y + 1 - add_y, 0, text, [33, 33, 33, 180], fonts)
        Render.String(x, y - add_y, 0, text, col, fonts)
    }
    fill = 3.125 - (3.125 + on_plant_time - Globals.Curtime())
    if(fill > 3.125) {
        fill = 3.125
    }
    fonts = Render.GetFont("calibrib.ttf", 21, true)
    if(Entity.IsAlive(Entity.GetLocalPlayer())) {
        if(velocity > 255 || Inair()) {
            Render.Indicator("LC", velocity > 275 ? [132, 195, 16, 255] : [255, 0, 0, 255])
        }
        if(isDuck) {
            Render.Indicator("DUCK", [255, 255, 255, 255])
        }
        if(isBody) {
            Render.Indicator("BAIM", [255, 0, 0, 255])
        }
        if(isSafe) {
            Render.Indicator("SAFE", [132, 195, 16, 255])
        }
        if(isPing) {
            Render.Indicator("PING", [255 - ((Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 2.29824561404), (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 3.42105263158, (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 0.22807017543, 255])
        }
        if(isDmg) {
            Render.Indicator("DMG : " + cur_dmg + "", [164, 164, 164, 255]);
        }
        if(isHc) {
            Render.Indicator("HC : " + cur_hit + "", [200, 185, 255, 255]);
        }
        if(isAuto) {
            Render.Indicator("FREESTAND", [132, 195, 16, 255]);
        }
        if(Convar.GetInt("weapon_accuracy_nospread") != 0) {
            Render.Indicator("NS", [255, 0, 0, 255])
        }
        if(isFs) {
            Render.Indicator("AT", [132, 195, 16, 255])
        }
    }
    var c4 = Entity.GetEntitiesByClassID(129)[0];
    if(c4 != undefined) {
        var eLoc = Entity.GetRenderOrigin(c4);
        var lLoc = Entity.GetRenderOrigin(Entity.GetLocalPlayer())
        var distance = calcDist(eLoc, lLoc);
        var willKill = false;
        var dmg;
        //player checks
        var armor = Entity.GetProp(Entity.GetLocalPlayer(), "CCSPlayerResource", "m_iArmor"); // player armor
        var health = Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_iHealth"); // player health
        //c4 things
        var isbombticking = Entity.GetProp(c4, "CPlantedC4", "m_bBombTicking");
        var timer = (Entity.GetProp(c4, "CPlantedC4", "m_flC4Blow") - Globals.Curtime()); // c4 left time
        var c4length = Entity.GetProp(c4, "CPlantedC4", "m_flTimerLength");
        var bar_length = (((Render.GetScreenSize()[1] - 50) / c4length) * (timer));
        //defusing things
        var deflength = Entity.GetProp(c4, "CPlantedC4", "m_flDefuseLength"); // length of defuse
        var deftimer = (Entity.GetProp(c4, "CPlantedC4", "m_flDefuseCountDown") - Globals.Curtime()); // timer when defusing
        var defbarlength = (((Render.GetScreenSize()[1] - 50) / deflength) * (deftimer)); // lenght for left bar
        var isbeingdefused = Entity.GetProp(c4, "CPlantedC4", "m_hBombDefuser"); // check if bomb is being defused
        var gotdefused = Entity.GetProp(c4, "CPlantedC4", "m_bBombDefused"); // check if bomb has or hasnt defused
        const a = 450.7;
        const b = 75.68;
        const c = 789.2;
        const d = (distance - b) / c;
        var damage = a * Math.exp(-d * d);
        if(armor > 0) {
            var newDmg = damage * 0.5;
            var armorDmg = (damage - newDmg) * 0.5;
            if(armorDmg > armor) {
                armor = armor * (1 / .5);
                newDmg = damage - armorDmg;
            }
            damage = newDmg;
        }
        dmg = Math.ceil(damage);
        if(dmg >= health) {
            willKill = true;
        } else {
            willKill = false;
        }
        timer = parseFloat(timer.toPrecision(3));
        timer2 = parseFloat(timer.toPrecision(2));
        timer3 = parseFloat(timer.toPrecision(1));
        if(!isbombticking) return;
        if(gotdefused) return;
        if(timer >= 0.1) {
            Render.Indicator(getSite(c4) + timer.toFixed(1) + "s", [255, 255, 255, 255])
        }
        if(willKill) {
            Render.Indicator("FATAL", [255, 0, 0, 255])
        } else if(damage > 0.5) {
            Render.Indicator("-" + dmg + "HP", [210, 216, 112, 255])
        }
        // defuse time bar
        if(isbeingdefused > 0) {
            if(timer > deflength && timer >= 0.1) {
                Render.FilledRect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
                Render.FilledRect(0, Render.GetScreenSize()[1] - defbarlength, 10, Render.GetScreenSize()[1], [58, 191, 54, 120]);
                Render.Rect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
            } else {
                Render.FilledRect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
                Render.FilledRect(0, Render.GetScreenSize()[1] - defbarlength, 10, Render.GetScreenSize()[1], [252, 18, 19, 120]);
                Render.Rect(0, 0, 10, Render.GetScreenSize()[1], [25, 25, 25, 120]);
            }
        }
    }
    if(planting) {
        textsize_C4 = Render.TextSize(bombsiteonplant, fonts)[0] + 15;
        Render.Indicator(bombsiteonplant, [210, 216, 112, 255])
        Render.OutlineCircle(x + textsize_C4, y - 25 - add_y + 35, fill / 3.3, [255, 255, 255, 255])
    }
    if(Entity.IsAlive(Entity.GetLocalPlayer())) {

        if(isHideshots) {
            Render.Indicator("ONSHOT", [132, 195, 16, 255])
        }
        if(isDoubletap) {
            Render.Indicator("DT", Exploit.GetCharge() == 1 ? [255, 255, 255, 255] : [255, 0, 0, 255])
        }
    }
}
}

Cheat.RegisterCallback("Draw", "crosshairindicators")

/* misc functions */
function misc() {
    var weaponName = Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))
    cur_dmg = weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))] != undefined ? UI.GetValue(["Rage", "Target", weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))], "Damage Override"]) : UI.GetValue(["Rage", "Target", "General", "Damage Override"])
    cur_hit = weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))] != undefined ? UI.GetValue(["Rage", "Accuracy", weaponTabNames[Entity.GetName(Entity.GetWeapon(Entity.GetLocalPlayer()))], "Hitchance Override"]) : UI.GetValue(["Rage", "Accuracy", "General", "Hitchance Override"])
    var fl = function(fl1, fl2) {
        return fl1 < fl2
    }
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Fake-Lag"])) {
        fl(altfakelag, 15 - 1) ? (UserCMD.Choke(), altfakelag++) : altfakelag < 14 + 8 ? (UserCMD.Send(), altfakelag++) : altfakelag = 0;
    }
    var valueas = UI.GetValue(["Rage", "ONEX-YAW", "Aspect ratio"]).toString(); {
        Convar.SetString("r_aspectratio", valueas);
    }
    UI.SetValue(["Misc.", "View", "General", "Thirdperson Distance"], UI.GetValue(["Rage", "ONEX-YAW", "ONEX-YAW", "ThirdPerson Dist"]))
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Ping Spike"])) {
        UI.SetValue(["Misc.", "Helpers", "General", "Extended backtracking"], 1)
    } else {
        UI.SetValue(["Misc.", "Helpers", "General", "Extended backtracking"], 0)
    }
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Freestanding"]) && !UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Auto direction"], 1)
    } else {
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Auto direction"], 0)
    }
    if(UI.GetValue(["Rage", "ONEX-YAW", "Blend While Holding Grenade"])) {
        if(is_gren(weaponName)) {
            if(a == 0){
                cache = {
                    "a": UI.GetValue(["Visuals", "Chams", "Local", "Visible material type"]),
                    "b": UI.GetValue(["Visuals", "Chams", "Local", "Visible material override"]),
                    "c": UI.GetColor(["Visuals", "Chams", "Local", "Visible material color"])
                }
                a = 1
            }
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material type"], 66)
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material override"], 1)
            UI.SetColor(["Visuals", "Chams", "Local", "Visible material color"], [0, 0, 0, 100])
        } else {
            if(a == 1){
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material type"], cache.a)
            UI.SetValue(["Visuals", "Chams", "Local", "Visible material override"], cache.b)
            UI.SetColor(["Visuals", "Chams", "Local", "Visible material color"], cache.c)
            a = 0
            }
        }
   
    }
    UI.GetValue(["Rage", "ONEX-YAW", "Leg Fucker"]) && (anim = 10 * Math.abs(Math.sin(64 * Globals.Realtime())), anim > 5 && UI.SetValue(["Misc.", "Movement", "Leg movement"], 0), anim < 5 && UI.SetValue(["Misc.", "Movement", "Leg movement"], 1))
    flags = UI.GetValue(["Rage", "ONEX-YAW", "Additional Flags"])
    enemys = Entity.GetEnemies()
    if(enemys != "") {
        for(i = 0; i < enemys.length; i++) {
            if(!Entity.IsDormant(enemys[i])) {
                weap_rev = (Entity.GetProp(Entity.GetWeapon(Entity.GetLocalPlayer()), "CBaseAttributableItem", "m_iItemDefinitionIndex") & 0xFFFF) == 64
                no_kev = Entity.GetProp(enemys[i], "CCSPlayerResource", "m_iArmor") == 0
                dist = distanceflag(Entity.GetRenderOrigin(Entity.GetLocalPlayer()), Entity.GetRenderOrigin(enemys[i]))
                good = distanceflag(Entity.GetRenderOrigin(Entity.GetLocalPlayer()), Entity.GetRenderOrigin(enemys[i])) <= 580
                if(good && weap_rev && no_kev && getDropdownValue(flags, 0)) {
                    Entity.DrawFlag(enemys[i], dist < 511 ? "TAP+" : "TAP", [151, 164, 252, 255])
                }
                if(Entity.GetWeapons( enemys[i] ).indexOf("zeus") > -1 && getDropdownValue(flags, 1)){
                    Entity.DrawFlag(enemys[i], "ZEUS", [151, 164, 252, 255])
                }
            }
        }
    }
}
var a = 0
/* antiaim options */
function antiaim() {
    antiaimEnabled = UI.GetValue(["Rage", "ONEX-YAW", "Anti-Aim Conditions"]);
    invertsp = Globals.Tickcount() % 4 >= 2 ? 22 : -22;
    random = Globals.Tickcount() % 3 >= 2 ? -35 : 20;
    inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"]);
    if(UI.GetValue(["Rage", "ONEX-YAW", "Better Anti-Aim"])) {
        if(getDropdownValue(antiaimEnabled, 0) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Slow walk"])) {
            antiaim_state = "slowwalk"
            AntiAim.SetOverride(1);
            AntiAim.SetFakeOffset(7);
            AntiAim.SetRealOffset(-14);
            AntiAim.SetLBYOffset(0);
        } else {
            if(getDropdownValue(antiaimEnabled, 2) && (Inair()) && !inverted) {
                antiaim_state = "air"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetRealOffset(-32);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 2) && (Inair()) && inverted) {
                antiaim_state = "air"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(22);
                AntiAim.SetRealOffset(-43);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 3) && Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_flDuckAmount") > 0.8 && !inverted || getDropdownValue(antiaimEnabled, 3) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]) && !inverted) {
                antiaim_state = "duck"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(-20);
                AntiAim.SetRealOffset(30);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 3) && Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_flDuckAmount") > 0.8 && inverted || getDropdownValue(antiaimEnabled, 3) && UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]) && inverted) {
                antiaim_state = "duck"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(-8);
                AntiAim.SetRealOffset(34);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 1) && dormant() && original_aa) {
                AntiAim.SetOverride(1);
                AntiAim.SetRealOffset(invertsp);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetLBYOffset(-invertsp)
            } else if(getDropdownValue(antiaimEnabled, 4) && velocity > 2 && !inverted) {
                antiaim_state = "normal"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(0);
                AntiAim.SetRealOffset(-22);
                AntiAim.SetLBYOffset(0);
            } else if(getDropdownValue(antiaimEnabled, 4) && velocity > 2 && inverted) {
                antiaim_state = "normal"
                AntiAim.SetOverride(1);
                AntiAim.SetFakeOffset(22);
                AntiAim.SetRealOffset(-22);
                AntiAim.SetLBYOffset(0);
            } else {
                AntiAim.SetOverride(0)
            }
        }
    }
}
/* Invert arrows render */
function drawarrows() {
    if(UI.GetValue(["Rage", "ONEX-YAW", "Manual & Desync Indicator"])) {
        var inverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"])
        fontarrow = Render.GetFont("verdana.ttf", 21, true)
        arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "Manual Color"]);
        s_arrows_color = UI.GetColor(["Rage", "ONEX-YAW", "Desync Color"]);
        arrows_red = arrows_color[0];
        arrows_green = arrows_color[1];
        arrows_blue = arrows_color[2];
        arrows_alpha = arrows_color[3];
        selected_red = s_arrows_color[0];
        selected_green = s_arrows_color[1];
        selected_blue = s_arrows_color[2];
        Render.String(screen_size[0] / 2 - 42, screen_size[1] / 2 - 15, 1, "|", !inverted ? [selected_red, selected_green, selected_blue, 0] : s_arrows_color, fontarrow);
        Render.String(screen_size[0] / 2 + 43, screen_size[1] / 2 - 15, 1, "|", inverted ? [selected_red, selected_green, selected_blue, 0] : s_arrows_color, fontarrow);
        Render.Polygon([
                [screen_size[0] / 2 - 62, screen_size[1] / 2],
                [screen_size[0] / 2 - 45, screen_size[1] / 2 - 10],
                [screen_size[0] / 2 - 45, screen_size[1] / 2 + 10]
            ], drawLeft ? [selected_red, selected_green, selected_blue, 255] : arrows_color)
        Render.Polygon([
            [screen_size[0] / 2 + 45, screen_size[1] / 2 + 10],
            [screen_size[0] / 2 + 45, screen_size[1] / 2 - 10],
            [screen_size[0] / 2 + 62, screen_size[1] / 2]
        ], drawRight ? [selected_red, selected_green, selected_blue, 255] : arrows_color)
    }
}
       

/* legit aa */
function legit_aa2() {
    if(UI.GetValue(["Config", "Scripts", "JS Keybinds", "Legit AA"])) {
        if(original_aa) {
            restrictions_cache = UI.GetValue(["Config", "Cheat", "General", "Restrictions"])
            yaw_offset_cache = UI.GetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"])
            jitter_offset_cache = UI.GetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"])
            pitch_cache = UI.GetValue(["Rage", "Anti Aim", "General", "Pitch mode"])
            original_aa = false
        }
        UI.SetValue(["Config", "Cheat", "General", "Restrictions"], 0);
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"], 180);
        UI.SetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"], 0);
        UI.SetValue(["Rage", "Anti Aim", "General", "Pitch mode"], 0)
        AntiAim.SetOverride(0)
        IN_USE = UserCMD.GetButtons() & (1 << 5)
        if(IN_USE) {
            E = false;
            if(Globals.Realtime() > legitaa_time + 0.2) {
                if(E == false) {
                    Cheat.ExecuteCommand("+use");
                    E = true;
                }
                if(E == true) {
                    Cheat.ExecuteCommand("-use");
                }
            }
        } else {
            if(E == true) {
                Cheat.ExecuteCommand("-use")
                E = false
            }
        }
    } else {
        if(!original_aa) {
            UI.SetValue(["Config", "Cheat", "General", "Restrictions"], restrictions_cache)
            UI.SetValue(["Rage", "Anti Aim", "Directions", "Yaw offset"], yaw_offset_cache)
            UI.SetValue(["Rage", "Anti Aim", "Directions", "Jitter offset"], jitter_offset_cache)
            UI.SetValue(["Rage", "Anti Aim", "General", "Pitch mode"], pitch_cache)
            original_aa = true
        }
        legitaa_time = Global.Realtime();
    }
}

function legit_aa() {
    var C4 = Entity.GetEntitiesByClassID(129)[0]
    var Host = Entity.GetEntitiesByClassID(97)[0]
    if(C4) {
        var C4Loc = Entity.GetRenderOrigin(C4)
        var local = Entity.GetLocalPlayer()
        var lLoc = Entity.GetRenderOrigin(local)
        distance = calcDist(C4Loc, lLoc)
        if(distance >= 100) {
            legit_aa2()
        }
    } else if(Host) {
        var HLoc = Entity.GetRenderOrigin(Host);
        var local = Entity.GetLocalPlayer();
        var lLoc = Entity.GetRenderOrigin(local)
        distance1 = calcDist(HLoc, lLoc);
        if(distance1 >= 100) {
            legit_aa2()
        }
    } else {
        legit_aa2()
    }
}

function player_connect() {
    lastPressed = Global.Tickcount();
    oldTick = Global.Tickcount();
    on_plant_time = 0
    fill = 0
    planting = false
    var c4 = Entity.GetEntitiesByClassID(129)[0];
    if(c4 == undefined) return;
}
function hooked_cm() {
    doubletap()
    dmghcoverride()
    misc()
    antiaim()
    legit_aa()
}

function hooked_painttraverse() {
    drawarrows()
    on_menu_changes()
}

function hooked_events() {
    Cheat.RegisterCallback("player_connect_full", "player_connect")
    Cheat.RegisterCallback("Unload", "doubletapunload")
    Cheat.RegisterCallback("weapon_fire", "on_wpn_fire")
    Cheat.RegisterCallback("bomb_beginplant", "bomb_beginplant");
    Cheat.RegisterCallback("bomb_abortplant", "bomb_abortplant");
    Cheat.RegisterCallback("bomb_defused", "bomb_defused");
    Cheat.RegisterCallback("bomb_planted", "bomb_planted");
    Cheat.RegisterCallback("bomb_exploded", "bomb_exploded");
    Cheat.RegisterCallback("round_start", "on_round_start");
    Cheat.RegisterCallback("round_prestart", "autobuy");
}
/* callbacks */
Cheat.RegisterCallback("CreateMove", "hooked_cm")
Cheat.RegisterCallback("Draw", "hooked_painttraverse")
hooked_events()
    /* Welcome info */
крч там всякие нэйд хелперы и тд, хф
[onetap] [gh.js:1805] script error: cannot read property 'filter' of undefined
 
Эксперт
Статус
Оффлайн
Регистрация
7 Сен 2019
Сообщения
2,106
Реакции[?]
984
Поинты[?]
88K
Сверху Снизу