{"version":3,"file":"overrides-reader.js","mappings":"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","sources":["webpack://@gfn-sdk/nv-gfn-client-sdk/webpack/universalModuleDefinition","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/aes.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/cipher-core.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/core.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/enc-base64.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/enc-base64url.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/enc-utf16.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/evpkdf.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/format-hex.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/hmac.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/index.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/lib-typedarrays.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/md5.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/mode-cfb.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/mode-ctr-gladman.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/mode-ctr.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/mode-ecb.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/mode-ofb.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/pad-ansix923.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/pad-iso10126.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/pad-iso97971.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/pad-nopadding.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/pad-zeropadding.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/pbkdf2.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/rabbit-legacy.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/rabbit.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/rc4.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/ripemd160.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/sha1.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/sha224.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/sha256.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/sha3.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/sha384.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/sha512.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/tripledes.js","webpack://@gfn-sdk/nv-gfn-client-sdk/./node_modules/crypto-js/x64-core.js","webpack://@gfn-sdk/nv-gfn-client-sdk/webpack/bootstrap","webpack://@gfn-sdk/nv-gfn-client-sdk/webpack/runtime/define property getters","webpack://@gfn-sdk/nv-gfn-client-sdk/webpack/runtime/global","webpack://@gfn-sdk/nv-gfn-client-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@gfn-sdk/nv-gfn-client-sdk/webpack/runtime/make namespace object","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/core/utils.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/api-error.types.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/api-error.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/platform/platform.types.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/logging/logging.types.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/logging/console-log-writer.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/logging/logging.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/core/event-emitter.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/configuration/configuration.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/storage/local-storage.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/storage/storage-factory.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/overrides/overrides.types.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/overrides/overrides.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/api-overrides-reader.ts","webpack://@gfn-sdk/nv-gfn-client-sdk/./src/client/index-overrides-reader.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* Copyright (c) 2020-2025, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\nimport { SHA256 as cryptoJsSHA256, enc as cryptoJsEnc } from \"crypto-js\";\r\nimport { IObject, Nullable, Rect, TUnionToIntersection, Undefined, UserActivationStatus, BrowserPermissionName } from \"./util.types\";\r\n\r\n// This must be captured at script load time. Callbacks will not have this data set.\r\nconst CURRENT_SCRIPT: Nullable = document.currentScript as Nullable;\r\n\r\n/**\r\n * Collection of general utilities.\r\n */\r\nexport namespace Utils {\r\n\r\n\r\n /**\r\n * Returns true if the argument not null or undefined\r\n *\r\n * This is to avoid cases like when `if (v)` fails due to v being zero\r\n *\r\n * @param v\r\n * value being checked\r\n *\r\n * @returns true if v is not null or undefined\r\n */\r\n export function isDefined(v: any): boolean {\r\n return v !== null && v !== undefined;\r\n }\r\n\r\n /**\r\n * Normalizes a language identifier so that it is properly separated by ```separator```.\r\n * e.g. enUS -> en_US or en-US -> en_US.\r\n *\r\n * @param langCode\r\n * The language code to normalize.\r\n *\r\n * @param separator\r\n * The character to use as a separator.\r\n *\r\n */\r\n export function normalizeLanguageCode(langCode: string, separator: string = \"_\"): string {\r\n let idx: number = langCode.indexOf(\"-\");\r\n\r\n if (idx === -1) {\r\n idx = langCode.indexOf(\"_\");\r\n }\r\n\r\n // the input lang does not contain a '-' or '_' so we will try\r\n // a simple length check, if that fails then not much we can do\r\n if (idx === -1) {\r\n\r\n // language codes should always start with a two-letter country/region code, which can\r\n // then be followed by at least a two-letter language/dialect or sub-region code (e.g. zh-Hans or az-Latn)\r\n if (langCode.length > 3) {\r\n return langCode.substr(0, 2) + separator + langCode.substr(2);\r\n }\r\n\r\n // just return the original since we wouldn't know what to do\r\n // with it, e.g. 'en', 'ENU', ...\r\n return langCode;\r\n }\r\n\r\n const lang: string = langCode.substr(0, idx);\r\n const country: string = langCode.substr(idx + 1, langCode.length);\r\n\r\n return lang.toLowerCase() + separator + country.toUpperCase();\r\n }\r\n\r\n\r\n /**\r\n * Represents the result of a polling operation.\r\n */\r\n export interface PollResult {\r\n done: boolean;\r\n result?: T;\r\n }\r\n\r\n\r\n /**\r\n * Polls a function for a specified interval until it completes or has timed out.\r\n *\r\n * @param pollFunc\r\n * The function to poll.\r\n *\r\n * @param intervalMs\r\n * The interval (in milliseconds) to poll the function.\r\n *\r\n * @param timeoutMs\r\n * The amount of time (in milliseconds) without completing until the polling is then stopped.\r\n *\r\n * @returns\r\n * The value of type T.\r\n *\r\n * ## Usage Example\r\n * [[include:utils.poll.md]]\r\n *\r\n */\r\n export function poll(pollFunc: () => Promise>, intervalMs: number = 1000, timeoutMs: number = 5000): Promise {\r\n const endTs: number = Date.now() + timeoutMs;\r\n const doPoll = (resolve: any, reject: any): void => {\r\n Promise.resolve(pollFunc())\r\n .then((pollResult: PollResult) => {\r\n if (pollResult.done) {\r\n resolve(pollResult.result);\r\n }\r\n else if (Date.now() >= endTs) {\r\n reject(new Error(\"timeout_expired\"));\r\n }\r\n else {\r\n window.setTimeout(doPoll, intervalMs, resolve, reject);\r\n }\r\n })\r\n .catch((err) => {\r\n reject(err);\r\n });\r\n };\r\n\r\n return new Promise(doPoll);\r\n }\r\n\r\n /**\r\n * Perform a setTimeout to mimic sleep in an async function or promise.\r\n *\r\n * @param ms\r\n * The number of milliseconds to sleep for.\r\n *\r\n * @returns\r\n * A resolved Promise when `ms` has elapsed.\r\n */\r\n export function sleep(ms: number): Promise {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n\r\n /**\r\n * Returns a new function which will postpone the execution until after `delay` milliseconds\r\n * have elapsed since the last time it was invoked.\r\n *\r\n * @param func\r\n * The function to execute.\r\n *\r\n * @param delay\r\n * The amount of time (in milliseconds) to wait until executing the function.\r\n *\r\n * @returns\r\n * A new debounced function.\r\n */\r\n export function debounce any>(func: T, delay: number): (...args: Parameters) => void {\r\n let tid: ReturnType | undefined;\r\n\r\n return (...args: Parameters) => {\r\n if (tid) {\r\n clearTimeout(tid);\r\n }\r\n\r\n tid = setTimeout(() => {\r\n func(...args);\r\n }, delay);\r\n };\r\n }\r\n\r\n\r\n /**\r\n * Returns the origin plus full path that is hosting the SDK script, including the name of the script.\r\n *\r\n * @returns\r\n * The origin + pathname of the SDK script, including the basename\r\n */\r\n export function getScriptPath(scriptSrc: string = CURRENT_SCRIPT!.src): URL {\r\n if (!scriptSrc) {\r\n throw new Error(`Could not determine the current script. \"document.currentScript\" is ${CURRENT_SCRIPT}`);\r\n }\r\n\r\n return new URL(scriptSrc);\r\n }\r\n\r\n\r\n /**\r\n * Returns the basename of the SDK script.\r\n *\r\n * @returns\r\n * The basename of the SDK script as a string\r\n */\r\n export function getScriptName(scriptSrc: string = CURRENT_SCRIPT!.src): string {\r\n if (!scriptSrc) {\r\n throw new Error(`Could not determine the current script. \"document.currentScript\" is ${CURRENT_SCRIPT}`);\r\n }\r\n\r\n return scriptSrc.substring(scriptSrc.lastIndexOf(\"/\") + 1);\r\n }\r\n\r\n\r\n /**\r\n * Returns the origin (protocol + domain + port) that is hosting the SDK script.\r\n *\r\n * For example, if hosted at https://foo.bar:8001/baz/sdk.js, then return https://foo.bar:8001\r\n *\r\n * @returns\r\n * The origin + pathname of the SDK script, without the basename\r\n */\r\n export function getScriptOrigin(scriptSrc: string = CURRENT_SCRIPT!.src): string {\r\n if (!scriptSrc) {\r\n throw new Error(`Could not determine the current script. \"document.currentScript\" is ${CURRENT_SCRIPT}`);\r\n }\r\n\r\n const url = new URL(scriptSrc);\r\n return url.origin;\r\n }\r\n\r\n\r\n /**\r\n * Returns the origin plus full path that is hosting the SDK script.\r\n *\r\n * For example, if hosted at https://foo.bar/baz/component/component.js, then return https://foo.bar/baz\r\n *\r\n * @returns\r\n * The origin + pathname of the SDK script, without the basename\r\n */\r\n export function getScriptOriginRootPath(scriptSrc: string = CURRENT_SCRIPT!.src): string {\r\n if (!scriptSrc) {\r\n throw new Error(`Could not determine the current script. \"document.currentScript\" is ${CURRENT_SCRIPT}`);\r\n }\r\n\r\n const path = getScriptOriginPath(scriptSrc);\r\n const scriptName = getScriptName(scriptSrc);\r\n if (scriptName === \"gfn-client-sdk.js\") {\r\n return path;\r\n } else {\r\n return path.substring(0, path.lastIndexOf(\"/\"));\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Returns the origin plus full path that is hosting the SDK script.\r\n *\r\n * For example, if hosted at https://foo.bar/baz/component/component.js, then return https://foo.bar/baz/component\r\n *\r\n * @returns\r\n * The origin + pathname of the SDK script, without the basename\r\n */\r\n export function getScriptOriginPath(scriptSrc: string = CURRENT_SCRIPT!.src): string {\r\n if (!scriptSrc) {\r\n throw new Error(`Could not determine the current script. \"document.currentScript\" is ${CURRENT_SCRIPT}`);\r\n }\r\n\r\n return scriptSrc.substring(0, scriptSrc.lastIndexOf(\"/\"));\r\n }\r\n\r\n\r\n /**\r\n * Device utilities.\r\n */\r\n export namespace device {\r\n /**\r\n * Gets the size of the window's outer rectangle.\r\n *\r\n * @returns\r\n * A {@link Rect} that contains the windows outer dimensions.\r\n */\r\n export function getWindowRect(): Rect {\r\n return {\r\n x: window.screenX,\r\n y: window.screenY,\r\n width: window.outerWidth,\r\n height: window.outerHeight\r\n };\r\n }\r\n\r\n /**\r\n * Gets the details about the user's current activation.\r\n *\r\n * @returns\r\n * A {@link UserActivationStatus} that contains information on\r\n * whether the user has activated the document.\r\n */\r\n export function getUserActivationStatus(): UserActivationStatus {\r\n if (\"userActivation\" in navigator) {\r\n return {\r\n hasUserActivationAPI: true,\r\n hasBeenActive: (navigator).userActivation.hasBeenActive,\r\n isActive: (navigator).userActivation.isActive\r\n }\r\n }\r\n\r\n return {\r\n hasUserActivationAPI: false,\r\n hasBeenActive: false,\r\n isActive: false\r\n }\r\n }\r\n\r\n /**\r\n * Gets status of browser permission.\r\n *\r\n * @param name\r\n * A {@link BrowserPermissionName} for which permission status is required\r\n *\r\n * @returns\r\n * a boolean indicating whether permission has been granted or not.\r\n */\r\n export async function getBrowserPermissionStatus(name: BrowserPermissionName): Promise {\r\n let isGranted: boolean = false;\r\n\r\n await navigator.permissions.query({ name: name as PermissionName }).then((result) => {\r\n isGranted = (result.state === \"granted\" || result.state === \"prompt\");\r\n }).catch((error) => {\r\n throw new Error(`Failed to get ${name} status. ${error}`);\r\n });\r\n return isGranted;\r\n }\r\n }\r\n\r\n /**\r\n * Crypto utilities.\r\n */\r\n export namespace crypt {\r\n /**\r\n * Represents an encoding to use for the\r\n * output of a hashing function.\r\n */\r\n export enum Encoding {\r\n /**\r\n * The string is encoded as Base 64.\r\n */\r\n Base64,\r\n\r\n /**\r\n * The string is encoded as Base 64 url.\r\n */\r\n Base64Url,\r\n\r\n /**\r\n * The string is encoded as Base 16 hex.\r\n */\r\n Hex,\r\n }\r\n\r\n\r\n /**\r\n * Creates a SHA-256 checksum from a string buffer.\r\n *\r\n * @param buffer\r\n * The input string buffer to hash.\r\n *\r\n * @param enc\r\n * The output encoding; optional. The default is {@link crypt.Encoding.Hex}.\r\n *\r\n * @returns\r\n * SHA-256 checksum, encoded as specified with the `enc` parameter.\r\n */\r\n export async function sha256(buffer: string, enc: Encoding = Encoding.Hex): Promise {\r\n // Web Crypto API is only available in secure context\r\n // unless on localhost or loopback IP address\r\n if (\"crypto\" in window && crypto.subtle) {\r\n // encode as UTF-8\r\n const msgBuffer: Uint8Array = new TextEncoder().encode(buffer);\r\n\r\n // Hash the message\r\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", msgBuffer);\r\n\r\n // convert ArrayBuffer to Array\r\n const hashArray = Array.from(new Uint8Array(hashBuffer));\r\n\r\n switch (enc) {\r\n case Encoding.Base64:\r\n return base64.encode(String.fromCharCode.apply(null, hashArray));\r\n case Encoding.Base64Url:\r\n return base64.url_encode(String.fromCharCode.apply(null, hashArray));\r\n case Encoding.Hex:\r\n default:\r\n return hashArray.map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\r\n }\r\n }\r\n\r\n // native crypto lib not available, use Crypto-JS instead\r\n switch (enc) {\r\n case Encoding.Base64:\r\n return cryptoJsSHA256(buffer).toString(cryptoJsEnc.Base64);\r\n case Encoding.Base64Url:\r\n return cryptoJsSHA256(buffer).toString(cryptoJsEnc.Base64url);\r\n case Encoding.Hex:\r\n default:\r\n return cryptoJsSHA256(buffer).toString(cryptoJsEnc.Hex);\r\n }\r\n }\r\n\r\n /**\r\n * Creates a random set of encoded values.\r\n *\r\n * @param size\r\n * The number of values to return in the decoded string.\r\n *\r\n * @param enc\r\n * The output encoding; optional. The default is {@link crypt.Encoding.Hex}.\r\n *\r\n * @returns\r\n * A random set of values, encoded as specified with the `enc` parameter.\r\n */\r\n export function random(size: number = 16, enc: Encoding = Encoding.Hex): string {\r\n if (\"crypto\" in window && \"getRandomValues\" in crypto) {\r\n const rand = Array.from(crypto.getRandomValues(new Uint8Array(size)));\r\n\r\n switch (enc) {\r\n case Encoding.Base64:\r\n return base64.encode(String.fromCharCode.apply(null, rand));\r\n case Encoding.Base64Url:\r\n return base64.url_encode(String.fromCharCode.apply(null, rand));\r\n case Encoding.Hex:\r\n default:\r\n return rand.map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\r\n }\r\n }\r\n\r\n // native crypto lib not available, use Crypto-JS instead\r\n const rand = CryptoJS.lib.WordArray.random(size);\r\n\r\n switch (enc) {\r\n case Encoding.Base64:\r\n return rand.toString(cryptoJsEnc.Base64);\r\n case Encoding.Base64Url:\r\n return rand.toString(cryptoJsEnc.Base64url);\r\n case Encoding.Hex:\r\n default:\r\n return rand.toString(cryptoJsEnc.Hex);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Unique identifier (UUID/GUID) utilities.\r\n */\r\n export namespace uuid {\r\n /**\r\n * Creates a new globally unique identifier based on\r\n * {@link https://tools.ietf.org/html/rfc4122#section-4.2.2 | section 4.2.2 Generation Details of RFC 4122}\r\n *\r\n * @returns\r\n * A string that contains a unique identifier.\r\n */\r\n export function create(): string {\r\n let d: number = Date.now();\r\n // This is based on UUID generation logic\r\n const uuid: string = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c: string) {\r\n /* tslint:disable:no-bitwise */\r\n const r: number = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === \"x\" ? r : (r & 0x3) | 0x8).toString(16);\r\n /* tslint:enable:no-bitwise */\r\n });\r\n\r\n return uuid;\r\n }\r\n }\r\n\r\n /**\r\n * Url utilities.\r\n */\r\n export namespace url {\r\n\r\n /**\r\n * Creates an new {@link https://developer.mozilla.org/en-US/docs/Web/API/URL | URL} from the\r\n * specified baseUrl and paths. Useful for when multiple paths need to be properly concatenated\r\n * to form a valid url.\r\n *\r\n * @param baseUrl\r\n * The root url to append all paths to.\r\n *\r\n * @param paths\r\n * On or more paths to append to baseUrl.\r\n */\r\n export function create(baseUrl: string, ...paths: string[]): URL {\r\n let urlPath: string = \"\";\r\n\r\n for (const p of paths) {\r\n if (p.length === 0) {\r\n continue;\r\n }\r\n\r\n if (urlPath.length > 0) {\r\n urlPath += \"/\";\r\n }\r\n\r\n urlPath += p;\r\n }\r\n\r\n urlPath = normalizeUrlPath(urlPath);\r\n\r\n let url: URL = new URL(baseUrl);\r\n let pathname: string = url.pathname;\r\n\r\n if (pathname.endsWith(\"/\")) {\r\n pathname = pathname.substr(0, pathname.length - 1);\r\n }\r\n\r\n if (urlPath.length > 0) {\r\n pathname += \"/\" + urlPath;\r\n }\r\n\r\n url.pathname = pathname;\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Normalizes a url path so that all separators are the same (e.g. either all `/` or all `\\`).\r\n *\r\n * @param urlPath\r\n * The url path to normalize.\r\n *\r\n * @returns\r\n * If normalization occurred, the normalized url; otherwise, the original url.\r\n */\r\n export function normalizeUrlPath(urlPath: string): string {\r\n let result: string = urlPath;\r\n\r\n // switch separators '\\' -> '/'\r\n if (result.indexOf(\"\\\\\") !== -1) {\r\n result = result.replace(/[\\\\]+/g, \"/\");\r\n }\r\n\r\n // remove prefix/suffix and dups\r\n if (result.indexOf(\"/\") !== -1) {\r\n const paths: string[] = result.split(\"/\");\r\n result = \"\";\r\n\r\n for (const p of paths) {\r\n if (p.length > 0) {\r\n\r\n if (result.length > 0) {\r\n result += \"/\";\r\n }\r\n\r\n result += p;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n /**\r\n * DOM utilities.\r\n */\r\n export namespace dom {\r\n /**\r\n * Determines which an element can go fullscreen under the current browser.\r\n *\r\n * @param element\r\n * Element that wants to go fullscreen.\r\n *\r\n * @returns\r\n * Boolean indicating whether or not the element can go fullscreen.\r\n */\r\n export function supportsRequestFullscreen(element: HTMLElement): boolean {\r\n return (\r\n (document.fullscreenEnabled && element.requestFullscreen) ||\r\n ((document as any).webkitFullscreenEnabled && (element as any).webkitRequestFullscreen)\r\n );\r\n }\r\n\r\n /**\r\n * Requests an element to be fullscreen\r\n *\r\n * @param element\r\n * Element that will be made fullscreen, if possible.\r\n */\r\n export function requestFullscreen(element: HTMLElement): Promise {\r\n if (!supportsRequestFullscreen(element)) {\r\n throw new Error(\"Fullscreen not supported\");\r\n }\r\n if (element.requestFullscreen) {\r\n return element.requestFullscreen();\r\n } else if ((element as any).webkitRequestFullscreen) {\r\n return (element as any).webkitRequestFullscreen();\r\n } else {\r\n throw new Error(\"No available method to enter fullscreen\");\r\n }\r\n }\r\n\r\n function oncontextmenu(event: MouseEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n export function disableContextMenu() {\r\n document.addEventListener(\"contextmenu\", oncontextmenu);\r\n }\r\n\r\n export function restoreContextMenu() {\r\n document.removeEventListener(\"contextmenu\", oncontextmenu);\r\n }\r\n\r\n function onkeydown(event: KeyboardEvent): void {\r\n if ((event.code === \"KeyI\" && event.ctrlKey && event.shiftKey)\r\n || (event.code === \"KeyJ\" && event.ctrlKey && event.shiftKey)\r\n || (event.code === \"KeyU\" && event.ctrlKey)\r\n || (event.code === \"F12\")\r\n || (event.code === \"KeyC\" && event.shiftKey && event.metaKey)\r\n || (event.code === \"KeyI\" && event.altKey && event.metaKey)\r\n || (event.code === \"KeyJ\" && event.altKey && event.metaKey)\r\n || (event.code === \"KeyU\" && event.altKey && event.metaKey)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n export function disableDevTools() {\r\n window.addEventListener(\"keydown\", onkeydown);\r\n }\r\n\r\n export function restoreDevTools() {\r\n window.removeEventListener(\"keydown\", onkeydown);\r\n }\r\n\r\n /**\r\n * Takes an path to a stylesheet and adds it to the webpage\r\n *\r\n * @param cssFilePath\r\n * Stylesheet URL\r\n * @param id\r\n * Optional id to the stylesheet link element to help avoid duplication\r\n */\r\n export function applyStylesheet(cssFilePath: string, id?: string) {\r\n if (id && document.getElementById(id)) {\r\n return;\r\n }\r\n let css = document.createElement(\"link\");\r\n css.type = \"text/css\";\r\n css.rel = \"stylesheet\";\r\n css.href = cssFilePath;\r\n if (id) {\r\n css.id = id;\r\n }\r\n document.head.appendChild(css);\r\n }\r\n }\r\n\r\n /**\r\n * String utilities.\r\n */\r\n export namespace string {\r\n\r\n /**\r\n * Calculates the size of the string, in bytes, as utf8.\r\n *\r\n * @param me\r\n * The string to use for calculating the byte length.\r\n *\r\n * @returns\r\n * The size of the string, in bytes.\r\n */\r\n export function size(me: string): number {\r\n if (!me) {\r\n return 0;\r\n }\r\n\r\n // https://stackoverflow.com/questions/5515869/string-length-in-bytes-in-javascript\r\n\r\n if (typeof TextEncoder !== \"undefined\") {\r\n return (new TextEncoder().encode(me)).byteLength;\r\n }\r\n\r\n // the initial size will be either 1 or 2 per character, e.g. js strings\r\n // are UTF-16, so a single 4 byte char will be encoded as 2 16-bit chars\r\n // and thus the `length` of that single 4 byte char string will be 2.\r\n let sz: number = me.length;\r\n\r\n for (let i: number = me.length - 1; i >= 0; i--) {\r\n const code: number = me.charCodeAt(i);\r\n\r\n if (code >= 0x0080 && code < 0x0800) {\r\n sz++;\r\n } else if (code >= 0x0800 && code <= 0xFFFF) {\r\n sz += 2;\r\n }\r\n\r\n // trailing surrogate\r\n if (code >= 0xDC00 && code <= 0XDFFF) {\r\n i--;\r\n }\r\n }\r\n\r\n return sz;\r\n }\r\n\r\n /**\r\n * Tests whether a string is equal to another string.\r\n *\r\n * @param me\r\n * The first string to compare with.\r\n *\r\n * @param val\r\n * The second string to compare with.\r\n *\r\n * @param caseSensitive\r\n * True to perform case-sensitive comparison; otherwise, false to perform case-insensitive comparison.\r\n *\r\n * @returns\r\n * True if the test string is equal to the specified value.\r\n */\r\n export function equals(me: string, val: string, caseSensitive: boolean = false): boolean {\r\n if (!me || caseSensitive) {\r\n return (me === val);\r\n }\r\n\r\n return (me.toLocaleLowerCase() === val.toLocaleLowerCase());\r\n }\r\n\r\n /**\r\n * Tests whether a string contains with another string.\r\n *\r\n * @param me\r\n * The string to test.\r\n *\r\n * @param val\r\n * The string to check within the test string.\r\n *\r\n * @param caseSensitive\r\n * True to perform case-sensitive comparison; otherwise, false to perform case-insensitive comparison.\r\n *\r\n * @returns\r\n * True if the test string contains the specified value.\r\n */\r\n export function contains(me: string, val: string, caseSensitive: boolean = false): boolean {\r\n if (!me) {\r\n return false;\r\n }\r\n\r\n if (caseSensitive) {\r\n return me.includes(val);\r\n }\r\n\r\n return me.toLocaleLowerCase().includes(val.toLocaleLowerCase());\r\n }\r\n\r\n /**\r\n * Tests whether a string starts with another string.\r\n *\r\n * @param me\r\n * The string to test.\r\n *\r\n * @param val\r\n * The string to compare against the start of the test string.\r\n *\r\n * @param caseSensitive\r\n * True to perform case-sensitive comparison; otherwise, false to perform case-insensitive comparison.\r\n *\r\n * @returns\r\n * True if the test string starts with specified value.\r\n */\r\n export function startsWith(me: string, val: string, caseSensitive: boolean = false): boolean {\r\n if (!me) {\r\n return false;\r\n }\r\n\r\n if (caseSensitive) {\r\n return me.startsWith(val);\r\n }\r\n\r\n return me.toLocaleLowerCase().startsWith(val.toLocaleLowerCase());\r\n }\r\n\r\n /**\r\n * Tests whether a string ends with another string.\r\n *\r\n * @param me\r\n * The string to test.\r\n *\r\n * @param val\r\n * The string to compare against the end of the test string.\r\n *\r\n * @param caseSensitive\r\n * True to perform case-sensitive comparison; otherwise, false to perform case-insensitive comparison.\r\n *\r\n * @returns\r\n * True if the test string ends with specified value.\r\n */\r\n export function endsWith(me: string, val: string, caseSensitive: boolean = false): boolean {\r\n if (!me) {\r\n return false;\r\n }\r\n\r\n if (caseSensitive) {\r\n return me.endsWith(val);\r\n }\r\n\r\n return me.toLocaleLowerCase().endsWith(val.toLocaleLowerCase());\r\n }\r\n\r\n /**\r\n * Creates a new string from an array of utf8 characters.\r\n *\r\n * @param buffer\r\n * An array of utf8 characters.\r\n *\r\n * @returns\r\n * A new string.\r\n */\r\n export function fromArrayBuffer(buffer: ArrayBuffer): string {\r\n if (typeof TextDecoder !== \"undefined\") {\r\n return new TextDecoder().decode(buffer);\r\n }\r\n\r\n const charBuffer: Uint8Array = new Uint8Array(buffer);\r\n const arr: number[] = Array.from(charBuffer) as number[];\r\n const str: string = String.fromCharCode.apply(null, arr);\r\n\r\n return str;\r\n }\r\n\r\n /**\r\n * Creates a new UTF-8 ArrayBuffer from a string.\r\n *\r\n * @param text\r\n * A string\r\n *\r\n * @returns\r\n * An array of utf8 characters.\r\n */\r\n export function toArrayBuffer(text: string): ArrayBuffer {\r\n let uint8 = new TextEncoder().encode(text);\r\n let arrayBuffer = new ArrayBuffer(uint8.byteLength);\r\n let byteView = new DataView(arrayBuffer);\r\n for (let i = 0; i < uint8.byteLength; i++) {\r\n byteView.setUint8(i, uint8[i]);\r\n }\r\n return arrayBuffer;\r\n }\r\n\r\n /**\r\n * Converts an array of any data to a string. Can be used for logging\r\n * arbitrary data to a file.\r\n *\r\n * @param args\r\n * An array of arbitrary data\r\n *\r\n * @returns\r\n * Stringified data\r\n */\r\n export function stringify(args: any[]) {\r\n let logText = \"\";\r\n const tabChar = \"\\t\";\r\n for (const log of args) {\r\n try {\r\n logText += typeof log === \"string\" ? log : JSON.stringify(log, null, tabChar);\r\n logText += \" \";\r\n } catch (e) { }\r\n }\r\n\r\n return logText;\r\n }\r\n\r\n /**\r\n * Converts a decimal number into a hexidecimal string representation.\r\n *\r\n * @param me\r\n * The number to convert.\r\n *\r\n * @param padding\r\n * The number of leading zeros to add to the hexidecimal string.\r\n *\r\n * @returns\r\n * A new string.\r\n */\r\n export function hex(me: number, padding: number = 0, unsigned: boolean = true): string {\r\n // treat the number as unsigned, e.g. if we want the output for -1041121119\r\n // to be 0xC1F1C0A1 instead of 0x-3E0E3F5F, we must convert\r\n if (unsigned) {\r\n me >>>= 0;\r\n }\r\n return `0x${me.toString(16).toUpperCase().padStart(padding, \"0\")}`;\r\n }\r\n\r\n /**\r\n * Safely removes leading and trailing whitespace from a string. No error is thrown when the specified\r\n * string is null or undefined.\r\n *\r\n * @param me\r\n * The string to trim.\r\n *\r\n * @returns\r\n * The original string with leading and trailing whitespace characters removed or, the original string\r\n * as-is if it is null or undefined.\r\n */\r\n export function trim(me: string): string {\r\n if (!me) {\r\n return me;\r\n }\r\n\r\n return me.trim();\r\n }\r\n }\r\n\r\n /**\r\n * Math utilities.\r\n */\r\n export namespace math {\r\n /**\r\n * Tests whether two decimal numbers are close enough to be considered equal\r\n *\r\n * @param v1\r\n * First value\r\n *\r\n * @param v2\r\n * Second value\r\n *\r\n * @param precision\r\n * Optional precision value\r\n *\r\n * @returns\r\n * True if they are within the given precision, false otherwise\r\n */\r\n export function floatEquals(v1: number, v2: number, precision: number = 0.001): boolean {\r\n return (Math.abs(v1 - v2) <= precision)\r\n };\r\n\r\n /**\r\n * Returns the modulo of two numbers, always giving a positive result. For example, mod(-1, 12) === 11\r\n *\r\n * @param v1\r\n * Dividend\r\n *\r\n * @param v2\r\n * Divisor\r\n *\r\n * @returns\r\n * The modulus of the two arguments.\r\n */\r\n export function mod(v1: number, v2: number): number {\r\n return ((v1 % v2) + v2) % v2;\r\n };\r\n }\r\n\r\n /**\r\n * Date utilities.\r\n */\r\n export namespace date {\r\n export enum DayOfWeek {\r\n Monday = \"Mon\",\r\n Tuesday = \"Tue\",\r\n Wednesday = \"Wed\",\r\n Thursday = \"Thu\",\r\n Friday = \"Fri\",\r\n Saturday = \"Sat\",\r\n Sunday = \"Sun\"\r\n }\r\n\r\n /** @private **/\r\n const DAYS: string[] = [\r\n DayOfWeek.Sunday,\r\n DayOfWeek.Monday,\r\n DayOfWeek.Tuesday,\r\n DayOfWeek.Wednesday,\r\n DayOfWeek.Thursday,\r\n DayOfWeek.Friday,\r\n DayOfWeek.Saturday\r\n ]\r\n\r\n /**\r\n * Takes a day of the week, and returns the date of the most\r\n * recent occurance of that day, non-inclusive of today. The result\r\n * is between 1 and 7 days ago.\r\n *\r\n * @param day\r\n * Day of the week to look for. {@link DayOfWeek}\r\n *\r\n * @param date\r\n * Optional date to start from, defaults to now\r\n *\r\n * @returns\r\n * Date object representing the most recent occurance of this day.\r\n */\r\n export function getLastDay(day: DayOfWeek | string, date = new Date()) {\r\n if (!DAYS.includes(day)) {\r\n throw new Error(\"Invalid day provided. Must be one of \" + DAYS);\r\n }\r\n\r\n const lastDate: number = date.getDate() - ((date.getDay() + DAYS.length - DAYS.indexOf(day)) % 7 || 7);\r\n return new Date(date.getFullYear(), date.getMonth(), lastDate);\r\n }\r\n\r\n /**\r\n * Takes a day of the week, and returns the date of the next occurence of\r\n * that day, inclusive of today.\r\n *\r\n * @param day\r\n * Day of the week to look for. {@link DayOfWeek}\r\n *\r\n * @param date\r\n * Optional date to start from, defaults to now\r\n *\r\n * @returns\r\n * Date object representing the next occurence of day.\r\n */\r\n export function getNextDay(day: DayOfWeek | string, date = new Date()) {\r\n if (!DAYS.includes(day)) {\r\n throw new Error(\"Invalid day provided. Must be one of \" + DAYS);\r\n }\r\n\r\n const nextDate: number = date.getDate() + (DAYS.indexOf(day) - date.getDay());\r\n return new Date(date.getFullYear(), date.getMonth(), nextDate);\r\n }\r\n\r\n /**\r\n * Converts a date into a UTC date.\r\n *\r\n * @param date\r\n * The date to convert.\r\n *\r\n * @returns\r\n * A UTC date.\r\n */\r\n export function toUTC(date: Date): Date {\r\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\r\n }\r\n\r\n /**\r\n * Adds two dates\r\n *\r\n * @param firstDateMs\r\n * First date in number of milliseconds since 0 (i.e. Thu, 01 Jan 1970 00:00:00 GMT)\r\n *\r\n * @param secondDateMs\r\n * Second date in number of milliseconds since 0 (i.e. Thu, 01 Jan 1970 00:00:00 GMT)\r\n *\r\n * @returns\r\n * Sum of the two dates as a Date object\r\n */\r\n export function add(firstDateMs: number, secondDateMs: number): Date {\r\n return new Date(firstDateMs + secondDateMs);\r\n }\r\n }\r\n\r\n /**\r\n * Base64 utilities.\r\n */\r\n export namespace base64 {\r\n\r\n /**\r\n * Decodes a base64 encoded string.\r\n *\r\n * @param str\r\n * The string to decode.\r\n *\r\n * @returns\r\n * The decoded string.\r\n */\r\n export function decode(str: string): string {\r\n return atob(str);\r\n }\r\n\r\n\r\n /**\r\n * Encodes a string into a base64 string.\r\n *\r\n * @param str\r\n * The string to encode.\r\n *\r\n * @returns\r\n * The encoded string.\r\n */\r\n export function encode(str: string): string {\r\n return btoa(str);\r\n }\r\n\r\n /**\r\n * Decodes a url base64 encoded string back into it's original form.\r\n *\r\n * @param str\r\n * The string to be encoded.\r\n *\r\n * @returns\r\n * The decoded string.\r\n *\r\n */\r\n export function url_decode(str: string): string {\r\n let padding: number = (4 - str.length % 4) % 4;\r\n\r\n while (padding-- > 0) {\r\n str += \"=\";\r\n }\r\n\r\n str = str.replace(/\\-/g, \"+\");\r\n str = str.replace(/\\_/g, \"/\");\r\n\r\n return decode(str);\r\n }\r\n\r\n /**\r\n * Encodes a string to a base64 encoded string capable of being transmitting\r\n * in a url (e.g. as a query parameter)./\r\n *\r\n * All padding characters ```=``` are removed, the ```+``` character is replaced\r\n * with a ```-``` character and the ```/``` character is replaced with the ```_```\r\n * character.\r\n *\r\n * @param str\r\n * The string to be encoded.\r\n *\r\n * @returns\r\n * The encoded string.\r\n */\r\n export function url_encode(str: string): string {\r\n let result: string = encode(str);\r\n result = result.replace(/\\=/g, \"\");\r\n result = result.replace(/\\+/g, \"-\");\r\n result = result.replace(/\\//g, \"_\");\r\n return result;\r\n }\r\n }\r\n\r\n export namespace array {\r\n /**\r\n * Finds an array element matching the predicate.\r\n *\r\n * @param arr\r\n * The array to look in\r\n *\r\n * @param predicate\r\n * The predicate function used for matching, or an instance to match directly.\r\n *\r\n * @returns\r\n * The first matching element if any, else undefined\r\n */\r\n export function find(arr: Array, predicate: (T | ((elem: T) => boolean))): Undefined {\r\n if (!Array.isArray(arr)) {\r\n return undefined;\r\n }\r\n if (typeof predicate === \"function\") {\r\n for (const elem of arr) {\r\n if ((predicate as ((elem: T) => boolean))(elem)) {\r\n return elem;\r\n }\r\n }\r\n } else {\r\n for (const elem of arr) {\r\n if (elem === predicate) {\r\n return elem;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n }\r\n\r\n export namespace object {\r\n\r\n /**\r\n * Check if a given field exists on the object.\r\n *\r\n * @param obj\r\n * The object to look in.\r\n *\r\n * @param field\r\n * The field to look for.\r\n *\r\n * @returns\r\n * True, if the field exists in the object; otherwise, false.\r\n */\r\n export function exists(obj: any, field: string): boolean {\r\n return (obj && field && field in obj);\r\n }\r\n\r\n /**\r\n * Makes a deep copy of the specified object.\r\n *\r\n * @param obj\r\n * The object to be cloned.\r\n *\r\n * @returns\r\n * A new object that is a deep copy of the original.\r\n */\r\n export function clone(obj: any): any {\r\n if (obj === null || typeof obj !== \"object\") {\r\n return obj;\r\n }\r\n\r\n if (obj instanceof Array) {\r\n const arrCopy = [];\r\n for (const el of obj) {\r\n arrCopy.push(clone(el));\r\n }\r\n\r\n return arrCopy;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n return new Date(obj.getTime());\r\n }\r\n\r\n if (obj instanceof Object) {\r\n const objCopy: Record = {};\r\n for (const p in obj) {\r\n if (obj.hasOwnProperty(p)) {\r\n objCopy[p] = clone(obj[p]);\r\n }\r\n }\r\n return objCopy;\r\n }\r\n\r\n throw new Error(\"The object cannot be cloned. Unsupported type found.\");\r\n }\r\n\r\n /**\r\n * Takes an object and dereferences a path from the given dot notation. For example:\r\n *\r\n * const obj = {a: 1, b: 2, c: {x: \"foo\", y: \"bar\"}}\r\n * dereference(obj, \"a\"); // 1\r\n * dereference(obj, \"c.x\"); // \"foo\"\r\n *\r\n * @param obj\r\n * The object to look up values from\r\n * @param path\r\n * The path to the desired property given in dot notation\r\n *\r\n * @returns\r\n * The value found at the given path. Returns undefined if the lookup fails\r\n */\r\n export function dereference(obj: any, path: string): any {\r\n return path.split(\".\").reduce((o, i) => (o || {})[i], obj);\r\n }\r\n\r\n /**\r\n * Checks to see if a value is an object\r\n *\r\n * @param value\r\n * The value to be checked\r\n *\r\n * @returns\r\n * True if the value is an object\r\n */\r\n export function isObject(value: any) {\r\n return (typeof value === \"object\" && value !== null);\r\n }\r\n\r\n /**\r\n * Deep merge multiple objects.\r\n *\r\n * @param objects\r\n * One or more objects to deep merge\r\n */\r\n export const deepmerge = (\r\n ...objects: T\r\n ): TUnionToIntersection =>\r\n objects.reduce((res, cur) => {\r\n Object.keys(cur).forEach((k) => {\r\n if (Array.isArray(res[k]) && Array.isArray(cur[k])) {\r\n res[k] = Array.from(new Set(res[k].concat(cur[k])));\r\n } else if (Utils.object.isObject(res[k]) && Utils.object.isObject(cur[k])) {\r\n res[k] = deepmerge(res[k], cur[k]);\r\n } else {\r\n res[k] = cur[k];\r\n }\r\n });\r\n\r\n return res;\r\n }, {}) as any;\r\n\r\n /**\r\n * Similar to Array.map()\r\n */\r\n export function map(obj: any, fn: any) {\r\n return Object.assign({}, ...Object.entries(obj).map(([k, v]) => ({[k]: fn(v)})));\r\n }\r\n\r\n /**\r\n * Masks the value of one or more specified fields.\r\n *\r\n * @param data\r\n * The data object that contains one of the keys to whose value should be masked.\r\n *\r\n * @param props\r\n * One or more property keys whose value should be masked\r\n *\r\n * @return\r\n * A new object with the values for the specified keys replaced with a mask.\r\n */\r\n export function maskPropertyValue(data: any, props: string[]): any {\r\n const mask = \"***\";\r\n const newDataObj = { ... data };\r\n\r\n for (const key in newDataObj) {\r\n if (props.includes(key)) {\r\n newDataObj[key] = mask;\r\n continue;\r\n }\r\n\r\n if (typeof newDataObj[key] === \"object\" && newDataObj[key] !== null) {\r\n newDataObj[key] = maskPropertyValue(newDataObj[key], props);\r\n }\r\n }\r\n\r\n return newDataObj;\r\n }\r\n }\r\n}\r\n","/* Copyright (c) 2021-2025, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\n/**\r\n * The following are GFN Client SDK errors in our Unified Error Code format (https://confluence.nvidia.com/display/GNCE/New+Schema+Format).\r\n *\r\n * +----------+----------+---------+------------+\r\n * | 31 -- 28 | 27 -- 24 | 23 - 16 | 15 ----- 0 |\r\n * +----------+----------+---------+------------+\r\n * | SEVERITY | REP SVC | ORIGIN | ERROR CODE |\r\n * +----------+----------+---------+------------+\r\n *\r\n * SEVERITY\r\n * ----------------------------------------------\r\n * WARNING: 0000 (0x0)\r\n * ERROR: 1000 (0x8)\r\n * USER VISIBLE: 0100 (0x4)\r\n * USER INITIATED: 0010 (0x2)\r\n * RESERVED: 0001 (0x1)\r\n *\r\n *\r\n * For GFN Client SDK errors, use the following bits:\r\n * REP SVC: 0\r\n * ORIGIN: FA\r\n * ERROR CODE: Byte 3 is the API where the error occurred, otherwise\r\n * the remaining bits are open for defining new errors\r\n *\r\n *\r\n * API ERROR CATEGORY\r\n * ----------------------------------------------\r\n * 0x0 - generic / core / common / logging\r\n * 0x1 - catalog api\r\n * 0x2 - configuration api\r\n * 0x3 - device api\r\n * 0x4 - platform api\r\n * 0x5 - entitlement api\r\n * 0x6 - idm api\r\n * 0x7 - server api\r\n * 0x8 - storage api\r\n * 0x9 - streamer api\r\n * 0xA - network test api\r\n * 0xB - rest api\r\n * 0xC - streamer ui api\r\n * 0xD - overrides tool api\r\n *\r\n * Example:\r\n * 0xC0FA8123\r\n * -> User Visible Error\r\n * -> GFN Client SDK\r\n * -> Streamer API\r\n * -> Error: 123\r\n *\r\n *\r\n * @internal\r\n */\r\n\r\nenum ErrorOrigin {\r\n ClientSDK = 0xFA\r\n}\r\n\r\nenum ErrorBits {\r\n Origin = (ErrorOrigin.ClientSDK << 16), // GFN Client SDK\r\n Warning = (0x00 << 24) | Origin,\r\n Error = (0x80 << 24) | Origin,\r\n UserVisibleWarning = (0x40 << 24) | Origin,\r\n UserVisibleError = (0xC0 << 24) | Origin,\r\n}\r\n\r\nenum CategoryId {\r\n Generic = 0x0,\r\n Catalog = 0x1,\r\n Configuration = 0x2,\r\n Device = 0x3,\r\n Platform = 0x4,\r\n Entitlement = 0x5,\r\n Auth = 0x6,\r\n Server = 0x7,\r\n Storage = 0x8,\r\n Streamer = 0x9,\r\n NetworkTest = 0xA,\r\n Rest = 0xB,\r\n StreamerUI = 0xC,\r\n OverridesTool = 0xD,\r\n Telemetry = 0xE,\r\n}\r\n\r\nenum CategoryBits {\r\n Generic = CategoryId.Generic << 12,\r\n Catalog = CategoryId.Catalog << 12,\r\n Configuration = CategoryId.Configuration << 12,\r\n Device = CategoryId.Device << 12,\r\n Platform = CategoryId.Platform << 12,\r\n Entitlement = CategoryId.Entitlement << 12,\r\n Auth = CategoryId.Auth << 12,\r\n Server = CategoryId.Server << 12,\r\n Storage = CategoryId.Storage << 12,\r\n Streamer = CategoryId.Streamer << 12,\r\n NetworkTest = CategoryId.NetworkTest << 12,\r\n Rest = CategoryId.Rest << 12,\r\n StreamerUI = CategoryId.StreamerUI << 12,\r\n OverridesTool = CategoryId.OverridesTool << 12,\r\n Telemetry = CategoryId.Telemetry << 12,\r\n}\r\n\r\n// NOTE: if it makes sense to do so, be sure to add a message to\r\n// the message table below the enum.\r\n\r\n/**\r\n * Represents a well-defined error code that can occur within the SDK.\r\n */\r\nexport enum APIErrorCode {\r\n /**\r\n * No error; the result was a success.\r\n */\r\n Success = 0,\r\n\r\n\r\n // ===============================================================\r\n // GENERIC / COMMON ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n GenericError = ErrorBits.Error | CategoryBits.Generic,\r\n\r\n /**\r\n * The error is not known or an API call failed with an unexpected error.\r\n */\r\n Unknown = GenericError | 1,\r\n\r\n /**\r\n * The operation has been cancelled.\r\n */\r\n Cancelled = GenericError | 2,\r\n\r\n /**\r\n * There was a network error.\r\n */\r\n Network = GenericError | 3,\r\n\r\n /**\r\n * There was an error while executing an http request.\r\n */\r\n Http = GenericError | 4,\r\n\r\n /**\r\n * A required parameter is missing.\r\n */\r\n MissingParameter = GenericError | 5,\r\n\r\n /**\r\n * A required parameter is invalid.\r\n */\r\n InvalidParameter = GenericError | 6,\r\n\r\n /**\r\n * The state is not valid for the current operation.\r\n */\r\n InvalidState = GenericError | 7,\r\n\r\n /**\r\n * The operation or feature is not supported.\r\n */\r\n NotSupported = GenericError | 8,\r\n\r\n /**\r\n * The operation or feature has not yet been implemented.\r\n */\r\n NotImplemented = GenericError | 9,\r\n\r\n // use specific error codes for vpcId, having a missing or invalid vpcId\r\n // is not all that uncommon and being able to know this by an error\r\n // code will speed up partner issues.\r\n\r\n /**\r\n * The VpcID is missing. The VpcID must be provided to the API being called or set via {@link Settings.vpcId | GFN.settings.vpcId}\r\n */\r\n MissingVpcId = GenericError | 10,\r\n\r\n /**\r\n * The VpcId provided is not valid.\r\n */\r\n InvalidVpcId = GenericError | 11,\r\n\r\n /**\r\n * The translation data failed to load.\r\n */\r\n CannotLoadTranslationData = GenericError | 12,\r\n\r\n /**\r\n * The version provided is not valid.\r\n */\r\n InvalidVersion = GenericError | 13,\r\n\r\n\r\n // ===============================================================\r\n // CATALOG ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n CatalogError = ErrorBits.Error | CategoryBits.Catalog,\r\n\r\n /**\r\n * No layout list was found.\r\n */\r\n MissingLayoutList = CatalogError | 1,\r\n\r\n\r\n // ===============================================================\r\n // CONFIGURATION ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n ConfigurationError = ErrorBits.Error | CategoryBits.Configuration,\r\n\r\n /**\r\n * The Starfleet configuration is not available.\r\n */\r\n StarfleetConfigurationUnavailable = ConfigurationError | 1,\r\n\r\n /**\r\n * The internal configuration cannot be overridden.\r\n */\r\n AttempedInternalConfigurationOverride = ConfigurationError | 2,\r\n\r\n\r\n // ===============================================================\r\n // DEVICE ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n DeviceError = ErrorBits.Error | CategoryBits.Device,\r\n\r\n /**\r\n * The device is not supported.\r\n */\r\n DeviceNotSupported = DeviceError | 1,\r\n\r\n /**\r\n * There was an error while invoking the callback.\r\n */\r\n InvokeCallbackFailed = DeviceError | 2,\r\n\r\n /**\r\n * The native device info is not valid.\r\n */\r\n InvalidDeviceInfo = DeviceError | 3,\r\n\r\n /**\r\n * The native device information could not be generated.\r\n */\r\n CannotCreateDeviceInfo = DeviceError | 4,\r\n\r\n /**\r\n * The feature is not supported.\r\n */\r\n FeatureNotSupported = DeviceError | 5,\r\n\r\n\r\n // ===============================================================\r\n // PLATFORM ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n PlatformError = ErrorBits.Error | CategoryBits.Platform,\r\n\r\n /**\r\n * The runtime host is not supported for the platform.\r\n */\r\n RuntimeHostNotSupported = PlatformError | 1,\r\n\r\n /**\r\n * The GFN Client SDK initialization failed.\r\n */\r\n SDKInitializationFailed = PlatformError | 2,\r\n\r\n /**\r\n * The GFN Client SDK has not yet been initialized. The {@link API.initialize | GFN.initialize} call must first be made before using the SDK.\r\n */\r\n SDKIsNotInitialized = PlatformError | 3,\r\n\r\n /**\r\n * The {@link Settings} must be provided.\r\n */\r\n MissingSettings = PlatformError | 4,\r\n\r\n /**\r\n * The runtime version is too old for the client. For example, using a 1.x runtime with a 2.x client is not supported.\r\n */\r\n RuntimVersionOld = PlatformError | 5,\r\n\r\n /**\r\n * The runtime version is too new for the client. For example, using a 2.x runtime with a 1.x client is not supported.\r\n */\r\n RuntimVersionNew = PlatformError | 6,\r\n\r\n\r\n // ===============================================================\r\n // ENTITLEMENT ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n EntitlementError = ErrorBits.Error | CategoryBits.Entitlement,\r\n\r\n /**\r\n * The user subscription is not valid.\r\n */\r\n InvalidSubscription = EntitlementError | 1,\r\n\r\n /**\r\n * The application was not found.\r\n */\r\n AppNotFound = EntitlementError | 2,\r\n\r\n\r\n // ===============================================================\r\n // AUTH ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n AuthError = ErrorBits.Error | CategoryBits.Auth,\r\n\r\n /**\r\n * The access token could not be found.\r\n */\r\n MissingToken = AuthError | 1,\r\n\r\n /**\r\n * Unable to refresh access token when no user has been authorized.\r\n */\r\n RefreshTokenWithNoUser = AuthError | 2,\r\n\r\n /**\r\n * Unable to refresh access token when no user has been authorized.\r\n */\r\n RefreshTokenWithNoClientToken = AuthError | 3,\r\n\r\n /**\r\n * The device authorization was cancelled.\r\n */\r\n DeviceAuthorizationCancelled = AuthError | 4,\r\n\r\n /**\r\n * The device authorization failed.\r\n */\r\n DeviceAuthorizationFailed = AuthError | 5,\r\n\r\n /**\r\n * Unable to create a login window.\r\n */\r\n CannotCreateLoginWindow = AuthError | 6,\r\n\r\n /**\r\n * The main application window has been closed.\r\n */\r\n MainWindowClosed = AuthError | 7,\r\n\r\n /**\r\n * The token is not valid.\r\n */\r\n InvalidToken = AuthError | 8,\r\n\r\n /**\r\n * The login was cancelled.\r\n */\r\n LoginCancelled = AuthError | 9,\r\n\r\n /**\r\n * The login failed.\r\n */\r\n LoginFailed = AuthError | 10,\r\n\r\n /**\r\n * The result from the authorization flow could not be found.\r\n */\r\n MissingAuthorizationResult = AuthError | 11,\r\n\r\n /**\r\n * The serialized user is malformed.\r\n */\r\n SerializedUserMalformed = AuthError | 12,\r\n\r\n /**\r\n * The user was not found in storage.\r\n */\r\n UserNotFoundInStorage = AuthError | 13,\r\n\r\n /**\r\n * The user endpoint could not be found.\r\n */\r\n UserEndpointNotFound = AuthError | 14,\r\n\r\n /**\r\n * The authorization state is not valid.\r\n */\r\n InvalidAuthState = AuthError | 15,\r\n\r\n /**\r\n * The user is not logged in.\r\n */\r\n UserNotLoggedIn = AuthError | 16,\r\n\r\n /**\r\n * The user is not authorized.\r\n */\r\n UserNotAuthorized = AuthError | 17,\r\n\r\n /**\r\n * The user account is not linked\r\n */\r\n UserAccountNotLinked = AuthError | 18,\r\n\r\n // ===============================================================\r\n // SERVER ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n ServerError = ErrorBits.Error | CategoryBits.Server,\r\n\r\n /**\r\n * The server information is not valid.\r\n */\r\n InvalidServerInfo = ServerError | 1,\r\n // don't include in error description table, this is only to add a code\r\n // when a response that returns a request status entity does not include\r\n // a unified error code - which should be an unlikely case.\r\n\r\n /**\r\n * The unified error code was missing from the response.\r\n */\r\n MissingUnifiedErrorCode = ServerError | 2,\r\n\r\n\r\n // ===============================================================\r\n // STORAGE ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n StorageError = ErrorBits.Error | CategoryBits.Storage,\r\n\r\n /**\r\n * There is not storage API available to use.\r\n */\r\n StorageUnavailable = StorageError | 1,\r\n\r\n\r\n // ===============================================================\r\n // STREAMER ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n StreamerError = ErrorBits.Error | CategoryBits.Streamer,\r\n\r\n /**\r\n * The intro player could be initialized.\r\n */\r\n CannotInitializeIntroPlayer = StreamerError | 1,\r\n\r\n /**\r\n * The intro animation could not be loaded.\r\n */\r\n CannotLoadIntroAnimation = StreamerError | 2,\r\n\r\n /**\r\n * The streaming session has not yet been setup.\r\n */\r\n NoStreamingSession = StreamerError | 3,\r\n\r\n /**\r\n * The streamer failed to setup a session.\r\n */\r\n StreamingSessionSetupFailed = StreamerError | 4,\r\n\r\n /**\r\n * An error occurred while trying to access the streamer DOM.\r\n */\r\n StreamerDOMError = StreamerError | 5,\r\n\r\n /**\r\n * Too many messages in a short period of time\r\n */\r\n MessageThrottled = StreamerError | 6,\r\n\r\n /**\r\n * The operation timed out while waiting for the streamer to stop.\r\n */\r\n WaitForStopTimeout = StreamerError | 7,\r\n\r\n\r\n // ===============================================================\r\n // NETWORK TEST ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n NetworkTestError = ErrorBits.Error | CategoryBits.NetworkTest,\r\n\r\n /**\r\n * The network test could not be run.\r\n */\r\n CannotRunNetworkTest = NetworkTestError | 1,\r\n\r\n\r\n // ===============================================================\r\n // REST ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n RestError = ErrorBits.Error | CategoryBits.Rest,\r\n\r\n /**\r\n * Could not request remote config.\r\n */\r\n RestErrorGetRemoteConfigError = RestError | 1,\r\n\r\n // ===============================================================\r\n // UI ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n UIError = ErrorBits.Error | CategoryBits.StreamerUI,\r\n\r\n /**\r\n * Could not find the data needed to create the UI.\r\n */\r\n UINoDataError = UIError | 1,\r\n\r\n\r\n // ===============================================================\r\n // OVERRIDE TOOL ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n OverridesError = ErrorBits.Error | CategoryBits.OverridesTool,\r\n\r\n /**\r\n * No parent override found.\r\n */\r\n OverridesNoParent = OverridesError | 1,\r\n\r\n /**\r\n * An error occured while acessing the DOM.\r\n */\r\n OverridesDOMError = OverridesError | 2,\r\n\r\n /**\r\n * There was a mismatch between the overrides data and the overrides schema.\r\n */\r\n OverridesSchemaError = OverridesError | 3,\r\n\r\n\r\n // ===============================================================\r\n // TELEMETRY ERRORS\r\n // ===============================================================\r\n /** @internal **/\r\n TelemetryError = ErrorBits.Error | CategoryBits.Telemetry,\r\n\r\n /**\r\n * There was an error with the feedback.\r\n */\r\n TelemetryFeedbackFailed = TelemetryError | 1,\r\n\r\n /**\r\n * The feedback request is invalid.\r\n */\r\n TelemetryFeedbackBadRequest = TelemetryError | 2,\r\n\r\n /**\r\n * The feedback JSON is too large.\r\n */\r\n TelemetryFeedbackJSONTooBig = TelemetryError | 3,\r\n\r\n /**\r\n * The feedback data is invalid.\r\n */\r\n TelemetryFeedbackInvalid = TelemetryError | 4,\r\n\r\n /**\r\n * The feedback identifier has already been used.\r\n */\r\n TelemetryFeedbackIdInUse = TelemetryError | 5,\r\n\r\n /**\r\n * The feedback identifier is invalid.\r\n */\r\n TelemetryFeedbackIdInvalid = TelemetryError | 6,\r\n\r\n /**\r\n * The feedback attachment was rejected.\r\n */\r\n TelemetryFeedbackAttachmentRejected = TelemetryError | 7,\r\n\r\n /**\r\n * The client id provided is unknown.\r\n */\r\n TelemetryFeedbackUnknownClientId = TelemetryError | 8,\r\n\r\n /**\r\n * The feedback upload detected an out-of-order frame.\r\n */\r\n TelemetryFeedbackNonSequentialFrame = TelemetryError | 9,\r\n\r\n /**\r\n * The feedback contains incorrect content.\r\n */\r\n TelemetryFeedbackWrongContent = TelemetryError | 10,\r\n\r\n /**\r\n * There was an error with the feedback server.\r\n */\r\n TelemetryFeedbackServerError = TelemetryError | 11,\r\n}\r\n\r\n/** @internal **/\r\nexport const APIErrorCodeMessageTable: Map = new Map([\r\n [APIErrorCode.Cancelled, \"The operation has been cancelled.\"],\r\n [APIErrorCode.Network, \"Network error.\"],\r\n [APIErrorCode.Http, \"HTTP error.\"],\r\n [APIErrorCode.MissingParameter, \"Parameter is missing.\"],\r\n [APIErrorCode.InvalidParameter, \"Parameter is invalid.\"],\r\n [APIErrorCode.NotSupported, \"Not supported.\"],\r\n [APIErrorCode.NotImplemented, \"Not implemented.\"],\r\n [APIErrorCode.MissingVpcId, \"The 'vpcId' is missing.\"],\r\n [APIErrorCode.InvalidVpcId, \"The 'vpcId' is invalid.\"],\r\n [APIErrorCode.CannotLoadTranslationData, \"Unable to load translation data.\"],\r\n [APIErrorCode.MissingLayoutList, \"Layout list not found.\"],\r\n [APIErrorCode.StarfleetConfigurationUnavailable, \"Authorization configuration is unavailable.\"],\r\n [APIErrorCode.AttempedInternalConfigurationOverride, \"Attempted override of internal configuration\"],\r\n [APIErrorCode.DeviceNotSupported, \"This device is not supported.\"],\r\n [APIErrorCode.InvokeCallbackFailed, \"The browser callback failed.\"],\r\n [APIErrorCode.InvalidDeviceInfo, \"The device information is invalid.\"],\r\n [APIErrorCode.CannotCreateDeviceInfo, \"Unable to get device information from the system.\"],\r\n [APIErrorCode.FeatureNotSupported, \"Feature is not supported for this device or platform.\"],\r\n [APIErrorCode.RuntimeHostNotSupported, \"The runtime host is not supported.\"],\r\n [APIErrorCode.SDKInitializationFailed, \"Failed to initialize the GFN Client SDK.\"],\r\n [APIErrorCode.SDKIsNotInitialized, \"The GFN Client SDK must first be initialized.\"],\r\n [APIErrorCode.MissingSettings, \"Must provide settings to initialize the GFN Client SDK.\"],\r\n [APIErrorCode.InvalidSubscription, \"The users subscription is invalid.\"],\r\n [APIErrorCode.AppNotFound, \"The application could not be found.\"],\r\n [APIErrorCode.MissingToken, \"The token is missing.\"],\r\n [APIErrorCode.RefreshTokenWithNoUser, \"Unable to refresh access token when no user has been authorized.\"],\r\n [APIErrorCode.RefreshTokenWithNoClientToken, \"Unable to refresh access token without a client token.\"],\r\n [APIErrorCode.DeviceAuthorizationCancelled, \"The device authorization was cancelled.\"],\r\n [APIErrorCode.DeviceAuthorizationFailed, \"The device authorization failed.\"],\r\n [APIErrorCode.MainWindowClosed, \"The main window has been closed.\"],\r\n [APIErrorCode.CannotCreateLoginWindow, \"Unable to create a login window.\"],\r\n [APIErrorCode.InvalidToken, \"The token is invalid.\"],\r\n [APIErrorCode.LoginCancelled, \"The login was cancelled.\"],\r\n [APIErrorCode.LoginFailed, \"The login failed.\"],\r\n [APIErrorCode.MissingAuthorizationResult, \"Cannot find an authorization result.\"],\r\n [APIErrorCode.SerializedUserMalformed, \"The serialized user is malformed.\"],\r\n [APIErrorCode.UserNotFoundInStorage, \"No user was found in storage.\"],\r\n [APIErrorCode.UserEndpointNotFound, \"Unable to find an endpoint for this user.\"],\r\n [APIErrorCode.UserNotAuthorized, \"User has not been authorized.\"],\r\n [APIErrorCode.UserNotLoggedIn, \"User is not logged in.\"],\r\n [APIErrorCode.InvalidServerInfo, \"The server information is invalid.\"],\r\n [APIErrorCode.StorageUnavailable, \"Storage is not available.\"],\r\n [APIErrorCode.CannotInitializeIntroPlayer, \"Unable to initialize the intro animation player.\"],\r\n [APIErrorCode.CannotLoadIntroAnimation, \"Unable to load the intro animation.\"],\r\n [APIErrorCode.NoStreamingSession, \"Session has not been setup.\"],\r\n [APIErrorCode.StreamingSessionSetupFailed, \"Unable to create streaming session.\"],\r\n [APIErrorCode.StreamerDOMError, \"Error manipulating DOM for streaming.\"],\r\n [APIErrorCode.CannotRunNetworkTest, \"Unable to run a network test.\"],\r\n [APIErrorCode.UserAccountNotLinked, \"User Account is not Linked\"],\r\n]);","/* Copyright (c) 2021-2024, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\nimport { APIErrorCode, APIErrorCodeMessageTable } from \"./api-error.types\";\r\nimport { Undefined } from \"./core/util.types\";\r\nimport { Utils } from \"./core/utils\";\r\n\r\n/**\r\n * A type that represents an error code.\r\n */\r\nexport type ErrorCode = APIErrorCode | number;\r\n\r\n/**\r\n * Represents the base error that can be thrown by the GFN Client SDK.\r\n */\r\nexport class APIError extends Error {\r\n private readonly mCode: ErrorCode;\r\n private readonly mMessage?: string;\r\n\r\n /**\r\n * The error code that describes a specific error.\r\n */\r\n public get code(): ErrorCode {\r\n return this.mCode;\r\n }\r\n\r\n /**\r\n * The error message.\r\n */\r\n public get message(): string {\r\n return this.mMessage || \"\";\r\n }\r\n\r\n /** @internal **/\r\n constructor(code: ErrorCode, message?: Undefined) {\r\n super();\r\n\r\n this.name = this.constructor.name;\r\n this.mCode = code;\r\n this.mMessage = message || APIErrorCodeMessageTable.get(code);\r\n }\r\n\r\n /**\r\n * Get a detailed string representation of this error. The\r\n * returned string will include all or some of the message,\r\n * code and stack trace of this error.\r\n *\r\n * @returns\r\n * A detailed error string.\r\n */\r\n public toString(): string {\r\n let msg: string = this.message;\r\n\r\n if (msg) {\r\n msg += \" \";\r\n }\r\n\r\n msg += `(${Utils.string.hex(this.code, 8)})`;\r\n\r\n if (this.stack) {\r\n msg += `\\n stack-> ${this.stack}`;\r\n }\r\n\r\n return `${this.name}: ${msg}`;\r\n }\r\n}","/* Copyright (c) 2020-2022, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\n/**\r\n * Represents an identifier of a host platform.\r\n */\r\nexport enum PlatformID {\r\n Browser = \"browser\",\r\n Mac = \"mac\",\r\n Windows = \"windows\",\r\n Linux = \"linux\",\r\n AppleTV = \"apple-tv\",\r\n AppleMobile = \"apple-mobile\",\r\n Android = \"android\",\r\n SamsungTV = \"samsung-tv\",\r\n Chromebook = \"chromebook\",\r\n ChromeCast = \"chromecast\",\r\n AmazonFire = \"amazon-fire\",\r\n Shield = \"shield\",\r\n LGTV = \"lg-tv\",\r\n Xbox = \"xbox\",\r\n Huawei = \"huawei\",\r\n MiBox = \"mibox\",\r\n TVision = \"tvision\",\r\n KbroA0 = \"kbroa0\",\r\n JioStb = \"jio-stb\",\r\n LGUPlus = \"lgu-plus\",\r\n Steam = \"steam\",\r\n ConnectedCar = \"connected-car\"\r\n}\r\n\r\n/**\r\n * Represents a platform classification.\r\n */\r\nexport enum PlatformClass {\r\n Web,\r\n Mobile,\r\n Desktop,\r\n TV,\r\n Console\r\n}","/* Copyright (c) 2021-2022, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\nexport enum LoggingLevel {\r\n None = -1,\r\n Error = 1,\r\n Warning,\r\n Info,\r\n Verbose,\r\n Event\r\n}\r\n\r\nexport const LOGGING_LEVEL_MAP: Map = new Map([\r\n [\"none\", LoggingLevel.None],\r\n [\"error\", LoggingLevel.Error],\r\n [\"warning\", LoggingLevel.Warning],\r\n [\"info\", LoggingLevel.Info],\r\n [\"verbose\", LoggingLevel.Verbose],\r\n [\"event\", LoggingLevel.Event],\r\n]);\r\n\r\nexport interface LoggingConfiguration {\r\n level: string\r\n}\r\n\r\nexport interface ILogger {\r\n error(...args: any[]): void;\r\n warn(...args: any[]): void;\r\n info(...args: any[]): void;\r\n verbose(...args: any[]): void;\r\n event(...args: any[]): void;\r\n raw(level: LoggingLevel, ...args: any[]): void;\r\n}\r\n\r\nexport interface ILogCallback {\r\n (level: LoggingLevel, ...logArgs: any[]) : void;\r\n}\r\n\r\nexport interface ILogWriter {\r\n write: ILogCallback;\r\n}\r\n\r\nexport interface LogMessage {\r\n level: LoggingLevel;\r\n args: any[];\r\n}\r\n\r\n/**\r\n * Represents a device log buffer with filename.\r\n */\r\nexport interface LogFile {\r\n filename: string;\r\n contents: string;\r\n}\r\n","/* Copyright (c) 2021-2022, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\nimport { ILogWriter, LoggingLevel } from \"./logging.types\";\r\n\r\nexport class ConsoleLogWriter implements ILogWriter {\r\n\r\n private readonly mConsoleFns: Map void>;\r\n\r\n constructor () {\r\n this.mConsoleFns = new Map void>([\r\n [LoggingLevel.None, (msg: string) => void {}],\r\n [LoggingLevel.Error, (msg: string) => {window.console.error(msg)}],\r\n [LoggingLevel.Warning, (msg: string) => {window.console.warn(msg)}],\r\n [LoggingLevel.Info, (msg: string) => {window.console.info(msg)}],\r\n [LoggingLevel.Verbose, (msg: string) => {window.console.log(msg)}],\r\n [LoggingLevel.Event, (msg: string) => {window.console.log(msg)}],\r\n ]);\r\n }\r\n\r\n public write(level: LoggingLevel, args: any[]) {\r\n this.mConsoleFns.get(level)!(args.join(\" \"));\r\n }\r\n}\r\n","/* Copyright (c) 2021-2022, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\nimport { ILogCallback, ILogger, ILogWriter, LoggingConfiguration, LoggingLevel, LOGGING_LEVEL_MAP, LogMessage } from \"./logging.types\";\r\nimport { ConsoleLogWriter } from \"./console-log-writer\";\r\nimport { APIError } from \"../api-error\";\r\nimport { APIErrorCode } from \"../api-error.types\";\r\nimport { Utils } from \"../core/utils\";\r\n\r\nexport class Logger implements ILogger {\r\n private mPrefix: string = \"\";\r\n private mLogCallback: ILogCallback;\r\n\r\n constructor(\r\n prefix: string,\r\n logCallback: ILogCallback\r\n ) {\r\n this.mPrefix = prefix;\r\n this.mLogCallback = logCallback;\r\n }\r\n\r\n public error(...args: any[]): void {\r\n this.logEntry(LoggingLevel.Error, args);\r\n }\r\n\r\n public warn(...args: any[]): void {\r\n this.logEntry(LoggingLevel.Warning, args);\r\n }\r\n\r\n public info(...args: any[]): void {\r\n this.logEntry(LoggingLevel.Info, args);\r\n }\r\n\r\n public verbose(...args: any[]): void {\r\n this.logEntry(LoggingLevel.Verbose, args);\r\n }\r\n\r\n public event(...args: any[]): void {\r\n this.logEntry(LoggingLevel.Event, args);\r\n }\r\n\r\n public raw(level: LoggingLevel, msg: string): void {\r\n this.mLogCallback(level, [msg]);\r\n }\r\n\r\n private logEntry(level: LoggingLevel, ...args: any[]): void {\r\n this.mLogCallback(level,[\r\n new Date().toISOString(),\r\n LoggingLevel[level].toUpperCase().padEnd(7, \" \"),\r\n this.mPrefix,\r\n ...args\r\n ]);\r\n }\r\n}\r\n\r\n/** @internal\r\n *\r\n * Initially, we don't have a logging configuration, but some components may still\r\n * want to send logs during construction or init time. So to start, create a console\r\n * log writer that write everything. At the same time, queue up any log messages that\r\n * come in.\r\n * After initialize(), create the desired list of log writers with the desired config,\r\n * and replay the queued up log messages to writers (But not the ConsoleLogWriter, since\r\n * these messages already went to console)\r\n */\r\nexport class LoggingService {\r\n private mLoggers: Map = new Map();\r\n private mLogWriters: ILogWriter[] = [];\r\n private mLoggerNamePrefix: string = \"\";\r\n private mLogLevel: LoggingLevel = LoggingLevel.Event;\r\n private mPreInitQueue: LogMessage[] = [];\r\n private mInitialized = false;\r\n\r\n public get level() {\r\n return this.mLogLevel;\r\n }\r\n\r\n public get prefix() {\r\n return this.mLoggerNamePrefix;\r\n }\r\n\r\n public constructor() {\r\n let scriptName = Utils.getScriptName();\r\n this.mLoggerNamePrefix = scriptName.substring(0, scriptName.lastIndexOf(\".\"));\r\n\r\n // We don't have the logging configuration, but create a console writer immediately\r\n // anyway to show bring-up logs directly to console\r\n this.addWriter(new ConsoleLogWriter());\r\n }\r\n\r\n public initialize(config: LoggingConfiguration) {\r\n if (!LOGGING_LEVEL_MAP.has(config.level)) {\r\n throw new APIError(APIErrorCode.InvalidParameter, `Invalid logging level ${config.level}`);\r\n }\r\n\r\n // TODO: Create writers based on LoggingConfiguration\r\n this.mLogLevel = LOGGING_LEVEL_MAP.get(config.level)!;\r\n\r\n this.mInitialized = true;\r\n this.replayPreInitLogs();\r\n\r\n return this;\r\n }\r\n\r\n public addWriter(writer: ILogWriter) {\r\n this.mLogWriters.push(writer);\r\n }\r\n\r\n public replayPreInitLogs() {\r\n // Don't replay for the first writer, that's the console log writer, which\r\n // has already printed all these logs to console.\r\n for (let i = 1; i < this.mLogWriters.length; ++i) {\r\n for (const msg of this.mPreInitQueue) {\r\n if (msg.level <= this.mLogLevel) {\r\n this.mLogWriters[i].write(msg.level, msg.args);\r\n }\r\n }\r\n }\r\n this.mPreInitQueue = [];\r\n }\r\n\r\n public clearWriters() {\r\n this.mLogWriters.length = 0;\r\n }\r\n\r\n public write(level: LoggingLevel, ...args: any[]) {\r\n if (level <= this.mLogLevel) {\r\n this.mLogWriters.forEach(function (logWriter) {\r\n logWriter.write(level, ...args);\r\n });\r\n if (!this.mInitialized) {\r\n this.mPreInitQueue.push({\r\n level: level,\r\n args: [...args]\r\n });\r\n }\r\n }\r\n }\r\n\r\n public getLogger(loggerName: string): ILogger {\r\n if (!this.mLoggers.get(loggerName)) {\r\n this.mLoggers.set(loggerName, new Logger(\r\n `${this.mLoggerNamePrefix}/${loggerName}`,\r\n this.write.bind(this)\r\n ));\r\n }\r\n return this.mLoggers.get(loggerName)!;\r\n }\r\n}\r\n\r\nexport const Logging = new LoggingService();\r\n","/* Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\nimport { Cancelable } from \"./util.types\";\r\n\r\nexport interface EventMap {\r\n [event: string]: any;\r\n}\r\n\r\nexport interface LooseEventMap extends EventMap {\r\n [event: string]: (...args: any) => void;\r\n}\r\n\r\n\r\n/**\r\n * Lightweight Events\r\n *\r\n * @example\r\n * interface MouseEvents {\r\n * mousedown: (e: MouseEvent) => void;\r\n * mouseup: (e: MouseEvent) => void;\r\n * mousemove: (e: MouseEvent) => void;\r\n * // ...\r\n * }\r\n *\r\n * class UIElement extends EventEmitter {\r\n * constructor() {\r\n * super();\r\n * }\r\n * }\r\n *\r\n * // ---\r\n * const button: UIElement = new UIElement();\r\n *\r\n * button.on(\"mousedown\", (e: MouseEvent) => {\r\n * console.log(\"Mouse Down: \", e);\r\n * });\r\n *\r\n * button.emit(\"mousedown\");\r\n *\r\n *\r\n * @example\r\n * class UIElement {\r\n * public readonly events: EventEmitter = new EventEmitter();\r\n * }\r\n *\r\n * // ---\r\n * button.events.on(\"mousedown\", ...);\r\n */\r\nexport class EventEmitter {\r\n private mHandlers: Partial<{ [TEvent in keyof TEventMap]: TEventMap[TEvent][] }> = {};\r\n\r\n /**\r\n * Attach an event handler to the specified event.\r\n *\r\n * @param event The name of the event to listen for.\r\n * @param handler The callback handler to execute when the event is emitted.\r\n *\r\n * @returns An Cancelable object that removes the event handler\r\n */\r\n public on(event: TKey, handler: TEventMap[TKey]): Cancelable {\r\n this.mHandlers[event] = this.mHandlers[event] || [];\r\n // this will never be null, we create a new array ^\r\n this.mHandlers[event]!.push(handler);\r\n\r\n return {\r\n cancel: () => (this.mHandlers[event] = this.mHandlers[event]!.filter((value: TEventMap[TKey]) => value !== handler))\r\n };\r\n }\r\n\r\n /**\r\n * Deletes an event handler on the specified event.\r\n *\r\n * @param event The name of the event\r\n * @param handler The callback handler that is associated with the event\r\n */\r\n public off(event: TKey, handler: TEventMap[TKey]): void {\r\n if (this.mHandlers[event]) {\r\n this.mHandlers[event] = this.mHandlers[event]!.filter((value: TEventMap[TKey]) => value !== handler);\r\n }\r\n }\r\n\r\n /**\r\n * Emits the specified event to all registered event handlers, each handler is called in the order\r\n * in which they are added; one after the other.\r\n *\r\n * @param event The name of the event to emit.\r\n * @param args Zero or more arguments\r\n */\r\n public emit(event: TKey, ...args: Parameters): void {\r\n const handlers: any = this.mHandlers[event];\r\n\r\n if (handlers) {\r\n for(const handler of handlers) {\r\n handler(...args);\r\n }\r\n }\r\n }\r\n}","/* Copyright (c) 2020-2023, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\n// TODO: add to a configuration file that we load during build time\r\n// TODO: add ability to override configuration values at runtime\r\n\r\nimport { Nullable, RecursivePartial } from \"../core/util.types\";\r\nimport { Utils } from \"../core/utils\";\r\nimport { CatalogConfiguration } from \"../catalog/catalog.types\";\r\nimport { LoggingConfiguration } from \"../logging/logging.types\";\r\nimport { RestClientConfiguration } from \"../rest/rest-client.types\";\r\nimport { StreamerConfiguration } from \"../streamer/streamer.types\";\r\nimport { BuildConfiguration, SdkConfiguration, BuildType, Config, NetworkTestConfiguration, NetworkIndicatorsConfiguration, ConfigurationEvents } from \"./configuration.types\";\r\nimport { APIError } from \"../api-error\";\r\nimport { APIErrorCode } from \"../api-error.types\";\r\nimport config from \"../../config/config.json\";\r\nimport { PlatformID } from \"../platform/platform.types\";\r\nimport { Logging } from \"../logging/logging\";\r\nimport { TelemetryConfiguration } from \"../telemetry/telemetry.types\";\r\nimport { FeedbackConfiguration } from \"../telemetry/feedback.types\";\r\nimport { Device } from \"../device/device\";\r\nimport { Settings } from \"../settings/settings\";\r\nimport { SettingsOverrides } from \"../settings/settings.types\";\r\nimport { HttpServerConfiguration } from \"../core/http-client.types\";\r\nimport { RemoteLoggerConfiguration } from \"../logging/remote-logger.types\";\r\nimport { GxTargetConfiguration } from \"../gxtarget/gxtarget.types\";\r\nimport { EventEmitter } from \"../core/event-emitter\";\r\nimport { AccountLinkingConfiguration } from \"../guestmode/guestmode.types\";\r\n\r\nconst logger = Logging.getLogger(\"configuration/configuration\");\r\n\r\n/**\r\n * Represents configuration that can be set at build time.\r\n * For runtime settings {@link Settings}\r\n *\r\n * @internal\r\n */\r\nexport class Configuration extends EventEmitter {\r\n private mConfig: Config;\r\n\r\n private mImmutableConfig: RecursivePartial;\r\n private mOverrideToolOverrides: RecursivePartial;\r\n private mInternalConfig: RecursivePartial;\r\n private mSettingsConfigOverrides: RecursivePartial = {};\r\n private mRemoteConfig: RecursivePartial = {};\r\n private mBaseConfig: Config;\r\n\r\n public get build(): BuildConfiguration {\r\n return this.mConfig.build;\r\n }\r\n\r\n public get sdk(): SdkConfiguration {\r\n return this.mConfig.sdk;\r\n }\r\n\r\n public get logging(): LoggingConfiguration {\r\n return this.mConfig.logging;\r\n }\r\n\r\n public get starfleet(): HttpServerConfiguration {\r\n return this.mConfig.starfleet;\r\n }\r\n\r\n public get entitlement(): HttpServerConfiguration {\r\n return this.mConfig.entitlement;\r\n }\r\n\r\n public get grid(): HttpServerConfiguration {\r\n return this.mConfig.grid;\r\n }\r\n\r\n public get accountLinking(): AccountLinkingConfiguration {\r\n return this.mConfig.accountLinking;\r\n }\r\n\r\n public get catalog(): CatalogConfiguration {\r\n return this.mConfig.catalog;\r\n }\r\n\r\n public get streamer(): StreamerConfiguration {\r\n return this.mConfig.streamer;\r\n }\r\n\r\n public get networkTest(): NetworkTestConfiguration {\r\n return this.mConfig.networkTest;\r\n }\r\n\r\n public get networkIndicators(): NetworkIndicatorsConfiguration {\r\n return this.mConfig.networkIndicators;\r\n }\r\n\r\n public get restClient(): RestClientConfiguration {\r\n return this.mConfig.restClient;\r\n }\r\n\r\n public get gxTarget(): GxTargetConfiguration {\r\n return this.mConfig.gxTarget;\r\n }\r\n\r\n public get telemetry(): TelemetryConfiguration {\r\n return this.mConfig.telemetry;\r\n }\r\n\r\n public get feedback(): FeedbackConfiguration {\r\n return this.mConfig.feedback;\r\n }\r\n\r\n public get remoteLogger(): RemoteLoggerConfiguration {\r\n return this.mConfig.remoteLogger;\r\n }\r\n\r\n public get serviceInfoUrl(): string {\r\n return Utils.url.create(this.mConfig.serviceInfo.serverUrl, this.mConfig.serviceInfo.version!).toString();\r\n }\r\n\r\n public get voltron(): HttpServerConfiguration {\r\n return this.mConfig.voltron;\r\n }\r\n\r\n public get settingsOverrides(): SettingsOverrides {\r\n return this.mConfig.settingsOverrides\r\n }\r\n\r\n constructor(device: Nullable, overridesToolOverides: RecursivePartial = {}) {\r\n super();\r\n\r\n this.mImmutableConfig = {\r\n build: {\r\n configType: config.build.configType,\r\n buildType: config.build.buildType\r\n }\r\n };\r\n\r\n this.mOverrideToolOverrides = overridesToolOverides;\r\n\r\n // This is data from config.json that cannot be overridden by Settings.configOverrides\r\n this.mInternalConfig = config.internal;\r\n\r\n // Form the base config, which can get overridden, from:\r\n // - Hardcoded platform specific overrides (on top of...)\r\n // - .json (on top of...)\r\n // - config.json (on top of...)\r\n // - Remaining calculated fields that were not overridden\r\n const calculated: RecursivePartial = Utils.object.deepmerge({\r\n sdk: {\r\n wrapperSdkUrl: Utils.getScriptPath().href\r\n },\r\n }, this.mImmutableConfig);\r\n this.mBaseConfig = Utils.object.deepmerge(\r\n {\r\n settingsOverrides: {}\r\n },\r\n calculated,\r\n config,\r\n this.getDeviceOverrides(device),\r\n );\r\n\r\n // Form the initial config. This won't include the RemoteConfig or\r\n // the Settings.configOverrides, which come later\r\n this.mConfig = Utils.object.deepmerge(\r\n this.mBaseConfig,\r\n this.mInternalConfig,\r\n this.mOverrideToolOverrides,\r\n this.mImmutableConfig,\r\n );\r\n }\r\n\r\n public async initialize(settings: Nullable): Promise {\r\n const settingsConfigOverrides: RecursivePartial = settings?.configOverrides || {};\r\n if (\"internal\" in settingsConfigOverrides) {\r\n throw new APIError(APIErrorCode.AttempedInternalConfigurationOverride);\r\n }\r\n\r\n this.mSettingsConfigOverrides = settingsConfigOverrides;\r\n if (settingsConfigOverrides && Object.keys(settingsConfigOverrides).length > 0) {\r\n this.mergeConfigsAndNotify();\r\n }\r\n }\r\n\r\n public updateRemoteConfig(remoteConfigParams: any): void {\r\n this.mRemoteConfig = {};\r\n\r\n // the rconfig data is returned like this:\r\n // {\r\n // \"debugInfo\": {...},\r\n // \"params\": [\r\n // { name: \"parameter1\", value: {..} },\r\n // { name: \"parameter2\", value: {..} },\r\n // ]\r\n // }\r\n // etc. We don't have a use for all of these parameters, pick out the ones we need.\r\n const ragnarok: any = Utils.array.find(remoteConfigParams, (elem: any) => elem.name === \"ragnarok\");\r\n if (ragnarok?.value) {\r\n this.mRemoteConfig = Utils.object.deepmerge(this.mRemoteConfig,\r\n {\r\n streamer: {\r\n web: {\r\n ragnarokConfigData: {\r\n remoteConfigData: {\r\n ragnarok: JSON.stringify(ragnarok.value),\r\n version: ragnarok.version,\r\n }\r\n }\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n const clientSdk: any = Utils.array.find(remoteConfigParams, (elem: any) => elem.name === \"clientSdk\");\r\n if (clientSdk?.value) {\r\n this.mRemoteConfig = Utils.object.deepmerge(this.mRemoteConfig, clientSdk.value);\r\n }\r\n\r\n if (this.mRemoteConfig && Object.keys(this.mRemoteConfig).length > 0) {\r\n this.mergeConfigsAndNotify();\r\n }\r\n }\r\n\r\n public getDeviceOverrides(device: Nullable): RecursivePartial {\r\n if (device) {\r\n const deviceOverrides: RecursivePartial = {\r\n streamer: {}\r\n };\r\n\r\n switch (device.platformId) {\r\n case PlatformID.Chromebook:\r\n case PlatformID.Huawei:\r\n case PlatformID.MiBox:\r\n case PlatformID.TVision:\r\n case PlatformID.KbroA0:\r\n case PlatformID.JioStb:\r\n logger.info(`Enabling enableStreamRecoveryWithIDR by default for PlatformID ${device.platformId}`);\r\n deviceOverrides.streamer!.android = {\r\n enableStreamRecoveryWithIDR: true\r\n }\r\n break;\r\n case PlatformID.ChromeCast:\r\n logger.info(\"Disabling DRC for chromecast device\");\r\n deviceOverrides.streamer!.android = {\r\n enableDynamicResolutionChange: false\r\n }\r\n break;\r\n }\r\n\r\n return deviceOverrides;\r\n }\r\n\r\n return {};\r\n }\r\n\r\n /**\r\n * @internal\r\n *\r\n * The final config is build in this order:\r\n *\r\n * - Immutable config like build info (on top of...)\r\n * - Overrides Tool Overrides (on top of...)\r\n * - \"Internal\" config from config.json (on top of...)\r\n * - Settings.configOverrides (on top of...)\r\n * - GXT RemoteConfig (on top of...)\r\n * - Hardcoded platform specific overrides (on top of...)\r\n * - .json (on top of...)\r\n * - config.json (on top of...)\r\n * - Remaining calculated fields that were not overridden\r\n */\r\n private mergeConfigsAndNotify() {\r\n this.mConfig = Utils.object.deepmerge(\r\n this.mBaseConfig,\r\n this.mRemoteConfig,\r\n this.mSettingsConfigOverrides,\r\n this.mInternalConfig,\r\n this.mOverrideToolOverrides,\r\n this.mImmutableConfig,\r\n );\r\n this.emit(\"updated\");\r\n }\r\n}\r\n","/* Copyright (c) 2020-2022, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\nimport { APIError } from \"../api-error\";\r\nimport { APIErrorCode } from \"../api-error.types\";\r\nimport { IStorage } from \"./storage.types\";\r\n\r\ninterface KVP {\r\n [key: string]: any;\r\n}\r\n\r\n/**\r\n * Reads and writes key/value pairs using the Web Storage API's localStorage.\r\n */\r\nexport class LocalStorage implements IStorage, IterableIterator {\r\n private mIteratorPosition = 0;\r\n\r\n /**\r\n * Returns true if local storage is available to use; otherwise, false.\r\n */\r\n public readonly available: boolean;\r\n\r\n /**\r\n * The default iterator.\r\n *\r\n * @returns\r\n * an iterator of key/value pairs.\r\n */\r\n [Symbol.iterator](): IterableIterator {\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the number of keys available in local storage.\r\n */\r\n public get size(): number {\r\n if (!this.available) {\r\n return 0;\r\n }\r\n\r\n return window.localStorage.length;\r\n }\r\n\r\n /**\r\n * Gets an iterator that can be used to get all\r\n * the keys in local storage.\r\n */\r\n private* internalkeys(): IterableIterator {\r\n this.throwWhenStorageNotAvailable();\r\n\r\n for (let i: number = 0, len: number = window.localStorage.length; i < len; ++i) {\r\n const k: string | null = window.localStorage.key(i);\r\n\r\n if (k !== null) {\r\n yield k;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Asyncronously gets an iterator that can be used to get all the keys in local storage\r\n */\r\n public async keys(): Promise> {\r\n this.throwWhenStorageNotAvailable();\r\n\r\n return new Promise((resolve, reject) => resolve(this.internalkeys()));\r\n }\r\n\r\n /** @internal **/\r\n constructor() {\r\n // if the storage isn't available when this is created then it won't become\r\n // available at runtime (e.g. disabled via webview setting), so we can just\r\n // store the result of whether we have storage or not\r\n this.available = (\"localStorage\" in window && !!window.localStorage);\r\n }\r\n\r\n /**\r\n * Iterates the key/value pairs in local storage.\r\n *\r\n * @returns\r\n * The next item, or null if the end has been reached.\r\n */\r\n public next(): IteratorResult {\r\n if (this.mIteratorPosition < this.size) {\r\n const k: string = window.localStorage.key(this.mIteratorPosition++);\r\n const v: any = window.localStorage.getItem(k);\r\n const kvp: KVP = {};\r\n kvp[k] = v;\r\n\r\n return {\r\n done: false,\r\n value: kvp\r\n };\r\n }\r\n\r\n return {\r\n done: true,\r\n value: null\r\n }\r\n }\r\n\r\n /**\r\n * Gets a value from local storage with the specified key.\r\n *\r\n * @param key\r\n * The key\r\n *\r\n * @returns\r\n * The value for the specified key; or null if the key does not exist.\r\n */\r\n public async get(key: string): Promise {\r\n this.throwWhenStorageNotAvailable();\r\n return window.localStorage.getItem(key);\r\n }\r\n\r\n /**\r\n * Sets a value for the specified key in local storage.\r\n *\r\n * @param key\r\n * The key used to identify the value.\r\n *\r\n * @param value\r\n * The value to associate with the key.\r\n */\r\n public async set(key: string, value: any): Promise {\r\n this.throwWhenStorageNotAvailable();\r\n window.localStorage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * Removes the key/value from local storage.\r\n *\r\n * @param key\r\n * The key to remove.\r\n */\r\n public async remove(key: string): Promise {\r\n this.throwWhenStorageNotAvailable();\r\n window.localStorage.removeItem(key);\r\n }\r\n\r\n /**\r\n * Clears all entries from local storage.\r\n */\r\n public async clear(): Promise {\r\n this.throwWhenStorageNotAvailable();\r\n window.localStorage.clear();\r\n }\r\n\r\n private throwWhenStorageNotAvailable(): void {\r\n if (!this.available) {\r\n throw new APIError(APIErrorCode.StorageUnavailable, \"The localStorage API is not available.\");\r\n }\r\n }\r\n}","/* Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\nimport { LocalStorage } from \"./local-storage\";\r\nimport { IStorage } from \"./storage.types\";\r\n\r\n/**\r\n * Factory class used to create an {@link IStorage} instance that\r\n * will be used for default storage operations.\r\n *\r\n * The default storage is an {@link LocalStorage}.\r\n */\r\nexport class StorageFactory {\r\n\r\n /**\r\n * Override to create an instance of an {@link IStorage}.\r\n *\r\n * @returns An instance of an {@link IStorage} that will handle\r\n * storage operations.\r\n */\r\n public create(): IStorage {\r\n return new LocalStorage();\r\n }\r\n}","/* Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\nexport const OVERRIDES_STORAGE_KEY = \"gfn-client-sdk-overrides\";\r\nexport const OVERRIDES_RETRIEVE_METHOD = \"retrieve\";\r\n","/* Copyright (c) 2022-2023, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\nimport { APIError } from \"../api-error\";\r\nimport { APIErrorCode } from \"../api-error.types\";\r\nimport { Config } from \"../configuration/configuration.types\";\r\nimport { Message, MessageHandler } from \"../core/message-handler\";\r\nimport { Nullable, RecursivePartial } from \"../core/util.types\";\r\nimport { Utils } from \"../core/utils\";\r\nimport { Logging } from \"../logging/logging\";\r\nimport { StorageFactory } from \"../storage/storage-factory\";\r\nimport { OVERRIDES_RETRIEVE_METHOD, OVERRIDES_STORAGE_KEY } from \"./overrides.types\";\r\n\r\nconst logger = Logging.getLogger(\"overrides/overrides\");\r\n\r\n/** @internal **/\r\nconst ELEMENT_ID_OVERRIDES_READER = \"gfn-overrides-reader\";\r\n\r\n/**\r\n * @internal\r\n * Read the overrides from local browser storage and return as a partial config object.\r\n */\r\nexport function ReadOverrides(): Promise> {\r\n const storage = new StorageFactory().create();\r\n return new Promise((resolve, reject) => {\r\n return storage.get(OVERRIDES_STORAGE_KEY).then((overridesStr: Nullable) => {\r\n if (!overridesStr) {\r\n resolve({});\r\n return;\r\n }\r\n\r\n try {\r\n resolve(JSON.parse(overridesStr));\r\n } catch (e) {\r\n logger.error(\"Could not parse config overrides. Returning empty {} overrides\");\r\n resolve({});\r\n }\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * @internal\r\n * Send the overrides values from the child iframe to the parent window.\r\n */\r\nexport function SendOverrides(overrides: RecursivePartial): void {\r\n window.parent.postMessage({\r\n method: OVERRIDES_RETRIEVE_METHOD,\r\n data: overrides\r\n }, \"*\");\r\n}\r\n\r\n/** @internal **/\r\nfunction GetOrCreateIFrameElement(): HTMLElement {\r\n let elem: Nullable = document.getElementById(ELEMENT_ID_OVERRIDES_READER) as HTMLIFrameElement;\r\n if (!elem) {\r\n elem = document.createElement(\"iframe\");\r\n elem.id = ELEMENT_ID_OVERRIDES_READER;\r\n elem.src = `${Utils.getScriptOriginPath()}/overrides-reader/index.html`;\r\n elem.style.display = \"none\";\r\n document.body.appendChild(elem);\r\n }\r\n\r\n if (!elem) {\r\n throw new APIError(APIErrorCode.OverridesDOMError, \"Unabled to get or create the overrides iframe element\");\r\n }\r\n\r\n return elem;\r\n}\r\n\r\n/**\r\n * @internal\r\n * Create the i-frame element that has access to the domain where the overrides data is stored.\r\n * The code running in the i-frame will read the overrides and postMessage it to us.\r\n */\r\nexport function RetrieveOverrides(): Promise> {\r\n return new Promise((resolve, reject) => {\r\n let elem: Nullable = null;\r\n const messageHandler = new MessageHandler(window, window.parent, Utils.getScriptOrigin());\r\n messageHandler.register(OVERRIDES_RETRIEVE_METHOD, (message: Message) => {\r\n messageHandler.cleanup();\r\n if (elem) {\r\n elem.remove();\r\n }\r\n resolve(message.data!);\r\n });\r\n elem = GetOrCreateIFrameElement();\r\n });\r\n}\r\n","/*\r\n * Copyright (c) 2022-2023, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\nimport { Configuration } from \"./configuration/configuration\";\r\nimport { Logging } from \"./logging/logging\";\r\nimport { ReadOverrides, SendOverrides } from \"./overrides/overrides\";\r\nimport { RecursivePartial } from \"./core/util.types\";\r\nimport { Config } from \"./configuration/configuration.types\";\r\n\r\n/**\r\n * @internal\r\n *\r\n * This script is loaded in an iframe by the GFN Client SDK. It's purpose is to\r\n * gain access to the domain's local storage, and send the info to the main\r\n * SDK instance.\r\n */\r\nexport class APIOverridesReader {\r\n /** @internal */\r\n private readonly mConfigurationPromise: Promise;\r\n private mOverrides!: RecursivePartial;\r\n\r\n /** @internal **/\r\n constructor() {\r\n this.mConfigurationPromise = new Promise((resolve, reject) => {\r\n ReadOverrides().then((overrides: RecursivePartial) => {\r\n this.mOverrides = overrides;\r\n resolve(new Configuration(null, this.mOverrides));\r\n });\r\n });\r\n\r\n this.initialize();\r\n }\r\n\r\n private async initialize(): Promise {\r\n const configuration = await this.mConfigurationPromise;\r\n await configuration.initialize(null);\r\n Logging.initialize(configuration.logging);\r\n\r\n SendOverrides(this.mOverrides);\r\n }\r\n}\r\n","/* Copyright (c) 2020-2022, NVIDIA CORPORATION. All rights reserved.\r\n *\r\n * NVIDIA CORPORATION and its licensors retain all intellectual property\r\n * and proprietary rights in and to this software, related documentation\r\n * and any modifications thereto. Any use, reproduction, disclosure or\r\n * distribution of this software and related documentation without an express\r\n * license agreement from NVIDIA CORPORATION is strictly prohibited.\r\n */\r\n\r\n/**\r\n * @packageDocumentation\r\n * @module GFN\r\n */\r\n\r\nimport { APIOverridesReader } from \"./api-overrides-reader\";\r\n\r\n/**\r\n * The main GFN Client SDK entry point\r\n */\r\nlet GFNOverridesReader = null;\r\n\r\ntry {\r\n GFNOverridesReader = new APIOverridesReader();\r\n} catch (e) {\r\n window.console.error(\"Unable to create the GFN Client SDK Overrides Reader.\", e);\r\n}\r\n\r\n(window as any)[\"GFNOverridesReader\"] = GFNOverridesReader;\r\nexport default GFNOverridesReader;\r\n"],"names":["root","factory","exports","module","define","amd","a","i","self","CryptoJS","C","BlockCipher","lib","C_algo","algo","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","d","x","xi","sx","x2","x4","x8","t","RCON","AES","extend","_doReset","this","_nRounds","_keyPriorReset","_key","key","keyWords","words","keySize","sigBytes","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","encryptBlock","M","offset","_doCryptBlock","decryptBlock","nRounds","s0","s1","s2","s3","round","t0","t1","t2","t3","_createHelper","Cipher","undefined","C_lib","Base","WordArray","BufferedBlockAlgorithm","C_enc","enc","Base64","Utf8","EvpKDF","cfg","createEncryptor","create","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","init","xformMode","_xformMode","reset","call","process","dataUpdate","_append","_process","finalize","_doFinalize","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","encrypt","message","decrypt","ciphertext","C_mode","StreamCipher","blockSize","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","block","_prevBlock","processBlock","slice","thisBlock","Pkcs7","pad","data","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","push","padding","concat","unpad","CipherParams","modeCreator","_minBufferSize","_mode","__creator","_doProcessBlock","finalProcessedBlocks","_data","cipherParams","mixIn","toString","formatter","stringify","OpenSSLFormatter","format","OpenSSL","salt","parse","openSSLStr","ciphertextWords","splice","encryptor","cipherCfg","algorithm","_parse","OpenSSLKdf","kdf","execute","password","random","compute","derivedParams","Math","crypto","window","globalThis","msCrypto","g","err","cryptoSecureRandomInt","getRandomValues","Uint32Array","randomBytes","readInt32LE","Error","Object","F","obj","subtype","prototype","overrides","hasOwnProperty","$super","apply","arguments","instance","properties","propertyName","clone","length","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","j","ceil","nBytes","hexChars","bite","join","hexStr","hexStrLength","parseInt","substr","Latin1","latin1Chars","String","fromCharCode","latin1Str","latin1StrLength","charCodeAt","decodeURIComponent","escape","e","utf8Str","unescape","encodeURIComponent","_nDataBytes","doFlush","processedWords","dataWords","dataSigBytes","nBlocksReady","nWordsReady","max","nBytesReady","min","Hasher","update","messageUpdate","hasher","_createHmacHelper","HMAC","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","map","_map","base64Chars","triplet","charAt","paddingChar","_reverseMap","paddingIndex","indexOf","Base64url","urlSafe","_safe_map","swapEndian","word","Utf16","Utf16BE","utf16Chars","codePoint","utf16Str","utf16StrLength","Utf16LE","MD5","iterations","derivedKey","derivedKeyWords","input","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","ArrayBuffer","superInit","subInit","typedArray","Uint8Array","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","buffer","byteOffset","byteLength","typedArrayByteLength","T","abs","sin","_hash","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","b","c","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","floor","nBitsTotalL","hash","H_i","s","n","HmacMD5","CFB","generateKeystreamAndEncrypt","keystream","CTRGladman","incWord","b1","b2","b3","incCounter","counter","_counter","CTR","ECB","OFB","_keystream","AnsiX923","lastBytePos","Ansix923","Iso10126","Iso97971","ZeroPadding","NoPadding","SHA1","PBKDF2","hmac","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","S","C_","G","RabbitLegacy","K","X","_X","_C","_b","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","gb","gh","gl","Rabbit","RC4","keySigBytes","_S","keyByteIndex","keyByte","_i","_j","generateKeystreamWord","keystreamWord","RC4Drop","drop","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","al","bl","cl","dl","el","ar","br","cr","dr","er","hl","hr","zl","zr","sl","sr","f1","f2","f3","f4","f5","rotl","y","z","HmacRIPEMD160","W","HmacSHA1","SHA256","SHA224","HmacSHA224","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","pow","f","h","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","HmacSHA256","X64Word","x64","Word","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","state","_state","nBlockSizeLanes","M2i","M2i1","lane","high","low","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","C_x64","X64WordArray","SHA512","SHA384","HmacSHA384","X64Word_create","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","bh","ch","dh","eh","fh","fl","hh","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","t1l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1h","t2l","toX32","HmacSHA512","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key2","key3","_des1","_des2","_des3","X32WordArray","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","o","defineProperty","enumerable","get","Function","prop","r","Symbol","toStringTag","value","CURRENT_SCRIPT","document","currentScript","ErrorOrigin","ErrorBits","CategoryId","CategoryBits","Utils","getScriptName","scriptSrc","src","substring","lastIndexOf","getScriptOriginPath","device","crypt","uuid","url","dom","string","math","date","base64","array","object","isDefined","v","normalizeLanguageCode","langCode","separator","idx","lang","country","toLowerCase","toUpperCase","poll","pollFunc","intervalMs","timeoutMs","endTs","Date","now","doPoll","resolve","reject","Promise","then","pollResult","done","result","setTimeout","catch","sleep","ms","debounce","func","delay","tid","args","clearTimeout","getScriptPath","URL","getScriptOrigin","origin","getScriptOriginRootPath","path","getWindowRect","screenX","screenY","width","outerWidth","height","outerHeight","getUserActivationStatus","navigator","hasUserActivationAPI","hasBeenActive","userActivation","isActive","getBrowserPermissionStatus","async","name","isGranted","permissions","query","error","Encoding","sha256","subtle","msgBuffer","TextEncoder","encode","hashBuffer","digest","hashArray","Array","from","Base64Url","url_encode","padStart","size","rand","replace","normalizeUrlPath","urlPath","paths","split","p","baseUrl","pathname","endsWith","supportsRequestFullscreen","element","fullscreenEnabled","requestFullscreen","webkitFullscreenEnabled","webkitRequestFullscreen","oncontextmenu","event","preventDefault","onkeydown","code","ctrlKey","shiftKey","metaKey","altKey","disableContextMenu","addEventListener","restoreContextMenu","removeEventListener","disableDevTools","restoreDevTools","applyStylesheet","cssFilePath","id","getElementById","css","createElement","type","rel","href","head","appendChild","me","sz","equals","val","caseSensitive","toLocaleLowerCase","contains","includes","startsWith","fromArrayBuffer","TextDecoder","decode","charBuffer","arr","toArrayBuffer","text","uint8","arrayBuffer","byteView","DataView","setUint8","logText","log","JSON","hex","unsigned","trim","floatEquals","v1","v2","precision","mod","DayOfWeek","DAYS","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","getLastDay","day","lastDate","getDate","getDay","getFullYear","getMonth","getNextDay","nextDate","toUTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","add","firstDateMs","secondDateMs","str","atob","btoa","url_decode","find","predicate","isArray","elem","exists","field","arrCopy","getTime","objCopy","dereference","reduce","isObject","deepmerge","objects","res","cur","keys","forEach","k","Set","fn","assign","entries","maskPropertyValue","props","newDataObj","APIErrorCode","APIErrorCodeMessageTable","Map","Cancelled","Network","Http","MissingParameter","InvalidParameter","NotSupported","NotImplemented","MissingVpcId","InvalidVpcId","CannotLoadTranslationData","MissingLayoutList","StarfleetConfigurationUnavailable","AttempedInternalConfigurationOverride","DeviceNotSupported","InvokeCallbackFailed","InvalidDeviceInfo","CannotCreateDeviceInfo","FeatureNotSupported","RuntimeHostNotSupported","SDKInitializationFailed","SDKIsNotInitialized","MissingSettings","InvalidSubscription","AppNotFound","MissingToken","RefreshTokenWithNoUser","RefreshTokenWithNoClientToken","DeviceAuthorizationCancelled","DeviceAuthorizationFailed","MainWindowClosed","CannotCreateLoginWindow","InvalidToken","LoginCancelled","LoginFailed","MissingAuthorizationResult","SerializedUserMalformed","UserNotFoundInStorage","UserEndpointNotFound","UserNotAuthorized","UserNotLoggedIn","InvalidServerInfo","StorageUnavailable","CannotInitializeIntroPlayer","CannotLoadIntroAnimation","NoStreamingSession","StreamingSessionSetupFailed","StreamerDOMError","CannotRunNetworkTest","UserAccountNotLinked","mCode","mMessage","constructor","super","msg","stack","PlatformID","PlatformClass","LoggingLevel","LOGGING_LEVEL_MAP","None","Warning","Info","Verbose","Event","ConsoleLogWriter","mConsoleFns","console","warn","info","write","level","Logger","prefix","logCallback","mPrefix","mLogCallback","logEntry","verbose","raw","toISOString","padEnd","Logging","mLogLevel","mLoggerNamePrefix","mLoggers","mLogWriters","mPreInitQueue","mInitialized","scriptName","addWriter","initialize","config","has","replayPreInitLogs","writer","clearWriters","logWriter","getLogger","loggerName","set","bind","EventEmitter","mHandlers","on","handler","cancel","filter","off","emit","handlers","logger","Configuration","build","mConfig","sdk","logging","starfleet","entitlement","grid","accountLinking","catalog","streamer","networkTest","networkIndicators","restClient","gxTarget","telemetry","feedback","remoteLogger","serviceInfoUrl","serviceInfo","serverUrl","version","voltron","settingsOverrides","overridesToolOverides","mSettingsConfigOverrides","mRemoteConfig","mImmutableConfig","configType","buildType","mOverrideToolOverrides","mInternalConfig","calculated","wrapperSdkUrl","mBaseConfig","getDeviceOverrides","settings","settingsConfigOverrides","configOverrides","mergeConfigsAndNotify","updateRemoteConfig","remoteConfigParams","ragnarok","web","ragnarokConfigData","remoteConfigData","clientSdk","deviceOverrides","platformId","Chromebook","Huawei","MiBox","TVision","KbroA0","JioStb","android","enableStreamRecoveryWithIDR","ChromeCast","enableDynamicResolutionChange","LocalStorage","iterator","available","localStorage","internalkeys","throwWhenStorageNotAvailable","len","mIteratorPosition","next","getItem","kvp","setItem","remove","removeItem","clear","StorageFactory","APIOverridesReader","mConfigurationPromise","storage","overridesStr","ReadOverrides","mOverrides","configuration","parent","postMessage","method","GFNOverridesReader"],"sourceRoot":""}