7Placer

typescript pixelplace.io bot

目前为 2025-03-24 提交的版本。查看 最新版本

// ==UserScript==
// @name          7Placer
// @description   typescript pixelplace.io bot
// @version       1.6
// @author        Azti
// @match         https://pixelplace.io/*
// @require       https://update.greasyfork.org/scripts/498080/1395134/Hacktimer.js
// @require       https://pixelplace.io/js/jquery.min.js?v2=1
// @require       https://pixelplace.io/js/jquery-ui.min.js?v2=1
// @grant         none
// @run-at        document-start
// @namespace https://greasyfork.org/users/374503
// ==/UserScript==

/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "./src/auth/Auth.ts":
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "default": () => (/* binding */ Auth)
    /* harmony export */ });
    class Auth {
        constructor(authObj) {
            this.authKey = authObj.authKey;
            this.authId = authObj.authId;
            this.authToken = authObj.authToken;
        }
    }
    
    
    /***/ }),
    
    /***/ "./src/auth/util/commands.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   connect: () => (/* binding */ connect),
    /* harmony export */   deleteAccount: () => (/* binding */ deleteAccount),
    /* harmony export */   disconnect: () => (/* binding */ disconnect),
    /* harmony export */   getAccounts: () => (/* binding */ getAccounts),
    /* harmony export */   getAuth: () => (/* binding */ getAuth),
    /* harmony export */   saveAccount: () => (/* binding */ saveAccount),
    /* harmony export */   saveAuth: () => (/* binding */ saveAuth)
    /* harmony export */ });
    /* harmony import */ var _Auth__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/auth/Auth.ts");
    /* harmony import */ var _bot_Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
    /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/variables.ts");
    /* harmony import */ var _requests_get_painting__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/requests/get-painting.ts");
    /* harmony import */ var _bot_util_websocket__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/bot/util/websocket.ts");
    
    
    
    
    
    const window2 = window;
    var LocalAccounts = new Map();
    // save changes in localstorage
    function storagePush() {
        const obj = Object.fromEntries(LocalAccounts);
        localStorage.setItem('LocalAccounts', JSON.stringify(obj));
    }
    // restore localstorage to localaccounts
    function storageGet() {
        const storedAccounts = localStorage.getItem('LocalAccounts');
        if (storedAccounts) {
            const parsedAccounts = JSON.parse(storedAccounts);
            LocalAccounts = new Map(Object.entries(parsedAccounts));
        }
        else
            LocalAccounts = new Map();
    }
    async function delay(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }
    // saves from params
    function saveAuth(username, authId, authKey, authToken, print = true) {
        if (!authId || !authKey || !authToken) {
            console.log('[7p] saveAuth usage: saveAuth(username, authId, authKey, authToken)');
            return;
        }
        const account = { authId, authKey, authToken };
        LocalAccounts.set(username, account);
        storagePush();
        if (print)
            console.log('Auth saved. Saved list: ', LocalAccounts);
    }
    // returns client's auth
    async function getAuth(print = true) {
        const cookieStore = window2.cookieStore;
        const authToken = await cookieStore.get("authToken");
        const authKey = await cookieStore.get("authKey");
        const authId = await cookieStore.get("authId");
        if (authToken == null || authKey == null || authId == null) {
            console.log('[7p] Please login first!');
            return;
        }
        if (print)
            console.log(`authId = "${authId.value}", authKey = "${authKey.value}", authToken = "${authToken.value}"`);
        return { authToken: authToken.value, authKey: authKey.value, authId: authId.value };
    }
    // saves auth from client cookies
    async function saveAccount() {
        storageGet();
        const AuthObj = await getAuth(false);
        const userinfo = await (0,_requests_get_painting__WEBPACK_IMPORTED_MODULE_2__["default"])(AuthObj.authId, AuthObj.authKey, AuthObj.authToken);
        saveAuth(userinfo.user.name, AuthObj.authId, AuthObj.authKey, AuthObj.authToken, false);
        console.log('Auth saved. Saved list: ', LocalAccounts);
    }
    // logs saved auths
    function getAccounts() {
        storageGet();
        if (!LocalAccounts || LocalAccounts.size == 0) {
            console.log('No accounts found');
            return;
        }
        console.log(`Found ${LocalAccounts.size} accounts`);
        console.log(LocalAccounts);
    }
    // deletes auths
    function deleteAccount(identifier) {
        if (identifier == null) {
            console.log('deleteAccount usage: deleteAccount(user or index)');
            return;
        }
        storageGet();
        if (typeof identifier == 'string') {
            if (identifier == 'all') {
                LocalAccounts.forEach((value, key) => {
                    LocalAccounts.delete(key);
                });
                return;
            }
            if (!LocalAccounts.has(identifier)) {
                console.log(`[7p] Error deleting: No account with name ${identifier}`);
                return;
            }
            LocalAccounts.delete(identifier);
            console.log(`[7p] Deleted account ${identifier}.`);
            console.log(LocalAccounts);
        }
        if (typeof identifier == 'number') {
            const keys = Array.from(LocalAccounts.keys());
            if (identifier > keys.length) {
                console.log(`[7p] Error deleting: No account with index ${identifier}`);
                return;
            }
            LocalAccounts.delete(keys[identifier]);
            console.log(`Deleted account ${identifier}`);
            console.log(LocalAccounts);
        }
        storagePush();
    }
    async function connect(username) {
        storageGet();
        const account = LocalAccounts.get(username);
        const connectedbot = window2.seven.bots.find((bot) => bot.generalinfo?.user.name == username);
        if (!username) {
            console.log('[7p] Missing bot username, connect("username")');
            return;
        }
        if (username == 'all') {
            for (const [username, account] of LocalAccounts) {
                // checks if bot is already connected
                const connectedbot = window2.seven.bots.find((bot) => bot.generalinfo?.user.name == username);
                const auth = new _Auth__WEBPACK_IMPORTED_MODULE_4__["default"](account);
                if (connectedbot) {
                    console.log(`[7p] Account ${username} is already connected.`);
                    continue;
                }
                new _bot_Bot__WEBPACK_IMPORTED_MODULE_0__.WSBot(auth, username);
                await delay(500);
            }
            return;
        }
        if (!account) {
            console.log(`[7p] No account found with username ${username}`);
            return;
        }
        if (connectedbot) {
            console.log(`[7p] Account ${username} is already connected.`);
            return;
        }
        const auth = new _Auth__WEBPACK_IMPORTED_MODULE_4__["default"](account);
        new _bot_Bot__WEBPACK_IMPORTED_MODULE_0__.WSBot(auth, username);
    }
    function disconnect(username) {
        const bot = window2.seven.bots.find((bot) => bot.generalinfo?.user.name == username);
        if (!username) {
            console.log('[7p] disconnect requires a username, disconnect("username")');
            return;
        }
        if (username == 'all') {
            if (window2.seven.bots.length == 1) {
                console.log('[7p] No bots connected.');
                return;
            }
            for (const bot of window2.seven.bots) {
                (0,_bot_util_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
            }
            return;
        }
        if (!bot) {
            console.log(`[7p] No bot connected with username ${username}`);
            return;
        }
        (0,_bot_util_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
    }
    
    
    /***/ }),
    
    /***/ "./src/bot/Bot.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   Bot: () => (/* binding */ Bot),
    /* harmony export */   Client: () => (/* binding */ Client),
    /* harmony export */   WSBot: () => (/* binding */ WSBot)
    /* harmony export */ });
    /* harmony import */ var _util_websocket__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/util/websocket.ts");
    /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/Canvas.ts");
    /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/variables.ts");
    /* harmony import */ var _css_style__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/css/style.ts");
    /* harmony import */ var _requests_get_painting__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/requests/get-painting.ts");
    
    
    
    
    
    
    const seven = window.seven;
    class Bot {
        constructor() {
            this.trackeriters = 0;
            this.lastplace = Date.now();
            this.botid = Bot.botIndex;
            Bot.botIndex += 1; // id for next bot
        }
        emit(event, params) {
            this.ws.send(`42["${event}",${params}]`);
        }
        async placePixel(x, y, color, tracker = true) {
            const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
            return new Promise((resolve) => {
                const canvascolor = canvas.getColor(x, y);
                if (canvascolor == color || canvascolor == 200)
                    return resolve(true);
                new Promise((resolve) => {
                    setTimeout(() => resolve(true), Math.max(0, seven.pixelspeed - (Date.now() - this.lastplace)));
                }).then(() => {
                    this.emit('p', `[${x},${y},${color},1]`);
                    this.lastplace = Date.now();
                    if (tracker && this.trackeriters >= 6) {
                        $(this.tracker).css({ top: y, left: x, display: 'block' });
                        this.trackeriters = 0;
                    }
                    // console.log(`[7p] placing: ${canvascolor} -> ${color}`)
                    this.trackeriters += 1;
                    resolve(true);
                });
            });
        }
        static async findAvailableBot() {
            const bots = seven.bots;
            var tick = 0;
            while (true) {
                for (var i = 0; i < bots.length; i++) {
                    const bot = bots[i];
                    if (Date.now() - bot.lastplace >= seven.pixelspeed) {
                        return bot;
                    }
                }
                tick += 1;
                if (tick == seven.tickspeed) {
                    tick = 0;
                    await new Promise(resolve => setTimeout(resolve, 0));
                }
            }
        }
        createTracker() {
            const tracker = $('<div class="track" id="bottracker">').text(`[7P] ${this.username}`).css(_css_style__WEBPACK_IMPORTED_MODULE_3__.trackercss);
            $('#canvas').ready(function () {
                // console.log(`[7p] created tracker: ${name}`)
                $('#painting-move').append(tracker);
            });
            return tracker;
        }
        set ws(wss) {
            this._ws = wss;
        }
        get ws() {
            return this._ws;
        }
    }
    Bot.botIndex = 0;
    class WSBot extends Bot {
        constructor(auth, username) {
            super();
            if (!username || !auth) {
                console.error("[7p ERROR]: 'auth' and 'username' should both be in the constructor arguments.");
                return;
            }
            this._auth = auth;
            this.username = username;
            this.startBot();
        }
        async startBot() {
            this.generalinfo = await (0,_requests_get_painting__WEBPACK_IMPORTED_MODULE_4__["default"])(this.auth.authId, this.auth.authKey, this.auth.authToken);
            this.tracker = this.createTracker();
            this.ws = await (0,_util_websocket__WEBPACK_IMPORTED_MODULE_0__.hookBot)(this);
        }
        get auth() {
            return this._auth;
        }
    }
    class Client extends Bot {
        constructor() {
            super();
            this.username = 'Client';
            Client.instance = this;
            this.tracker = this.createTracker();
            seven.bots.push(this);
        }
        static get Client() {
            return Client.instance;
        }
    }
    
    
    /***/ }),
    
    /***/ "./src/bot/util/onmessage.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   onBotMessage: () => (/* binding */ onBotMessage),
    /* harmony export */   onClientMessage: () => (/* binding */ onClientMessage)
    /* harmony export */ });
    /* harmony import */ var _Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
    /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/Canvas.ts");
    /* harmony import */ var _palive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/bot/util/palive.ts");
    /* harmony import */ var _websocket__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/bot/util/websocket.ts");
    /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/variables.ts");
    /* harmony import */ var _auth_util_commands__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/auth/util/commands.ts");
    /* harmony import */ var _modules_defaultModules_SevenProtect__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/modules/defaultModules/SevenProtect.ts");
    
    
    
    
    
    
    
    const seven = window.seven;
    // client
    function onClientMessage(event) {
        const msg = event.data;
        const bot = _Bot__WEBPACK_IMPORTED_MODULE_0__.Client.instance;
        if (msg.startsWith("42")) {
            const msg = JSON.parse(event.data.substr(2));
            const type = msg[0];
            switch (type) {
                case "p":
                    for (const pixel of msg[1]) {
                        const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
                        const x = pixel[0];
                        const y = pixel[1];
                        const color = pixel[2];
                        const id = pixel[4];
                        canvas.updatePixel(x, y, color);
                        _modules_defaultModules_SevenProtect__WEBPACK_IMPORTED_MODULE_6__["default"].checkPixel(x, y, color);
                    }
                    break;
                case "canvas":
                    for (const pixel of msg[1]) {
                        const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
                        const x = pixel[0];
                        const y = pixel[1];
                        const color = pixel[2];
                        canvas.updatePixel(x, y, color);
                    }
                    break;
            }
        }
    }
    // multibot
    async function onBotMessage(event, bot) {
        const message = event.data;
        // game packets
        if (message.startsWith("42")) {
            const message = JSON.parse(event.data.substr(2));
            const type = message[0];
            const botid = bot.generalinfo.user.id;
            const botname = bot.username;
            switch (type) {
                case "server_time":
                    bot.paliveServerTime = message[1]; // stores servertime for palive
                    break;
                case "ping.alive":
                    const hash = (0,_palive__WEBPACK_IMPORTED_MODULE_2__["default"])(bot.paliveServerTime, botid);
                    console.log('[7p]', botname, ': pong =', hash, botid);
                    bot.emit('pong.alive', `"${hash}"`);
                    break;
                case "throw.error":
                    if (message[1] == 49) {
                        console.log(`[7p] [Bot ${botname}] Error (${message[1]}): This auth is not valid! Deleting account from saved accounts...`);
                        (0,_auth_util_commands__WEBPACK_IMPORTED_MODULE_5__.deleteAccount)(botname);
                        (0,_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
                        return;
                    }
                    else if (message[1] == 16) {
                        (0,_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
                    }
                    console.log(`[7p] [Bot ${botname}] Pixelplace WS error: ${message[1]}`);
                    break;
                case "canvas":
                    console.log(`[7p] Succesfully connected to bot ${bot.username}`);
                    seven.bots.push(bot);
                    break;
            }
        }
        // start
        if (message.startsWith("0"))
            bot.ws.send('40');
        // auth
        if (message.startsWith("40"))
            bot.ws.send(`42["init",{"authKey":"${bot.auth.authKey}","authToken":"${bot.auth.authToken}","authId":"${bot.auth.authId}","boardId":${_canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance.ID}}]`);
        // keep alive
        if (message.startsWith("2"))
            bot.ws.send('3');
    }
    
    
    /***/ }),
    
    /***/ "./src/bot/util/palive.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "default": () => (/* binding */ getPalive),
    /* harmony export */   getTDelay: () => (/* binding */ getTDelay)
    /* harmony export */ });
    // credits to symmetry
    function randomString(charList, num) {
        return Array.from({ length: num }, () => charList.charAt(Math.floor(Math.random() * charList.length))).join('');
    }
    function randomString1(num) {
        const charList = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        return randomString(charList, num);
    }
    function randomString2(num) {
        const charList = 'gmbonjklezcfxta1234567890GMBONJKLEZCFXTA';
        return randomString(charList, num);
    }
    function randInt(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    const paliveCharmap = {
        "0": "g",
        "1": "n",
        "2": "b",
        "3": "r",
        "4": "z",
        "5": "s",
        "6": "l",
        "7": "x",
        "8": "i",
        "9": "o",
    };
    function getPalive(serverTime, userId) {
        const tDelay = getTDelay(serverTime);
        const sequenceLengths = [6, 5, 9, 4, 5, 3, 6, 6, 3];
        const currentTimestamp = Math.floor(Date.now() / 1000) + tDelay - 5400;
        const timestampString = currentTimestamp.toString();
        const timestampCharacters = timestampString.split('');
        let result = '';
        for (let i = 0; i < sequenceLengths.length; i++) {
            const sequenceNumber = sequenceLengths[i];
            result += randInt(0, 1) == 1 ? randomString2(sequenceNumber) : randomString1(sequenceNumber);
            const letter = paliveCharmap[parseInt(timestampCharacters[i])];
            result += randInt(0, 1) == 0 ? letter.toUpperCase() : letter;
        }
        result += userId.toString().substring(0, 1) + (randInt(0, 1) == 1 ? randomString2(randInt(4, 20)) : randomString1(randInt(4, 25)));
        return result + "0=";
    }
    function getTDelay(serverTime) {
        const currentTime = new Date().getTime() / 1e3;
        return Math.floor(serverTime - currentTime);
    }
    
    
    /***/ }),
    
    /***/ "./src/bot/util/websocket.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   closeBot: () => (/* binding */ closeBot),
    /* harmony export */   hookBot: () => (/* binding */ hookBot)
    /* harmony export */ });
    /* harmony import */ var _Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
    /* harmony import */ var _onmessage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/bot/util/onmessage.ts");
    /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/variables.ts");
    
    
    
    const seven = window.seven;
    // client
    const customWS = window.WebSocket;
    window.WebSocket = function (url, protocols) {
        const client = new _Bot__WEBPACK_IMPORTED_MODULE_0__.Client();
        const socket = new customWS(url, protocols);
        socket.addEventListener("message", (event) => { (0,_onmessage__WEBPACK_IMPORTED_MODULE_1__.onClientMessage)(event); });
        client.ws = socket;
        return socket;
    };
    // multibot
    async function hookBot(bot) {
        console.log(`[7p] Attempting to connect account ${bot.username}`);
        const socket = new customWS("wss://pixelplace.io/socket.io/?EIO=4&transport=websocket");
        socket.addEventListener("message", (event) => { (0,_onmessage__WEBPACK_IMPORTED_MODULE_1__.onBotMessage)(event, bot); });
        socket.addEventListener("close", () => { _Bot__WEBPACK_IMPORTED_MODULE_0__.Bot.botIndex -= 1; });
        return socket;
    }
    function closeBot(bot) {
        if (bot instanceof _Bot__WEBPACK_IMPORTED_MODULE_0__.Client)
            return;
        if (!bot) {
            console.log('[7p] Cannot close bot that doesnt exist.');
            return;
        }
        bot.ws.close();
        const result = seven.bots.filter((checkedBot) => checkedBot.botid != bot.botid);
        seven.bots = result;
        console.log('[7placer] Ended bot ', bot.botid);
    }
    
    
    /***/ }),
    
    /***/ "./src/canvas/Canvas.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   Canvas: () => (/* binding */ Canvas),
    /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
    /* harmony export */ });
    /* harmony import */ var _css_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/css/style.ts");
    /* harmony import */ var _util_canvasloader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/util/canvasloader.ts");
    
    
    class Canvas {
        constructor() {
            this._ID = this.ParseID();
            this._isProcessed = false;
            this._customCanvas = this.newPreviewCanvas();
        }
        static get instance() {
            if (!Canvas._instance) {
                Canvas._instance = new Canvas;
                (0,_util_canvasloader__WEBPACK_IMPORTED_MODULE_1__.processColors)();
            }
            return Canvas._instance;
        }
        newPreviewCanvas() {
            const canvas = $(`<canvas width="2500" height="2088">`).css(_css_style__WEBPACK_IMPORTED_MODULE_0__.canvascss);
            $('#canvas').ready(function () {
                $('#painting-move').append(canvas);
            });
            const ctx = canvas[0].getContext("2d");
            return ctx;
        }
        ParseID() {
            return parseInt(window.location.href.split("/").slice(-1)[0].split("-")[0]);
        }
        get previewCanvas() {
            return this._customCanvas;
        }
        get canvasArray() {
            return this._canvasArray;
        }
        get isProcessed() {
            return this._isProcessed;
        }
        set isProcessed(bool) {
            this._isProcessed = bool;
        }
        get ID() {
            return this._ID;
        }
        set canvasArray(array) {
            this._canvasArray = array;
            this.isProcessed = true;
        }
        getColor(x, y) {
            try {
                return this.canvasArray[x][y];
            }
            catch {
                return 200;
            }
            ;
        }
        updatePixel(x, y, color) {
            if (!this._isProcessed)
                return;
            this.canvasArray[x][y] = color;
            // console.log(this.getColor(x, y), "->", color) 
        }
    }
    /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Canvas);
    
    
    /***/ }),
    
    /***/ "./src/canvas/util/canvasloader.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   processColors: () => (/* binding */ processColors),
    /* harmony export */   processWater: () => (/* binding */ processWater)
    /* harmony export */ });
    /* harmony import */ var _Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");
    /* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/util/colors.ts");
    
    
    async function processWater() {
        const image = await fetch('https://pixelplace.io/canvas/' + _Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance.ID + 'p.png?t200000=' + Date.now());
        const blob = await image.blob();
        const bitmap = await createImageBitmap(blob);
        const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);
        var waterArray = Array.from({ length: canvas.width }, () => Array.from({ length: canvas.height }, () => 1));
        const context = canvas.getContext('2d');
        context.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height);
        const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
        return new Promise((resolve) => {
            if (bitmap.width == 1 && bitmap.height == 1) { // custom canvases ?
                resolve(waterArray);
            }
            for (let y = 0; y < canvas.height; y++) {
                for (let x = 0; x < canvas.width; x++) {
                    const index = (y * imageData.width + x) * 4;
                    var r = imageData.data[index];
                    var g = imageData.data[index + 1];
                    var b = imageData.data[index + 2];
                    if (r == 204 && g == 204 && b == 204) {
                        waterArray[x][y] = 200;
                    }
                }
            }
            console.log(waterArray);
            resolve(waterArray);
        });
    }
    async function processColors() {
        const startTotalTime = performance.now();
        const waterArray = await processWater();
        const startColorsTime = performance.now();
        const canvas = document.getElementById('canvas');
        const ctx = canvas.getContext('2d');
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const pixelData = imageData.data;
        var CanvasArray = Array.from({ length: canvas.width }, () => Array.from({ length: canvas.height }, () => 1));
        if (waterArray.length > 1) {
            CanvasArray = waterArray;
        }
        for (let y = 0; y < canvas.height; y++) {
            for (let x = 0; x < canvas.width; x++) {
                if (CanvasArray[x][y] == 200) {
                    continue;
                }
                const pixelIndex = (y * canvas.width + x) * 4;
                const r = pixelData[pixelIndex];
                const g = pixelData[pixelIndex + 1];
                const b = pixelData[pixelIndex + 2];
                const colornum = (r << 16) | (g << 8) | b;
                const colorIndex = _colors__WEBPACK_IMPORTED_MODULE_1__.colors.indexOf(colornum);
                CanvasArray[x][y] = colorIndex;
            }
        }
        console.log(CanvasArray);
        _Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance.canvasArray = CanvasArray;
        const finalTotalTime = performance.now() - startTotalTime;
        const finalColorsTime = performance.now() - startColorsTime;
        const finalWaterTime = startColorsTime - startTotalTime;
        console.log(`[7p PROCESSING] Total Time: ${finalTotalTime}ms, Colors Time: ${finalColorsTime}ms, Water Time: ${finalWaterTime}ms`);
    }
    
    
    /***/ }),
    
    /***/ "./src/canvas/util/colors.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   colors: () => (/* binding */ colors)
    /* harmony export */ });
    const colors = [
        0xFFFFFF,
        0xC4C4C4,
        0x888888,
        0x555555,
        0x222222,
        0x000000,
        0x006600,
        0x22B14C,
        0x02BE01,
        0x51E119,
        0x94E044,
        0xFBFF5B,
        0xE5D900,
        0xE6BE0C,
        0xE59500,
        0xA06A42,
        0x99530D,
        0x633C1F,
        0x6B0000,
        0x9F0000,
        0xE50000,
        0xFF3904,
        0xBB4F00,
        0xFF755F,
        0xFFC49F,
        0xFFDFCC,
        0xFFA7D1,
        0xCF6EE4,
        0xEC08EC,
        0x820080,
        0x5100FF,
        0x020763,
        0x0000EA,
        0x044BFF,
        0x6583CF,
        0x36BAFF,
        0x0083C7,
        0x00D3DD,
        0x45FFC8,
        0x003638,
        0x477050,
        0x98FB98,
        0xFF7000,
        0xCE2939,
        0xFF416A,
        0x7D26CD,
        0x330077,
        0x005BA1,
        0xB5E8EE,
        0x1B7400,
        0x75CEA9,
        0x34EB6B,
        0xFFCC00,
        0xBB276C,
        0xFF7EBB,
        0x440414,
        0x591C91,
        0xC1A162,
        0xCAFF70,
        0x013182,
        0xA6A6A6,
        0x6F6F6F,
        0x3A3A3A,
        0x4D082C
    ];
    
    
    /***/ }),
    
    /***/ "./src/css/drop.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   createDropArea: () => (/* binding */ createDropArea)
    /* harmony export */ });
    /* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/css/style.ts");
    /* harmony import */ var _modules_defaultModules_SevenImageTools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenImageTools.ts");
    /* harmony import */ var _modules_util_getClientMouse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/util/getClientMouse.ts");
    
    
    
    function createDropArea() {
        const dropobject = $('<div>').text('Drop Image').css(_style__WEBPACK_IMPORTED_MODULE_0__.drop);
        const [x, y] = (0,_modules_util_getClientMouse__WEBPACK_IMPORTED_MODULE_2__["default"])();
        $('body').append(dropobject);
        dropobject.on("click", function () {
            dropobject.remove();
        });
        dropobject.on("drop", async function (event) {
            event.preventDefault();
            event.stopPropagation();
            const image = event.originalEvent.dataTransfer.files[0];
            dropobject.remove();
            await (0,_modules_defaultModules_SevenImageTools__WEBPACK_IMPORTED_MODULE_1__.botImage)(x, y, image);
            // console.log(image)
        }).on('dragover', false);
    }
    
    
    /***/ }),
    
    /***/ "./src/css/style.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   canvascss: () => (/* binding */ canvascss),
    /* harmony export */   drop: () => (/* binding */ drop),
    /* harmony export */   trackercss: () => (/* binding */ trackercss)
    /* harmony export */ });
    const trackercss = {
        top: '0px',
        left: '0px',
        borderColor: 'rgb(138,43,226)',
        color: 'rgb(138,43,226)',
        backgroundColor: 'black',
        opacity: '60%',
        display: 'none',
        transition: 'all 0.06s ease-in-out',
        pointerEvents: 'none'
    };
    // design by 0vc4
    const drop = {
        width: 'calc(100% - 2em)',
        height: 'calc(100% - 2em)',
        position: 'fixed',
        left: '0px',
        top: '0px',
        backgroundColor: 'rgba(0, 0, 0, 0.533)',
        zIndex: '9999-',
        display: 'flex',
        color: 'white',
        fontSize: '48pt',
        justifyContent: 'center',
        alignItems: 'center',
        border: '3px white dashed',
        borderRadius: '18px',
        margin: '1em',
    };
    const canvascss = {
        position: 'absolute',
        pointerEvents: 'none',
        left: '0px',
        top: '0px',
        imageRendering: 'pixelated',
        opacity: '50%',
        animation: 'blink 3s ease-out infinite'
    };
    const blink = document.createElement("style");
    blink.type = "text/css";
    blink.innerText = `
    @keyframes blink {
      0% { opacity: .30; }
      50% { opacity: .10; }
      100% { opacity: .30; }
    }`;
    document.head.appendChild(blink);
    
    
    /***/ }),
    
    /***/ "./src/index.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    // ESM COMPAT FLAG
    __webpack_require__.r(__webpack_exports__);
    
    ;// CONCATENATED MODULE: ./package.json
    const package_namespaceObject = {"rE":"1.6"};
    ;// CONCATENATED MODULE: ./src/index.ts
    
    // @ts-ignore (GLOBAL IMPORT)
    const context = __webpack_require__("./src sync recursive \\.*");
    context.keys().forEach(context);
    Object.defineProperty(window.console, 'log', {
        configurable: false,
        enumerable: true,
        writable: false,
        value: console.log
    });
    console.log('7Placer Loaded! Version:', package_namespaceObject.rE);
    
    
    /***/ }),
    
    /***/ "./src/modules/defaultModules/SevenImageTools.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   ImageToPixels: () => (/* binding */ ImageToPixels),
    /* harmony export */   botImage: () => (/* binding */ botImage)
    /* harmony export */ });
    /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");
    /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/variables.ts");
    /* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
    /* harmony import */ var _canvas_util_colors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/canvas/util/colors.ts");
    /* harmony import */ var _SevenSorting__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/defaultModules/SevenSorting.ts");
    
    
    
    
    
    function getColorDistance(c1, c2) {
        // Image Color
        const r1 = (c1 >> 16) & 0xFF;
        const g1 = (c1 >> 8) & 0xFF;
        const b1 = c1 & 0xFF;
        // Pixelplace Color
        const r2 = (c2 >> 16) & 0xFF;
        const g2 = (c2 >> 8) & 0xFF;
        const b2 = c2 & 0xFF;
        return (r1 - r2) ** 2 + (g1 - g2) ** 2 + (b1 - b2) ** 2;
    }
    function findClosestColor(color) {
        let minDistance = Infinity;
        let colorNumber;
        let index = 0;
        for (const pxpColor of _canvas_util_colors__WEBPACK_IMPORTED_MODULE_4__.colors) {
            const distance = getColorDistance(color, pxpColor);
            if (distance < minDistance) {
                minDistance = distance;
                colorNumber = index;
            }
            index += 1;
        }
        return colorNumber;
    }
    function previewCanvasImage(x, y, image) {
        const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance;
        const ctx = canvas.previewCanvas;
        const img = new Image();
        img.onload = function () {
            ctx.drawImage(img, x, y);
        };
        img.src = URL.createObjectURL(image);
    }
    async function ImageToPixels(image) {
        const result = [];
        const canvas = new OffscreenCanvas(image.width, image.height);
        const ctx = canvas.getContext('2d');
        ctx.drawImage(image, 0, 0, image.width, image.height);
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const pixelData = imageData.data;
        for (let y = 0; y < canvas.height; y++) {
            for (let x = 0; x < canvas.width; x++) {
                const pixelIndex = (y * canvas.width + x) * 4;
                const r = pixelData[pixelIndex];
                const g = pixelData[pixelIndex + 1];
                const b = pixelData[pixelIndex + 2];
                const a = pixelData[pixelIndex + 3];
                const colornum = (r << 16) | (g << 8) | b;
                if (a < 1) {
                    continue; // ignore transparent pixels
                }
                const color = findClosestColor(colornum);
                result.push({ x, y, color });
            }
        }
        return result;
    }
    async function botImage(x, y, image) {
        const bitmap = await createImageBitmap(image);
        const processed = await ImageToPixels(bitmap);
        previewCanvasImage(x, y, image);
        (0,_SevenSorting__WEBPACK_IMPORTED_MODULE_3__["default"])(processed, window.seven.order);
        processed.forEach((pixel) => _SevenQueue__WEBPACK_IMPORTED_MODULE_2__["default"].add(pixel.x + x, pixel.y + y, pixel.color));
    }
    
    
    /***/ }),
    
    /***/ "./src/modules/defaultModules/SevenProtect.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
    /* harmony export */ });
    /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");
    /* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
    
    
    class Protector {
        protect(x, y, color) {
            Protector.protected.push({ x: x, y: y, color: color });
        }
        static clear() {
            Protector.protected = [];
        }
        static checkPixel(x, y, color) {
            const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance;
            if (Protector.protected.length == 0) {
                return;
            }
            function isInsideProtected(pixel) {
                if (pixel.x == x && pixel.y == y) {
                    return true;
                }
                return false;
            }
            function isSameColor(pixel) {
                const canvasColor = canvas.getColor(x, y);
                if (canvasColor == pixel.color) {
                    return true;
                }
                return false;
            }
            Protector.protected.forEach((pixel) => {
                if (isInsideProtected(pixel) && !isSameColor(pixel)) {
                    _SevenQueue__WEBPACK_IMPORTED_MODULE_1__["default"].add(x, y, pixel.color);
                }
            });
        }
    }
    Protector.protected = [];
    /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Protector);
    
    
    /***/ }),
    
    /***/ "./src/modules/defaultModules/SevenQueue.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "default": () => (/* binding */ Queue)
    /* harmony export */ });
    /* harmony import */ var _bot_Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
    /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/Canvas.ts");
    /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/variables.ts");
    /* harmony import */ var _SevenProtect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/defaultModules/SevenProtect.ts");
    
    
    
    
    const seven = window.seven;
    class Queue {
        constructor() {
            Queue.performance = performance.now();
        }
        static add(x, y, color) {
            seven.queue.push({ x: x, y: y, color: color });
            if (seven.queue.length == 1) {
                Queue.start();
            }
        }
        static clear() {
            // console.log('Queue cleared: ', seven.queue)
            seven.queue = [];
        }
        static async start() {
            const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
            const protector = new _SevenProtect__WEBPACK_IMPORTED_MODULE_3__["default"];
            if (!canvas.isProcessed) {
                console.log('[7p] Error starting queue: Canvas has not been processed yet.');
                Queue.stop();
                return;
            }
            seven.inprogress = true;
            while (seven.inprogress) {
                console.log(performance.now() - Queue.performance);
                Queue.performance = performance.now();
                const pixel = seven.queue[0];
                const bot = await _bot_Bot__WEBPACK_IMPORTED_MODULE_0__.Bot.findAvailableBot();
                await bot.placePixel(pixel.x, pixel.y, pixel.color);
                seven.queue.shift();
                if (seven.protect) {
                    protector.protect(pixel.x, pixel.y, pixel.color);
                }
                if (seven.queue.length == 0) {
                    seven.inprogress = false;
                    console.log('[7p] Queue done.');
                }
            }
        }
        static stop() {
            seven.inprogress = false;
            const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
            canvas.previewCanvas.clearRect(0, 0, 3000, 3000);
            _SevenProtect__WEBPACK_IMPORTED_MODULE_3__["default"].clear();
            Queue.clear();
        }
    }
    
    
    /***/ }),
    
    /***/ "./src/modules/defaultModules/SevenSorting.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "default": () => (/* binding */ sort)
    /* harmony export */ });
    const seven = window.seven;
    function sort(array, order) {
        switch (seven.order) {
            case 'rand':
                array.sort(() => Math.random() - 0.5);
                return array;
            case 'colors':
                array.sort((a, b) => a.color - b.color);
                return array;
            case 'vertical':
                array.sort((a, b) => a.x - b.x);
                return array;
            case 'horizontal':
                array.sort((a, b) => a.y - b.y);
                return array;
            default:
            case 'circle':
                const CX = Math.floor((array[0].x + array[array.length - 1].x) / 2);
                const CY = Math.floor((array[0].y + array[array.length - 1].y) / 2);
                array.sort((a, b) => {
                    const distanceA = Math.sqrt((a.x - CX) ** 2 + (a.y - CY) ** 2);
                    const distanceB = Math.sqrt((b.x - CX) ** 2 + (b.y - CY) ** 2);
                    return distanceA - distanceB;
                });
                return array;
        }
    }
    
    
    /***/ }),
    
    /***/ "./src/modules/defaultModules/SevenSquareMaker.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   BotSquare: () => (/* binding */ BotSquare)
    /* harmony export */ });
    /* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
    /* harmony import */ var _SevenSorting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenSorting.ts");
    
    
    function BotSquare(x1, y1, x2, y2, color) {
        var result = [];
        if (x2 < x1)
            [x1, x2] = [x2, x1];
        if (y2 < y1)
            [y1, y2] = [y2, y1];
        for (let x = x1; x <= x2; x++) {
            for (let y = y1; y <= y2; y++) {
                result.push({ x, y, color });
            }
        }
        result = (0,_SevenSorting__WEBPACK_IMPORTED_MODULE_1__["default"])(result, window.seven.order);
        result.forEach((pixel) => {
            _SevenQueue__WEBPACK_IMPORTED_MODULE_0__["default"].add(pixel.x, pixel.y, pixel.color);
        });
    }
    
    
    /***/ }),
    
    /***/ "./src/modules/defaultModules/defaultKeys.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony import */ var _css_drop__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/css/drop.ts");
    /* harmony import */ var _util_getClientMouse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/util/getClientMouse.ts");
    /* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
    /* harmony import */ var _SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/defaultModules/SevenSquareMaker.ts");
    
    
    
    
    var coord1 = null;
    $(document).on('keyup', function (event) {
        if ($(':input[type="text"]').is(':focus'))
            return; //; prevent with chat open
        switch (event.which) {
            case (87):
                if (!event.altKey)
                    return;
                _SevenQueue__WEBPACK_IMPORTED_MODULE_1__["default"].stop();
                break;
            case (66):
                if (!event.altKey)
                    return;
                (0,_css_drop__WEBPACK_IMPORTED_MODULE_0__.createDropArea)();
                break;
            case 88:
                const [x, y, color] = (0,_util_getClientMouse__WEBPACK_IMPORTED_MODULE_3__["default"])();
                if (coord1 == null) {
                    coord1 = { x: x, y: y };
                    return;
                }
                (0,_SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__.BotSquare)(coord1.x, coord1.y, x, y, color);
                coord1 = null;
                break;
            // add more 
        }
    });
    
    
    /***/ }),
    
    /***/ "./src/modules/defaultModules/index.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   BotSquare: () => (/* reexport safe */ _SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__.BotSquare),
    /* harmony export */   ImageToPixels: () => (/* reexport safe */ _SevenImageTools__WEBPACK_IMPORTED_MODULE_0__.ImageToPixels),
    /* harmony export */   botImage: () => (/* reexport safe */ _SevenImageTools__WEBPACK_IMPORTED_MODULE_0__.botImage)
    /* harmony export */ });
    /* harmony import */ var _SevenImageTools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/modules/defaultModules/SevenImageTools.ts");
    /* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
    /* harmony import */ var _SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/defaultModules/SevenSquareMaker.ts");
    /* harmony import */ var _defaultKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/defaultModules/defaultKeys.ts");
    
    
    
    
    
    
    /***/ }),
    
    /***/ "./src/modules/index.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   BotSquare: () => (/* reexport safe */ _defaultModules__WEBPACK_IMPORTED_MODULE_0__.BotSquare),
    /* harmony export */   ImageToPixels: () => (/* reexport safe */ _defaultModules__WEBPACK_IMPORTED_MODULE_0__.ImageToPixels),
    /* harmony export */   botImage: () => (/* reexport safe */ _defaultModules__WEBPACK_IMPORTED_MODULE_0__.botImage)
    /* harmony export */ });
    /* harmony import */ var _defaultModules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/modules/defaultModules/index.ts");
    
    // custom exports
    
    
    /***/ }),
    
    /***/ "./src/modules/util/getClientMouse.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "default": () => (/* binding */ getClientMouse)
    /* harmony export */ });
    function getClientMouse() {
        const coordinates = $('#coordinates').text();
        const [x, y] = coordinates.split(',').map(coord => parseInt(coord.trim()));
        const selectedcolor = $('#palette-buttons a.selected').data('id');
        return [x, y, selectedcolor];
    }
    
    
    /***/ }),
    
    /***/ "./src/requests/get-painting.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "default": () => (/* binding */ getPainting)
    /* harmony export */ });
    /* harmony import */ var _getCookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/requests/getCookie.ts");
    /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");
    
    
    async function getPainting(authId, authKey, authToken) {
        const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance;
        const originalAuthId = (0,_getCookie__WEBPACK_IMPORTED_MODULE_1__["default"])('authId');
        const originalAuthKey = (0,_getCookie__WEBPACK_IMPORTED_MODULE_1__["default"])('authKey');
        const originalAuthToken = (0,_getCookie__WEBPACK_IMPORTED_MODULE_1__["default"])('authToken');
        document.cookie = `authId=${authId}; path=/`;
        document.cookie = `authKey=${authKey}; path=/`;
        document.cookie = `authToken=${authToken}; path=/`;
        try {
            const response = await fetch(`https://pixelplace.io/api/get-painting.php?id=${canvas.ID}&connected=1`, {
                headers: {
                    'Accept': 'application/json, text/javascript, */*; q=0.01',
                },
                credentials: 'include'
            });
            const json = response.json();
            return json;
        }
        finally {
            document.cookie = `authId=${originalAuthId}; path=/`;
            document.cookie = `authKey=${originalAuthKey}; path=/`;
            document.cookie = `authToken=${originalAuthToken}; path=/`;
        }
    }
    
    
    /***/ }),
    
    /***/ "./src/requests/getCookie.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "default": () => (/* binding */ getCookie)
    /* harmony export */ });
    function getCookie(name) {
        const value = `; ${document.cookie}`;
        const parts = value.split(`; ${name}=`);
        if (parts.length === 2)
            return parts.pop().split(';').shift();
    }
    
    
    /***/ }),
    
    /***/ "./src/requests/ping.ts":
    /***/ (() => {
    
    // to do
    
    
    /***/ }),
    
    /***/ "./src/variables.ts":
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony import */ var _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/auth/util/commands.ts");
    
    window.seven = {
        bots: [],
        pixelspeed: 21,
        queue: [],
        inprogress: false,
        protect: false,
        tickspeed: 1000,
        order: 'fromCenter',
        saveAuth: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.saveAuth,
        getAuth: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.getAuth,
        saveAccount: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.saveAccount,
        getAccounts: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.getAccounts,
        deleteAccount: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.deleteAccount,
        connect: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.connect,
        disconnect: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.disconnect,
    };
    
    
    /***/ }),
    
    /***/ "./src sync recursive \\.*":
    /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
    
    var map = {
        ".": "./src/index.ts",
        "./": "./src/index.ts",
        "./auth/Auth": "./src/auth/Auth.ts",
        "./auth/Auth.ts": "./src/auth/Auth.ts",
        "./auth/util/commands": "./src/auth/util/commands.ts",
        "./auth/util/commands.ts": "./src/auth/util/commands.ts",
        "./bot/Bot": "./src/bot/Bot.ts",
        "./bot/Bot.ts": "./src/bot/Bot.ts",
        "./bot/util/onmessage": "./src/bot/util/onmessage.ts",
        "./bot/util/onmessage.ts": "./src/bot/util/onmessage.ts",
        "./bot/util/palive": "./src/bot/util/palive.ts",
        "./bot/util/palive.ts": "./src/bot/util/palive.ts",
        "./bot/util/websocket": "./src/bot/util/websocket.ts",
        "./bot/util/websocket.ts": "./src/bot/util/websocket.ts",
        "./canvas/Canvas": "./src/canvas/Canvas.ts",
        "./canvas/Canvas.ts": "./src/canvas/Canvas.ts",
        "./canvas/util/canvasloader": "./src/canvas/util/canvasloader.ts",
        "./canvas/util/canvasloader.ts": "./src/canvas/util/canvasloader.ts",
        "./canvas/util/colors": "./src/canvas/util/colors.ts",
        "./canvas/util/colors.ts": "./src/canvas/util/colors.ts",
        "./css/drop": "./src/css/drop.ts",
        "./css/drop.ts": "./src/css/drop.ts",
        "./css/style": "./src/css/style.ts",
        "./css/style.ts": "./src/css/style.ts",
        "./index": "./src/index.ts",
        "./index.ts": "./src/index.ts",
        "./modules": "./src/modules/index.ts",
        "./modules/": "./src/modules/index.ts",
        "./modules/defaultModules": "./src/modules/defaultModules/index.ts",
        "./modules/defaultModules/": "./src/modules/defaultModules/index.ts",
        "./modules/defaultModules/SevenImageTools": "./src/modules/defaultModules/SevenImageTools.ts",
        "./modules/defaultModules/SevenImageTools.ts": "./src/modules/defaultModules/SevenImageTools.ts",
        "./modules/defaultModules/SevenProtect": "./src/modules/defaultModules/SevenProtect.ts",
        "./modules/defaultModules/SevenProtect.ts": "./src/modules/defaultModules/SevenProtect.ts",
        "./modules/defaultModules/SevenQueue": "./src/modules/defaultModules/SevenQueue.ts",
        "./modules/defaultModules/SevenQueue.ts": "./src/modules/defaultModules/SevenQueue.ts",
        "./modules/defaultModules/SevenSorting": "./src/modules/defaultModules/SevenSorting.ts",
        "./modules/defaultModules/SevenSorting.ts": "./src/modules/defaultModules/SevenSorting.ts",
        "./modules/defaultModules/SevenSquareMaker": "./src/modules/defaultModules/SevenSquareMaker.ts",
        "./modules/defaultModules/SevenSquareMaker.ts": "./src/modules/defaultModules/SevenSquareMaker.ts",
        "./modules/defaultModules/defaultKeys": "./src/modules/defaultModules/defaultKeys.ts",
        "./modules/defaultModules/defaultKeys.ts": "./src/modules/defaultModules/defaultKeys.ts",
        "./modules/defaultModules/index": "./src/modules/defaultModules/index.ts",
        "./modules/defaultModules/index.ts": "./src/modules/defaultModules/index.ts",
        "./modules/index": "./src/modules/index.ts",
        "./modules/index.ts": "./src/modules/index.ts",
        "./modules/util/getClientMouse": "./src/modules/util/getClientMouse.ts",
        "./modules/util/getClientMouse.ts": "./src/modules/util/getClientMouse.ts",
        "./requests/get-painting": "./src/requests/get-painting.ts",
        "./requests/get-painting.ts": "./src/requests/get-painting.ts",
        "./requests/getCookie": "./src/requests/getCookie.ts",
        "./requests/getCookie.ts": "./src/requests/getCookie.ts",
        "./requests/ping": "./src/requests/ping.ts",
        "./requests/ping.ts": "./src/requests/ping.ts",
        "./variables": "./src/variables.ts",
        "./variables.ts": "./src/variables.ts"
    };
    
    
    function webpackContext(req) {
        var id = webpackContextResolve(req);
        return __webpack_require__(id);
    }
    function webpackContextResolve(req) {
        if(!__webpack_require__.o(map, req)) {
            var e = new Error("Cannot find module '" + req + "'");
            e.code = 'MODULE_NOT_FOUND';
            throw e;
        }
        return map[req];
    }
    webpackContext.keys = function webpackContextKeys() {
        return Object.keys(map);
    };
    webpackContext.resolve = webpackContextResolve;
    module.exports = webpackContext;
    webpackContext.id = "./src sync recursive \\.*";
    
    /***/ })
    
    /******/ 	});
    /************************************************************************/
    /******/ 	// The module cache
    /******/ 	var __webpack_module_cache__ = {};
    /******/ 	
    /******/ 	// The require function
    /******/ 	function __webpack_require__(moduleId) {
    /******/ 		// Check if module is in cache
    /******/ 		var cachedModule = __webpack_module_cache__[moduleId];
    /******/ 		if (cachedModule !== undefined) {
    /******/ 			return cachedModule.exports;
    /******/ 		}
    /******/ 		// Create a new module (and put it into the cache)
    /******/ 		var module = __webpack_module_cache__[moduleId] = {
    /******/ 			// no module.id needed
    /******/ 			// no module.loaded needed
    /******/ 			exports: {}
    /******/ 		};
    /******/ 	
    /******/ 		// Execute the module function
    /******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
    /******/ 	
    /******/ 		// Return the exports of the module
    /******/ 		return module.exports;
    /******/ 	}
    /******/ 	
    /************************************************************************/
    /******/ 	/* webpack/runtime/define property getters */
    /******/ 	(() => {
    /******/ 		// define getter functions for harmony exports
    /******/ 		__webpack_require__.d = (exports, definition) => {
    /******/ 			for(var key in definition) {
    /******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
    /******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
    /******/ 				}
    /******/ 			}
    /******/ 		};
    /******/ 	})();
    /******/ 	
    /******/ 	/* webpack/runtime/hasOwnProperty shorthand */
    /******/ 	(() => {
    /******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
    /******/ 	})();
    /******/ 	
    /******/ 	/* webpack/runtime/make namespace object */
    /******/ 	(() => {
    /******/ 		// define __esModule on exports
    /******/ 		__webpack_require__.r = (exports) => {
    /******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
    /******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
    /******/ 			}
    /******/ 			Object.defineProperty(exports, '__esModule', { value: true });
    /******/ 		};
    /******/ 	})();
    /******/ 	
    /************************************************************************/
    /******/ 	
    /******/ 	// startup
    /******/ 	// Load entry module and return exports
    /******/ 	// This entry module is referenced by other modules so it can't be inlined
    /******/ 	var __webpack_exports__ = __webpack_require__("./src/index.ts");
    /******/ 	
    /******/ })()
    ;