module.exports = {
  base64_encode: function (r) {
    for (
      var e,
        a,
        t,
        h = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
        o = 0,
        c = r.length,
        d = "";
      o < c;

    ) {
      if (((e = 255 & r.charCodeAt(o++)), o == c)) {
        (d += h.charAt(e >> 2)), (d += h.charAt((3 & e) << 4)), (d += "==");
        break;
      }
      if (((a = r.charCodeAt(o++)), o == c)) {
        (d += h.charAt(e >> 2)),
          (d += h.charAt(((3 & e) << 4) | ((240 & a) >> 4))),
          (d += h.charAt((15 & a) << 2)),
          (d += "=");
        break;
      }
      (t = r.charCodeAt(o++)),
        (d += h.charAt(e >> 2)),
        (d += h.charAt(((3 & e) << 4) | ((240 & a) >> 4))),
        (d += h.charAt(((15 & a) << 2) | ((192 & t) >> 6))),
        (d += h.charAt(63 & t));
    }
    return d;
  },
  base64_decode: function (r) {
    for (
      var e,
        a,
        t,
        h,
        o = new Array(
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          62,
          -1,
          -1,
          -1,
          63,
          52,
          53,
          54,
          55,
          56,
          57,
          58,
          59,
          60,
          61,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          -1,
          -1,
          -1,
          -1,
          -1,
          -1,
          26,
          27,
          28,
          29,
          30,
          31,
          32,
          33,
          34,
          35,
          36,
          37,
          38,
          39,
          40,
          41,
          42,
          43,
          44,
          45,
          46,
          47,
          48,
          49,
          50,
          51,
          -1,
          -1,
          -1,
          -1,
          -1
        ),
        c = 0,
        d = r.length,
        i = "";
      c < d;

    ) {
      do {
        e = o[255 & r.charCodeAt(c++)];
      } while (c < d && -1 == e);
      if (-1 == e) break;
      do {
        a = o[255 & r.charCodeAt(c++)];
      } while (c < d && -1 == a);
      if (-1 == a) break;
      i += String.fromCharCode((e << 2) | ((48 & a) >> 4));
      do {
        if (61 == (t = 255 & r.charCodeAt(c++))) return i;
        t = o[t];
      } while (c < d && -1 == t);
      if (-1 == t) break;
      i += String.fromCharCode(((15 & a) << 4) | ((60 & t) >> 2));
      do {
        if (61 == (h = 255 & r.charCodeAt(c++))) return i;
        h = o[h];
      } while (c < d && -1 == h);
      if (-1 == h) break;
      i += String.fromCharCode(((3 & t) << 6) | h);
    }
    return i;
  },
};