Voxiom.io KIT NO-RECOIL

no recoil

// ==UserScript==
// @name         Voxiom.io KIT NO-RECOIL
// @version      0.0.0.7
// @copyright
// @license      GPL General Public License
// @namespace    https://greasyfork.org/
// @description  no recoil
// @author       doctor#8296
// @author       Doctor
// @author       Red Scheme
// @match        https://voxiom.io/*
// @match        https://historynotes.club/*
// @exclude      https://*/assets/*
// @exclude      https://*/package/*
// @icon         https://media.discordapp.net/attachments/921558341791129671/1100076229811507262/image.png
// @supportURL   https://discord.gg/sHj5UauJZ4

// @connect      greasyfork.org
// @connect      discord.com
// @connect      unpkg.com
// @grant        unsafeWindow
// @grant        GM_xmlhttpRequest
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @grant        GM_listValues

// @run-at       document-start
// @noframes
// ==/UserScript==



(function _() {

    class ХранилищеСимволов {
        constructor() {
            this.хранилище = {};
        }

        получить(ключ = '') {
            return ключ in this.хранилище ? this.хранилище[ключ] : (this.хранилище[ключ] = Symbol(ключ));
        }

        удалить(ключ) {
            return delete this.хранилище[ключ];
        }
    }

    class Хэш {
        кибер53(строка, сид = 0) {
            let h1 = 0xdeadbeef ^ сид,
                h2 = 0x41c6ce57 ^ сид;
            for (let i = 0, ch; i < строка.length; i++) {
                ch = строка.charCodeAt(i);
                h1 = Math.imul(h1 ^ ch, 2654435761);
                h2 = Math.imul(h2 ^ ch, 1597334677);
            }

            h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
            h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);

            return 4294967296 * (2097151 & h2) + (h1 >>> 0);
        }

        сгенерироватьУУИ() {
            var д = new Date().getTime();
            var д2 = ((typeof performance !== 'undefined') && performance.now && (performance.now() * 1e3)) || 0;
            return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(с) {
                var р = Math.random() * 16;
                if (д > 0) {
                    р = (д + р) % 16 | 0;
                    д = Math.floor(д / 16);
                } else {
                    р = (д2 + р) % 16 | 0;
                    д2 = Math.floor(д2 / 16);
                }
                return (с === 'x' ? р : (р & 0x3 | 0x8)).toString(16);
            });
        }

        сгенерироватьКороткийУУИ() {
            let ууи = '', символы = 'abcdefghijklmnopqrstuvwxyz0123456789';
            for (let i = 0; i < 8; i++) {
                ууи += символы.charAt(Math.floor(Math.random() * символы.length));
            }
            return ууи;
        }
    }

    class Хранилище {
        constructor(_поУмолчанию = {}) {
            const неверноеЗначение = {};
            for (const ключ in _поУмолчанию) {
                const текущееЗначение = GM_getValue(ключ, неверноеЗначение);
                this.установить(ключ, текущееЗначение === неверноеЗначение ? _поУмолчанию[ключ] : текущееЗначение);
            }
        }

        получить(ключ, неверноеЗначение=null) {
            return GM_getValue(ключ, неверноеЗначение);
        }

        установить(ключ, значение) {
            return (GM_setValue(ключ, значение), значение);
        }

        удалить(ключ) {
            return GM_deleteValue(ключ);
        }

        получитьВсе() {
            return GM_listValues();
        }
    }

    class СверхЗрение {
        constructor(камера, сцена, ТРИ) {
            this.камера = камера;
            this.сцена = сцена;
            this.ТРИ = ТРИ;
            this.временноеХранилище = {};
        }

        показыватьЛинии(ключ, позиции, цвет) {
            this.временноеХранилище[ключ] = { линии: this.временноеХранилище[ключ]?.линии || [] };
            while(this.временноеХранилище[ключ].линии.length > 0) this.сцена.remove(this.временноеХранилище[ключ].линии.pop());
            for (const позиция of позиции) {
                const позицияКамеры = this.камера.position.clone();
                const направлениеЗрения = new this.ТРИ.Vector3();
                this.камера.getWorldDirection(направлениеЗрения);
                const отодвинутьНа = 0.1;
                const новаяПозиция = позицияКамеры.add(направлениеЗрения.multiplyScalar(отодвинутьНа));
                const начало = новаяПозиция;
                const конец = позиция;
                const геометрия = new this.ТРИ.BufferGeometry().setFromPoints([начало, конец]);
                const материал = new this.ТРИ.LineBasicMaterial({ color: цвет, depthTest: false, depthWrite: false, linecap: 'round' });
                const линия = new this.ТРИ.Line(геометрия, материал);
                линия.renderOrder = 1;
                this.временноеХранилище[ключ].линии.push(линия);
                this.сцена.add(линия);
            }
        }
    }

    class ВоксиомМенеджер {
        constructor(этот) {
            this.ТЕХНАРЬ = GM;
            this.хэш = new Хэш;
            this.настройки = {
                'автоматическое_наведение': true,
                'использовать_радиус': true,
                'рисовать_радиус_автоматического': true,
                'радиус_автоматического_наведения': 300,
                'без_анимации_отдачи': true,
                'без_вертикальной_отдачи': true,
                'сверх_зрение': true,
                'показывать_линии': true,
                'линии_противника': 0xFF0000,
                'последняя_проверка_обновления': 0,
            };
            this.подтверждено = false;
            this.хранилище = new Хранилище(this.настройки);
            this.хранилищеСимволов = new ХранилищеСимволов;
            this.УИСкрипта = 464634;
            this.ссылкаНаСкрипт = `https://greasyfork.org/en/scripts/${this.УИСкрипта}`;
            this.свойства = {
                анимацияОтдачи: 'Eb',
                вертикальнаяОтдача: 'vv'
            };
            this.ссылкаНаОбновление = null;
            this.этот = этот;
            this.менеджерОкон = new МенеджерОкон(this);
            this.небезопасноеОкно = небезопасноеОкно;
            this.запрос = запрос;
            this.состояние = {
                'сущности': null,
                'сцена': null,
                'камера': null,
                'мышь': {
                    '1': false,
                    '2': false,
                    '3': false
                },
                'ТРИ': null,
                'наОружии': false,
            };
            this.временноеСостояние = {
                'наНастройкеРадиуса': false
            };
            this.функцияУправления = null;
            this.испускатель = null;
            this.мойХЭШ = 6679621489244821;
            this.доверительныйХЭШ = [
                6679621489244821,
                1847873331026683
            ];
            this.кожура = null;
        }

        инициализировать() {
            this.установитьУУИ();
            this.менеджерОкон.открыть('приветствие');
            this.проверитьВерсию();
            // this.захватитьИспускание();
            // this.захватитьИгровыеСущности();
            // this.захватитьСцену();
            // this.захватитьКамеру();
            // this.захватитьУправление();
            this.захватитьАнимациюОтдачи();
            this.захватитьВертикальнуюОтдачу();
            // this.захватитьЗапросАнимационногоФрейма();
            // this.захватитьМышь();
            // this.захватитьКлавиатуру();
            // this.затребоватьТРИ();
            this.инициализироватьКожуру();
            if (небезопасноеОкно[локация][хэш]) this.менеджерОкон.закрытьТекущееОкно();
        }

        захватитьКлавиатуру() {
            небезопасноеОкно.addEventListener('keydown', this.случаиКлавиатуры.bind(this));
        }

        случаиКлавиатуры(событие) {
            switch(событие.keyCode || событие.which) {
                case 120: {
                    this.переключитьНастройки();
                    break;
                }
            }
        }

        переключитьНастройки() {
            const настройки = документ.querySelector('#настройки');
            if (настройки) {
                this.менеджерОкон.закрытьТекущееОкно();
                документ.querySelector("#canvas").requestPointerLock();
            } else {
                документ.exitPointerLock();
                this.менеджерОкон.открыть('настройки', this.хранилище, this.временноеСостояние);
            }
        }

        инициализироватьКожуру() {
            this.кожура = this.менеджерОкон.сэ('canvas', {}, документ.documentElement);
            небезопасноеОкно.addEventListener('resize', () => {
                this.кожура.width = небезопасноеОкно.innerWidth;
                this.кожура.height = небезопасноеОкно.innerHeight;
                this.кожура.style = `pointer-events:none;position:absolute;left:0;top:0;width:${this.кожура.width}px;height:${this.кожура.height}px;z-index:10;`;
            });
            небезопасноеОкно.dispatchEvent( new Event( 'resize', { bubbles: true } ));
        }

        обновитьКожуру() {
            this.отчиститьКожуру();
            (this.хранилище.получить('автоматическое_наведение') && this.состояние.наОружии && this.хранилище.получить('использовать_радиус') && this.хранилище.получить('рисовать_радиус_автоматического') || this.временноеСостояние.наНастройкеРадиуса) && this.нарисоватьРадиусАвтонаведения();
        }

        отчиститьКожуру() {
            const контекст = this.кожура.getContext('2d');
            контекст.clearRect(0, 0, this.кожура.width, this.кожура.height);
        }

        нарисоватьРадиусАвтонаведения() {
            const радиус = this.хранилище.получить('радиус_автоматического_наведения');
            const контекст = this.кожура.getContext('2d');
            const cx = window.innerWidth / 2;
            const cy = window.innerHeight / 2;
            контекст.save();
            контекст.strokeStyle = 'red';
            контекст.beginPath();
            контекст.arc(cx, cy, радиус, 0, 2 * Math.PI);
            контекст.stroke();
        }

        проверитьВерсию() {
            const текущаяДата = Date.now();
            if (текущаяДата - this.хранилище.получить('последняя_проверка_обновления') < 864e5) return;
            this.извлечь(`${this.ссылкаНаСкрипт}.json?r=${Math.random()}`).then(text => {
                if (JSON.parse(text.responseText).version !== this.ТЕХНАРЬ.info.script.version) {
                    this.менеджерОкон.открыть('некорректный_скрипт', 'version');
                } else {
                    this.подтверждено = true;
                }
                this.хранилище.установить('последняя_проверка_обновления', текущаяДата);
            }).catch(error => this.менеджерОкон.открыть('некорректный_скрипт', `unknown error ${error.name}:${error.message}`));
        }

        циклИнициализирован() {}

        захватитьВертикальнуюОтдачу() {
            const _этот = this;
            Объект.определитьСвойство(Объект.прототип, this.свойства.вертикальнаяОтдача, {
                [установить](значение) {
                    this[_этот.хранилищеСимволов.получить('вертикальнаяОтдача')] = _этот.хранилище.получить('без_вертикальной_отдачи') ? 0 : значение;
                },
                [получить]() {
                    return this[_этот.хранилищеСимволов.получить('вертикальнаяОтдача')];
                }
            });
        }

        захватитьАнимациюОтдачи() {
            const _этот = this;
            Объект.определитьСвойство(Объект.прототип, this.свойства.анимацияОтдачи, {
                [установить](значение) {
                    this[_этот.хранилищеСимволов.получить('анимацияОтдачи')] = new Прокси(значение, {
                        [применить]() {
                            if (_этот.хранилище.получить('без_анимации_отдачи')) return;
                            return Отразить.применить(...arguments);
                        }
                    });
                },
                [получить]() {
                    return this[_этот.хранилищеСимволов.получить('анимацияОтдачи')];
                }
            });
        }

        захватитьМышь() {
            const _этот = this;
            document.addEventListener = new Прокси(document.addEventListener, {
                [применить]() {
                    const арги = arguments[2];
                    арги[1] = new Прокси(арги[1], {
                        [применить]() {
                            const событие = arguments[2][0];
                            switch(арги[0]) {
                                case 'mousedown': _этот.состояние.мышь[событие.keyCode || событие.which] = true; break;
                                case 'mouseup': _этот.состояние.мышь[событие.keyCode || событие.which] = false; break;
                            }
                            return Отразить.применить(...arguments);
                        }
                    });
                    return Отразить.применить(...arguments);
                }
            });
        }

        анимировать() {
            if (this.циклИнициализирован()) {
                this.кадрИнциализации();
                this.инициализированныйЦикл();
            }
        }

        кадрИнциализации() {
            this.сверхЗрение = new СверхЗрение(this.состояние.камера, this.состояние.сцена, this.состояние.ТРИ);
            this.кадрИнциализации = () => {};
        }

        инициализированныйЦикл() {}

        приближение() {}

        сверхъестественноеЗрение() {
            if (!this.хранилище.получить('сверх_зрение')) return;
            if (this.хранилище.получить('показывать_линии', false)) this.сверхЗрение.показыватьЛинии(
                'линии_противников',
                this.игроки.filter(this.этоСоперник.bind(this)).map(игрок => this.получитьМировуюПозициюГоловы(игрок[this.свойства.объектИгрока], this.состояние.ТРИ)),
                this.хранилище.получить('линии_противника', 0xFF0000)
            );
            // if (this.хранилище.получить('показывать_линии_союзников', false)) this.показыватьЛинии('линии_союзников');
        }

        автоматическоеНаведение() {}

        фальшивыйБог() {}

        невидимость() {}

        проверитьПоддлинность() {}

        получитьУклонИНаклон(начало, назначение) {
            const x = назначение.x - начало.x;
            const y = назначение.y - начало.y;
            const z = назначение.z - начало.z;

            const дистанция = Math.sqrt(x * x + y * y + z * z);
            const уклон = Math.atan2(y, Math.sqrt(x * x + z * z));
            const наклон = Math.atan2(-x, -z);

            return [уклон, наклон];
        }

        позицияВРадиусе(точка, радиус, камера) {
            const [x, y] = this.позицияВЭкранныеКоординаты(точка, камера);
            return радиус > Math.sqrt((x - window.innerWidth / 2) ** 2 + (y - window.innerHeight / 2) ** 2);
        }

        позицияВЭкранныеКоординаты(точка, камера) {
            const ширина = window.innerWidth,
                  высота = window.innerHeight,
                  полШирины = ширина / 2,
                  полВысоты = высота / 2,
                  позиция = точка.clone();
            позиция.project(камера);
            return [
                ( позиция.x * полШирины ) + полШирины,
                высота - (( позиция.y * полВысоты ) + полВысоты)
            ];
        }

        прямаяВидимость(точка, камера, сцена, ТРИ) {
            const луч = new ТРИ.Raycaster();
            const начало = камера.position;
            const конец = точка;
            const направление = new ТРИ.Vector3().subVectors(конец, начало).normalize();
            луч.set(начало, направление);
            const дистанция = камера.position.distanceTo(точка);
            направление.multiplyScalar(-1);
            луч.near = 0.01
            луч.far = дистанция;
            const intersects = луч.intersectObject(сцена.children[4]);
            return intersects.length == 0;
        }

        пометитьПозицию(точка, сцена, ТРИ) {
            const geometry = new ТРИ.BoxGeometry( 0.1, 0.1, 0.1 );
            const material = new ТРИ.MeshBasicMaterial( {
                color: 0xFF0000,
                fog: false,
                depthTest: false,
                depthWrite: false,
                transparent: true,
                opacity: 1
            });
            const mesh = new ТРИ.Mesh( geometry, material );
            mesh.renderOrder = 3;
            mesh.position.copy(точка);
            сцена.add(mesh);
            return mesh;
        }

        получитьМировуюПозициюГоловы(объектИгрока, ТРИ) {
            const head = объектИгрока.children[1].children[2].children[0];
            const vec = new ТРИ.Vector3();
            const box = new ТРИ.Box3().setFromObject(head);
            const center = box.getCenter(vec);
            const head2 = head.clone();
            head2.position.set(vec.x, vec.y, vec.z);
            const pos = head2.localToWorld(head2.position);
            pos.y += 0.1;
            return pos;
        }

        наЭкране(точка, камера, ТРИ) {
            камера.updateMatrix();
            камера.updateMatrixWorld();
            var frustum = new ТРИ.Frustum().setFromProjectionMatrix(
                new ТРИ.Matrix4().multiplyMatrices(
                    камера.projectionMatrix,
                    камера.matrixWorldInverse
                )
            );
            return frustum.containsPoint(точка);
        }

        захватитьЗапросАнимационногоФрейма() {
            const _этот = this;
            const мойЗапросАнимационногоФрейма = небезопасноеОкно.requestAnimationFrame = new Прокси(небезопасноеОкно.requestAnimationFrame, {
                [применить]() {
                    _этот.анимировать();
                    return Отразить.применить(...arguments);
                }
            });
        }

        установитьУУИ() {
            this.хранилище.установить('УУИ', this.хранилище.получить('УУИ') || this.хэш.сгенерироватьКороткийУУИ());
        }

        отчиститьАвторство(объект, глубина, замена) {
            if (глубина < 0) return false;
            for (const ключ in объект) {
                const значение = объект[ключ];
                switch (typeof значение) {
                    case 'string': {
                        if (значение.length > 500) break;
                        for (let start=0; start < значение.length - 4; start++) {
                            for (let end=start+4; end < start + 19 && end < значение.length + 1; end++) {
                                let name = значение.slice(start, end);
                                if (this.проверитьПоддлинность(name)) {
                                    start = значение.length;
                                    объект[ключ] = значение.replaceAll(name, замена);
                                    break;
                                }
                            }
                        }
                        break;
                    }
                    case 'object': {
                        if (значение !== null && !(значение instanceof self.Element) && !(значение instanceof self.Uint8Array)) return this.отчиститьАвторство(значение, глубина - 1, замена);
                        break;
                    }
                }
            }
        }

        захватитьУправление() {
            const _этот = this;
            Объект.определитьСвойство(Объект.прототип, this.свойства.управление, {
                [установить](значение) {
                    if (_этот.свойства.функцияУправления in значение) {
                        _этот.функцияУправления = значение[_этот.свойства.функцияУправления].bind(значение);
                    }
                    this[_этот.хранилищеСимволов.получить('управление')] = значение;
                },
                [получить]() {
                    return this[_этот.хранилищеСимволов.получить('управление')];
                }
            });
        }

        захватитьИгровыеСущности() {
            const _этот = this;
            Объект.определитьСвойство(Объект.прототип, this.свойства.сущности, {
                [установить](значение) {
                    _этот.состояние.сущности = значение;
                    this[_этот.хранилищеСимволов.получить('сущности')] = значение;
                },
                [получить]() {
                    return this[_этот.хранилищеСимволов.получить('сущности')];
                }
            });
        }

        захватитьСцену() {
            const _этот = this;
            Объект.определитьСвойство(Объект.прототип, this.свойства.сцена, {
                [установить](значение) {
                    _этот.состояние.сцена = значение;
                    this[_этот.хранилищеСимволов.получить('сцена')] = значение;
                },
                [получить]() {
                    return this[_этот.хранилищеСимволов.получить('сцена')];
                }
            });
        }

        захватитьИспускание() {
            const _этот = this;
            Объект.определитьСвойство(Объект.прототип, 'emit', {
                [установить](значение) {
                    this[_этот.хранилищеСимволов.получить('испускатель')] = значение.toString().includes("this['_eventEmitter']") ? _этот.проксироватьИспускатель(значение) : значение;
                },
                [получить]() {
                    return this[_этот.хранилищеСимволов.получить('испускатель')];
                }
            });
        }

        проксироватьИспускатель(испускатель) {
            return испускатель;
        }

        захватитьКамеру() {
            const _этот = this;
            Объект.определитьСвойство(Объект.прототип, this.свойства.камера, {
                [установить](значение) {
                    _этот.состояние.камера = значение;
                    this[_этот.хранилищеСимволов.получить('камера')] = значение;
                },
                [получить]() {
                    return this[_этот.хранилищеСимволов.получить('камера')];
                }
            });
        }

        затребоватьТРИ() {
            this.извлечь('https://unpkg.com/three@latest/build/three.min.js').then(ответ => {
                const конекст = {};
                Function('globalThis', ответ.responseText)(конекст);
                this.состояние.ТРИ = конекст.THREE;
            });
        }

        get игроки() {
            return Объект.values(this.состояние.сущности).filter(this.являетсяЛиИгроком.bind(this));
        }

        являетсяЛиИгроком(сущность) {
            return this.свойства.ник in сущность && сущность[this.свойства.объектИгрока].visible;
        }

        этоСоперник(сущность) {
            return сущность[this.свойства.команда] > 0 ? сущность[this.свойства.ник] === '' : true;
        }

        извлечь(УРС, опции = {}) {
            return new Обещание((разрешить, отклонить) => запрос(Объект.соединить({
                [урс]: УРС,
                [приЗагрузке]: разрешить,
                [приОшибке]: отклонить
            }, опции)));
        }
    }

    class МенеджерОкон {
        constructor(_этот) {
            this.текущееОкно = null;
            this._этот = _этот;
        }

        сэ(тэг, опции = {}, родитель = false, иниц = false) {
            const потомки = опции.children || [];
            delete опции.children;
            let элемент = Объект.соединить(документ.createElement(тэг), опции);
            for (const потомок of потомки) элемент.appendChild(потомок);
            элемент = родитель ? родитель.appendChild(элемент) : элемент;
            if (typeof иниц == 'function') иниц(элемент);
            return элемент;
        }

        открыть(имя, ...арги) {
            this.УИТаймаутЗакрытия && отчиститьИнтервал(this.УИТаймаутЗакрытия);
            this.закрытьТекущееОкно();
            try {
                this.текущееОкно = this[имя](...арги);
            } catch (ошибка) {
                return this.открыть('окноВнутреннейОшибки', ошибка.name, ошибка.message);
            }
        }

        окноВнутреннейОшибки(имя, сообщене) {
            return this.сгенерироватьЗаднийФон(
                [
                    this.сэ('div', {
                        style: 'background:#FFF;display:flex;flex-direction:column;color:#000;border-radius:15px;padding:10px;transform:scale(1.2);',
                        children: [
                            this.сэ('div', {
                                textContent: '\u0055\u004E\u0045\u0058\u0050\u0045\u0043\u0054\u0045\u0044\u0020\u0045\u0052\u0052\u004F\u0052\u002E\u0020\u0055\u0050\u0044\u0041\u0054\u0045\u0020\u0054\u0048\u0045\u0020\u0053\u0043\u0052\u0049\u0050\u0054\u002E'
                            })
                        ]
                    })
                ]
            );
        }

        закрытьТекущееОкно() {
            return this.текущееОкно && this.текущееОкно.parentElement && this.текущееОкно.remove();
        }

        сгенерироватьЗаднийФон(элемент, родитель) {
            const фон = this.сэ('div', {
                style: 'width:100%;height:100%;position:absolute;left:0;top:0;background:#000A;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:100000;',
                onclick: е => (е.target === фон && this.закрытьТекущееОкно(), true),
                children: Array.isArray(элемент) ? элемент : [элемент]
            }, родитель);
            return фон;
        }

        приветствие() {
            return this.сгенерироватьЗаднийФон(
                [
                    this.сэ('style', {
                        textContent:
                        `
.rainbow-text-animated {
    background: linear-gradient(to right, #6666ff, #0099ff , #00ff00, #ff3399, #6666ff);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: rainbow-animation 6s ease-in-out infinite;
    background-size: 400% 100%;
}

@keyframes rainbow-animation {
    0%,100% {
        background-position: 0 0;
    }
    50% {
        background-position: 100% 0;
    }
}

.кнопка-ок:hover {
    background: black !important;
    color: white !important;
}

.дискорд-кнопка:hover {
    background: #4a56d7 !important;
}
`,
                    }),
                    this.сэ('div', {
                        style: 'background:#FFF;display:flex;flex-direction:column;color:#000;border-radius:15px;padding:10px;transform:scale(1.2);',
                        children: [
                            this.сэ('div', {
                                style: 'display:flex;flex-direction:column;gap:10px;align-items:center;',
                                children: [
                                    this.сэ('div', {
                                        style: 'font-weight:900;text-align:center;', innerHTML: `<b style="font-weight:900;" class="rainbow-text-animated">${GM.info.script.name}</b> by <a href=${GM.info.script.supportURL}>${GM.info.script.author}</a>`
                                    }),
                                    this.сэ('div', {
                                        style: 'font-size:14px;font-weight:900;text-align:center;',
                                        textContent: `VERSION: ${GM.info.script.version}`
                                    }),
                                    this.сэ('div', {
                                        style: 'display:flex;flex-direction:row;gap:10px;',
                                        children: [
                                            this.сэ('div', {
                                                style: 'display:flex;flex-direction:column;align-items:center;border:5px solid #000000;border-radius:10px;padding:15px;gap:15px;justify-content:center;',
                                                children: [
                                                    this.сэ('div', {
                                                        style: 'font-weight:900;color:#000000;width:237px;text-align:center;',
                                                        textContent: 'YOU CAN GET AIMBOT ON MY DISCORD IF YOU WILL DONATE ME NITRO CLASSIC'
                                                    })
                                                ]
                                            }),
                                            this.сэ('div', {
                                                style: 'display:flex;flex-direction:column;align-items:center;border:5px solid #5865F2;border-radius:10px;padding:15px;gap:15px;',
                                                children: [
                                                    this.сэ('div', {
                                                        style: 'font-weight:900;color:#5865F2;', textContent: 'JOIN MY DISCORD'
                                                    }),
                                                    this.сэ('div', {
                                                        style: 'height:120px;', innerHTML: '<svg width="130px" height="120px" viewBox="0 -5 246 246" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">  <g>  <path d="M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z" fill="#5865F2" fill-rule="nonzero">  </path>  </g> </svg>'
                                                    }),
                                                    this.сэ('a', {
                                                        className: 'дискорд-кнопка', style: 'cursor:pointer;width:237px;height:46px;background-color:#5865F2;pointer-events:all;border-radius:5px;display:flex;flex-direction:column;opacity:1;',
                                                        children: [
                                                            this.сэ('div', {
                                                                style: 'display:flex;flex-direction:column;flex:1;align-items:center;justify-content:center;',
                                                                innerHTML: '<svg width="100px" height="30px" viewBox="155 -30 200 160" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">  <g>  <path d="M82.003081,0 C91.2633721,1.60390319 100.120889,4.42068908 108.404769,8.2965107 C122.889017,29.9266617 130.085793,54.3223748 127.428468,82.4600608 C116.346397,90.7462215 105.596579,95.7733519 95.0277993,99.0630814 C92.4108216,95.4753062 90.0957488,91.6508839 88.0927556,87.6415645 C91.9075296,86.1918592 95.5712634,84.4030589 99.0337857,82.316213 C98.1278953,81.6376723 97.2321795,80.9282569 96.356462,80.198317 C75.5511554,90.0471561 52.6723352,90.0471561 31.6154704,80.198317 C30.7499275,80.9282569 29.8540363,81.6376723 28.9381467,82.316213 C32.3904943,84.3928843 36.044229,86.1816846 39.859003,87.6312145 C37.8560098,91.6508839 35.5309378,95.4649562 32.9239592,99.0529068 C22.3653539,95.7631773 11.6255003,90.7358714 0.54343793,82.4600608 C-1.72128811,58.1878464 2.80815519,33.5660115 19.5168162,8.31703533 C27.8006964,4.43103911 36.6683882,1.60390319 45.9386784,0 C47.0861279,2.0561467 48.4449635,4.82170874 49.3608531,7.02170325 C59.0237427,5.54129868 68.7771511,5.54129868 78.6210784,7.02170325 C79.5371434,4.82170874 80.8658061,2.0561467 82.003081,0 Z M335.935532,31.686517 C342.980566,31.686517 348.829208,33.1977962 353.479703,36.2201792 L353.479703,49.3896225 C351.839487,48.2381383 349.925609,47.3026012 347.741578,46.5830112 C345.557547,45.8634213 343.222652,45.5034509 340.726366,45.5034509 C336.358304,45.5034509 332.946304,46.3156648 330.47984,47.9502672 C328.013376,49.5848696 326.776636,51.7129402 326.776636,54.3550037 C326.776636,56.9456678 327.973028,59.0635638 330.369323,60.7290409 C332.765617,62.3841679 336.237261,63.2169065 340.796535,63.2169065 C343.141956,63.2169065 345.457555,62.8672861 347.741578,62.1785708 C350.01683,61.4795055 351.979826,60.6262423 353.620042,59.6186059 L353.620042,72.3561549 C348.457309,75.5225611 342.468328,77.1057643 335.653099,77.1057643 C329.916728,77.0852396 325.024148,76.0777786 320.987638,74.0628566 C316.952882,72.0477592 313.902256,69.3132472 311.86909,65.8589699 C309.835924,62.4046925 308.809692,58.5186963 308.809692,54.2008058 C308.809692,49.8830907 309.865746,46.0176191 311.979607,42.6147411 C314.093468,39.211863 317.193213,36.538925 321.280596,34.5959268 C325.366225,32.6529287 330.24828,31.686517 335.935532,31.686517 Z M283.018831,31.6766932 C286.96412,31.6766932 290.577858,32.1084121 293.87057,32.9720253 C297.161527,33.8356385 299.878848,34.935548 302.043582,36.2822794 L302.043582,47.5806485 C299.827975,46.2339171 297.291341,45.1750568 294.393334,44.3730175 C291.504098,43.5815037 288.535921,43.1908341 285.474769,43.1908341 C281.055834,43.1908341 278.852507,43.9618233 278.852507,45.4936271 C278.852507,46.2133925 279.194584,46.74791 279.878738,47.1077049 C280.562892,47.4674999 281.820684,47.8376449 283.643341,48.2283145 L290.688375,49.5236466 C295.289751,50.3358605 298.721048,51.7648658 300.975249,53.8003124 C303.231204,55.8359345 304.357427,58.8481429 304.357427,62.8369377 C304.357427,67.2060521 302.496176,70.6706794 298.761396,73.240819 C295.026615,75.8109585 289.732314,77.0959405 282.867966,77.0959405 C278.831456,77.0857659 274.907217,76.5819477 271.102267,75.5744867 C267.297317,74.5670257 263.864266,73.1071457 260.815393,71.1846723 L260.815393,59.2388126 C263.120467,61.058312 266.209687,62.5594167 270.084807,63.7416001 C273.959927,64.913609 277.705233,65.4995258 281.327742,65.4995258 C283.018831,65.4995258 284.297673,65.273404 285.162514,64.8209851 C286.029109,64.3687416 286.462407,63.8238741 286.462407,63.1967327 C286.462407,62.4771427 286.230847,61.880876 285.757202,61.3975824 C285.283557,60.9144642 284.367843,60.5134446 283.010059,60.1741742 L274.554614,58.2311761 C269.712907,57.0798673 266.279856,55.4863141 264.237919,53.4405175 C262.194227,51.4048954 261.176767,48.7319573 261.176767,45.4217032 C261.176767,42.6356166 262.062659,40.2198503 263.855494,38.1533536 C265.63605,36.0870323 268.172683,34.4934791 271.463641,33.3728695 C274.756352,32.2420853 278.599896,31.6766932 283.018831,31.6766932 Z M512,23.8326015 L512,75.6464106 L494.736507,75.6464106 L494.736507,66.2192911 C493.276978,69.766017 491.063125,72.4698297 488.084423,74.3202039 C485.103966,76.1605788 481.420058,77.0857659 477.051997,77.0857659 C473.147055,77.0857659 469.74558,76.1193542 466.835293,74.1763561 C463.92676,72.2333579 461.683085,69.5707699 460.102513,66.1884165 C458.532467,62.8060631 457.736041,58.9818161 457.736041,54.7051503 C457.686922,50.2948112 458.521942,46.3367157 460.242853,42.8310391 C461.954993,39.3253625 464.379355,36.5908505 467.500151,34.6271523 C470.620947,32.6636296 474.183811,31.6766932 478.179974,31.6766932 C486.262068,31.6766932 491.728206,35.2014569 494.588378,42.2413268 L494.736,42.614 L494.736507,23.8326015 L512,23.8326015 Z M385.466546,31.6663432 C391.053806,31.6663432 395.874462,32.6224049 399.910972,34.5448784 C403.947482,36.4673519 407.027931,39.0992407 409.141792,42.4608941 C411.255653,45.8227229 412.311707,49.6778444 412.311707,54.0471342 C412.311707,58.3648493 411.255653,62.2715456 409.141792,65.7770468 C407.027931,69.2827234 403.936957,72.0379354 399.870625,74.0528574 C395.804292,76.0679549 391.002933,77.0754159 385.457775,77.0754159 C379.910862,77.0754159 375.109503,76.0781295 371.053696,74.0632075 C366.987364,72.0482854 363.887619,69.2930734 361.752707,65.7873968 C359.619549,62.2817202 358.542444,58.3751994 358.542444,54.0573088 C358.542444,49.7395937 359.609023,45.8842968 361.752707,42.5021188 C363.89639,39.1197653 366.976838,36.4673519 371.023874,34.5448784 C375.05863,32.6224049 379.88104,31.6663432 385.466546,31.6663432 Z M253.107255,43.4681797 L253.107255,75.8723569 L235.89639,75.8723569 L235.89639,43.4681797 C241.169641,45.7914974 247.712962,45.8942959 253.107255,43.4681797 Z M448.235068,32.6120549 C450.720829,32.6120549 452.855741,33.187797 454.646822,34.3391059 L454.646822,49.8832661 C452.855741,48.6803826 450.540142,48.0841159 447.671957,48.0841159 C443.916125,48.0841159 441.018118,49.2459501 439.004248,51.5692678 C436.981608,53.892761 435.974673,57.5114108 435.974673,62.404868 L435.974673,75.6462352 L418.712935,75.6462352 L418.712935,33.547592 L435.623825,33.547592 L435.623825,46.932807 C436.558835,42.0391744 438.079763,38.4308746 440.172573,36.0970315 C442.256613,33.7737138 444.952882,32.6120549 448.235068,32.6120549 Z M199.445002,25.2717814 C206.069018,25.2717814 211.665049,26.3306416 216.2559,28.4381876 C220.834471,30.5455582 224.267522,33.4858427 226.542773,37.2485157 C228.816271,41.0111887 229.963545,45.3187292 229.963545,50.1711372 C229.963545,54.9207466 228.775923,59.2282871 226.40068,63.0834087 C224.025437,66.9488803 220.411699,70.0023134 215.550695,72.2537072 C210.689691,74.505101 204.669134,75.6358852 197.473234,75.6358852 L171.967086,75.6358852 L171.967086,25.2717814 L199.445002,25.2717814 Z M42.7277144,41.348354 C36.2959626,41.348354 31.2228711,47.2596223 31.2228711,54.445698 C31.2228711,61.6317737 36.4066553,67.5328673 42.7277144,67.5328673 C49.1596416,67.5328673 54.2425569,61.6317737 54.2325578,54.445698 C54.3432504,47.2492722 49.1596416,41.348354 42.7277144,41.348354 Z M85.244218,41.348354 C78.8122908,41.348354 73.7393746,47.2596223 73.7393746,54.445698 C73.7393746,61.6317737 78.9231588,67.5328673 85.244218,67.5328673 C91.6759697,67.5328673 96.7490613,61.6317737 96.7490613,54.445698 C96.859754,47.2492722 91.6759697,41.348354 85.244218,41.348354 Z M385.457775,44.928235 C382.447496,44.928235 380.091549,45.7814982 378.370638,47.4880245 C376.660253,49.1947263 375.804183,51.4769947 375.804183,54.3555299 C375.804183,57.2340651 376.660253,59.5472082 378.370638,61.2947838 C380.082778,63.0425348 382.447496,63.9266726 385.457775,63.9266726 C388.415426,63.9163226 390.752076,63.0425348 392.462462,61.2947838 C394.174602,59.5472082 395.039443,57.2340651 395.039443,54.3555299 C395.039443,51.4769947 394.183373,49.1843762 392.462462,47.4880245 C390.752076,45.7814982 388.415426,44.928235 385.457775,44.928235 Z M485.225009,45.1441822 C482.316476,45.1441822 479.992106,45.9974454 478.250144,47.7039717 C476.508182,49.4106734 475.643341,51.6208425 475.643341,54.3555299 C475.643341,57.0902173 476.508182,59.3210865 478.250144,61.0481374 C479.992106,62.7751884 482.286654,63.6388016 485.154839,63.6388016 C488.063372,63.628627 490.398267,62.7546638 492.16128,61.0070882 C493.922539,59.2593372 494.797906,56.9874188 494.797906,54.2116821 C494.797906,51.528394 493.941836,49.3385741 492.23145,47.6629224 C490.51931,45.9872707 488.173889,45.1441822 485.225009,45.1441822 Z M198.18721,38.0812543 L189.591426,38.0812543 L189.591426,62.8367623 L197.190801,62.8367623 C201.650084,62.8367623 205.083135,61.6956281 207.477675,59.4235342 C209.873969,57.1412658 211.072116,54.0366088 211.072116,50.0992133 C211.072116,46.4495134 210.003783,43.5401036 207.870625,41.3606337 C205.737467,39.1811638 202.506154,38.0812543 198.18721,38.0812543 Z M244.509717,22.2386975 C249.261958,22.2386975 253.116027,25.7734945 253.116027,30.1340131 C253.116027,34.4945317 249.261958,38.0295041 244.509717,38.0295041 C239.755722,38.0295041 235.903407,34.4945317 235.903407,30.1340131 C235.903407,25.7734945 239.755722,22.2386975 244.509717,22.2386975 Z" fill="#ffffff" fill-rule="nonzero">  </path>  </g> </svg>'
                                                            })
                                                        ],
                                                        onclick: эвент => {
                                                            эвент.preventDefault();
                                                            const ссылка = this.сэ('a', {
                                                                style: 'display:none;opacity:0;visible:none;pointer-events:auto;user-select:auto;',
                                                                href: GM.info.script.supportURL,
                                                                target: "_blank",
                                                            }, document.querySelector('#app'));
                                                            ссылка.click();
                                                            ссылка.remove();
                                                        }
                                                    })
                                                ]
                                            })
                                        ]
                                    }),
                                    this.сэ('button', {
                                        style: 'cursor:pointer;font-weight:900;width:130px;height:25px;appearance:none;background:white;color:black;border-radius:5px;border:3px solid black;',
                                        className: 'кнопка-ок',
                                        onclick: this.закрытьТекущееОкно.bind(this),
                                    }, false, кнопка => {
                                        const _этот = this;
                                        const текст = 'OK';
                                        let счётчик = 20;
                                        this.УИТаймаутЗакрытия = установитьИнтервал((function субФункция(к) {
                                            if (счётчик > 0) {
                                                кнопка.textContent = `${текст} (${счётчик})`;
                                                счётчик--;
                                            } else {
                                                _этот.закрытьТекущееОкно(к);
                                            }
                                            return субФункция;
                                        })(), 1e3);
                                    })
                                ]
                            })
                        ]
                    })
                ],
                документ.documentElement
            );
        }

        настройки(хранилище, состояние) {
            const элемент = this.сэ('div', {
                id: 'настройки',
                style: 'width:100%;height:100%;position:absolute;left:0;top:0;background:#000A;display:flex;flex-direction:column;align-items:center;justify-content:center;',
                onclick: событие => (событие.target === элемент && this.закрытьТекущееОкно(), true),
                children: [
                    this.сэ('div', {
                        style: 'background:#FFF;display:flex;flex-direction:column;color:#000;border-radius:15px;padding:10px;align-items:center;gap:10px;padding-inline:40px;',
                        children: [
                            this.сэ('div', {
                               children: [
                                   this.сэ('b', {
                                       textContent: 'SETTINGS'
                                   })
                               ]
                            }),
                            this.сэ('div', {
                                style: 'display:flex;flex-direction:row;gap:10px;',
                                children: [
                                    this.сэ('div', {
                                        style: 'width:150px;',
                                        children: [
                                            this.сэ('div', {
                                                style: 'text-align:center;',
                                                textContent: 'AIM'
                                            }),
                                            this.создатьЧекбокс(хранилище, 'автоматическое_наведение', 'aim'),
                                            this.создатьЧекбокс(хранилище, 'использовать_радиус', 'use radius'),
                                            this.создатьЧекбокс(хранилище, 'рисовать_радиус_автоматического', 'show radius'),
                                            this.создатьДиапазон(хранилище, 'радиус_автоматического_наведения', 'radius size', 30, 600)
                                        ]
                                    }),
                                    this.сэ('div', {
                                        style: 'width:150px;opacity:0.7;',
                                        children: [
                                            this.сэ('div', {
                                                style: 'text-align:center;',
                                                textContent: 'WALLHACK'
                                            }),
                                            this.создатьЧекбокс(хранилище, 'показывать_линии', 'lines')
                                        ]
                                    }),
                                    this.сэ('div', {
                                        style: 'width:150px;',
                                        children: [
                                            this.сэ('div', {
                                                style: 'text-align:center;',
                                                textContent: 'OTHER'
                                            }),
                                            this.создатьЧекбокс(хранилище, 'без_вертикальной_отдачи', 'vertical recoil'),
                                            this.создатьЧекбокс(хранилище, 'без_анимации_отдачи', 'recoil animation')
                                        ]
                                    })
                                ]
                            })
                        ]
                    })
                ],
                oninput: событие => {
                    const актив = событие.target;
                    const тип = актив.type;
                    const таблицаТипЗначение = {
                        'checkbox': актив.checked,
                        'range': актив.valueAsNumber
                    };
                    const ключ = актив.getAttribute('data-storage');
                    if (!ключ) return;
                    хранилище.установить(ключ, таблицаТипЗначение[тип]);

                    // состояние
                    switch(актив.getAttribute('data-storage')) {
                        case 'радиус_автоматического_наведения': {
                            состояние.наНастройкеРадиуса = true;
                            break;
                        }
                    }

                    return true;
                },
                onchange: событие => {
                    const актив = событие.target;
                    const тип = актив.type;
                    const таблицаТипЗначение = {
                        'checkbox': актив.checked,
                        'range': актив.valueAsNumber
                    };
                    const ключ = актив.getAttribute('data-storage');
                    if (!ключ) return;
                    хранилище.установить(ключ, таблицаТипЗначение[тип]);

                    // состояние
                    switch(ключ) {
                        case 'радиус_автоматического_наведения': {
                            состояние.наНастройкеРадиуса = false;
                            break;
                        }
                    }

                    return true;
                }
            }, document.documentElement);
            return элемент;
        }

        создатьДиапазон(хранилище, ключ, название='', min, max, step=1) {
            return this.сэ('div', {
                style: 'display:flex;flex-direction:column;gap:5px;',
                children: [
                    this.сэ('div', {
                        style: 'flex:1;',
                        textContent: название
                    }),
                    this.сэ('input', {
                        type: 'range',
                        min: min,
                        max: max,
                        step: step,
                        value: хранилище.получить(ключ)
                    }, false, элемент => {
                        элемент.setAttribute('data-storage', ключ);
                    })
                ]
            })
        }

        создатьЧекбокс(хранилище, ключ, название='') {
            return this.сэ('div', {
                style: 'display:flex;flex-direction:row;gap:5px;',
                children: [
                    this.сэ('div', {
                        style: 'flex:1;',
                        textContent: название
                    }),
                    this.сэ('input', {
                        'data-storage': ключ,
                        type: 'checkbox',
                        checked: хранилище.получить(ключ)
                    }, false, элемент => {
                        элемент.setAttribute('data-storage', ключ);
                    })
                ]
            })
        }

        некорректный_скрипт(причина) {
            const элемент = this.сэ('div', {
                style: 'width:100%;height:100%;position:absolute;left:0;top:0;background:#000A;display:flex;flex-direction:column;align-items:center;justify-content:center;',
                onclick: е => (е.target === элемент && this.закрытьТекущееОкно(), true),
                children: [
                    this.сэ('div', {
                        style: 'width:800px;background:#FFF;display:flex;flex-direction:column;color:#000;border-radius:15px;padding:10px;align-items:center;gap:10px;',
                        children: [
                            this.сэ('div', {
                                style: 'font-weight:bold;font-size:22px;',
                                textContent: 'WARNING',
                            }),
                            this.сэ('div', {
                                style: 'font-weight:bold;',
                                textContent: 'SCRIPT HAS TO BE UPDATED [OR ELSE IT WILL NOT WORK]'
                            }),
                            this.сэ('b', {
                                innerHTML: `REASON: <b style="color:red;">${причина}</b>`,
                            }),
                            this.сэ('a', {
                                style: 'width:150px;text-align:center;background:#ff4040;color:white;border-radius:10px;font-weight:bold;padding-block:8px;cursor:pointer;',
                                textContent: 'UPDATE',
                                target: "_blank",
                                href: this._этот.ссылкаНаОбновление || `${this._этот.ссылкаНаСкрипт}.js?r=${Date.now()}`,
                                onclick: () => {
                                    const функция = () => {
                                        небезопасноеОкно.location.reload();
                                        небезопасноеОкно.removeEventListener('focus', функция);
                                    };
                                    небезопасноеОкно.addEventListener('focus', функция);
                                }
                            })
                        ]
                    })
                ]
            }, document.documentElement);
            return элемент;
        }
    }

    const небезопасноеОкно = unsafeWindow;
    const Прокси = Proxy;
    const Обещание = Promise;
    const Отразить = Reflect;
    Отразить.применить = Отразить.apply;
    const документ = document;
    const установитьИнтервал = setInterval;
    const отчиститьИнтервал = clearInterval;
    const запрос = GM_xmlhttpRequest;
    const Объект = Object;
    const а = function(a) {try{ return atob(a) } catch {}};
    Объект.прототип = Объект.prototype;
    Объект.соединить = Объект.assign;
    Объект.значения = Объект.values;
    Объект.определитьСвойство = Объект.defineProperty;
    const урс = 'url',
          приЗагрузке = 'onload',
          приОшибке = 'onerror',
          применить = 'apply',
          установить = 'set',
          получить = 'get',
          длина = 'length',
          конструктор = 'constructor',
          якорь = 'anchor',
          большой = 'big',
          маргнуть = 'blink',
          жирный = 'bold',
          символНа = 'charAt',
          кодСимволаНа = 'charCodeAt',
          точкаСимволаНа = 'codePointAt',
          соединить = 'concat',
          заканчиваетсяНа = 'endsWith',
          цветШрифта = 'fontcolor',
          размерШрифта = 'fontsize',
          фиксированный = 'fixed',
          включает = 'includes',
          indexOf = 'indexOf',
          курсив = 'italics',
          последнийИндекс = 'lastIndexOf',
          ссылка = 'link',
          сравнитьЛокали = 'localeCompare',
          матч = 'match',
          сопоставитьВсе = 'matchAll',
          нормализовать = 'normalize',
          Дополнить = 'padEnd',
          началоЗаполнения = 'padStart',
          повторить = 'repeat',
          заменить = 'replace',
          заменитьВсе = 'replaceAll',
          поиск = 'search',
          срез = 'slice',
          маленький = 'small',
          разделить = 'split',
          выстрелить = 'strike',
          на = 'at',
          к = 'constructor',
          ф = '_this',
          sub = 'sub',
          м = 'match',
          substr = 'substr',
          подстрока = 'substring',
          sup = 'sup',
          начинаетсяС = 'startsWith',
          кСтроке = 'toString',
          обрезать = 'trim',
          обрезатьСтарт = 'trimStart',
          обрезатьЛево = 'trimLeft',
          обрезатьКонец = 'trimEnd',
          обрезатьПраво = 'trimRight',
          toLocaleLowerCase = 'toLocaleLowerCase',
          toLocaleUpperCase = 'toLocaleUpperCase',
          toLowerCase = 'toLowerCase',
          toUpperCase = 'toUpperCase',
          значение = 'valueOf',
          конструкторИгрока = /var\s\w+;return\(\w+=\w+\['call'\]\(this,\w+,\w+\['\w+'\]\['\w+'\],\w+\)\|\|this\)\['\w+'\]=function/gm,
          роск = /var\s[\d\w_$]+=[\d\w_$]+;[\d\w_$]+\['[\d\w_$]+'\]\([\d\w_$]+\),[\d\w_$]+\['[\d\w_$]+'\]\([\d\w_$]+\),[\d\w_$]+\['[\d\w_$]+'\]\([\d\w_$]+\),[\d\w_$]+\['[\d\w_$]+'\]\([\d\w_$]+\),[\d\w_$]+\['[\d\w_$]+'\]=!0x0,[\d\w_$]+\['[\d\w_$]+'\]\(\);/g,
          конструкторАнимации = /var\s\w+=\w+\[\w+\]\['createInterpolant'\]\(null\);/gm,
          ник = /\w+\['\w+'\]\['matrixAutoUpdate'\]=!0x1,\w+\['(\w+)'\]='',\w+\['\w+'\]='white',/,
          команда = /this\['([\d\w_$]+)'\]=[\d\w_$]+,this\['[\d\w_$]+'\]\['traverse'\]\(function\([\d\w_$]+\){/,
          игрок = /(?<=this\[')\w+(?='\]\['name'\]='Entity)/gm,
          хранилище = /this\['[\w\d_$]+'\]=\[\],this\['([\w\d_$]+)'\]={},this\['[\w\d_$]+'\]\(\);/,
          держательКарты = /[a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+']\['[a-zA-Z_$0-9]+'\]\(\)>0x0&&setTimeout\([a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+'\],0x0\);/g,
          фс = /this\['[a-zA-Z0-9_$]+'\]\['clear'\]\(\),this\['[a-zA-Z0-9_$]+']\['render'\]\(this\['([a-zA-Z0-9_$]+)'\],this\['[a-zA-Z0-9_$]+'\]\),/,
          ркс = /,window\['innerWidth'\]\/window\['innerHeight'\],0\.01,0x3e8\)/g,
          рек = /['[a-zA-Z_$]+'\]=Date\['now'\]\(\);}/g,
          рРек = /return\([a-zA-Z_$]+=[a-zA-Z_$]+\['call'\]\(this\)\|\|this\)\['[a-zA-Z_$]+'\]=function\([a-zA-Z_$]+\)/g,
          рекА = /\]\['material'\]\['rotation'\]=Math\['random'\]\(\)\*Math\['PI'\]\*0x2;}/g,
          хА = /[a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+'\]\(new\s[a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+'\]\(0x0,-0.4,0.4\),0.3,[a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+'\]\['bind'\]\([a-zA-Z_$0-9]+,[a-zA-Z_$0-9]+\['[a-zA-Z_$0-9]+'\]\(\)\)\);/g,
          т = /4,.{100}(.+).{100}";/,
          иХ = /if\(void\s0x0===[a-zA-Z0-9_$]+&&\([a-zA-Z0-9_$]+=!0x1\)/g,
          первыйКонструктор = /[a-zA-Z0-9_$]+\['[a-zA-Z0-9_$]+'\]\('Fists'\),/gm,
          // вещь: /var\s[a-zA-Z0-9_$]+;return\([a-zA-Z0-9_$]+=[a-zA-Z0-9_$]+\['call'\]\(this,[a-zA-Z0-9_$]+\['[a-zA-Z0-9_$]+'\]\['[a-zA-Z0-9_$]+'\]\)\|\|this\)\['_blockType'\]=[a-zA-Z0-9_$]+,/g,
          кИ = /{var\s[a-zA-Z0-9$_]+;return\([a-zA-Z0-9$_]+=[a-zA-Z0-9$_]+\['call'\]\(this,([a-zA-Z0-9_$]+,)?[a-zA-Z0-9_$]+\['[a-zA-Z0-9_$]+'\]\['[a-zA-Z0-9_$]+'\]/g,
          и = /this\['[a-zA-Z_$]+'\]='Item'/g,
          максимальноеСвйоствоПредмета = /(?<=this\[')[a-zA-Z0-9_$]+(?='\]=0xff,)/g,
          свойствоИмениПредмета = /(?<=this\[')[a-zA-Z0-9$_]+(?='\]='Item',)/g,
          хэш = 'hash',
          локация = 'location';
          запрос[м] = 0;

    const с = new ВоксиомМенеджер(_);
    с.инициализировать();


})();