(function () { var b64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; Rakka.encodeBase64 = function (src) { var len = src.length; var i = 0; var ret = ""; while (i < len) { var c1 = src.charCodeAt(i++); if (i == len) { ret += b64Chars.charAt(c1 >> 2); ret += b64Chars.charAt((c1 & 0x03) << 4); ret += "=="; } else { var c2 = src.charCodeAt(i++); if (i == len) { ret += b64Chars.charAt(c1 >> 2); ret += b64Chars.charAt(((c1 & 0x03) << 4) | ((c2 & 0xF0) >> 4)); ret += b64Chars.charAt((c2 & 0x0F) << 2); ret += "="; } else { var c3 = src.charCodeAt(i++); ret += b64Chars.charAt(c1 >> 2); ret += b64Chars.charAt(((c1 & 0x03) << 4) | ((c2 & 0xF0) >> 4)); ret += b64Chars.charAt(((c2 & 0x0F) << 2) | ((c3 & 0xC0) >> 6)); ret += b64Chars.charAt(c3 & 0x3F); } } } return ret; }; })();