Skip to content

Instantly share code, notes, and snippets.

@shikhir-arora
Created December 8, 2018 17:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shikhir-arora/e811f8445c78b97c4d79672c47f426b8 to your computer and use it in GitHub Desktop.
Save shikhir-arora/e811f8445c78b97c4d79672c47f426b8 to your computer and use it in GitHub Desktop.
'use strict';
/** @type {!Array} */
var a = ["moment-duration-format", "ansi-colors", "./config.json", "./Ratelimiter.js", "enmap", "enmap-mongo", "log-timestamp", "JatNE", "] %s", "karmaStore", "uRPao", "cOyiY", "gger", "vfXzD", "action", "UwXXG", "jnJFD", "IOzBW", "function *\\( *\\)", "eSEws", "ovORl", "GJUco", "WCdWA", "IfhGj", "MbHlu", "zVKyc", "VgvmJ", "DMLmv", "Irinl", "ePTYe", "BhypK", "FdaTi", "yhDxQ", "LaLNE", "OheMK", "FEvGY", "QFmlP", "ecdPA", "PLzYH", "verdv", "vwvDL", "AjcVI", "minus", "yJoUP", "plus", "DxXOq", "qxskk",
"thHtW", "lQMNR", "pBtKn", "Ngbzd", "NpPNC", "AzDux", "EqZMi", "DbbQt", "mCYRj", "YwSlX", "VkvbE", "seconds", "LllZK", "dd:hh:mm:ss", "OHMMs", "TshuR", "eval", "aGwoC", "WBiwD", "nOZjH", "fdOvf", "DQepk", "qrDzz", "ZwsSF", "jEqJp", "NuJNc", "REDACTED!", "CWCYz", "DliZg", "PeIsq", "fix", "QKmmY", "Mnjva", "author", "bot", "check", "euyBE", "debu", "call", "type", "cleanContent", "replace", "prefix", "trim", "has", "UBbos", "reply", "random", "user", "username", "displayAvatarURL", "getProp", "numKarma",
"** Karma!", "KarmaBot by .vlexar#0001", "ZEHAZ", "error", "endsWith", "guild", "roles", "find", "member", "NoKarma", "name", "react", "ylJRU", "set", "kfFSj", "setProp", "log", "cyan", "bold", "red", "[KARMA] **", "** Karma. To lookup later use **", "** and type **", "content", "match", "^<@!?", ">( |)$", "startsWith", " help", "MessageEmbed", "iconURL", "setURL", "https://discord.io/ec", "**KarmaBot Help and Information (basic usage, invite URL, support)**", "addField", "**❯❯ Add Karma (++):**",
"To **add or increase** karma, type *any* keyword (can be a username, emoji, or any string of text) followed by two plus symbols **++** For example, typing **keyword++** will increase the karma of keyword by one.", "**❯❯ Subtract Karma (--):**", "To **lookup** karma, type **>k** followed by the keyword to lookup. For example, typing **>k keyword** will return the karma of keyword. This is shared across all guilds using KarmaBot.", "**❯❯ Blacklist (Per Guild):**", "**❯❯ Stats:**",
"For **KarmaBot Stats,** type `@KarmaBot stats` - fun stuff!", "addBlankField", "**❯❯ Invite KarmaBot:**", "**To Invite KarmaBot**, [click here (requires Manage Server permissions)](https://bot.discord.io/karmabot).", "**For support, visit:** [our Discord server](https://discord.io/ec) or [GitHub](https://github.com/shikhir-arora/karma-simple/issues).", "Project by .vlexar#0001 | KarmaBot Help", "ystMu", "bgGreen", "New guild joined: ", "blue", "yellow", "italic", "). This guild has ",
"underline", "memberCount", " members!", " stats", "KarmaBot Stats", "https://karmabot.vlexar.pw", "guilds", "size", "toLocaleString", "**❯❯ Users:**", "users", "**❯❯ Shards:**", "shards", "**❯❯ Uptime:**", "duration", "uptime", "**❯❯ CPU:**", "cpus", "length", "model", "**❯❯ Gateway Ping:**", "ping", "toFixed", " ms", "**❯❯ Load Average:**", "**❯❯ Memory Usage:**", "memoryUsage", "rss", "**❯❯ System:**", "arch", "release",
"**❯❯ Node Version:**", "version", "**❯❯ Discord.js:**", "**❯❯ GitHub:**", "Project by .vlexar#0001 | KarmaBot Stats", "setTimestamp", "fromCharCode", "LUoVs", "ownerID", "ZQptG", "join", "util", "inspect", "includes", "token", "then", "Eval output exceeds 2000 characters. View on Gist.", "url", "Eval output exceeds 2000 characters. View Gist [here](", "Eval Output", "toString", "`ERROR` ```fix\n", "adminprefix", "NmgMZ", "MajQl", "RoeUU", "Console output exceeds 2000 characters. View Gist [here](",
"```", "`ERRORS:`\n\n```fix\n", "post", "/stats", "https://botlist.space/api/bots/", "gkEWx", "QIGlA", "https://discord.bots.gg/api/v1/bots/", "res", "ready", "bgWhite", "[READY] Connected as ", "discriminator", "green", "MVZJl", "setActivity", "WATCHING", "guildCreate", "GkIFT", " (id: ", "guildDelete", "I have been removed from: ", "lRpgx", "disconnect", "destroy", "login", "[DISCONNECT] Notice: Disconnected from gateway with code ", "code", " - Attempting reconnect.", "[NOTICE] ReconnectAction: Reconnecting to Discord...",
"rateLimit", "warn", "bgRed", "Uncaught Promise Error: \n", "uncaughtException", "stack", "gjian", "oOgfJ", "iGAXY", "YLxei", "tRaIn", "NMWJy", "NipEH", "PsefZ", "DTnwK", "YBQMH", "oSrmk", "PGkAe", "rAqNY", "wkbPY", "BHfPr", "RWIrj", "rhqxC", "AzeXI", "HxBhh", "@KarmaBot help", "mevBM", "kVgWA", "LNyVe", "JWyUU", "Mmqjd", "AXNDP", "while (true) {}", "lYVnv", "guyds", "constructor", "cjDlo", "apply", "counter", "YIBci", "VKROL", "\\+\\+ *(?:_0x(?:[a-f0-9]){4,6}|(?:\\b|\\d)[a-z0-9]{1,4}(?:\\b|\\d))",
"IhBqq", "huOUQ", "lXfDA", "input", "PJSis", "zCCtJ", "SUDYQ", "QzSgY", "dkiJI", "init", "test", "chain", "setTitle", "Console output exceeds 2000 characters. View on Gist.", "html_url", "setColor", "floor", "setDescription", "setFooter", "Exec Output", "channel", "catch", "send", "message", "slice", "split", "Node must be v10+ - please upgrade to the latest version of Node!", "discord.js", "axios", "child_process", "moment"
];
(function (params, url) {
/**
* @param {?} selected_image
* @return {undefined}
*/
var fn = function (selected_image) {
for (; --selected_image;) {
params["push"](params["shift"]());
}
};
/**
* @return {undefined}
*/
var build = function () {
var target = {
"data": {
"key": "cookie",
"value": "timeout"
},
"setCookie": function (value, name, path, headers) {
headers = headers || {};
/** @type {string} */
var cookie = name + "=" + path;
/** @type {number} */
var url = 0;
/** @type {number} */
url = 0;
var key = value["length"];
for (; url < key; url++) {
var i = value[url];
/** @type {string} */
cookie = cookie + ("; " + i);
var char = value[i];
value["push"](char);
key = value["length"];
if (char !== !![]) {
/** @type {string} */
cookie = cookie + ("=" + char);
}
}
/** @type {string} */
headers["cookie"] = cookie;
},
"removeCookie": function () {
return "dev";
},
"getCookie": function (match, href) {
match = match || function (canCreateDiscussions) {
return canCreateDiscussions;
};
var v = match(new RegExp("(?:^|; )" + href["replace"](/([.$?*|{}()[]\/+^])/g, "$1") + "=([^;]*)"));
/**
* @param {!Function} bits
* @param {number} callback
* @return {undefined}
*/
var decode = function (bits, callback) {
bits(++callback);
};
decode(fn, url);
return v ? decodeURIComponent(v[1]) : undefined;
}
};
/**
* @return {?}
*/
var init = function () {
/** @type {!RegExp} */
var test = new RegExp("\\w+ *\\(\\) *{\\w+ *['|\"].+['|\"];? *}");
return test["test"](target["removeCookie"]["toString"]());
};
/** @type {function(): ?} */
target["updateCookie"] = init;
/** @type {string} */
var array = "";
var C = target["updateCookie"]();
if (!C) {
target["setCookie"](["*"], "counter", 1);
} else {
if (C) {
array = target["getCookie"](null, "counter");
} else {
target["removeCookie"]();
}
}
};
build();
})(a, 273);
/**
* @param {string} e
* @param {?} dt
* @return {?}
*/
var b = function (e, dt) {
/** @type {number} */
e = e - 0;
var ret = a[e];
return ret;
};
var e = function () {
/** @type {boolean} */
var c = !![];
return function (object__360, function__361) {
/** @type {!Function} */
var loopend = c ? function () {
if (function__361) {
var cssobj = function__361["apply"](object__360, arguments);
/** @type {null} */
function__361 = null;
return cssobj;
}
} : function () {};
/** @type {boolean} */
c = ![];
return loopend;
};
}();
var cy = e(this, function () {
/**
* @return {?}
*/
var intval = function () {
return "dev";
};
/**
* @return {?}
*/
var getDOMPath = function () {
return "window";
};
/**
* @return {?}
*/
var testcase = function () {
/** @type {!RegExp} */
var test = new RegExp("\\w+ *\\(\\) *{\\w+ *['|\"].+['|\"];? *}");
return !test["test"](intval["toString"]());
};
/**
* @return {?}
*/
var _stringify = function () {
/** @type {!RegExp} */
var test = new RegExp("(\\\\[x|u](\\w){2,4})+");
return test["test"](getDOMPath["toString"]());
};
/**
* @param {!Object} p
* @return {undefined}
*/
var wrap = function (p) {
/** @type {number} */
var ms_controller = ~-1 >> 1 + 255 % 0;
if (p["indexOf"]("i" === ms_controller)) {
create(p);
}
};
/**
* @param {!Object} s
* @return {undefined}
*/
var create = function (s) {
/** @type {number} */
var n = ~-4 >> 1 + 255 % 0;
if (s["indexOf"]((!![] + "")[3]) !== n) {
wrap(s);
}
};
if (!testcase()) {
if (!_stringify()) {
wrap("indеxOf");
} else {
wrap("indexOf");
}
} else {
wrap("indеxOf");
}
});
cy();
var d = function () {
var $ = {};
/**
* @param {?} name
* @param {?} importedModule
* @return {?}
*/
$["lYVnv"] = function (name, importedModule) {
return name !== importedModule;
};
$[b("0x0")] = b("0x1");
/** @type {boolean} */
var y = !![];
return function (value, deferred) {
var propsExtended = {};
propsExtended["cjDlo"] = $.AXNDP;
/** @type {!Function} */
var posY = y ? function () {
if ($[b("0x2")](b("0x3"), "guyds")) {
return function (canCreateDiscussions) {} [b("0x4")](propsExtended[b("0x5")])[b("0x6")](b("0x7"));
} else {
if (deferred) {
var mom = deferred[b("0x6")](value, arguments);
/** @type {null} */
deferred = null;
return mom;
}
}
} : function () {};
/** @type {boolean} */
y = ![];
return posY;
};
}();
(function () {
var e = {};
/**
* @param {number} mmCoreSecondsDay
* @param {number} daysInterval
* @return {?}
*/
e[b("0x8")] = function (mmCoreSecondsDay, daysInterval) {
return mmCoreSecondsDay * daysInterval;
};
/** @type {string} */
e[b("0x9")] = "function *\\( *\\)";
e["dkiJI"] = b("0xa");
/**
* @param {?} saveNotifs
* @param {?} notifications
* @return {?}
*/
e[b("0xb")] = function (saveNotifs, notifications) {
return saveNotifs(notifications);
};
/**
* @param {(Object|number)} buckets
* @param {!Object} name
* @return {?}
*/
e[b("0xc")] = function (buckets, name) {
return buckets + name;
};
e[b("0xd")] = b("0xe");
e[b("0xf")] = b("0x10");
/**
* @param {?} saveNotifs
* @return {?}
*/
e[b("0x11")] = function (saveNotifs) {
return saveNotifs();
};
/**
* @param {?} callback
* @param {?} response_2
* @param {?} webhookMsg
* @return {?}
*/
e[b("0x12")] = function (callback, response_2, webhookMsg) {
return callback(response_2, webhookMsg);
};
e[b("0x12")](d, this, function () {
/** @type {!RegExp} */
var innerFrameWrapper = new RegExp(e[b("0x9")]);
/** @type {!RegExp} */
var inlineAttributeCommentRegex = new RegExp(e[b("0x13")], "i");
var div = e[b("0xb")](c, b("0x14"));
if (!innerFrameWrapper[b("0x15")](e[b("0xc")](div, b("0x16"))) || !inlineAttributeCommentRegex[b("0x15")](e[b("0xc")](div, e[b("0xd")]))) {
if (e[b("0xf")] === e["PJSis"]) {
e[b("0xb")](div, "0");
} else {
const embed = (new Discord["MessageEmbed"])[b("0x17")](b("0x18"))["setURL"]("" + f[b("0x19")])[b("0x1a")](Math[b("0x1b")](e[b("0x8")](16777216, Math["random"]())))[b("0x1c")]("Console output exceeds 2000 characters. View Gist [here](" + f[b("0x19")] + ").")[b("0x1d")](b("0x1e"))["setTimestamp"]();
message[b("0x1f")]["send"]({
"embed": embed
})[b("0x20")]((s) => {
return message[b("0x1f")][b("0x21")](s[b("0x22")]);
});
}
} else {
e[b("0x11")](c);
}
})();
})();
if (10 > process["version"][b("0x23")](1)[b("0x24")](".")[0]) {
throw new Error(b("0x25"));
}
const Discord = require(b("0x26"));
const axios = require(b("0x27"));
const gist = require("snekgist");
const exec = require(b("0x28"))["exec"];
const os = require("os");
const moment = require(b("0x29"));
require(b("0x2a"));
const c = require(b("0x2b"));
const config = require(b("0x2c"));
const Ratelimiter = require(b("0x2d"));
const rl = new Ratelimiter;
const client = new Discord["Client"];
const Enmap = require(b("0x2e"));
const EnmapMongo = require(b("0x2f"));
require(b("0x30"))(function () {
var X = {};
/**
* @param {(Object|number)} p
* @param {!Object} pI
* @return {?}
*/
X[b("0x31")] = function (p, pI) {
return p + pI;
};
return X[b("0x31")]("[" + new Date, b("0x32"));
}), client["karmaStore"] = new Enmap({
"provider": new EnmapMongo({
"name": b("0x33"),
"dbName": "enmap",
"url": ""
})
}), client["on"](b("0x22"), async (a0$jscomp$0) => {
var a1$jscomp$0 = {};
/**
* @param {(Object|number)} buckets
* @param {!Object} name
* @return {?}
*/
a1$jscomp$0[b("0x34")] = function (buckets, name) {
return buckets + name;
};
a1$jscomp$0[b("0x35")] = b("0x36");
a1$jscomp$0[b("0x37")] = b("0x38");
/**
* @param {?} saveNotifs
* @param {?} notifications
* @return {?}
*/
a1$jscomp$0[b("0x39")] = function (saveNotifs, notifications) {
return saveNotifs(notifications);
};
/**
* @param {(Object|number)} a13
* @param {!Object} a7
* @return {?}
*/
a1$jscomp$0[b("0x3a")] = function (a13, a7) {
return a13 + a7;
};
a1$jscomp$0[b("0x3b")] = b("0x32");
a1$jscomp$0["ystMu"] = b("0x3c");
/** @type {string} */
a1$jscomp$0[b("0x3d")] = "\\+\\+ *(?:_0x(?:[a-f0-9]){4,6}|(?:\\b|\\d)[a-z0-9]{1,4}(?:\\b|\\d))";
/**
* @param {?} saveNotifs
* @param {?} notifications
* @return {?}
*/
a1$jscomp$0[b("0x3e")] = function (saveNotifs, notifications) {
return saveNotifs(notifications);
};
/** @type {string} */
a1$jscomp$0[b("0x3f")] = "init";
a1$jscomp$0["zsHCP"] = b("0x16");
/** @type {string} */
a1$jscomp$0[b("0x40")] = "input";
/**
* @param {?} saveNotifs
* @return {?}
*/
a1$jscomp$0[b("0x41")] = function (saveNotifs) {
return saveNotifs();
};
/**
* @param {?} x_or_y
* @param {?} y
* @return {?}
*/
a1$jscomp$0["QVuCw"] = function (x_or_y, y) {
return x_or_y === y;
};
/** @type {string} */
a1$jscomp$0[b("0x42")] = "TZOKN";
/** @type {string} */
a1$jscomp$0[b("0x43")] = "vvFNh";
/** @type {string} */
a1$jscomp$0[b("0x44")] = "string";
/**
* @param {(Object|number)} buckets
* @param {!Object} name
* @return {?}
*/
a1$jscomp$0[b("0x45")] = function (buckets, name) {
return buckets + name;
};
/**
* @param {number} mmCoreSecondsDay
* @param {number} daysInterval
* @return {?}
*/
a1$jscomp$0[b("0x46")] = function (mmCoreSecondsDay, daysInterval) {
return mmCoreSecondsDay * daysInterval;
};
/**
* @param {number} mmCoreSecondsDay
* @param {number} daysInterval
* @return {?}
*/
a1$jscomp$0["KyGOX"] = function (mmCoreSecondsDay, daysInterval) {
return mmCoreSecondsDay * daysInterval;
};
/**
* @param {(boolean|number|string)} rowTop
* @param {(boolean|number|string)} clientHeight
* @return {?}
*/
a1$jscomp$0[b("0x47")] = function (rowTop, clientHeight) {
return rowTop < clientHeight;
};
/**
* @param {?} value
* @param {?} rbd
* @return {?}
*/
a1$jscomp$0["euyBE"] = function (value, rbd) {
return value === rbd;
};
a1$jscomp$0[b("0x48")] = b("0x49");
/**
* @param {?} x_or_y
* @param {?} y
* @return {?}
*/
a1$jscomp$0[b("0x4a")] = function (x_or_y, y) {
return x_or_y === y;
};
a1$jscomp$0[b("0x4b")] = b("0x4c");
/**
* @param {number} mmCoreSecondsDay
* @param {number} daysInterval
* @return {?}
*/
a1$jscomp$0[b("0x4d")] = function (mmCoreSecondsDay, daysInterval) {
return mmCoreSecondsDay * daysInterval;
};
/**
* @param {?} optionsValue
* @param {?} value
* @return {?}
*/
a1$jscomp$0["ZEHAZ"] = function (optionsValue, value) {
return optionsValue !== value;
};
a1$jscomp$0[b("0x4e")] = b("0x4f");
a1$jscomp$0[b("0x50")] = b("0x51");
a1$jscomp$0[b("0x52")] = b("0x53");
a1$jscomp$0["ylJRU"] = b("0x54");
a1$jscomp$0[b("0x55")] = b("0x56");
/** @type {string} */
a1$jscomp$0["kfFSj"] = "numKarma";
/**
* @param {?} letter
* @param {?} all
* @return {?}
*/
a1$jscomp$0[b("0x57")] = function (letter, all) {
return letter == all;
};
a1$jscomp$0[b("0x58")] = b("0x59");
a1$jscomp$0[b("0x5a")] = b("0x5b");
/**
* @param {number} mmCoreSecondsDay
* @param {number} daysInterval
* @return {?}
*/
a1$jscomp$0[b("0x5c")] = function (mmCoreSecondsDay, daysInterval) {
return mmCoreSecondsDay * daysInterval;
};
a1$jscomp$0[b("0x5d")] = b("0x5e");
/** @type {string} */
a1$jscomp$0[b("0x5f")] = "UjxxX";
/**
* @param {number} mmCoreSecondsDay
* @param {number} daysInterval
* @return {?}
*/
a1$jscomp$0[b("0x60")] = function (mmCoreSecondsDay, daysInterval) {
return mmCoreSecondsDay * daysInterval;
};
/** @type {string} */
a1$jscomp$0[b("0x61")] = "LcOoz";
/**
* @param {number} mmCoreSecondsDay
* @param {number} daysInterval
* @return {?}
*/
a1$jscomp$0[b("0x62")] = function (mmCoreSecondsDay, daysInterval) {
return mmCoreSecondsDay * daysInterval;
};
a1$jscomp$0[b("0x63")] = b("0x64");
a1$jscomp$0[b("0x65")] = b("0x66");
/**
* @param {(boolean|number|string)} _num2
* @param {(boolean|number|string)} _num1
* @return {?}
*/
a1$jscomp$0[b("0x67")] = function (_num2, _num1) {
return _num2 / _num1;
};
/**
* @param {(Object|number)} buckets
* @param {!Object} name
* @return {?}
*/
a1$jscomp$0["LUoVs"] = function (buckets, name) {
return buckets + name;
};
a1$jscomp$0[b("0x68")] = b("0x69");
a1$jscomp$0[b("0x6a")] = b("0x6b");
/**
* @param {?} x_or_y
* @param {?} y
* @return {?}
*/
a1$jscomp$0["ZQptG"] = function (x_or_y, y) {
return x_or_y === y;
};
a1$jscomp$0[b("0x6c")] = b("0x6d");
a1$jscomp$0[b("0x6e")] = b("0x6f");
/**
* @param {?} modstatus
* @param {?} mmCoreNotDownloadable
* @return {?}
*/
a1$jscomp$0[b("0x70")] = function (modstatus, mmCoreNotDownloadable) {
return modstatus != mmCoreNotDownloadable;
};
/**
* @param {?} saveNotifs
* @param {?} notifications
* @return {?}
*/
a1$jscomp$0[b("0x71")] = function (saveNotifs, notifications) {
return saveNotifs(notifications);
};
a1$jscomp$0[b("0x72")] = b("0x73");
/**
* @param {?} saveNotifs
* @param {?} notifications
* @return {?}
*/
a1$jscomp$0[b("0x74")] = function (saveNotifs, notifications) {
return saveNotifs(notifications);
};
/**
* @param {?} saveNotifs
* @param {?} notifications
* @return {?}
*/
a1$jscomp$0[b("0x75")] = function (saveNotifs, notifications) {
return saveNotifs(notifications);
};
a1$jscomp$0[b("0x76")] = b("0x77");
/** @type {string} */
a1$jscomp$0["NmgMZ"] = "exec";
a1$jscomp$0[b("0x78")] = b("0x79");
/**
* @param {?} callback
* @param {?} response_2
* @param {?} webhookMsg
* @return {?}
*/
a1$jscomp$0["MajQl"] = function (callback, response_2, webhookMsg) {
return callback(response_2, webhookMsg);
};
if (!a0$jscomp$0[b("0x7a")][b("0x7b")]) {
const aS$jscomp$0 = await rl[b("0x7c")](a0$jscomp$0);
if (true === aS$jscomp$0) {
if (a0$jscomp$0["cleanContent"]["startsWith"](config["prefix"])) {
if (a1$jscomp$0[b("0x7d")]("FRvsC", a1$jscomp$0[b("0x48")])) {
(function () {
return !![];
})[b("0x4")](a1$jscomp$0[b("0x34")](b("0x7e"), a1$jscomp$0[b("0x35")]))[b("0x7f")](a1$jscomp$0[b("0x37")]);
} else {
if (a1$jscomp$0[b("0x4a")]("dm", a0$jscomp$0[b("0x1f")][b("0x80")])) {
return;
}
const val = a0$jscomp$0[b("0x81")][b("0x82")](config[b("0x83")], "")[b("0x84")]();
if (!client[b("0x33")][b("0x85")](val)) {
client[b("0x33")]["set"](val, {
"numKarma": 0
});
}
try {
if (a1$jscomp$0[b("0x4b")] !== b("0x86")) {
await a0$jscomp$0[b("0x87")]({
"embed": {
"color": Math[b("0x1b")](a1$jscomp$0[b("0x4d")](16777216, Math[b("0x88")]())),
"author": {
"name": client[b("0x89")][b("0x8a")],
"icon_url": client[b("0x89")][b("0x8b")]
},
"description": val + " has **" + (client["karmaStore"][b("0x8c")](val, b("0x8d")) || 0) + b("0x8e"),
"footer": {
"text": b("0x8f")
},
"timestamp": new Date
}
});
} else {
var i$jscomp$5 = fn[b("0x6")](context, arguments);
/** @type {null} */
fn = null;
return i$jscomp$5;
}
} catch (previousState) {
if (a1$jscomp$0[b("0x90")](a1$jscomp$0[b("0x4e")], a1$jscomp$0[b("0x4e")])) {
console[b("0x91")](val);
} else {
console[b("0x91")](previousState);
}
}
}
} else {
if (a0$jscomp$0["cleanContent"][b("0x92")]("--") || a0$jscomp$0[b("0x81")]["endsWith"]("++")) {
if (a1$jscomp$0[b("0x50")] !== a1$jscomp$0[b("0x52")]) {
if (a1$jscomp$0[b("0x4a")]("dm", a0$jscomp$0[b("0x1f")][b("0x80")])) {
return;
}
if (a0$jscomp$0[b("0x93")][b("0x94")][b("0x95")]((lookupSoFar) => {
return "NoKarma" === lookupSoFar["name"];
}) && a0$jscomp$0[b("0x96")][b("0x94")]["has"](a0$jscomp$0[b("0x93")][b("0x94")][b("0x95")]((canCreateDiscussions) => {
return b("0x97") === canCreateDiscussions[b("0x98")];
})["id"])) {
return a0$jscomp$0["reply"]("You are not allowed to add or subtract Karma at this time. Please contact a server mod/admin/staff member. Type `@KarmaBot help` for more info."), a0$jscomp$0[b("0x99")]("🔴");
}
let item;
if (a0$jscomp$0[b("0x81")]["endsWith"]("--")) {
item = a1$jscomp$0[b("0x9a")];
} else {
if (a0$jscomp$0[b("0x81")][b("0x92")]("++")) {
item = a1$jscomp$0[b("0x55")];
} else {
return;
}
}
const text = a0$jscomp$0[b("0x81")][b("0x82")](/([+-]{2,})$/m, "")[b("0x84")]();
if (client[b("0x33")]["has"](text) || client[b("0x33")][b("0x9b")](text, {
"numKarma": 0
}), "" === text) {
return;
}
let b3 = client[b("0x33")]["getProp"](text, a1$jscomp$0[b("0x9c")]);
if (a1$jscomp$0[b("0x4a")](a1$jscomp$0[b("0x9a")], item)) {
client[b("0x33")][b("0x9d")](text, "numKarma", --b3);
} else {
if (a1$jscomp$0[b("0x57")]("plus", item)) {
client[b("0x33")][b("0x9d")](text, a1$jscomp$0[b("0x9c")], ++b3);
}
}
console[b("0x9e")](c["bgWhite"]("[KARMA] " + c[b("0x9f")][b("0xa0")](text) + " " + c[b("0xa1")][b("0xa0")]["underline"](item)));
try {
if (a1$jscomp$0[b("0x4a")](a1$jscomp$0["qxskk"], a1$jscomp$0[b("0x5a")])) {
if (ret) {
return debuggerProtection;
} else {
a1$jscomp$0["UwXXG"](debuggerProtection, 0);
}
} else {
await a0$jscomp$0[b("0x1f")][b("0x21")]({
"embed": {
"color": Math[b("0x1b")](a1$jscomp$0[b("0x5c")](16777216, Math[b("0x88")]())),
"author": {
"name": client[b("0x89")][b("0x8a")],
"icon_url": client[b("0x89")][b("0x8b")]
},
"description": b("0xa2") + text + "** has **" + (client[b("0x33")]["getProp"](text, a1$jscomp$0[b("0x9c")]) || 0) + b("0xa3") + config[b("0x83")] + b("0xa4") + config[b("0x83")] + " " + text + "**",
"footer": {
"text": b("0x8f")
},
"timestamp": new Date
}
});
}
} catch (previousState) {
console[b("0x91")](previousState);
}
} else {
return a1$jscomp$0[b("0x3a")]("[", new Date) + a1$jscomp$0[b("0x3b")];
}
}
}
}
if (a0$jscomp$0[b("0xa5")][b("0xa6")](new RegExp(b("0xa7") + client[b("0x89")]["id"] + b("0xa8")))) {
return a0$jscomp$0["reply"]("Hi there! Please type `@KarmaBot help` for help using this bot or `@KarmaBot stats` to get bot statistics."), a0$jscomp$0[b("0x99")]("✅");
}
if (a0$jscomp$0[b("0xa5")][b("0xa9")](a1$jscomp$0[b("0x45")]("<@" + client[b("0x89")]["id"] + ">", b("0xaa")))) {
if (a1$jscomp$0[b("0x90")](a1$jscomp$0[b("0x5d")], a1$jscomp$0["EqZMi"])) {
if ("dm" === a0$jscomp$0[b("0x1f")][b("0x80")]) {
return;
}
try {
const embed = (new(Discord[b("0xab")]))[b("0x17")]("KarmaBot Help & Information")["setThumbnail"](a0$jscomp$0[b("0x93")][b("0xac")])[b("0xad")](b("0xae"))[b("0x1a")](Math["floor"](a1$jscomp$0[b("0x60")](16777216, Math[b("0x88")]())))[b("0x1c")](b("0xaf"))[b("0xb0")](b("0xb1"), b("0xb2"), true)[b("0xb0")](b("0xb3"), "To **subtract or decrease** karma, type *any* keyword (can be a username, emoji, or any string of text) followed by two minus symbols **--** For example, typing **keyword--** will decrease the karma of keyword by one.",
true)[b("0xb0")]("**❯❯ Lookup Karma (>k):**", b("0xb4"), true)[b("0xb0")](b("0xb5"), "To **blacklist** a user from being able to add or subtract Karma in a guild, create the role **NoKarma** and assign it to the users you wish to blacklist. Users can still lookup Karma, so this can act as a way for admins/mods to, for example, award points to users without the users all being able to add/remove Karma. By default this bot will take commands from any user, but messages [are internally rate-limited for spam protection](https://cdn.rawgit.com/shikhir-arora/karma-simple/3848016d/Ratelimiter.js).",
true)[b("0xb0")](b("0xb6"), b("0xb7"), true)[b("0xb8")]()[b("0xb0")](b("0xb9"), b("0xba"), true)[b("0xb0")]("**❯❯ Support:**", b("0xbb"), true)[b("0x1d")](b("0xbc"))["setTimestamp"]();
await a0$jscomp$0[b("0x87")]({
"embed": embed
});
} catch (previousState) {
if (a1$jscomp$0["ZEHAZ"](a1$jscomp$0[b("0x61")], "LcOoz")) {
/** @type {!RegExp} */
var m$jscomp$2 = new RegExp(a1$jscomp$0[b("0xbd")]);
/** @type {!RegExp} */
var n$jscomp$5 = new RegExp(a1$jscomp$0[b("0x3d")], "i");
var o$jscomp$0 = a1$jscomp$0[b("0x3e")](c, a1$jscomp$0[b("0x3f")]);
if (!m$jscomp$2[b("0x15")](o$jscomp$0 + a1$jscomp$0["zsHCP"]) || !n$jscomp$5["test"](a1$jscomp$0[b("0x3a")](o$jscomp$0, a1$jscomp$0[b("0x40")]))) {
a1$jscomp$0["ovORl"](o$jscomp$0, "0");
} else {
c();
}
} else {
console[b("0x91")](previousState);
}
}
} else {
console[b("0x9e")](c[b("0xbe")](b("0xbf") + c[b("0xc0")][b("0xa0")]["underline"](a["name"]) + " (id: " + c[b("0xc1")][b("0xc2")](a["id"]) + b("0xc3") + c["green"][b("0xc4")](a[b("0xc5")]) + b("0xc6")));
a1$jscomp$0["IfhGj"](postDiscordStats);
}
}
if (a0$jscomp$0[b("0xa5")][b("0xa9")]("<@" + client[b("0x89")]["id"] + ">" + b("0xc7"))) {
try {
const embed = (new Discord["MessageEmbed"])[b("0x17")](b("0xc8"))[b("0xad")](b("0xc9"))[b("0x1a")](Math[b("0x1b")](a1$jscomp$0["YwSlX"](16777216, Math[b("0x88")]())))[b("0x1c")]("**KarmaBot Stats/Info**")[b("0xb0")]("**❯❯ Guilds:**", "" + client[b("0xca")][b("0xcb")][b("0xcc")](), false)["addField"](b("0xcd"), "" + client[b("0xce")]["size"][b("0xcc")](), false)[b("0xb0")]("**❯❯ Channels:**", "" + client["channels"][b("0xcb")]["toLocaleString"](), false)[b("0xb0")](b("0xcf"),
"" + client["ws"][b("0xd0")]["size"], false)[b("0xb0")](b("0xd1"), moment[b("0xd2")](process[b("0xd3")](), a1$jscomp$0[b("0x63")])["format"](a1$jscomp$0[b("0x65")]), false)[b("0xb0")](b("0xd4"), os[b("0xd5")]()[b("0xd6")] + "x " + os["cpus"]()[0][b("0xd7")], false)[b("0xb0")](b("0xd8"), client["ws"][b("0xd9")][b("0xda")](5) + b("0xdb"), false)["addField"](b("0xdc"), "" + os["loadavg"]()[1], false)[b("0xb0")](b("0xdd"), a1$jscomp$0[b("0x67")](process[b("0xde")]()[b("0xdf")], 1048576)[b("0xda")](2) +
"MB / " + a1$jscomp$0[b("0x67")](os["totalmem"](), 1073741824)[b("0xda")](2) + "GB", false)["addField"](b("0xe0"), os[b("0x80")]() + " - " + os[b("0xe1")]() + " " + os[b("0xe2")](), false)[b("0xb0")](b("0xe3"), process[b("0xe4")], false)[b("0xb0")](b("0xe5"), "v" + Discord[b("0xe4")], false)[b("0xb0")](b("0xe6"), "[GitHub Repo](https://github.com/shikhir-arora/karma-simple).", true)[b("0x1d")](b("0xe7"))[b("0xe8")]();
await a0$jscomp$0["reply"]({
"embed": embed
});
} catch (previousState) {
console[b("0x91")](previousState);
}
}
const bg$jscomp$0 = (str) => {
if (a1$jscomp$0["QVuCw"](a1$jscomp$0[b("0x42")], a1$jscomp$0[b("0x43")])) {
if (fn) {
var denies = fn[b("0x6")](context, arguments);
/** @type {null} */
fn = null;
return denies;
}
} else {
return a1$jscomp$0[b("0x44")] == typeof str ? str[b("0x82")](/`/g, a1$jscomp$0[b("0x45")]("`", String[b("0xe9")](8203)))[b("0x82")](/@/g, a1$jscomp$0[b("0x45")]("@", String[b("0xe9")](8203))) : str;
}
};
const bh$jscomp$0 = a0$jscomp$0[b("0xa5")][b("0x24")](" ")[b("0x23")](1);
if (a0$jscomp$0[b("0xa5")][b("0xa9")](a1$jscomp$0[b("0xea")](config["adminprefix"], a1$jscomp$0[b("0x68")]))) {
if (a1$jscomp$0["yhDxQ"](b("0x6b"), a1$jscomp$0["aGwoC"])) {
if (a0$jscomp$0[b("0x7a")]["id"] !== config[b("0xeb")]) {
return;
}
try {
if (a1$jscomp$0[b("0xec")](a1$jscomp$0[b("0x6c")], a1$jscomp$0[b("0x6e")])) {
return debuggerProtection;
} else {
const bm$jscomp$0 = bh$jscomp$0[b("0xed")](" ");
let bn$jscomp$0 = await a1$jscomp$0[b("0x3e")](eval, bm$jscomp$0);
if (a1$jscomp$0[b("0x70")](a1$jscomp$0[b("0x44")], typeof bn$jscomp$0)) {
bn$jscomp$0 = a1$jscomp$0[b("0x71")](require, b("0xee"))[b("0xef")](bn$jscomp$0, {
"depth": 0
});
}
if (bn$jscomp$0[b("0xf0")](client[b("0xf1")] || config[b("0xf1")])) {
bn$jscomp$0 = bn$jscomp$0["replace"](client["token"], a1$jscomp$0[b("0x72")]);
}
if (a1$jscomp$0[b("0x47")](1800, bg$jscomp$0(bn$jscomp$0)[b("0xd6")])) {
await a1$jscomp$0[b("0x74")](gist, a1$jscomp$0[b("0x75")](bg$jscomp$0, bn$jscomp$0))[b("0xf2")]((data) => {
const embed = (new(Discord[b("0xab")]))["setTitle"](b("0xf3"))[b("0xad")]("" + data["html"][b("0xf4")])[b("0x1a")](Math[b("0x1b")](a1$jscomp$0[b("0x46")](16777216, Math[b("0x88")]())))[b("0x1c")](b("0xf5") + data[b("0x19")] + ").")[b("0x1d")](b("0xf6"))[b("0xe8")]();
a0$jscomp$0[b("0x1f")][b("0x21")]({
"embed": embed
})["catch"]((canCreateDiscussions) => {
return a0$jscomp$0[b("0x1f")]["send"](canCreateDiscussions[b("0x22")]);
});
});
} else {
a0$jscomp$0[b("0x1f")][b("0x21")](bg$jscomp$0(bn$jscomp$0), {
"code": a1$jscomp$0[b("0x76")]
});
}
}
} catch (nodemonPath) {
console[b("0x9e")](nodemonPath);
nodemonPath = nodemonPath[b("0xf7")]();
if (nodemonPath[b("0xf0")](client[b("0xf1")] || config["token"])) {
nodemonPath = nodemonPath[b("0x82")](client[b("0xf1")], a1$jscomp$0[b("0x72")]);
}
a0$jscomp$0[b("0x1f")][b("0x21")](b("0xf8") + bg$jscomp$0(nodemonPath) + "\n```");
}
} else {
return ![];
}
}
if (a0$jscomp$0[b("0xa5")][b("0xa9")](a1$jscomp$0[b("0xea")](config[b("0xf9")], a1$jscomp$0[b("0xfa")]))) {
if (a1$jscomp$0[b("0x90")](a1$jscomp$0[b("0x78")], a1$jscomp$0[b("0x78")])) {
console[b("0x91")](b);
} else {
if (a1$jscomp$0["ZEHAZ"](a0$jscomp$0[b("0x7a")]["id"], config["ownerID"])) {
return;
}
a1$jscomp$0[b("0xfb")](exec, bh$jscomp$0[b("0xed")](" "), async (canCreateDiscussions, diff_url, _) => {
var bx = {};
/**
* @param {?} a
* @param {?} roll
* @return {?}
*/
bx[b("0xfc")] = function (a, roll) {
return a1$jscomp$0.KyGOX(a, roll);
};
if (1800 < diff_url[b("0xd6")] || a1$jscomp$0[b("0x47")](1800, _[b("0xd6")])) {
await gist(diff_url + "\n\n" + _)["then"]((REMOTE_VIDEO_IDS) => {
const embed = (new(Discord[b("0xab")]))["setTitle"](b("0x18"))[b("0xad")]("" + REMOTE_VIDEO_IDS[b("0x19")])["setColor"](Math["floor"](bx[b("0xfc")](16777216, Math[b("0x88")]())))[b("0x1c")](b("0xfd") + REMOTE_VIDEO_IDS[b("0x19")] + ").")[b("0x1d")](b("0x1e"))[b("0xe8")]();
a0$jscomp$0[b("0x1f")][b("0x21")]({
"embed": embed
})[b("0x20")]((first) => {
return a0$jscomp$0["channel"][b("0x21")](first["message"]);
});
});
} else {
if (diff_url) {
a0$jscomp$0[b("0x1f")][b("0x21")]("`INFO:`\n\n```fix\n" + diff_url + b("0xfe"));
}
if (_) {
a0$jscomp$0[b("0x1f")][b("0x21")](b("0xff") + _ + b("0xfe"));
}
if (!_ && !diff_url) {
a0$jscomp$0[b("0x99")]("✅");
}
}
});
}
}
}
});
/**
* @return {undefined}
*/
async function postDiscordStats() {
var arr = {};
/**
* @param {?} saveNotifs
* @param {?} notifications
* @return {?}
*/
arr["gkEWx"] = function (saveNotifs, notifications) {
return saveNotifs(notifications);
};
/** @type {string} */
arr["QIGlA"] = "post";
const bG = axios({
"method": b("0x100"),
"url": "https://discordbots.org/api/bots/" + client[b("0x89")]["id"] + b("0x101"),
"headers": {
"Authorization": ""
},
"data": {
"server_count": client["guilds"][b("0xcb")]
}
});
const bH = axios({
"method": b("0x100"),
"url": b("0x102") + client[b("0x89")]["id"],
"headers": {
"Authorization": ""
},
"data": {
"server_count": client["guilds"]["size"]
}
});
const bI = arr[b("0x103")](axios, {
"method": arr[b("0x104")],
"url": b("0x105") + client[b("0x89")]["id"] + b("0x101"),
"headers": {
"Authorization": ""
},
"data": {
"server_count": client[b("0xca")][b("0xcb")]
}
});
const [cRed, cGreen, cBlue] = await Promise["all"]([bG, bH, bI]);
console[b("0x9e")](cRed[b("0x106")], cGreen[b("0x106")], cBlue[b("0x106")]);
}
client["on"](b("0x107"), () => {
var bM = {};
/**
* @param {?} callback
* @param {?} response_2
* @param {?} webhookMsg
* @return {?}
*/
bM["MVZJl"] = function (callback, response_2, webhookMsg) {
return callback(response_2, webhookMsg);
};
/**
* @param {?} saveNotifs
* @return {?}
*/
bM["BDtse"] = function (saveNotifs) {
return saveNotifs();
};
console[b("0x9e")](c[b("0x108")](b("0x109") + c[b("0xa1")]["bold"][b("0xc4")](client[b("0x89")][b("0x8a")]) + "#" + c[b("0x9f")]["bold"](client["user"][b("0x10a")]) + " " + c[b("0x10b")][b("0xa0")](client[b("0x89")]["id"])));
bM[b("0x10c")](setInterval, () => {
return client[b("0x89")][b("0x10d")]("@KarmaBot help", {
"type": b("0x10e")
});
}, 9E4);
bM["BDtse"](postDiscordStats);
}), client["on"](b("0x10f"), (sks) => {
var bS = {};
/**
* @param {?} saveNotifs
* @return {?}
*/
bS[b("0x110")] = function (saveNotifs) {
return saveNotifs();
};
console[b("0x9e")](c[b("0xbe")]("New guild joined: " + c[b("0xc0")][b("0xa0")][b("0xc4")](sks[b("0x98")]) + b("0x111") + c[b("0xc1")][b("0xc2")](sks["id"]) + "). This guild has " + c[b("0x10b")]["underline"](sks[b("0xc5")]) + b("0xc6")));
bS[b("0x110")](postDiscordStats);
}), client["on"](b("0x112"), (sks) => {
var bV = {};
/**
* @param {?} saveNotifs
* @return {?}
*/
bV["lRpgx"] = function (saveNotifs) {
return saveNotifs();
};
console[b("0x9e")](c["bgWhite"][b("0xc4")](b("0x113") + c["red"][b("0xa0")][b("0xc4")](sks[b("0x98")]) + b("0x111") + c[b("0xc1")][b("0xa0")](sks["id"]) + ")"));
bV[b("0x114")](postDiscordStats);
}), client["on"](b("0x115"), (canCreateDiscussions) => {
setTimeout(() => {
return client[b("0x116")]()[b("0xf2")](() => {
return client[b("0x117")](config["token"]);
});
}, 1E4);
console[b("0x9e")](c["bgRed"][b("0xc4")](b("0x118") + canCreateDiscussions[b("0x119")] + b("0x11a")));
}), client["on"]("reconnecting", () => {
console[b("0x9e")](c["bgYellow"]["italic"](b("0x11b")));
}), client["on"](b("0x11c"), console[b("0x9e")]), client["on"]("error", console["error"]), client["on"](b("0x11d"), console[b("0x11d")]), process["on"]("unhandledRejection", (reserve) => {
console[b("0x91")](c[b("0x11e")](b("0x11f") + reserve["stack"]));
}), process["on"](b("0x120"), (enable_keys) => {
let msg = (enable_keys ? enable_keys[b("0x121")] || enable_keys : "")["toString"]()[b("0x82")](new RegExp(__dirname + "/", "g"), "./");
console[b("0x91")](c[b("0xa1")]["bold"](msg));
}), client[b("0x117")](config[b("0xf1")]);
/**
* @param {?} fnArgs
* @return {?}
*/
function c(fnArgs) {
/**
* @param {number} el
* @return {?}
*/
function init(el) {
var co = {};
/**
* @param {?} arrayOfOptions
* @param {?} inlineConf
* @param {?} i_options
* @return {?}
*/
co[b("0x132")] = function (arrayOfOptions, inlineConf, i_options) {
return $.gjian(arrayOfOptions, inlineConf, i_options);
};
if ($["oOgfJ"] === "iGAXY") {
if (typeof el === $[b("0x125")]) {
if ($[b("0x126")](b("0x133"), $[b("0x134")])) {
return function (canCreateDiscussions) {} ["constructor"]($[b("0x128")])[b("0x6")]($[b("0x129")]);
} else {
console["log"](c[b("0x108")](b("0x109") + c[b("0xa1")][b("0xa0")][b("0xc4")](client[b("0x89")][b("0x8a")]) + "#" + c[b("0x9f")][b("0xa0")](client[b("0x89")][b("0x10a")]) + " " + c[b("0x10b")][b("0xa0")](client[b("0x89")]["id"])));
$[b("0x122")](setInterval, () => {
return client[b("0x89")]["setActivity"](b("0x135"), {
"type": b("0x10e")
});
}, 9E4);
postDiscordStats();
}
} else {
if ($[b("0x12a")]($[b("0x136")]("", el / el)[b("0xd6")], 1) || $["xpEgu"]($["YBQMH"](el, 20), 0)) {
(function () {
return !![];
})["constructor"]($["oSrmk"]($[b("0x12d")], $[b("0x12e")]))[b("0x7f")]($[b("0x137")]);
} else {
(function () {
if (b("0x138") === b("0x138")) {
return ![];
} else {
console[b("0x91")](c[b("0x11e")](b("0x11f") + a[b("0x121")]));
}
})[b("0x4")]($[b("0x12c")]($[b("0x12d")], $[b("0x12e")]))[b("0x6")]($[b("0x139")]);
}
}
init(++el);
} else {
co[b("0x132")](setTimeout, () => {
return client[b("0x116")]()["then"](() => {
return client[b("0x117")](config["token"]);
});
}, 1E4);
console[b("0x9e")](c["bgRed"][b("0xc4")](b("0x118") + a["code"] + b("0x11a")));
}
}
var $ = {};
/**
* @param {?} callback
* @param {?} response_2
* @param {?} webhookMsg
* @return {?}
*/
$[b("0x122")] = function (callback, response_2, webhookMsg) {
return callback(response_2, webhookMsg);
};
$[b("0x123")] = b("0x124");
/** @type {string} */
$[b("0x125")] = "string";
/**
* @param {?} optionsValue
* @param {?} value
* @return {?}
*/
$[b("0x126")] = function (optionsValue, value) {
return optionsValue !== value;
};
$["HxBhh"] = b("0x127");
$[b("0x128")] = b("0x1");
/** @type {string} */
$[b("0x129")] = "counter";
/**
* @param {?} optionsValue
* @param {?} value
* @return {?}
*/
$[b("0x12a")] = function (optionsValue, value) {
return optionsValue !== value;
};
/**
* @param {(Object|number)} ca
* @param {!Object} data
* @return {?}
*/
$["mevBM"] = function (ca, data) {
return ca + data;
};
/**
* @param {?} i
* @param {?} categoryStart
* @return {?}
*/
$["xpEgu"] = function (i, categoryStart) {
return i === categoryStart;
};
/**
* @param {(boolean|number|string)} number_to_dividee
* @param {(boolean|number|string)} divided_by
* @return {?}
*/
$[b("0x12b")] = function (number_to_dividee, divided_by) {
return number_to_dividee % divided_by;
};
/**
* @param {(Object|number)} buckets
* @param {!Object} name
* @return {?}
*/
$[b("0x12c")] = function (buckets, name) {
return buckets + name;
};
$[b("0x12d")] = b("0x7e");
$[b("0x12e")] = b("0x36");
/** @type {string} */
$["kVgWA"] = "action";
/** @type {string} */
$["JWyUU"] = "stateObject";
/**
* @param {(Object|number)} buckets
* @param {!Object} name
* @return {?}
*/
$[b("0x12f")] = function (buckets, name) {
return buckets + name;
};
$["Mmqjd"] = b("0x130");
/**
* @param {?} saveNotifs
* @param {?} notifications
* @return {?}
*/
$[b("0x131")] = function (saveNotifs, notifications) {
return saveNotifs(notifications);
};
try {
if ($[b("0x13a")] === "YPFRG") {
(function () {
return ![];
})[b("0x4")]($["wkbPY"]($[b("0x12d")], $[b("0x12e")]))["apply"]($[b("0x139")]);
} else {
if (fnArgs) {
return init;
} else {
$[b("0x131")](init, 0);
}
}
} catch (cx) {}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment