dash-button-web 0.0.21 → 0.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"file":"dash-button.entry.js","mappings":"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E,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,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","names":["global","require$$0","base64","this$1","toSvg"],"sources":["node_modules/base64-js/index.js","node_modules/js-sha256/src/sha256.js","node_modules/jwt-decode/build/esm/index.js","node_modules/keycloak-js/dist/keycloak.mjs","node_modules/jdenticon/dist/jdenticon-module.js","src/services/config.ts","src/services/menu.ts","src/components/my-component/dash-button.css?tag=dash-button&encapsulation=shadow","src/components/my-component/dash-button.tsx"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.10.1\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2023\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = require('crypto')\n var Buffer = require('buffer').Buffer;\n var algorithm = is224 ? 'sha224' : 'sha256';\n var bufferFrom;\n if (Buffer.from && !root.JS_SHA256_NO_BUFFER_FROM) {\n bufferFrom = Buffer.from;\n } else {\n bufferFrom = function (message) {\n return new Buffer(message);\n };\n }\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(bufferFrom(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n this.chromeBugWorkAround = true;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","import base64 from 'base64-js';\nimport sha256 from 'js-sha256';\nimport { jwtDecode } from 'jwt-decode';\n\n/*\n * Copyright 2016 Red Hat, Inc. and/or its affiliates\n * and other contributors as indicated by the @author tags.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nif (typeof Promise === 'undefined') {\n throw Error('Keycloak requires an environment that supports Promises. Make sure that you include the appropriate polyfill.');\n}\n\nfunction Keycloak (config) {\n if (!(this instanceof Keycloak)) {\n throw new Error(\"The 'Keycloak' constructor must be invoked with 'new'.\")\n }\n\n var kc = this;\n var adapter;\n var refreshQueue = [];\n var callbackStorage;\n\n var loginIframe = {\n enable: true,\n callbackList: [],\n interval: 5\n };\n\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n if ((scripts[i].src.indexOf('keycloak.js') !== -1 || scripts[i].src.indexOf('keycloak.min.js') !== -1) && scripts[i].src.indexOf('version=') !== -1) {\n kc.iframeVersion = scripts[i].src.substring(scripts[i].src.indexOf('version=') + 8).split('&')[0];\n }\n }\n\n var useNonce = true;\n var logInfo = createLogger(console.info);\n var logWarn = createLogger(console.warn);\n\n kc.init = function (initOptions) {\n if (kc.didInitialize) {\n throw new Error(\"A 'Keycloak' instance can only be initialized once.\");\n }\n\n kc.didInitialize = true;\n\n kc.authenticated = false;\n\n callbackStorage = createCallbackStorage();\n var adapters = ['default', 'cordova', 'cordova-native'];\n\n if (initOptions && adapters.indexOf(initOptions.adapter) > -1) {\n adapter = loadAdapter(initOptions.adapter);\n } else if (initOptions && typeof initOptions.adapter === \"object\") {\n adapter = initOptions.adapter;\n } else {\n if (window.Cordova || window.cordova) {\n adapter = loadAdapter('cordova');\n } else {\n adapter = loadAdapter();\n }\n }\n\n if (initOptions) {\n if (typeof initOptions.useNonce !== 'undefined') {\n useNonce = initOptions.useNonce;\n }\n\n if (typeof initOptions.checkLoginIframe !== 'undefined') {\n loginIframe.enable = initOptions.checkLoginIframe;\n }\n\n if (initOptions.checkLoginIframeInterval) {\n loginIframe.interval = initOptions.checkLoginIframeInterval;\n }\n\n if (initOptions.onLoad === 'login-required') {\n kc.loginRequired = true;\n }\n\n if (initOptions.responseMode) {\n if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n kc.responseMode = initOptions.responseMode;\n } else {\n throw 'Invalid value for responseMode';\n }\n }\n\n if (initOptions.flow) {\n switch (initOptions.flow) {\n case 'standard':\n kc.responseType = 'code';\n break;\n case 'implicit':\n kc.responseType = 'id_token token';\n break;\n case 'hybrid':\n kc.responseType = 'code id_token token';\n break;\n default:\n throw 'Invalid value for flow';\n }\n kc.flow = initOptions.flow;\n }\n\n if (initOptions.timeSkew != null) {\n kc.timeSkew = initOptions.timeSkew;\n }\n\n if(initOptions.redirectUri) {\n kc.redirectUri = initOptions.redirectUri;\n }\n\n if (initOptions.silentCheckSsoRedirectUri) {\n kc.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri;\n }\n\n if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n kc.silentCheckSsoFallback = initOptions.silentCheckSsoFallback;\n } else {\n kc.silentCheckSsoFallback = true;\n }\n\n if (initOptions.pkceMethod) {\n if (initOptions.pkceMethod !== \"S256\") {\n throw 'Invalid value for pkceMethod';\n }\n kc.pkceMethod = initOptions.pkceMethod;\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n kc.enableLogging = initOptions.enableLogging;\n } else {\n kc.enableLogging = false;\n }\n\n if (typeof initOptions.scope === 'string') {\n kc.scope = initOptions.scope;\n }\n\n if (typeof initOptions.acrValues === 'string') {\n kc.acrValues = initOptions.acrValues;\n }\n\n if (typeof initOptions.messageReceiveTimeout === 'number' && initOptions.messageReceiveTimeout > 0) {\n kc.messageReceiveTimeout = initOptions.messageReceiveTimeout;\n } else {\n kc.messageReceiveTimeout = 10000;\n }\n }\n\n if (!kc.responseMode) {\n kc.responseMode = 'fragment';\n }\n if (!kc.responseType) {\n kc.responseType = 'code';\n kc.flow = 'standard';\n }\n\n var promise = createPromise();\n\n var initPromise = createPromise();\n initPromise.promise.then(function() {\n kc.onReady && kc.onReady(kc.authenticated);\n promise.setSuccess(kc.authenticated);\n }).catch(function(error) {\n promise.setError(error);\n });\n\n var configPromise = loadConfig();\n\n function onLoad() {\n var doLogin = function(prompt) {\n if (!prompt) {\n options.prompt = 'none';\n }\n\n if (initOptions && initOptions.locale) {\n options.locale = initOptions.locale;\n }\n kc.login(options).then(function () {\n initPromise.setSuccess();\n }).catch(function (error) {\n initPromise.setError(error);\n });\n };\n\n var checkSsoSilently = function() {\n var ifrm = document.createElement(\"iframe\");\n var src = kc.createLoginUrl({prompt: 'none', redirectUri: kc.silentCheckSsoRedirectUri});\n ifrm.setAttribute(\"src\", src);\n ifrm.setAttribute(\"sandbox\", \"allow-storage-access-by-user-activation allow-scripts allow-same-origin\");\n ifrm.setAttribute(\"title\", \"keycloak-silent-check-sso\");\n ifrm.style.display = \"none\";\n document.body.appendChild(ifrm);\n\n var messageCallback = function(event) {\n if (event.origin !== window.location.origin || ifrm.contentWindow !== event.source) {\n return;\n }\n\n var oauth = parseCallback(event.data);\n processCallback(oauth, initPromise);\n\n document.body.removeChild(ifrm);\n window.removeEventListener(\"message\", messageCallback);\n };\n\n window.addEventListener(\"message\", messageCallback);\n };\n\n var options = {};\n switch (initOptions.onLoad) {\n case 'check-sso':\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (!unchanged) {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n }\n break;\n case 'login-required':\n doLogin(true);\n break;\n default:\n throw 'Invalid value for onLoad';\n }\n }\n\n function processInit() {\n var callback = parseCallback(window.location.href);\n\n if (callback) {\n window.history.replaceState(window.history.state, null, callback.newUrl);\n }\n\n if (callback && callback.valid) {\n return setupCheckLoginIframe().then(function() {\n processCallback(callback, initPromise);\n }).catch(function (error) {\n initPromise.setError(error);\n });\n } else if (initOptions) {\n if (initOptions.token && initOptions.refreshToken) {\n setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);\n\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (unchanged) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n scheduleCheckIframe();\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.updateToken(-1).then(function() {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n }).catch(function(error) {\n kc.onAuthError && kc.onAuthError();\n if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setError(error);\n }\n });\n }\n } else if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setSuccess();\n }\n } else {\n initPromise.setSuccess();\n }\n }\n\n function domReady() {\n var promise = createPromise();\n\n var checkReadyState = function () {\n if (document.readyState === 'interactive' || document.readyState === 'complete') {\n document.removeEventListener('readystatechange', checkReadyState);\n promise.setSuccess();\n }\n };\n document.addEventListener('readystatechange', checkReadyState);\n\n checkReadyState(); // just in case the event was already fired and we missed it (in case the init is done later than at the load time, i.e. it's done from code)\n\n return promise.promise;\n }\n\n configPromise.then(function () {\n domReady()\n .then(check3pCookiesSupported)\n .then(processInit)\n .catch(function (error) {\n promise.setError(error);\n });\n });\n configPromise.catch(function (error) {\n promise.setError(error);\n });\n\n return promise.promise;\n };\n\n kc.login = function (options) {\n return adapter.login(options);\n };\n\n function generateRandomData(len) {\n // use web crypto APIs if possible\n var array = null;\n var crypto = window.crypto || window.msCrypto;\n if (crypto && crypto.getRandomValues && window.Uint8Array) {\n array = new Uint8Array(len);\n crypto.getRandomValues(array);\n return array;\n }\n\n // fallback to Math random\n array = new Array(len);\n for (var j = 0; j < array.length; j++) {\n array[j] = Math.floor(256 * Math.random());\n }\n return array;\n }\n\n function generateCodeVerifier(len) {\n return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');\n }\n\n function generateRandomString(len, alphabet){\n var randomData = generateRandomData(len);\n var chars = new Array(len);\n for (var i = 0; i < len; i++) {\n chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length);\n }\n return String.fromCharCode.apply(null, chars);\n }\n\n function generatePkceChallenge(pkceMethod, codeVerifier) {\n switch (pkceMethod) {\n // The use of the \"plain\" method is considered insecure and therefore not supported.\n case \"S256\":\n // hash codeVerifier, then encode as url-safe base64 without padding\n var hashBytes = new Uint8Array(sha256.arrayBuffer(codeVerifier));\n var encodedHash = base64.fromByteArray(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/\\=/g, '');\n return encodedHash;\n default:\n throw 'Invalid value for pkceMethod';\n }\n }\n\n function buildClaimsParameter(requestedAcr){\n var claims = {\n id_token: {\n acr: requestedAcr\n }\n };\n return JSON.stringify(claims);\n }\n\n kc.createLoginUrl = function(options) {\n var state = createUUID();\n var nonce = createUUID();\n\n var redirectUri = adapter.redirectUri(options);\n\n var callbackState = {\n state: state,\n nonce: nonce,\n redirectUri: encodeURIComponent(redirectUri)\n };\n\n if (options && options.prompt) {\n callbackState.prompt = options.prompt;\n }\n\n var baseUrl;\n if (options && options.action == 'register') {\n baseUrl = kc.endpoints.register();\n } else {\n baseUrl = kc.endpoints.authorize();\n }\n\n var scope = options && options.scope || kc.scope;\n if (!scope) {\n // if scope is not set, default to \"openid\"\n scope = \"openid\";\n } else if (scope.indexOf(\"openid\") === -1) {\n // if openid scope is missing, prefix the given scopes with it\n scope = \"openid \" + scope;\n }\n\n var url = baseUrl\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&redirect_uri=' + encodeURIComponent(redirectUri)\n + '&state=' + encodeURIComponent(state)\n + '&response_mode=' + encodeURIComponent(kc.responseMode)\n + '&response_type=' + encodeURIComponent(kc.responseType)\n + '&scope=' + encodeURIComponent(scope);\n if (useNonce) {\n url = url + '&nonce=' + encodeURIComponent(nonce);\n }\n\n if (options && options.prompt) {\n url += '&prompt=' + encodeURIComponent(options.prompt);\n }\n\n if (options && options.maxAge) {\n url += '&max_age=' + encodeURIComponent(options.maxAge);\n }\n\n if (options && options.loginHint) {\n url += '&login_hint=' + encodeURIComponent(options.loginHint);\n }\n\n if (options && options.idpHint) {\n url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);\n }\n\n if (options && options.action && options.action != 'register') {\n url += '&kc_action=' + encodeURIComponent(options.action);\n }\n\n if (options && options.locale) {\n url += '&ui_locales=' + encodeURIComponent(options.locale);\n }\n\n if (options && options.acr) {\n var claimsParameter = buildClaimsParameter(options.acr);\n url += '&claims=' + encodeURIComponent(claimsParameter);\n }\n\n if ((options && options.acrValues) || kc.acrValues) {\n url += '&acr_values=' + encodeURIComponent(options.acrValues || kc.acrValues);\n }\n\n if (kc.pkceMethod) {\n var codeVerifier = generateCodeVerifier(96);\n callbackState.pkceCodeVerifier = codeVerifier;\n var pkceChallenge = generatePkceChallenge(kc.pkceMethod, codeVerifier);\n url += '&code_challenge=' + pkceChallenge;\n url += '&code_challenge_method=' + kc.pkceMethod;\n }\n\n callbackStorage.add(callbackState);\n\n return url;\n };\n\n kc.logout = function(options) {\n return adapter.logout(options);\n };\n\n kc.createLogoutUrl = function(options) {\n var url = kc.endpoints.logout()\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&post_logout_redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false));\n\n if (kc.idToken) {\n url += '&id_token_hint=' + encodeURIComponent(kc.idToken);\n }\n\n return url;\n };\n\n kc.register = function (options) {\n return adapter.register(options);\n };\n\n kc.createRegisterUrl = function(options) {\n if (!options) {\n options = {};\n }\n options.action = 'register';\n return kc.createLoginUrl(options);\n };\n\n kc.createAccountUrl = function(options) {\n var realm = getRealmUrl();\n var url = undefined;\n if (typeof realm !== 'undefined') {\n url = realm\n + '/account'\n + '?referrer=' + encodeURIComponent(kc.clientId)\n + '&referrer_uri=' + encodeURIComponent(adapter.redirectUri(options));\n }\n return url;\n };\n\n kc.accountManagement = function() {\n return adapter.accountManagement();\n };\n\n kc.hasRealmRole = function (role) {\n var access = kc.realmAccess;\n return !!access && access.roles.indexOf(role) >= 0;\n };\n\n kc.hasResourceRole = function(role, resource) {\n if (!kc.resourceAccess) {\n return false;\n }\n\n var access = kc.resourceAccess[resource || kc.clientId];\n return !!access && access.roles.indexOf(role) >= 0;\n };\n\n kc.loadUserProfile = function() {\n var url = getRealmUrl() + '/account';\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.profile = JSON.parse(req.responseText);\n promise.setSuccess(kc.profile);\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n\n return promise.promise;\n };\n\n kc.loadUserInfo = function() {\n var url = kc.endpoints.userinfo();\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.userInfo = JSON.parse(req.responseText);\n promise.setSuccess(kc.userInfo);\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n\n return promise.promise;\n };\n\n kc.isTokenExpired = function(minValidity) {\n if (!kc.tokenParsed || (!kc.refreshToken && kc.flow != 'implicit' )) {\n throw 'Not authenticated';\n }\n\n if (kc.timeSkew == null) {\n logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set');\n return true;\n }\n\n var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;\n if (minValidity) {\n if (isNaN(minValidity)) {\n throw 'Invalid minValidity';\n }\n expiresIn -= minValidity;\n }\n return expiresIn < 0;\n };\n\n kc.updateToken = function(minValidity) {\n var promise = createPromise();\n\n if (!kc.refreshToken) {\n promise.setError();\n return promise.promise;\n }\n\n minValidity = minValidity || 5;\n\n var exec = function() {\n var refreshToken = false;\n if (minValidity == -1) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: forced refresh');\n } else if (!kc.tokenParsed || kc.isTokenExpired(minValidity)) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: token expired');\n }\n\n if (!refreshToken) {\n promise.setSuccess(false);\n } else {\n var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;\n var url = kc.endpoints.token();\n\n refreshQueue.push(promise);\n\n if (refreshQueue.length == 1) {\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n req.withCredentials = true;\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n\n var timeLocal = new Date().getTime();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n logInfo('[KEYCLOAK] Token refreshed');\n\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n var tokenResponse = JSON.parse(req.responseText);\n\n setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);\n\n kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setSuccess(true);\n }\n } else {\n logWarn('[KEYCLOAK] Failed to refresh token');\n\n if (req.status == 400) {\n kc.clearToken();\n }\n\n kc.onAuthRefreshError && kc.onAuthRefreshError();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setError(true);\n }\n }\n }\n };\n\n req.send(params);\n }\n }\n };\n\n if (loginIframe.enable) {\n var iframePromise = checkLoginIframe();\n iframePromise.then(function() {\n exec();\n }).catch(function(error) {\n promise.setError(error);\n });\n } else {\n exec();\n }\n\n return promise.promise;\n };\n\n kc.clearToken = function() {\n if (kc.token) {\n setToken(null, null, null);\n kc.onAuthLogout && kc.onAuthLogout();\n if (kc.loginRequired) {\n kc.login();\n }\n }\n };\n\n function getRealmUrl() {\n if (typeof kc.authServerUrl !== 'undefined') {\n if (kc.authServerUrl.charAt(kc.authServerUrl.length - 1) == '/') {\n return kc.authServerUrl + 'realms/' + encodeURIComponent(kc.realm);\n } else {\n return kc.authServerUrl + '/realms/' + encodeURIComponent(kc.realm);\n }\n } else {\n return undefined;\n }\n }\n\n function getOrigin() {\n if (!window.location.origin) {\n return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\n } else {\n return window.location.origin;\n }\n }\n\n function processCallback(oauth, promise) {\n var code = oauth.code;\n var error = oauth.error;\n var prompt = oauth.prompt;\n\n var timeLocal = new Date().getTime();\n\n if (oauth['kc_action_status']) {\n kc.onActionUpdate && kc.onActionUpdate(oauth['kc_action_status']);\n }\n\n if (error) {\n if (prompt != 'none') {\n var errorData = { error: error, error_description: oauth.error_description };\n kc.onAuthError && kc.onAuthError(errorData);\n promise && promise.setError(errorData);\n } else {\n promise && promise.setSuccess();\n }\n return;\n } else if ((kc.flow != 'standard') && (oauth.access_token || oauth.id_token)) {\n authSuccess(oauth.access_token, null, oauth.id_token, true);\n }\n\n if ((kc.flow != 'implicit') && code) {\n var params = 'code=' + code + '&grant_type=authorization_code';\n var url = kc.endpoints.token();\n\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n params += '&redirect_uri=' + oauth.redirectUri;\n\n if (oauth.pkceCodeVerifier) {\n params += '&code_verifier=' + oauth.pkceCodeVerifier;\n }\n\n req.withCredentials = true;\n\n req.onreadystatechange = function() {\n if (req.readyState == 4) {\n if (req.status == 200) {\n\n var tokenResponse = JSON.parse(req.responseText);\n authSuccess(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], kc.flow === 'standard');\n scheduleCheckIframe();\n } else {\n kc.onAuthError && kc.onAuthError();\n promise && promise.setError();\n }\n }\n };\n\n req.send(params);\n }\n\n function authSuccess(accessToken, refreshToken, idToken, fulfillPromise) {\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n setToken(accessToken, refreshToken, idToken, timeLocal);\n\n if (useNonce && ((kc.tokenParsed && kc.tokenParsed.nonce != oauth.storedNonce) ||\n (kc.refreshTokenParsed && kc.refreshTokenParsed.nonce != oauth.storedNonce) ||\n (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce))) {\n\n logInfo('[KEYCLOAK] Invalid nonce, clearing token');\n kc.clearToken();\n promise && promise.setError();\n } else {\n if (fulfillPromise) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n promise && promise.setSuccess();\n }\n }\n }\n\n }\n\n function loadConfig(url) {\n var promise = createPromise();\n var configUrl;\n\n if (!config) {\n configUrl = 'keycloak.json';\n } else if (typeof config === 'string') {\n configUrl = config;\n }\n\n function setupOidcEndoints(oidcConfiguration) {\n if (! oidcConfiguration) {\n kc.endpoints = {\n authorize: function() {\n return getRealmUrl() + '/protocol/openid-connect/auth';\n },\n token: function() {\n return getRealmUrl() + '/protocol/openid-connect/token';\n },\n logout: function() {\n return getRealmUrl() + '/protocol/openid-connect/logout';\n },\n checkSessionIframe: function() {\n var src = getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';\n if (kc.iframeVersion) {\n src = src + '?version=' + kc.iframeVersion;\n }\n return src;\n },\n thirdPartyCookiesIframe: function() {\n var src = getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html';\n if (kc.iframeVersion) {\n src = src + '?version=' + kc.iframeVersion;\n }\n return src;\n },\n register: function() {\n return getRealmUrl() + '/protocol/openid-connect/registrations';\n },\n userinfo: function() {\n return getRealmUrl() + '/protocol/openid-connect/userinfo';\n }\n };\n } else {\n kc.endpoints = {\n authorize: function() {\n return oidcConfiguration.authorization_endpoint;\n },\n token: function() {\n return oidcConfiguration.token_endpoint;\n },\n logout: function() {\n if (!oidcConfiguration.end_session_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.end_session_endpoint;\n },\n checkSessionIframe: function() {\n if (!oidcConfiguration.check_session_iframe) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.check_session_iframe;\n },\n register: function() {\n throw 'Redirection to \"Register user\" page not supported in standard OIDC mode';\n },\n userinfo: function() {\n if (!oidcConfiguration.userinfo_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.userinfo_endpoint;\n }\n };\n }\n }\n\n if (configUrl) {\n var req = new XMLHttpRequest();\n req.open('GET', configUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var config = JSON.parse(req.responseText);\n\n kc.authServerUrl = config['auth-server-url'];\n kc.realm = config['realm'];\n kc.clientId = config['resource'];\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n if (!config.clientId) {\n throw 'clientId missing';\n }\n\n kc.clientId = config.clientId;\n\n var oidcProvider = config['oidcProvider'];\n if (!oidcProvider) {\n if (!config['url']) {\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n if (scripts[i].src.match(/.*keycloak\\.js/)) {\n config.url = scripts[i].src.substr(0, scripts[i].src.indexOf('/js/keycloak.js'));\n break;\n }\n }\n }\n if (!config.realm) {\n throw 'realm missing';\n }\n\n kc.authServerUrl = config.url;\n kc.realm = config.realm;\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n if (typeof oidcProvider === 'string') {\n var oidcProviderConfigUrl;\n if (oidcProvider.charAt(oidcProvider.length - 1) == '/') {\n oidcProviderConfigUrl = oidcProvider + '.well-known/openid-configuration';\n } else {\n oidcProviderConfigUrl = oidcProvider + '/.well-known/openid-configuration';\n }\n var req = new XMLHttpRequest();\n req.open('GET', oidcProviderConfigUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var oidcProviderConfig = JSON.parse(req.responseText);\n setupOidcEndoints(oidcProviderConfig);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n setupOidcEndoints(oidcProvider);\n promise.setSuccess();\n }\n }\n }\n\n return promise.promise;\n }\n\n function fileLoaded(xhr) {\n return xhr.status == 0 && xhr.responseText && xhr.responseURL.startsWith('file:');\n }\n\n function setToken(token, refreshToken, idToken, timeLocal) {\n if (kc.tokenTimeoutHandle) {\n clearTimeout(kc.tokenTimeoutHandle);\n kc.tokenTimeoutHandle = null;\n }\n\n if (refreshToken) {\n kc.refreshToken = refreshToken;\n kc.refreshTokenParsed = jwtDecode(refreshToken);\n } else {\n delete kc.refreshToken;\n delete kc.refreshTokenParsed;\n }\n\n if (idToken) {\n kc.idToken = idToken;\n kc.idTokenParsed = jwtDecode(idToken);\n } else {\n delete kc.idToken;\n delete kc.idTokenParsed;\n }\n\n if (token) {\n kc.token = token;\n kc.tokenParsed = jwtDecode(token);\n kc.sessionId = kc.tokenParsed.session_state;\n kc.authenticated = true;\n kc.subject = kc.tokenParsed.sub;\n kc.realmAccess = kc.tokenParsed.realm_access;\n kc.resourceAccess = kc.tokenParsed.resource_access;\n\n if (timeLocal) {\n kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;\n }\n\n if (kc.timeSkew != null) {\n logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');\n\n if (kc.onTokenExpired) {\n var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;\n logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s');\n if (expiresIn <= 0) {\n kc.onTokenExpired();\n } else {\n kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);\n }\n }\n }\n } else {\n delete kc.token;\n delete kc.tokenParsed;\n delete kc.subject;\n delete kc.realmAccess;\n delete kc.resourceAccess;\n\n kc.authenticated = false;\n }\n }\n\n function createUUID() {\n var hexDigits = '0123456789abcdef';\n var s = generateRandomString(36, hexDigits).split(\"\");\n s[14] = '4';\n s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);\n s[8] = s[13] = s[18] = s[23] = '-';\n var uuid = s.join('');\n return uuid;\n }\n\n function parseCallback(url) {\n var oauth = parseCallbackUrl(url);\n if (!oauth) {\n return;\n }\n\n var oauthState = callbackStorage.get(oauth.state);\n\n if (oauthState) {\n oauth.valid = true;\n oauth.redirectUri = oauthState.redirectUri;\n oauth.storedNonce = oauthState.nonce;\n oauth.prompt = oauthState.prompt;\n oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier;\n }\n\n return oauth;\n }\n\n function parseCallbackUrl(url) {\n var supportedParams;\n switch (kc.flow) {\n case 'standard':\n supportedParams = ['code', 'state', 'session_state', 'kc_action_status', 'iss'];\n break;\n case 'implicit':\n supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status', 'iss'];\n break;\n case 'hybrid':\n supportedParams = ['access_token', 'token_type', 'id_token', 'code', 'state', 'session_state', 'expires_in', 'kc_action_status', 'iss'];\n break;\n }\n\n supportedParams.push('error');\n supportedParams.push('error_description');\n supportedParams.push('error_uri');\n\n var queryIndex = url.indexOf('?');\n var fragmentIndex = url.indexOf('#');\n\n var newUrl;\n var parsed;\n\n if (kc.responseMode === 'query' && queryIndex !== -1) {\n newUrl = url.substring(0, queryIndex);\n parsed = parseCallbackParams(url.substring(queryIndex + 1, fragmentIndex !== -1 ? fragmentIndex : url.length), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '?' + parsed.paramsString;\n }\n if (fragmentIndex !== -1) {\n newUrl += url.substring(fragmentIndex);\n }\n } else if (kc.responseMode === 'fragment' && fragmentIndex !== -1) {\n newUrl = url.substring(0, fragmentIndex);\n parsed = parseCallbackParams(url.substring(fragmentIndex + 1), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '#' + parsed.paramsString;\n }\n }\n\n if (parsed && parsed.oauthParams) {\n if (kc.flow === 'standard' || kc.flow === 'hybrid') {\n if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n } else if (kc.flow === 'implicit') {\n if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n }\n }\n }\n\n function parseCallbackParams(paramsString, supportedParams) {\n var p = paramsString.split('&');\n var result = {\n paramsString: '',\n oauthParams: {}\n };\n for (var i = 0; i < p.length; i++) {\n var split = p[i].indexOf(\"=\");\n var key = p[i].slice(0, split);\n if (supportedParams.indexOf(key) !== -1) {\n result.oauthParams[key] = p[i].slice(split + 1);\n } else {\n if (result.paramsString !== '') {\n result.paramsString += '&';\n }\n result.paramsString += p[i];\n }\n }\n return result;\n }\n\n function createPromise() {\n // Need to create a native Promise which also preserves the\n // interface of the custom promise type previously used by the API\n var p = {\n setSuccess: function(result) {\n p.resolve(result);\n },\n\n setError: function(result) {\n p.reject(result);\n }\n };\n p.promise = new Promise(function(resolve, reject) {\n p.resolve = resolve;\n p.reject = reject;\n });\n\n return p;\n }\n\n // Function to extend existing native Promise with timeout\n function applyTimeoutToPromise(promise, timeout, errorMessage) {\n var timeoutHandle = null;\n var timeoutPromise = new Promise(function (resolve, reject) {\n timeoutHandle = setTimeout(function () {\n reject({ \"error\": errorMessage || \"Promise is not settled within timeout of \" + timeout + \"ms\" });\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).finally(function () {\n clearTimeout(timeoutHandle);\n });\n }\n\n function setupCheckLoginIframe() {\n var promise = createPromise();\n\n if (!loginIframe.enable) {\n promise.setSuccess();\n return promise.promise;\n }\n\n if (loginIframe.iframe) {\n promise.setSuccess();\n return promise.promise;\n }\n\n var iframe = document.createElement('iframe');\n loginIframe.iframe = iframe;\n\n iframe.onload = function() {\n var authUrl = kc.endpoints.authorize();\n if (authUrl.charAt(0) === '/') {\n loginIframe.iframeOrigin = getOrigin();\n } else {\n loginIframe.iframeOrigin = authUrl.substring(0, authUrl.indexOf('/', 8));\n }\n promise.setSuccess();\n };\n\n var src = kc.endpoints.checkSessionIframe();\n iframe.setAttribute('src', src );\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-session-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if ((event.origin !== loginIframe.iframeOrigin) || (loginIframe.iframe.contentWindow !== event.source)) {\n return;\n }\n\n if (!(event.data == 'unchanged' || event.data == 'changed' || event.data == 'error')) {\n return;\n }\n\n\n if (event.data != 'unchanged') {\n kc.clearToken();\n }\n\n var callbacks = loginIframe.callbackList.splice(0, loginIframe.callbackList.length);\n\n for (var i = callbacks.length - 1; i >= 0; --i) {\n var promise = callbacks[i];\n if (event.data == 'error') {\n promise.setError();\n } else {\n promise.setSuccess(event.data == 'unchanged');\n }\n }\n };\n\n window.addEventListener('message', messageCallback, false);\n\n return promise.promise;\n }\n\n function scheduleCheckIframe() {\n if (loginIframe.enable) {\n if (kc.token) {\n setTimeout(function() {\n checkLoginIframe().then(function(unchanged) {\n if (unchanged) {\n scheduleCheckIframe();\n }\n });\n }, loginIframe.interval * 1000);\n }\n }\n }\n\n function checkLoginIframe() {\n var promise = createPromise();\n\n if (loginIframe.iframe && loginIframe.iframeOrigin ) {\n var msg = kc.clientId + ' ' + (kc.sessionId ? kc.sessionId : '');\n loginIframe.callbackList.push(promise);\n var origin = loginIframe.iframeOrigin;\n if (loginIframe.callbackList.length == 1) {\n loginIframe.iframe.contentWindow.postMessage(msg, origin);\n }\n } else {\n promise.setSuccess();\n }\n\n return promise.promise;\n }\n\n function check3pCookiesSupported() {\n var promise = createPromise();\n\n if (loginIframe.enable || kc.silentCheckSsoRedirectUri) {\n var iframe = document.createElement('iframe');\n iframe.setAttribute('src', kc.endpoints.thirdPartyCookiesIframe());\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-3p-check-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if (iframe.contentWindow !== event.source) {\n return;\n }\n\n if (event.data !== \"supported\" && event.data !== \"unsupported\") {\n return;\n } else if (event.data === \"unsupported\") {\n logWarn(\n \"[KEYCLOAK] Your browser is blocking access to 3rd-party cookies, this means:\\n\\n\" +\n \" - It is not possible to retrieve tokens without redirecting to the Keycloak server (a.k.a. no support for silent authentication).\\n\" +\n \" - It is not possible to automatically detect changes to the session status (such as the user logging out in another tab).\\n\\n\" +\n \"For more information see: https://www.keycloak.org/docs/latest/securing_apps/#_modern_browsers\"\n );\n\n loginIframe.enable = false;\n if (kc.silentCheckSsoFallback) {\n kc.silentCheckSsoRedirectUri = false;\n }\n }\n\n document.body.removeChild(iframe);\n window.removeEventListener(\"message\", messageCallback);\n promise.setSuccess();\n };\n\n window.addEventListener('message', messageCallback, false);\n } else {\n promise.setSuccess();\n }\n\n return applyTimeoutToPromise(promise.promise, kc.messageReceiveTimeout, \"Timeout when waiting for 3rd party check iframe message.\");\n }\n\n function loadAdapter(type) {\n if (!type || type == 'default') {\n return {\n login: function(options) {\n window.location.assign(kc.createLoginUrl(options));\n return createPromise().promise;\n },\n\n logout: function(options) {\n window.location.replace(kc.createLogoutUrl(options));\n return createPromise().promise;\n },\n\n register: function(options) {\n window.location.assign(kc.createRegisterUrl(options));\n return createPromise().promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.location.href = accountUrl;\n } else {\n throw \"Not supported by the OIDC server\";\n }\n return createPromise().promise;\n },\n\n redirectUri: function(options, encodeHash) {\n\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return location.href;\n }\n }\n };\n }\n\n if (type == 'cordova') {\n loginIframe.enable = false;\n var cordovaOpenWindowWrapper = function(loginUrl, target, options) {\n if (window.cordova && window.cordova.InAppBrowser) {\n // Use inappbrowser for IOS and Android if available\n return window.cordova.InAppBrowser.open(loginUrl, target, options);\n } else {\n return window.open(loginUrl, target, options);\n }\n };\n\n var shallowCloneCordovaOptions = function (userOptions) {\n if (userOptions && userOptions.cordovaOptions) {\n return Object.keys(userOptions.cordovaOptions).reduce(function (options, optionName) {\n options[optionName] = userOptions.cordovaOptions[optionName];\n return options;\n }, {});\n } else {\n return {};\n }\n };\n\n var formatCordovaOptions = function (cordovaOptions) {\n return Object.keys(cordovaOptions).reduce(function (options, optionName) {\n options.push(optionName+\"=\"+cordovaOptions[optionName]);\n return options;\n }, []).join(\",\");\n };\n\n var createCordovaOptions = function (userOptions) {\n var cordovaOptions = shallowCloneCordovaOptions(userOptions);\n cordovaOptions.location = 'no';\n if (userOptions && userOptions.prompt == 'none') {\n cordovaOptions.hidden = 'yes';\n }\n return formatCordovaOptions(cordovaOptions);\n };\n\n var getCordovaRedirectUri = function() {\n return kc.redirectUri || 'http://localhost';\n };\n \n return {\n login: function(options) {\n var promise = createPromise();\n\n var cordovaOptions = createCordovaOptions(options);\n var loginUrl = kc.createLoginUrl(options);\n var ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions);\n var completed = false;\n\n var closed = false;\n var closeBrowser = function() {\n closed = true;\n ref.close();\n };\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (!completed) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n } else {\n promise.setError();\n closeBrowser();\n }\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (!closed) {\n promise.setError({\n reason: \"closed_by_user\"\n });\n }\n });\n\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n\n var logoutUrl = kc.createLogoutUrl(options);\n var ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes,clearcache=yes');\n\n var error;\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n } else {\n error = true;\n ref.close();\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (error) {\n promise.setError();\n } else {\n kc.clearToken();\n promise.setSuccess();\n }\n });\n\n return promise.promise;\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl();\n var cordovaOptions = createCordovaOptions(options);\n var ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions);\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n }\n });\n return promise.promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n var ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no');\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n return getCordovaRedirectUri();\n }\n }\n }\n\n if (type == 'cordova-native') {\n loginIframe.enable = false;\n\n return {\n login: function(options) {\n var promise = createPromise();\n var loginUrl = kc.createLoginUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n\n window.cordova.plugins.browsertab.openUrl(loginUrl);\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n var logoutUrl = kc.createLogoutUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n kc.clearToken();\n promise.setSuccess();\n });\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl);\n return promise.promise;\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl(options);\n universalLinks.subscribe('keycloak' , function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n window.cordova.plugins.browsertab.openUrl(registerUrl);\n return promise.promise;\n\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.cordova.plugins.browsertab.openUrl(accountUrl);\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return \"http://localhost\";\n }\n }\n }\n }\n\n throw 'invalid adapter type: ' + type;\n }\n\n var LocalStorage = function() {\n if (!(this instanceof LocalStorage)) {\n return new LocalStorage();\n }\n\n localStorage.setItem('kc-test', 'test');\n localStorage.removeItem('kc-test');\n\n var cs = this;\n\n function clearExpired() {\n var time = new Date().getTime();\n for (var i = 0; i < localStorage.length; i++) {\n var key = localStorage.key(i);\n if (key && key.indexOf('kc-callback-') == 0) {\n var value = localStorage.getItem(key);\n if (value) {\n try {\n var expires = JSON.parse(value).expires;\n if (!expires || expires < time) {\n localStorage.removeItem(key);\n }\n } catch (err) {\n localStorage.removeItem(key);\n }\n }\n }\n }\n }\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var key = 'kc-callback-' + state;\n var value = localStorage.getItem(key);\n if (value) {\n localStorage.removeItem(key);\n value = JSON.parse(value);\n }\n\n clearExpired();\n return value;\n };\n\n cs.add = function(state) {\n clearExpired();\n\n var key = 'kc-callback-' + state.state;\n state.expires = new Date().getTime() + (60 * 60 * 1000);\n localStorage.setItem(key, JSON.stringify(state));\n };\n };\n\n var CookieStorage = function() {\n if (!(this instanceof CookieStorage)) {\n return new CookieStorage();\n }\n\n var cs = this;\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var value = getCookie('kc-callback-' + state);\n setCookie('kc-callback-' + state, '', cookieExpiration(-100));\n if (value) {\n return JSON.parse(value);\n }\n };\n\n cs.add = function(state) {\n setCookie('kc-callback-' + state.state, JSON.stringify(state), cookieExpiration(60));\n };\n\n cs.removeItem = function(key) {\n setCookie(key, '', cookieExpiration(-100));\n };\n\n var cookieExpiration = function (minutes) {\n var exp = new Date();\n exp.setTime(exp.getTime() + (minutes*60*1000));\n return exp;\n };\n\n var getCookie = function (key) {\n var name = key + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n };\n\n var setCookie = function (key, value, expirationDate) {\n var cookie = key + '=' + value + '; '\n + 'expires=' + expirationDate.toUTCString() + '; ';\n document.cookie = cookie;\n };\n };\n\n function createCallbackStorage() {\n try {\n return new LocalStorage();\n } catch (err) {\n }\n\n return new CookieStorage();\n }\n\n function createLogger(fn) {\n return function() {\n if (kc.enableLogging) {\n fn.apply(console, Array.prototype.slice.call(arguments));\n }\n };\n }\n}\n\nexport { Keycloak as default };\n","/**\r\n * Jdenticon 3.3.0\r\n * http://jdenticon.com\r\n *\r\n * Built: 2024-05-10T09:48:41.921Z\r\n * \r\n * MIT License\r\n * \r\n * Copyright (c) 2014-2024 Daniel Mester Pirttijärvi\r\n * \r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n */\r\n\r\n'use strict';\n\n/**\r\n * Parses a substring of the hash as a number.\r\n * @param {number} startPosition \r\n * @param {number=} octets\r\n */\r\nfunction parseHex(hash, startPosition, octets) {\r\n return parseInt(hash.substr(startPosition, octets), 16);\r\n}\n\nfunction decToHex(v) {\r\n v |= 0; // Ensure integer value\r\n return v < 0 ? \"00\" :\r\n v < 16 ? \"0\" + v.toString(16) :\r\n v < 256 ? v.toString(16) :\r\n \"ff\";\r\n}\r\n\r\nfunction hueToRgb(m1, m2, h) {\r\n h = h < 0 ? h + 6 : h > 6 ? h - 6 : h;\r\n return decToHex(255 * (\r\n h < 1 ? m1 + (m2 - m1) * h :\r\n h < 3 ? m2 :\r\n h < 4 ? m1 + (m2 - m1) * (4 - h) :\r\n m1));\r\n}\r\n\r\n/**\r\n * @param {string} color Color value to parse. Currently hexadecimal strings on the format #rgb[a] and #rrggbb[aa] are supported.\r\n * @returns {string}\r\n */\r\nfunction parseColor(color) {\r\n if (/^#[0-9a-f]{3,8}$/i.test(color)) {\r\n var result;\r\n var colorLength = color.length;\r\n\r\n if (colorLength < 6) {\r\n var r = color[1],\r\n g = color[2],\r\n b = color[3],\r\n a = color[4] || \"\";\r\n result = \"#\" + r + r + g + g + b + b + a + a;\r\n }\r\n if (colorLength == 7 || colorLength > 8) {\r\n result = color;\r\n }\r\n \r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * Converts a hexadecimal color to a CSS3 compatible color.\r\n * @param {string} hexColor Color on the format \"#RRGGBB\" or \"#RRGGBBAA\"\r\n * @returns {string}\r\n */\r\nfunction toCss3Color(hexColor) {\r\n var a = parseHex(hexColor, 7, 2);\r\n var result;\r\n\r\n if (isNaN(a)) {\r\n result = hexColor;\r\n } else {\r\n var r = parseHex(hexColor, 1, 2),\r\n g = parseHex(hexColor, 3, 2),\r\n b = parseHex(hexColor, 5, 2);\r\n result = \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + (a / 255).toFixed(2) + \")\";\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Converts an HSL color to a hexadecimal RGB color.\r\n * @param {number} hue Hue in range [0, 1]\r\n * @param {number} saturation Saturation in range [0, 1]\r\n * @param {number} lightness Lightness in range [0, 1]\r\n * @returns {string}\r\n */\r\nfunction hsl(hue, saturation, lightness) {\r\n // Based on http://www.w3.org/TR/2011/REC-css3-color-20110607/#hsl-color\r\n var result;\r\n\r\n if (saturation == 0) {\r\n var partialHex = decToHex(lightness * 255);\r\n result = partialHex + partialHex + partialHex;\r\n }\r\n else {\r\n var m2 = lightness <= 0.5 ? lightness * (saturation + 1) : lightness + saturation - lightness * saturation,\r\n m1 = lightness * 2 - m2;\r\n result =\r\n hueToRgb(m1, m2, hue * 6 + 2) +\r\n hueToRgb(m1, m2, hue * 6) +\r\n hueToRgb(m1, m2, hue * 6 - 2);\r\n }\r\n\r\n return \"#\" + result;\r\n}\r\n\r\n/**\r\n * Converts an HSL color to a hexadecimal RGB color. This function will correct the lightness for the \"dark\" hues\r\n * @param {number} hue Hue in range [0, 1]\r\n * @param {number} saturation Saturation in range [0, 1]\r\n * @param {number} lightness Lightness in range [0, 1]\r\n * @returns {string}\r\n */\r\nfunction correctedHsl(hue, saturation, lightness) {\r\n // The corrector specifies the perceived middle lightness for each hue\r\n var correctors = [ 0.55, 0.5, 0.5, 0.46, 0.6, 0.55, 0.55 ],\r\n corrector = correctors[(hue * 6 + 0.5) | 0];\r\n \r\n // Adjust the input lightness relative to the corrector\r\n lightness = lightness < 0.5 ? lightness * corrector * 2 : corrector + (lightness - 0.5) * (1 - corrector) * 2;\r\n \r\n return hsl(hue, saturation, lightness);\r\n}\n\n// In the future we can replace `GLOBAL` with `globalThis`, but for now use the old school global detection for\r\n// backward compatibility.\r\n\r\nvar GLOBAL = \r\n typeof window !== \"undefined\" ? window :\r\n typeof self !== \"undefined\" ? self :\r\n typeof global !== \"undefined\" ? global :\r\n {};\n\n/**\r\n * @typedef {Object} ParsedConfiguration\r\n * @property {number} colorSaturation\r\n * @property {number} grayscaleSaturation\r\n * @property {string} backColor\r\n * @property {number} iconPadding\r\n * @property {function(number):number} hue\r\n * @property {function(number):number} colorLightness\r\n * @property {function(number):number} grayscaleLightness\r\n */\r\n\r\nvar CONFIG_PROPERTIES = {\r\n W/*GLOBAL*/: \"jdenticon_config\",\r\n n/*MODULE*/: \"config\",\r\n};\r\n\r\nvar rootConfigurationHolder = {};\r\n\r\n/**\r\n * Defines the deprecated `config` property on the root Jdenticon object without printing a warning in the console\r\n * when it is being used.\r\n * @param {!Object} rootObject \r\n */\r\nfunction defineConfigProperty(rootObject) {\r\n rootConfigurationHolder = rootObject;\r\n}\r\n\r\n/**\r\n * Sets a new icon style configuration. The new configuration is not merged with the previous one. * \r\n * @param {Object} newConfiguration - New configuration object.\r\n */\r\nfunction configure(newConfiguration) {\r\n if (arguments.length) {\r\n rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] = newConfiguration;\r\n }\r\n return rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/];\r\n}\r\n\r\n/**\r\n * Gets the normalized current Jdenticon color configuration. Missing fields have default values.\r\n * @param {Object|number|undefined} paddingOrLocalConfig - Configuration passed to the called API method. A\r\n * local configuration overrides the global configuration in it entirety. This parameter can for backward\r\n * compatibility also contain a padding value. A padding value only overrides the global padding, not the\r\n * entire global configuration.\r\n * @param {number} defaultPadding - Padding used if no padding is specified in neither the configuration nor\r\n * explicitly to the API method.\r\n * @returns {ParsedConfiguration}\r\n */\r\nfunction getConfiguration(paddingOrLocalConfig, defaultPadding) {\r\n var configObject = \r\n typeof paddingOrLocalConfig == \"object\" && paddingOrLocalConfig ||\r\n rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] ||\r\n GLOBAL[CONFIG_PROPERTIES.W/*GLOBAL*/] ||\r\n { },\r\n\r\n lightnessConfig = configObject[\"lightness\"] || { },\r\n \r\n // In versions < 2.1.0 there was no grayscale saturation -\r\n // saturation was the color saturation.\r\n saturation = configObject[\"saturation\"] || { },\r\n colorSaturation = \"color\" in saturation ? saturation[\"color\"] : saturation,\r\n grayscaleSaturation = saturation[\"grayscale\"],\r\n\r\n backColor = configObject[\"backColor\"],\r\n padding = configObject[\"padding\"];\r\n \r\n /**\r\n * Creates a lightness range.\r\n */\r\n function lightness(configName, defaultRange) {\r\n var range = lightnessConfig[configName];\r\n \r\n // Check if the lightness range is an array-like object. This way we ensure the\r\n // array contain two values at the same time.\r\n if (!(range && range.length > 1)) {\r\n range = defaultRange;\r\n }\r\n\r\n /**\r\n * Gets a lightness relative the specified value in the specified lightness range.\r\n */\r\n return function (value) {\r\n value = range[0] + value * (range[1] - range[0]);\r\n return value < 0 ? 0 : value > 1 ? 1 : value;\r\n };\r\n }\r\n\r\n /**\r\n * Gets a hue allowed by the configured hue restriction,\r\n * provided the originally computed hue.\r\n */\r\n function hueFunction(originalHue) {\r\n var hueConfig = configObject[\"hues\"];\r\n var hue;\r\n \r\n // Check if 'hues' is an array-like object. This way we also ensure that\r\n // the array is not empty, which would mean no hue restriction.\r\n if (hueConfig && hueConfig.length > 0) {\r\n // originalHue is in the range [0, 1]\r\n // Multiply with 0.999 to change the range to [0, 1) and then truncate the index.\r\n hue = hueConfig[0 | (0.999 * originalHue * hueConfig.length)];\r\n }\r\n\r\n return typeof hue == \"number\" ?\r\n \r\n // A hue was specified. We need to convert the hue from\r\n // degrees on any turn - e.g. 746° is a perfectly valid hue -\r\n // to turns in the range [0, 1).\r\n ((((hue / 360) % 1) + 1) % 1) :\r\n\r\n // No hue configured => use original hue\r\n originalHue;\r\n }\r\n \r\n return {\r\n X/*hue*/: hueFunction,\r\n o/*colorSaturation*/: typeof colorSaturation == \"number\" ? colorSaturation : 0.5,\r\n F/*grayscaleSaturation*/: typeof grayscaleSaturation == \"number\" ? grayscaleSaturation : 0,\r\n p/*colorLightness*/: lightness(\"color\", [0.4, 0.8]),\r\n G/*grayscaleLightness*/: lightness(\"grayscale\", [0.3, 0.9]),\r\n H/*backColor*/: parseColor(backColor),\r\n Y/*iconPadding*/: \r\n typeof paddingOrLocalConfig == \"number\" ? paddingOrLocalConfig : \r\n typeof padding == \"number\" ? padding : \r\n defaultPadding\r\n }\r\n}\n\n/**\r\n * Represents a point.\r\n */\r\nfunction Point(x, y) {\r\n this.x = x;\r\n this.y = y;\r\n}\n\n/**\r\n * Translates and rotates a point before being passed on to the canvas context. This was previously done by the canvas context itself, \r\n * but this caused a rendering issue in Chrome on sizes > 256 where the rotation transformation of inverted paths was not done properly.\r\n */\r\nfunction Transform(x, y, size, rotation) {\r\n this.q/*_x*/ = x;\r\n this.t/*_y*/ = y;\r\n this.I/*_size*/ = size;\r\n this.Z/*_rotation*/ = rotation;\r\n}\r\n\r\n/**\r\n * Transforms the specified point based on the translation and rotation specification for this Transform.\r\n * @param {number} x x-coordinate\r\n * @param {number} y y-coordinate\r\n * @param {number=} w The width of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.\r\n * @param {number=} h The height of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.\r\n */\r\nTransform.prototype.J/*transformIconPoint*/ = function transformIconPoint (x, y, w, h) {\r\n var right = this.q/*_x*/ + this.I/*_size*/,\r\n bottom = this.t/*_y*/ + this.I/*_size*/,\r\n rotation = this.Z/*_rotation*/;\r\n return rotation === 1 ? new Point(right - y - (h || 0), this.t/*_y*/ + x) :\r\n rotation === 2 ? new Point(right - x - (w || 0), bottom - y - (h || 0)) :\r\n rotation === 3 ? new Point(this.q/*_x*/ + y, bottom - x - (w || 0)) :\r\n new Point(this.q/*_x*/ + x, this.t/*_y*/ + y);\r\n};\r\n\r\nvar NO_TRANSFORM = new Transform(0, 0, 0, 0);\n\n\r\n\r\n/**\r\n * Provides helper functions for rendering common basic shapes.\r\n */\r\nfunction Graphics(renderer) {\r\n /**\r\n * @type {Renderer}\r\n * @private\r\n */\r\n this.K/*_renderer*/ = renderer;\r\n\r\n /**\r\n * @type {Transform}\r\n */\r\n this.u/*currentTransform*/ = NO_TRANSFORM;\r\n}\r\nvar Graphics__prototype = Graphics.prototype;\r\n\r\n/**\r\n * Adds a polygon to the underlying renderer.\r\n * @param {Array<number>} points The points of the polygon clockwise on the format [ x0, y0, x1, y1, ..., xn, yn ]\r\n * @param {boolean=} invert Specifies if the polygon will be inverted.\r\n */\r\nGraphics__prototype.g/*addPolygon*/ = function addPolygon (points, invert) {\n var this$1 = this;\n\r\n var di = invert ? -2 : 2,\r\n transformedPoints = [];\r\n \r\n for (var i = invert ? points.length - 2 : 0; i < points.length && i >= 0; i += di) {\r\n transformedPoints.push(this$1.u/*currentTransform*/.J/*transformIconPoint*/(points[i], points[i + 1]));\r\n }\r\n \r\n this.K/*_renderer*/.g/*addPolygon*/(transformedPoints);\r\n};\r\n \r\n/**\r\n * Adds a polygon to the underlying renderer.\r\n * Source: http://stackoverflow.com/a/2173084\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the entire ellipse.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the entire ellipse.\r\n * @param {number} size The size of the ellipse.\r\n * @param {boolean=} invert Specifies if the ellipse will be inverted.\r\n */\r\nGraphics__prototype.h/*addCircle*/ = function addCircle (x, y, size, invert) {\r\n var p = this.u/*currentTransform*/.J/*transformIconPoint*/(x, y, size, size);\r\n this.K/*_renderer*/.h/*addCircle*/(p, size, invert);\r\n};\r\n\r\n/**\r\n * Adds a rectangle to the underlying renderer.\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle.\r\n * @param {number} w The width of the rectangle.\r\n * @param {number} h The height of the rectangle.\r\n * @param {boolean=} invert Specifies if the rectangle will be inverted.\r\n */\r\nGraphics__prototype.i/*addRectangle*/ = function addRectangle (x, y, w, h, invert) {\r\n this.g/*addPolygon*/([\r\n x, y, \r\n x + w, y,\r\n x + w, y + h,\r\n x, y + h\r\n ], invert);\r\n};\r\n\r\n/**\r\n * Adds a right triangle to the underlying renderer.\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the triangle.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the triangle.\r\n * @param {number} w The width of the triangle.\r\n * @param {number} h The height of the triangle.\r\n * @param {number} r The rotation of the triangle (clockwise). 0 = right corner of the triangle in the lower left corner of the bounding rectangle.\r\n * @param {boolean=} invert Specifies if the triangle will be inverted.\r\n */\r\nGraphics__prototype.j/*addTriangle*/ = function addTriangle (x, y, w, h, r, invert) {\r\n var points = [\r\n x + w, y, \r\n x + w, y + h, \r\n x, y + h,\r\n x, y\r\n ];\r\n points.splice(((r || 0) % 4) * 2, 2);\r\n this.g/*addPolygon*/(points, invert);\r\n};\r\n\r\n/**\r\n * Adds a rhombus to the underlying renderer.\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the rhombus.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the rhombus.\r\n * @param {number} w The width of the rhombus.\r\n * @param {number} h The height of the rhombus.\r\n * @param {boolean=} invert Specifies if the rhombus will be inverted.\r\n */\r\nGraphics__prototype.L/*addRhombus*/ = function addRhombus (x, y, w, h, invert) {\r\n this.g/*addPolygon*/([\r\n x + w / 2, y,\r\n x + w, y + h / 2,\r\n x + w / 2, y + h,\r\n x, y + h / 2\r\n ], invert);\r\n};\n\n/**\r\n * @param {number} index\r\n * @param {Graphics} g\r\n * @param {number} cell\r\n * @param {number} positionIndex\r\n */\r\nfunction centerShape(index, g, cell, positionIndex) {\r\n index = index % 14;\r\n\r\n var k, m, w, h, inner, outer;\r\n\r\n !index ? (\r\n k = cell * 0.42,\r\n g.g/*addPolygon*/([\r\n 0, 0,\r\n cell, 0,\r\n cell, cell - k * 2,\r\n cell - k, cell,\r\n 0, cell\r\n ])) :\r\n\r\n index == 1 ? (\r\n w = 0 | (cell * 0.5), \r\n h = 0 | (cell * 0.8),\r\n\r\n g.j/*addTriangle*/(cell - w, 0, w, h, 2)) :\r\n\r\n index == 2 ? (\r\n w = 0 | (cell / 3),\r\n g.i/*addRectangle*/(w, w, cell - w, cell - w)) :\r\n\r\n index == 3 ? (\r\n inner = cell * 0.1,\r\n // Use fixed outer border widths in small icons to ensure the border is drawn\r\n outer = \r\n cell < 6 ? 1 :\r\n cell < 8 ? 2 :\r\n (0 | (cell * 0.25)),\r\n \r\n inner = \r\n inner > 1 ? (0 | inner) : // large icon => truncate decimals\r\n inner > 0.5 ? 1 : // medium size icon => fixed width\r\n inner, // small icon => anti-aliased border\r\n\r\n g.i/*addRectangle*/(outer, outer, cell - inner - outer, cell - inner - outer)) :\r\n\r\n index == 4 ? (\r\n m = 0 | (cell * 0.15),\r\n w = 0 | (cell * 0.5),\r\n g.h/*addCircle*/(cell - w - m, cell - w - m, w)) :\r\n\r\n index == 5 ? (\r\n inner = cell * 0.1,\r\n outer = inner * 4,\r\n\r\n // Align edge to nearest pixel in large icons\r\n outer > 3 && (outer = 0 | outer),\r\n \r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.g/*addPolygon*/([\r\n outer, outer,\r\n cell - inner, outer,\r\n outer + (cell - outer - inner) / 2, cell - inner\r\n ], true)) :\r\n\r\n index == 6 ? \r\n g.g/*addPolygon*/([\r\n 0, 0,\r\n cell, 0,\r\n cell, cell * 0.7,\r\n cell * 0.4, cell * 0.4,\r\n cell * 0.7, cell,\r\n 0, cell\r\n ]) :\r\n\r\n index == 7 ? \r\n g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :\r\n\r\n index == 8 ? (\r\n g.i/*addRectangle*/(0, 0, cell, cell / 2),\r\n g.i/*addRectangle*/(0, cell / 2, cell / 2, cell / 2),\r\n g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 1)) :\r\n\r\n index == 9 ? (\r\n inner = cell * 0.14,\r\n // Use fixed outer border widths in small icons to ensure the border is drawn\r\n outer = \r\n cell < 4 ? 1 :\r\n cell < 6 ? 2 :\r\n (0 | (cell * 0.35)),\r\n\r\n inner = \r\n cell < 8 ? inner : // small icon => anti-aliased border\r\n (0 | inner), // large icon => truncate decimals\r\n\r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.i/*addRectangle*/(outer, outer, cell - outer - inner, cell - outer - inner, true)) :\r\n\r\n index == 10 ? (\r\n inner = cell * 0.12,\r\n outer = inner * 3,\r\n\r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.h/*addCircle*/(outer, outer, cell - inner - outer, true)) :\r\n\r\n index == 11 ? \r\n g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :\r\n\r\n index == 12 ? (\r\n m = cell * 0.25,\r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.L/*addRhombus*/(m, m, cell - m, cell - m, true)) :\r\n\r\n // 13\r\n (\r\n !positionIndex && (\r\n m = cell * 0.4, w = cell * 1.2,\r\n g.h/*addCircle*/(m, m, w)\r\n )\r\n );\r\n}\r\n\r\n/**\r\n * @param {number} index\r\n * @param {Graphics} g\r\n * @param {number} cell\r\n */\r\nfunction outerShape(index, g, cell) {\r\n index = index % 4;\r\n\r\n var m;\r\n\r\n !index ?\r\n g.j/*addTriangle*/(0, 0, cell, cell, 0) :\r\n \r\n index == 1 ?\r\n g.j/*addTriangle*/(0, cell / 2, cell, cell / 2, 0) :\r\n\r\n index == 2 ?\r\n g.L/*addRhombus*/(0, 0, cell, cell) :\r\n\r\n // 3\r\n (\r\n m = cell / 6,\r\n g.h/*addCircle*/(m, m, cell - 2 * m)\r\n );\r\n}\n\n/**\r\n * Gets a set of identicon color candidates for a specified hue and config.\r\n * @param {number} hue\r\n * @param {ParsedConfiguration} config\r\n */\r\nfunction colorTheme(hue, config) {\r\n hue = config.X/*hue*/(hue);\r\n return [\r\n // Dark gray\r\n correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(0)),\r\n // Mid color\r\n correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0.5)),\r\n // Light gray\r\n correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(1)),\r\n // Light color\r\n correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(1)),\r\n // Dark color\r\n correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0))\r\n ];\r\n}\n\n/**\r\n * Draws an identicon to a specified renderer.\r\n * @param {Renderer} renderer\r\n * @param {string} hash\r\n * @param {Object|number=} config\r\n */\r\nfunction iconGenerator(renderer, hash, config) {\r\n var parsedConfig = getConfiguration(config, 0.08);\r\n\r\n // Set background color\r\n if (parsedConfig.H/*backColor*/) {\r\n renderer.m/*setBackground*/(parsedConfig.H/*backColor*/);\r\n }\r\n \r\n // Calculate padding and round to nearest integer\r\n var size = renderer.k/*iconSize*/;\r\n var padding = (0.5 + size * parsedConfig.Y/*iconPadding*/) | 0;\r\n size -= padding * 2;\r\n \r\n var graphics = new Graphics(renderer);\r\n \r\n // Calculate cell size and ensure it is an integer\r\n var cell = 0 | (size / 4);\r\n \r\n // Since the cell size is integer based, the actual icon will be slightly smaller than specified => center icon\r\n var x = 0 | (padding + size / 2 - cell * 2);\r\n var y = 0 | (padding + size / 2 - cell * 2);\r\n\r\n function renderShape(colorIndex, shapes, index, rotationIndex, positions) {\r\n var shapeIndex = parseHex(hash, index, 1);\r\n var r = rotationIndex ? parseHex(hash, rotationIndex, 1) : 0;\r\n \r\n renderer.M/*beginShape*/(availableColors[selectedColorIndexes[colorIndex]]);\r\n \r\n for (var i = 0; i < positions.length; i++) {\r\n graphics.u/*currentTransform*/ = new Transform(x + positions[i][0] * cell, y + positions[i][1] * cell, cell, r++ % 4);\r\n shapes(shapeIndex, graphics, cell, i);\r\n }\r\n \r\n renderer.N/*endShape*/();\r\n }\r\n\r\n // AVAILABLE COLORS\r\n var hue = parseHex(hash, -7) / 0xfffffff,\r\n \r\n // Available colors for this icon\r\n availableColors = colorTheme(hue, parsedConfig),\r\n\r\n // The index of the selected colors\r\n selectedColorIndexes = [];\r\n\r\n var index;\r\n\r\n function isDuplicate(values) {\r\n if (values.indexOf(index) >= 0) {\r\n for (var i = 0; i < values.length; i++) {\r\n if (selectedColorIndexes.indexOf(values[i]) >= 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0; i < 3; i++) {\r\n index = parseHex(hash, 8 + i, 1) % availableColors.length;\r\n if (isDuplicate([0, 4]) || // Disallow dark gray and dark color combo\r\n isDuplicate([2, 3])) { // Disallow light gray and light color combo\r\n index = 1;\r\n }\r\n selectedColorIndexes.push(index);\r\n }\r\n\r\n // ACTUAL RENDERING\r\n // Sides\r\n renderShape(0, outerShape, 2, 3, [[1, 0], [2, 0], [2, 3], [1, 3], [0, 1], [3, 1], [3, 2], [0, 2]]);\r\n // Corners\r\n renderShape(1, outerShape, 4, 5, [[0, 0], [3, 0], [3, 3], [0, 3]]);\r\n // Center\r\n renderShape(2, centerShape, 1, null, [[1, 1], [2, 1], [2, 2], [1, 2]]);\r\n \r\n renderer.finish();\r\n}\n\n/**\r\n * Computes a SHA1 hash for any value and returns it as a hexadecimal string.\r\n * \r\n * This function is optimized for minimal code size and rather short messages.\r\n * \r\n * @param {string} message \r\n */\r\nfunction sha1(message) {\r\n var HASH_SIZE_HALF_BYTES = 40;\r\n var BLOCK_SIZE_WORDS = 16;\r\n\r\n // Variables\r\n // `var` is used to be able to minimize the number of `var` keywords.\r\n var i = 0,\r\n f = 0,\r\n \r\n // Use `encodeURI` to UTF8 encode the message without any additional libraries\r\n // We could use `unescape` + `encodeURI` to minimize the code, but that would be slightly risky\r\n // since `unescape` is deprecated.\r\n urlEncodedMessage = encodeURI(message) + \"%80\", // trailing '1' bit padding\r\n \r\n // This can be changed to a preallocated Uint32Array array for greater performance and larger code size\r\n data = [],\r\n dataSize,\r\n \r\n hashBuffer = [],\r\n\r\n a = 0x67452301,\r\n b = 0xefcdab89,\r\n c = ~a,\r\n d = ~b,\r\n e = 0xc3d2e1f0,\r\n hash = [a, b, c, d, e],\r\n\r\n blockStartIndex = 0,\r\n hexHash = \"\";\r\n\r\n /**\r\n * Rotates the value a specified number of bits to the left.\r\n * @param {number} value Value to rotate\r\n * @param {number} shift Bit count to shift.\r\n */\r\n function rotl(value, shift) {\r\n return (value << shift) | (value >>> (32 - shift));\r\n }\r\n\r\n // Message data\r\n for ( ; i < urlEncodedMessage.length; f++) {\r\n data[f >> 2] = data[f >> 2] |\r\n (\r\n (\r\n urlEncodedMessage[i] == \"%\"\r\n // Percent encoded byte\r\n ? parseInt(urlEncodedMessage.substring(i + 1, i += 3), 16)\r\n // Unencoded byte\r\n : urlEncodedMessage.charCodeAt(i++)\r\n )\r\n\r\n // Read bytes in reverse order (big endian words)\r\n << ((3 - (f & 3)) * 8)\r\n );\r\n }\r\n\r\n // f is now the length of the utf8 encoded message\r\n // 7 = 8 bytes (64 bit) for message size, -1 to round down\r\n // >> 6 = integer division with block size\r\n dataSize = (((f + 7) >> 6) + 1) * BLOCK_SIZE_WORDS;\r\n\r\n // Message size in bits.\r\n // SHA1 uses a 64 bit integer to represent the size, but since we only support short messages only the least\r\n // significant 32 bits are set. -8 is for the '1' bit padding byte.\r\n data[dataSize - 1] = f * 8 - 8;\r\n \r\n // Compute hash\r\n for ( ; blockStartIndex < dataSize; blockStartIndex += BLOCK_SIZE_WORDS) {\r\n for (i = 0; i < 80; i++) {\r\n f = rotl(a, 5) + e + (\r\n // Ch\r\n i < 20 ? ((b & c) ^ ((~b) & d)) + 0x5a827999 :\r\n \r\n // Parity\r\n i < 40 ? (b ^ c ^ d) + 0x6ed9eba1 :\r\n \r\n // Maj\r\n i < 60 ? ((b & c) ^ (b & d) ^ (c & d)) + 0x8f1bbcdc :\r\n \r\n // Parity\r\n (b ^ c ^ d) + 0xca62c1d6\r\n ) + ( \r\n hashBuffer[i] = i < BLOCK_SIZE_WORDS\r\n // Bitwise OR is used to coerse `undefined` to 0\r\n ? (data[blockStartIndex + i] | 0)\r\n : rotl(hashBuffer[i - 3] ^ hashBuffer[i - 8] ^ hashBuffer[i - 14] ^ hashBuffer[i - 16], 1)\r\n );\r\n\r\n e = d;\r\n d = c;\r\n c = rotl(b, 30);\r\n b = a;\r\n a = f;\r\n }\r\n\r\n hash[0] = a = ((hash[0] + a) | 0);\r\n hash[1] = b = ((hash[1] + b) | 0);\r\n hash[2] = c = ((hash[2] + c) | 0);\r\n hash[3] = d = ((hash[3] + d) | 0);\r\n hash[4] = e = ((hash[4] + e) | 0);\r\n }\r\n\r\n // Format hex hash\r\n for (i = 0; i < HASH_SIZE_HALF_BYTES; i++) {\r\n hexHash += (\r\n (\r\n // Get word (2^3 half-bytes per word)\r\n hash[i >> 3] >>>\r\n\r\n // Append half-bytes in reverse order\r\n ((7 - (i & 7)) * 4)\r\n ) \r\n // Clamp to half-byte\r\n & 0xf\r\n ).toString(16);\r\n }\r\n\r\n return hexHash;\r\n}\n\n/**\r\n * Inputs a value that might be a valid hash string for Jdenticon and returns it \r\n * if it is determined valid, otherwise a falsy value is returned.\r\n */\r\nfunction isValidHash(hashCandidate) {\r\n return /^[0-9a-f]{11,}$/i.test(hashCandidate) && hashCandidate;\r\n}\r\n\r\n/**\r\n * Computes a hash for the specified value. Currently SHA1 is used. This function\r\n * always returns a valid hash.\r\n */\r\nfunction computeHash(value) {\r\n return sha1(value == null ? \"\" : \"\" + value);\r\n}\n\n\r\n\r\n/**\r\n * Renderer redirecting drawing commands to a canvas context.\r\n * @implements {Renderer}\r\n */\r\nfunction CanvasRenderer(ctx, iconSize) {\r\n var canvas = ctx.canvas; \r\n var width = canvas.width;\r\n var height = canvas.height;\r\n \r\n ctx.save();\r\n \r\n if (!iconSize) {\r\n iconSize = Math.min(width, height);\r\n \r\n ctx.translate(\r\n ((width - iconSize) / 2) | 0,\r\n ((height - iconSize) / 2) | 0);\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n this.l/*_ctx*/ = ctx;\r\n this.k/*iconSize*/ = iconSize;\r\n \r\n ctx.clearRect(0, 0, iconSize, iconSize);\r\n}\r\nvar CanvasRenderer__prototype = CanvasRenderer.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb[aa].\r\n */\r\nCanvasRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {\r\n var ctx = this.l/*_ctx*/;\r\n var iconSize = this.k/*iconSize*/;\r\n\r\n ctx.fillStyle = toCss3Color(fillColor);\r\n ctx.fillRect(0, 0, iconSize, iconSize);\r\n};\r\n\r\n/**\r\n * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.\r\n * @param {string} fillColor Fill color on format #rrggbb[aa].\r\n */\r\nCanvasRenderer__prototype.M/*beginShape*/ = function beginShape (fillColor) {\r\n var ctx = this.l/*_ctx*/;\r\n ctx.fillStyle = toCss3Color(fillColor);\r\n ctx.beginPath();\r\n};\r\n\r\n/**\r\n * Marks the end of the currently drawn shape. This causes the queued paths to be rendered on the canvas.\r\n */\r\nCanvasRenderer__prototype.N/*endShape*/ = function endShape () {\r\n this.l/*_ctx*/.fill();\r\n};\r\n\r\n/**\r\n * Adds a polygon to the rendering queue.\r\n * @param points An array of Point objects.\r\n */\r\nCanvasRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {\r\n var ctx = this.l/*_ctx*/;\r\n ctx.moveTo(points[0].x, points[0].y);\r\n for (var i = 1; i < points.length; i++) {\r\n ctx.lineTo(points[i].x, points[i].y);\r\n }\r\n ctx.closePath();\r\n};\r\n\r\n/**\r\n * Adds a circle to the rendering queue.\r\n * @param {Point} point The upper left corner of the circle bounding box.\r\n * @param {number} diameter The diameter of the circle.\r\n * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n */\r\nCanvasRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {\r\n var ctx = this.l/*_ctx*/,\r\n radius = diameter / 2;\r\n ctx.moveTo(point.x + radius, point.y + radius);\r\n ctx.arc(point.x + radius, point.y + radius, radius, 0, Math.PI * 2, counterClockwise);\r\n ctx.closePath();\r\n};\r\n\r\n/**\r\n * Called when the icon has been completely drawn.\r\n */\r\nCanvasRenderer__prototype.finish = function finish () {\r\n this.l/*_ctx*/.restore();\r\n};\n\nvar ICON_TYPE_SVG = 1;\r\n\r\nvar ICON_TYPE_CANVAS = 2;\r\n\r\nvar ATTRIBUTES = {\r\n O/*HASH*/: \"data-jdenticon-hash\",\r\n v/*VALUE*/: \"data-jdenticon-value\"\r\n};\r\n\r\nvar IS_RENDERED_PROPERTY = \"jdenticonRendered\";\r\n\r\nvar ICON_SELECTOR = \"[\" + ATTRIBUTES.O/*HASH*/ +\"],[\" + ATTRIBUTES.v/*VALUE*/ +\"]\";\r\n\r\nvar documentQuerySelectorAll = /** @type {!Function} */ (\r\n typeof document !== \"undefined\" && document.querySelectorAll.bind(document));\r\n\r\nfunction getIdenticonType(el) {\r\n if (el) {\r\n var tagName = el[\"tagName\"];\r\n\r\n if (/^svg$/i.test(tagName)) {\r\n return ICON_TYPE_SVG;\r\n }\r\n\r\n if (/^canvas$/i.test(tagName) && \"getContext\" in el) {\r\n return ICON_TYPE_CANVAS;\r\n }\r\n }\r\n}\n\n/**\r\n * Draws an identicon to a context.\r\n * @param {CanvasRenderingContext2D} ctx - Canvas context on which the icon will be drawn at location (0, 0).\r\n * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.\r\n * @param {number} size - Icon size in pixels.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction drawIcon(ctx, hashOrValue, size, config) {\r\n if (!ctx) {\r\n throw new Error(\"No canvas specified.\");\r\n }\r\n \r\n iconGenerator(new CanvasRenderer(ctx, size), \r\n isValidHash(hashOrValue) || computeHash(hashOrValue), \r\n config);\r\n\r\n var canvas = ctx.canvas;\r\n if (canvas) {\r\n canvas[IS_RENDERED_PROPERTY] = true;\r\n }\r\n}\n\n/**\r\n * Prepares a measure to be used as a measure in an SVG path, by\r\n * rounding the measure to a single decimal. This reduces the file\r\n * size of the generated SVG with more than 50% in some cases.\r\n */\r\nfunction svgValue(value) {\r\n return ((value * 10 + 0.5) | 0) / 10;\r\n}\r\n\r\n/**\r\n * Represents an SVG path element.\r\n */\r\nfunction SvgPath() {\r\n /**\r\n * This property holds the data string (path.d) of the SVG path.\r\n * @type {string}\r\n */\r\n this.A/*dataString*/ = \"\";\r\n}\r\nvar SvgPath__prototype = SvgPath.prototype;\r\n\r\n/**\r\n * Adds a polygon with the current fill color to the SVG path.\r\n * @param points An array of Point objects.\r\n */\r\nSvgPath__prototype.g/*addPolygon*/ = function addPolygon (points) {\r\n var dataString = \"\";\r\n for (var i = 0; i < points.length; i++) {\r\n dataString += (i ? \"L\" : \"M\") + svgValue(points[i].x) + \" \" + svgValue(points[i].y);\r\n }\r\n this.A/*dataString*/ += dataString + \"Z\";\r\n};\r\n\r\n/**\r\n * Adds a circle with the current fill color to the SVG path.\r\n * @param {Point} point The upper left corner of the circle bounding box.\r\n * @param {number} diameter The diameter of the circle.\r\n * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n */\r\nSvgPath__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {\r\n var sweepFlag = counterClockwise ? 0 : 1,\r\n svgRadius = svgValue(diameter / 2),\r\n svgDiameter = svgValue(diameter),\r\n svgArc = \"a\" + svgRadius + \",\" + svgRadius + \" 0 1,\" + sweepFlag + \" \";\r\n \r\n this.A/*dataString*/ += \r\n \"M\" + svgValue(point.x) + \" \" + svgValue(point.y + diameter / 2) +\r\n svgArc + svgDiameter + \",0\" + \r\n svgArc + (-svgDiameter) + \",0\";\r\n};\n\n\r\n\r\n/**\r\n * Renderer producing SVG output.\r\n * @implements {Renderer}\r\n */\r\nfunction SvgRenderer(target) {\r\n /**\r\n * @type {SvgPath}\r\n * @private\r\n */\r\n this.B/*_path*/;\r\n\r\n /**\r\n * @type {Object.<string,SvgPath>}\r\n * @private\r\n */\r\n this.C/*_pathsByColor*/ = { };\r\n\r\n /**\r\n * @type {SvgElement|SvgWriter}\r\n * @private\r\n */\r\n this.P/*_target*/ = target;\r\n\r\n /**\r\n * @type {number}\r\n */\r\n this.k/*iconSize*/ = target.k/*iconSize*/;\r\n}\r\nvar SvgRenderer__prototype = SvgRenderer.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb[aa].\r\n */\r\nSvgRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {\r\n var match = /^(#......)(..)?/.exec(fillColor),\r\n opacity = match[2] ? parseHex(match[2], 0) / 255 : 1;\r\n this.P/*_target*/.m/*setBackground*/(match[1], opacity);\r\n};\r\n\r\n/**\r\n * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.\r\n * @param {string} color Fill color on format #xxxxxx.\r\n */\r\nSvgRenderer__prototype.M/*beginShape*/ = function beginShape (color) {\r\n this.B/*_path*/ = this.C/*_pathsByColor*/[color] || (this.C/*_pathsByColor*/[color] = new SvgPath());\r\n};\r\n\r\n/**\r\n * Marks the end of the currently drawn shape.\r\n */\r\nSvgRenderer__prototype.N/*endShape*/ = function endShape () { };\r\n\r\n/**\r\n * Adds a polygon with the current fill color to the SVG.\r\n * @param points An array of Point objects.\r\n */\r\nSvgRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {\r\n this.B/*_path*/.g/*addPolygon*/(points);\r\n};\r\n\r\n/**\r\n * Adds a circle with the current fill color to the SVG.\r\n * @param {Point} point The upper left corner of the circle bounding box.\r\n * @param {number} diameter The diameter of the circle.\r\n * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n */\r\nSvgRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {\r\n this.B/*_path*/.h/*addCircle*/(point, diameter, counterClockwise);\r\n};\r\n\r\n/**\r\n * Called when the icon has been completely drawn.\r\n */\r\nSvgRenderer__prototype.finish = function finish () {\n var this$1 = this;\n \r\n var pathsByColor = this.C/*_pathsByColor*/;\r\n for (var color in pathsByColor) {\r\n // hasOwnProperty cannot be shadowed in pathsByColor\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (pathsByColor.hasOwnProperty(color)) {\r\n this$1.P/*_target*/.R/*appendPath*/(color, pathsByColor[color].A/*dataString*/);\r\n }\r\n }\r\n};\n\nvar SVG_CONSTANTS = {\r\n S/*XMLNS*/: \"http://www.w3.org/2000/svg\",\r\n T/*WIDTH*/: \"width\",\r\n U/*HEIGHT*/: \"height\",\r\n};\n\n/**\r\n * Renderer producing SVG output.\r\n */\r\nfunction SvgWriter(iconSize) {\r\n /**\r\n * @type {number}\r\n */\r\n this.k/*iconSize*/ = iconSize;\r\n\r\n /**\r\n * @type {string}\r\n * @private\r\n */\r\n this.D/*_s*/ =\r\n '<svg xmlns=\"' + SVG_CONSTANTS.S/*XMLNS*/ + '\" width=\"' + \r\n iconSize + '\" height=\"' + iconSize + '\" viewBox=\"0 0 ' + \r\n iconSize + ' ' + iconSize + '\">';\r\n}\r\nvar SvgWriter__prototype = SvgWriter.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb.\r\n * @param {number} opacity Opacity in the range [0.0, 1.0].\r\n */\r\nSvgWriter__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {\r\n if (opacity) {\r\n this.D/*_s*/ += '<rect width=\"100%\" height=\"100%\" fill=\"' + \r\n fillColor + '\" opacity=\"' + opacity.toFixed(2) + '\"/>';\r\n }\r\n};\r\n\r\n/**\r\n * Writes a path to the SVG string.\r\n * @param {string} color Fill color on format #rrggbb.\r\n * @param {string} dataString The SVG path data string.\r\n */\r\nSvgWriter__prototype.R/*appendPath*/ = function appendPath (color, dataString) {\r\n this.D/*_s*/ += '<path fill=\"' + color + '\" d=\"' + dataString + '\"/>';\r\n};\r\n\r\n/**\r\n * Gets the rendered image as an SVG string.\r\n */\r\nSvgWriter__prototype.toString = function toString () {\r\n return this.D/*_s*/ + \"</svg>\";\r\n};\n\n/**\r\n * Draws an identicon as an SVG string.\r\n * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.\r\n * @param {number} size - Icon size in pixels.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n * @returns {string} SVG string\r\n */\r\nfunction toSvg(hashOrValue, size, config) {\r\n var writer = new SvgWriter(size);\r\n iconGenerator(new SvgRenderer(writer), \r\n isValidHash(hashOrValue) || computeHash(hashOrValue),\r\n config);\r\n return writer.toString();\r\n}\n\n/**\r\n * Creates a new element and adds it to the specified parent.\r\n * @param {Element} parentNode\r\n * @param {string} name\r\n * @param {...(string|number)} keyValuePairs\r\n */\r\nfunction SvgElement_append(parentNode, name) {\n var keyValuePairs = [], len = arguments.length - 2;\n while ( len-- > 0 ) keyValuePairs[ len ] = arguments[ len + 2 ];\n\r\n var el = document.createElementNS(SVG_CONSTANTS.S/*XMLNS*/, name);\r\n \r\n for (var i = 0; i + 1 < keyValuePairs.length; i += 2) {\r\n el.setAttribute(\r\n /** @type {string} */(keyValuePairs[i]),\r\n /** @type {string} */(keyValuePairs[i + 1])\r\n );\r\n }\r\n\r\n parentNode.appendChild(el);\r\n}\r\n\r\n\r\n/**\r\n * Renderer producing SVG output.\r\n */\r\nfunction SvgElement(element) {\r\n // Don't use the clientWidth and clientHeight properties on SVG elements\r\n // since Firefox won't serve a proper value of these properties on SVG\r\n // elements (https://bugzilla.mozilla.org/show_bug.cgi?id=874811)\r\n // Instead use 100px as a hardcoded size (the svg viewBox will rescale \r\n // the icon to the correct dimensions)\r\n var iconSize = this.k/*iconSize*/ = Math.min(\r\n (Number(element.getAttribute(SVG_CONSTANTS.T/*WIDTH*/)) || 100),\r\n (Number(element.getAttribute(SVG_CONSTANTS.U/*HEIGHT*/)) || 100)\r\n );\r\n \r\n /**\r\n * @type {Element}\r\n * @private\r\n */\r\n this.V/*_el*/ = element;\r\n \r\n // Clear current SVG child elements\r\n while (element.firstChild) {\r\n element.removeChild(element.firstChild);\r\n }\r\n \r\n // Set viewBox attribute to ensure the svg scales nicely.\r\n element.setAttribute(\"viewBox\", \"0 0 \" + iconSize + \" \" + iconSize);\r\n element.setAttribute(\"preserveAspectRatio\", \"xMidYMid meet\");\r\n}\r\nvar SvgElement__prototype = SvgElement.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb.\r\n * @param {number} opacity Opacity in the range [0.0, 1.0].\r\n */\r\nSvgElement__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {\r\n if (opacity) {\r\n SvgElement_append(this.V/*_el*/, \"rect\",\r\n SVG_CONSTANTS.T/*WIDTH*/, \"100%\",\r\n SVG_CONSTANTS.U/*HEIGHT*/, \"100%\",\r\n \"fill\", fillColor,\r\n \"opacity\", opacity);\r\n }\r\n};\r\n\r\n/**\r\n * Appends a path to the SVG element.\r\n * @param {string} color Fill color on format #xxxxxx.\r\n * @param {string} dataString The SVG path data string.\r\n */\r\nSvgElement__prototype.R/*appendPath*/ = function appendPath (color, dataString) {\r\n SvgElement_append(this.V/*_el*/, \"path\",\r\n \"fill\", color,\r\n \"d\", dataString);\r\n};\n\n/**\r\n * Updates all canvas elements with the `data-jdenticon-hash` or `data-jdenticon-value` attribute.\r\n */\r\nfunction updateAll() {\r\n if (documentQuerySelectorAll) {\r\n update(ICON_SELECTOR);\r\n }\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified `<canvas>` or `<svg>` elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<svg>` or `<canvas>`, or a CSS selector to such an element.\r\n * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction update(el, hashOrValue, config) {\r\n renderDomElement(el, hashOrValue, config, function (el, iconType) {\r\n if (iconType) {\r\n return iconType == ICON_TYPE_SVG ? \r\n new SvgRenderer(new SvgElement(el)) : \r\n new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext(\"2d\"));\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified `<canvas>` elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<canvas>`, or a CSS selector to such an element.\r\n * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction updateCanvas(el, hashOrValue, config) {\r\n renderDomElement(el, hashOrValue, config, function (el, iconType) {\r\n if (iconType == ICON_TYPE_CANVAS) {\r\n return new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext(\"2d\"));\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified `<svg>` elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<svg>`, or a CSS selector to such an element.\r\n * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction updateSvg(el, hashOrValue, config) {\r\n renderDomElement(el, hashOrValue, config, function (el, iconType) {\r\n if (iconType == ICON_TYPE_SVG) {\r\n return new SvgRenderer(new SvgElement(el));\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified canvas or svg elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<svg>` or `<canvas>`, or a CSS selector to such an element.\r\n * @param {*} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number|undefined} config\r\n * @param {function(Element,number):Renderer} rendererFactory - Factory function for creating an icon renderer.\r\n */\r\nfunction renderDomElement(el, hashOrValue, config, rendererFactory) {\r\n if (typeof el === \"string\") {\r\n if (documentQuerySelectorAll) {\r\n var elements = documentQuerySelectorAll(el);\r\n for (var i = 0; i < elements.length; i++) {\r\n renderDomElement(elements[i], hashOrValue, config, rendererFactory);\r\n }\r\n }\r\n return;\r\n }\r\n \r\n // Hash selection. The result from getValidHash or computeHash is \r\n // accepted as a valid hash.\r\n var hash = \r\n // 1. Explicit valid hash\r\n isValidHash(hashOrValue) ||\r\n \r\n // 2. Explicit value (`!= null` catches both null and undefined)\r\n hashOrValue != null && computeHash(hashOrValue) ||\r\n \r\n // 3. `data-jdenticon-hash` attribute\r\n isValidHash(el.getAttribute(ATTRIBUTES.O/*HASH*/)) ||\r\n \r\n // 4. `data-jdenticon-value` attribute. \r\n // We want to treat an empty attribute as an empty value. \r\n // Some browsers return empty string even if the attribute \r\n // is not specified, so use hasAttribute to determine if \r\n // the attribute is specified.\r\n el.hasAttribute(ATTRIBUTES.v/*VALUE*/) && computeHash(el.getAttribute(ATTRIBUTES.v/*VALUE*/));\r\n \r\n if (!hash) {\r\n // No hash specified. Don't render an icon.\r\n return;\r\n }\r\n \r\n var renderer = rendererFactory(el, getIdenticonType(el));\r\n if (renderer) {\r\n // Draw icon\r\n iconGenerator(renderer, hash, config);\r\n el[IS_RENDERED_PROPERTY] = true;\r\n }\r\n}\n\n// This file is compiled to dist/jdenticon-module.js\r\n\r\nvar jdenticon = updateAll;\r\n\r\ndefineConfigProperty(jdenticon);\r\n\r\n// Export public API\r\njdenticon[\"configure\"] = configure;\r\njdenticon[\"drawIcon\"] = drawIcon;\r\njdenticon[\"toSvg\"] = toSvg;\r\njdenticon[\"update\"] = update;\r\njdenticon[\"updateCanvas\"] = updateCanvas;\r\njdenticon[\"updateSvg\"] = updateSvg;\r\n\r\n/**\r\n * Specifies the version of the Jdenticon package in use.\r\n * @type {string}\r\n */\r\njdenticon[\"version\"] = \"3.3.0\";\r\n\r\n/**\r\n * Specifies which bundle of Jdenticon that is used.\r\n * @type {string}\r\n */\r\njdenticon[\"bundle\"] = \"browser-cjs\";\r\n\r\nmodule.exports = jdenticon;\n//# sourceMappingURL=jdenticon-module.js.map\n","export interface KeycloakConfig {\n url: string;\n realm: string;\n clientId: string;\n}\n\nexport interface LinkItem {\n name: string;\n url: string;\n icon?: string;\n}\n\nexport interface MenuSection {\n name: string;\n links: LinkItem[];\n}\n\nexport interface LocalMenuSection {\n name: string;\n enableCustomLocalMenu: boolean;\n links: LinkItem[];\n}\n\nexport interface MenuConfig {\n global: MenuSection;\n local: LocalMenuSection;\n}\n\nexport interface LoadingConfig {\n isLoading: boolean;\n duration: number; // in milliseconds\n}\n\nexport interface AppConfig {\n keycloak: KeycloakConfig;\n defaultLink: LinkItem;\n menuViewType: string;\n cookieName: string;\n menu: MenuConfig;\n loading?: LoadingConfig;\n}\n\n\nconst DEFAULT_CONFIG: AppConfig = {\n keycloak: {\n url: 'https://keycloak.ds2.icelab.cloud',\n realm: 'ds2',\n clientId: 'dashbtn'\n },\n defaultLink: { name: 'Portal', url: 'https://portal.ds2.icelab.cloud' },\n menuViewType: 'grid',\n cookieName: 'ZDZW_cookie',\n menu: {\n global: {\n name: 'Applications',\n links: []\n },\n local: {\n name: 'Applications',\n enableCustomLocalMenu: true,\n links: []\n }\n },\n loading: {\n isLoading: true,\n duration: 800\n },\n};\n\n// Fetch config from API\nclass ConfigService {\n private static instance: ConfigService;\n private _config: AppConfig = DEFAULT_CONFIG;\n\n static getInstance() {\n if (!ConfigService.instance) {\n ConfigService.instance = new ConfigService();\n }\n return ConfigService.instance;\n }\n\n async fetchConfig(portalApiUrl: string) {\n try {\n const res = await fetch(portalApiUrl + '/developer/dashbuttons/config');\n if (!res.ok) throw new Error('Failed to fetch config');\n const data = await res.json();\n this._config = { ...DEFAULT_CONFIG, ...data }; // Merge API data with defaults\n } catch (e) {\n console.warn('Using default config due to API failure', e);\n this._config = DEFAULT_CONFIG; // fallback to defaults\n }\n\n return this._config;\n }\n\n /**\n * Return cached config without calling API\n */\n get config() {\n return this._config;\n }\n}\n\nexport const configService = ConfigService.getInstance();","export interface InstalledChartMetadata {\n category?: string;\n frontendUrlPrefix?: string;\n}\n\nexport interface InstalledChart {\n id: number;\n installChartName: string;\n metadata: InstalledChartMetadata;\n}\n\nexport interface PaginatedInstalledChartsResponse {\n data: InstalledChart[];\n total: number;\n page: number;\n perPage: number;\n totalPages: number;\n}\n\nexport interface MenuLink {\n name: string;\n url: string;\n category?: string;\n}\n\nconst getRootDomain = (hostOrUrl: string): string => {\n // Ensure we can parse it with URL\n const url = hostOrUrl.startsWith(\"http\") ? new URL(hostOrUrl) : new URL(`https://${hostOrUrl}`);\n const hostname = url.hostname;\n const port = url.port ? `:${url.port}` : \"\";\n const parts = hostname.split(\".\");\n\n // localhost → return with port\n if (hostname === \"localhost\") return hostname + port;\n\n // sslip.io → keep last 3 parts\n if (hostname.endsWith(\".sslip.io\")) return parts.slice(-5).join(\".\") + port;\n\n // Normal domains → remove first label\n return parts.slice(1).join(\".\") + port;\n};\n\nconst getUrlProtocol = (url: string, defaultProtocol = \"https://\"): string => {\n if (!url) return defaultProtocol;\n\n const trimmed = url.trim();\n\n // Match protocol (http:// or https://)\n const match = trimmed.match(/^(https?:\\/\\/)/i);\n return match ? match[1] : defaultProtocol;\n};\n\nclass MenuService {\n\n async getMenuConfig(url): Promise<PaginatedInstalledChartsResponse> {\n try {\n const res = await fetch(url);\n if (!res.ok) throw new Error('API error');\n return await res.json();\n } catch {\n return { data: [], total: 0, page: 1, perPage: 0, totalPages: 0 };\n }\n }\n\n private setDefaultProtocol(url: string): string {\n // If protocol already exists (http:// or https://), keep it\n if (/^https?:\\/\\//i.test(url)) {\n return url;\n }\n\n // Otherwise default to https\n return `https://${url}`;\n }\n\n async getMenuLinks(BASE_URL): Promise<MenuLink[]> {\n const normalizedBaseUrl = this.setDefaultProtocol(BASE_URL);\n // Create a URL object from normalizedBaseUrl\n const urlObj = new URL(normalizedBaseUrl);\n\n // Add the 'containerisationbackend' subdomain\n urlObj.hostname = `containerisationbackend.${urlObj.hostname}`;\n \n const { data } = await this.getMenuConfig(`${urlObj.origin}/developer/charts/installed`);\n\n return data.map(d => {\n const frontendUrlPrefix = d.metadata?.frontendUrlPrefix;\n\n const rootDomain = getRootDomain(BASE_URL);\n const generatedUrl = `${getUrlProtocol(BASE_URL)}${frontendUrlPrefix}.${rootDomain}`;\n \n return {\n name: d.installChartName,\n url: frontendUrlPrefix ? generatedUrl : \"\",\n category: d.metadata?.category ?? \"\",\n };\n });\n }\n}\n\nexport const menuService = new MenuService();","@import '../../assets/fontawesome-6.7.2-web/css/all.min.css';\n\n.button {\n\tdisplay: flex;\n\theight: 50px;\n\tpadding: 0;\n\tbackground: #3e7671;\n\tborder: none;\n\toutline: none;\n\tborder-radius: 5px;\n\toverflow: hidden;\n\tfont-size: 16px;\n\tfont-weight: 500;\n\tcursor: pointer;\n min-width: 220px;\n max-width: 220px;\n}\n\n.button:hover {\n\tbackground: #008168;\n}\n\n.button:active {\n\tbackground: #3e7671;\n}\n\n.button-text{\n\tdisplay: block;\n\tmargin: auto;\n\tpadding: 0 10px;\n\tcolor: #fff;\n text-overflow: ellipsis;\n overflow:hidden;\n white-space:nowrap;\n width: 50%;\n text-transform: capitalize;\n}\n\n.button-icon {\n margin: auto;\n padding: 10px;\n font-size: 20px;\n color: #ffffff;\n}\n\n.button-profile {\n\tmargin: auto;\n}\n\n.button-profile svg {\n display: flex;\n margin-left: 4px;\n background-color: #fff;\n border-radius: 4px;\n}\n\n.profile-image {\n display: flex;\n margin-left: 4px;\n width: 40px;\n height: 40px;\n border-radius: 4px;\n background-color: #fff;\n}\n\n.button-text-full-width {\n width: auto!important;\n}\n\n.button-link {\n text-decoration: none!important;\n}\n\n/* Drop down section */\n.dropdown {\n position: relative;\n display: inline-block;\n}\n \n.dropdown-content {\n display: none;\n position: absolute;\n right: 0;\n background-color: #f9f9f9;\n min-width: 180px;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n border-radius: 5px;\n text-align: left!important;\n}\n \n.dropdown-content-link a {\n color: #71797E;\n padding: 16px 20px;\n text-decoration: none;\n display: block;\n cursor: pointer;\n font-size: 1rem!important;\n}\n \n.dropdown-content-link a:hover {\n background-color: #f1f1f1;\n color: #000;\n opacity: 0.7;\n}\n\n.dropdown:hover .dropdown-content {\n display: block;\n}\n\n\n/* Modal Content */\n.modal {\n display: none;\n position: fixed;\n z-index: 1;\n padding-top: 100px;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: auto;\n background-color: rgb(0,0,0);\n background-color: rgba(0,0,0,0.4);\n text-align: center;\n }\n \n\n .modal-content {\n background-color: #fefefe;\n margin: auto;\n padding: 20px;\n border: 1px solid #888;\n width: 40%;\n }\n\n .modal-body {\n max-height: 50vh;\n overflow-y: auto;\n }\n \n .close {\n color: #aaaaaa;\n float: right;\n font-size: 28px;\n font-weight: bold;\n }\n \n .close:hover,\n .close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n }\n\n .modal-app {\n background-color: #c3e9bc;\n padding: 15px;\n margin: 10px;\n border-radius: 5px;\n }\n\n .external-app-link {\n text-decoration:none; \n color: #000;\n }\n\n .gray-text {\n color: #606060;\n }\n\n .green-text {\n color: #3e7671;\n }\n\n #countdown {\n position: relative;\n margin: auto;\n margin-top: 30px;\n height: 40px;\n width: 40px;\n text-align: center;\n }\n \n #countdown-number {\n color: #2e2e2e;\n display: inline-block;\n line-height: 40px;\n }\n \n #countdown svg {\n position: absolute;\n top: 0;\n right: 0;\n width: 40px;\n height: 40px;\n transform: rotateY(-180deg) rotateZ(-90deg);\n }\n \n #countdown svg circle {\n stroke-dasharray: 113px;\n stroke-dashoffset: 0px;\n stroke-linecap: round;\n stroke-width: 4px;\n stroke: #008168;\n fill: none;\n animation: countdown 6s linear infinite forwards;\n }\n \n @keyframes countdown {\n from {\n stroke-dashoffset: 0px;\n }\n to {\n stroke-dashoffset: 113px;\n }\n }\n\n .lds-ring {\n color: #fff\n }\n .lds-ring {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: auto;\n position: relative;\n }\n .lds-ring div {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 25px;\n height: 25px;\n margin: 3px;\n border: 2px solid currentColor;\n border-radius: 50%;\n animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: currentColor transparent transparent transparent;\n }\n .lds-ring div:nth-child(1) {\n animation-delay: -0.45s;\n }\n .lds-ring div:nth-child(2) {\n animation-delay: -0.3s;\n }\n .lds-ring div:nth-child(3) {\n animation-delay: -0.15s;\n }\n @keyframes lds-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n\n.dropdown-content .dropdown-user-profile {\n padding: 12px 10px 8px 18px;\n border-bottom: 1px solid #aaaaaa;\n}\n\n.dropdown-content .dropdown-user-profile .username {\n font-size: 16px;\n color: #2e2e2e;\n text-transform: capitalize;\n}\n\n.dropdown-content .dropdown-user-profile .first-last-name {\n font-size: 13px;\n color: #606060;\n}\n\n\n.menu-bar-icons {\n color: #008168;\n display: inline-block;\n margin-right: 8px;\n font-size: 18px;\n}\n\n.other-links-list {\n /* display: flex;\n justify-content: space-between; */\n padding: 14px;\n background-color: #f1f1f1;\n margin-bottom: 8px;\n text-align: start;\n border-radius: 5px;\n}\n\n/* .box {\n box-shadow: 0 3px 12px rgba(0,0,0,0.15);\n background-color: #fff;\n border-radius: 3px;\n overflow: hidden;\n} */\n\n.tab-list {\n margin: 0px 40px;\n padding: 0;\n list-style: none;\n display: flex;\n position: relative;\n width: 85%;\n border-bottom: 1px solid #aaa;\n}\n\n/* .tab-list::before {\n content: '';\n display: block;\n height: 2px;\n width: 50%;\n position: absolute;\n bottom: 0;\n background-color: #aaa;\n transition: .3s;\n} */\n\n.tab-item {\n flex: 1;\n text-align: center;\n transition: .3s;\n opacity: 0.5;\n}\n\n.tab-toggle {\n display: none;\n}\n\n.tab-content {\n display: none;\n}\n\n.tab-toggle:nth-child(1):checked ~ .tab-list .tab-item:nth-child(1),\n.tab-toggle:nth-child(2):checked ~ .tab-list .tab-item:nth-child(2) {\n opacity: 1;\n color: #008168;\n border-bottom: 2px solid #008168;\n}\n\n.tab-toggle:nth-child(2):checked ~ .tab-list::before {\n transform: translateX(100%);\n}\n\n.tab-toggle:nth-child(3):checked ~ .tab-list::before {\n transform: translateX(200%);\n}\n\n.tab-toggle:nth-child(1):checked ~ .tab-container .tab-content:nth-child(1),\n.tab-toggle:nth-child(2):checked ~ .tab-container .tab-content:nth-child(2) {\n display: block;\n}\n\n.tab-trigger {\n display: block;\n padding: 10px 0;\n}\n\n.tab-container {\n padding: 15px 30px;\n}\n\n.grid-view-menu {\n display: grid;\n gap: 4px;\n grid-template-columns: repeat(3, 1fr);\n align-content: start;\n padding: 8px;\n max-height: 230px;\n overflow-y: auto;\n}\n\n.grid-view-link {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 6px;\n width: 75px;\n height: 70px;\n padding: 6px;\n text-decoration: none;\n font-size: 13px;\n color: #128f8b;\n text-align: center;\n transition: transform 0.2s ease, background-color 0.1s ease;\n position: relative;\n z-index: 1;\n /* background-color: white; */\n border-radius: 3px;\n cursor: pointer;\n}\n\n.grid-view-link:hover {\n background-color: #eeeeee;\n transform: scale(1.1);\n z-index: 5;\n}\n\n.grid-view-link-text {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: #71797e;\n width: 100%;\n}\n\n.grid-view-link:hover .grid-view-link-text {\n white-space: pre-wrap;\n overflow: visible;\n text-overflow: unset;\n}\n\n.grid-view-link i {\n transition: transform 0.2s ease;\n}\n\n.grid-view-link:hover i {\n transform: scale(1.1);\n}\n\nhr.solid {\n border-top: 1px solid #bbb;\n margin: 2px 0;\n} \n\n/* ===== Overlay ===== */\n.restricted-overlay {\n position: fixed;\n inset: 0;\n background: linear-gradient(135deg, #0f3d3e, #128f8b);\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 20px;\n z-index: 9999999;\n font-family: \"Segoe UI\", sans-serif;\n}\n\n/* ===== Card ===== */\n.restricted-card {\n background: #ffffff;\n border-radius: 10px;\n padding: 50px;\n max-width: 540px;\n width: 100%;\n text-align: center;\n box-shadow: 0 25px 70px rgba(0, 0, 0, 0.25);\n animation: fadeInUp 0.3s ease;\n}\n\n/* ===== Icon ===== */\n.restricted-icon {\n font-size: 48px;\n color: #128f8b;\n margin-bottom: 30px;\n}\n\n/* ===== Text ===== */\n.restricted-card h2 {\n margin-bottom: 10px;\n color: #128f8b;\n}\n\n.restricted-message {\n color: #555;\n font-size: 16px;\n margin-bottom: 30px;\n line-height: 1.5;\n}\n\n/* ===== Links Section ===== */\n.restricted-links h4 {\n margin-bottom: 20px;\n color: #128f8b;\n}\n\n.link-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 20px;\n margin-bottom: 25px;\n}\n\n.restricted-link {\n background: #ecf2f2;\n padding: 10px;\n border-radius: 10px;\n text-decoration: none;\n color: #128f8b;\n font-size: 13px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n transition: all 0.2s ease;\n}\n\n.restricted-link:hover {\n background: #128f8b;\n color: #fff;\n}\n\n/* ===== Buttons ===== */\n.restricted-actions {\n display: flex;\n justify-content: center;\n gap: 15px;\n}\n\n.btn-primary {\n background: #128f8b;\n color: #fff;\n padding: 10px 20px;\n border-radius: 8px;\n text-decoration: none;\n font-weight: 500;\n transition: 0.2s;\n}\n\n.btn-primary:hover {\n background: #0f6e6b;\n}\n\n.btn-secondary {\n background: transparent;\n border: 2px solid #128f8b;\n color: #128f8b;\n padding: 8px 18px;\n border-radius: 8px;\n cursor: pointer;\n transition: 0.2s;\n}\n\n.btn-danger {\n background: transparent;\n border: 2px solid #dc3545;\n color: #dc3545;\n padding: 8px 18px;\n border-radius: 8px;\n cursor: pointer;\n transition: 0.2s;\n}\n\n.btn-secondary:hover {\n background: #128f8b;\n color: #fff;\n}\n\n/* ===== Animation ===== */\n@keyframes fadeInUp {\n from {\n opacity: 0;\n transform: translateY(15px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n","import { Component, Prop, State, h, Element } from '@stencil/core';\nimport Keycloak from \"keycloak-js\";\nimport { toSvg } from \"jdenticon\";\nimport { AppConfig, configService } from '../../services/config';\nimport { MenuLink, menuService } from '../../services/menu';\n\n@Component({\n tag: 'dash-button',\n styleUrl: 'dash-button.css',\n shadow: true,\n})\nexport class DashButtonComponent {\n\n @Element() el;\n \n @Prop() showPostLoginText: boolean = false;\n @Prop() silentCheckSso: boolean = false;\n @Prop() redirectUri: string;\n @Prop() authMethod: string = \"check-sso\";\n\n @Prop() portalApiUrl: string = \"\";\n @Prop() plmUrl: string = \"https://productlicensemanager-zdzw.cloud.zdzw-project.com\";\n @Prop() showUnauthorizedModal: boolean = false;\n\n @Prop() primaryColor: string = \"\";\n @Prop() accentColor: string = \"\";\n\n @State() keycloak: any = null;\n\n @State() isAuth = false;\n @State() givenUserName: string = \"\";\n @State() silentCheckSsoRedirectUri: string = window.location.origin + '/assets/verificar-sso.html';\n\n @State() appList = []\n \n @State() avatarSvg = toSvg(\"init-avatar\", 40);\n\n @State() isLoading: boolean = false;\n @State() config: AppConfig;\n\n @State() localMenuLinks: MenuLink[];\n @State() organizationUrl: any;\n\n @State() isRestricted: boolean = false;\n\n async componentWillLoad() {\n\n // Fetch config from API\n this.config = await configService.fetchConfig(this.portalApiUrl);\n console.log(this.config)\n\n if (!this.config) return; // prevent Keycloak init if fetch failed\n\n // render will show spinner\n if(this.config?.loading?.isLoading) {\n this.isLoading = true;\n setTimeout(() => {\n this.isLoading = false;\n }, this.config?.loading?.duration);\n }\n\n // Initialize Keycloak\n this.keycloak = new Keycloak({\n url: this.config.keycloak.url,\n realm: this.config.keycloak.realm,\n clientId: this.config.keycloak.clientId\n });\n\n //\n // Init Keycloak\n //\n this.initKeycloak().then(() => {\n // Check if the user is authenticated\n if(this.isAuth) {\n // Get organization URL and load local menu items\n // If the user has not set an organization URL, they can configure it in the Portal profile page\n this.loadOrganizationUrlAndLinks();\n \n // Validate user access permission for the application. \n // If unauthorized, display the restricted access modal.\n this.validateAppAccessByUrl()\n\n }\n })\n }\n\n async initKeycloak() {\n // Remove the initiation time permission localstorage object\n localStorage.removeItem(\"ZDZW_app_permission\");\n\n await this.keycloak.init(\n {\n onLoad: this.authMethod,\n checkLoginIframe: false,\n silentCheckSsoRedirectUri: this.silentCheckSso ? this.silentCheckSsoRedirectUri : '',\n }).then(res => {\n if(res) {\n this.isAuth = true\n localStorage.setItem(\"keycloak\", JSON.stringify(this.keycloak));\n // document.cookie = \"DASH_BTN=\" + JSON.parse(localStorage.getItem('keycloak')).token;\n document.cookie = this.config.cookieName +\"=\" + JSON.parse(localStorage.getItem('keycloak')).token;\n\n // Set userName\n this.givenUserName = JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.preferred_username\n\n // Set user avatar\n this.avatarSvg = toSvg(JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.sub, 40);\n } \n });\n }\n\n async loadOrganizationUrlAndLinks() {\n // Read org URL safely\n try {\n const kc = JSON.parse(localStorage.getItem(\"keycloak\") || \"{}\");\n this.organizationUrl = kc?.idTokenParsed?.organizationUrl || null;\n } catch {\n this.organizationUrl = null;\n }\n\n // If no organization, do nothing\n if (!this.organizationUrl) return;\n\n // If config or menu not ready, skip\n if (!this.config?.menu?.local) return;\n\n // Only load when custom menu is NOT enabled\n if (!this.config.menu.local.enableCustomLocalMenu) {\n try {\n this.localMenuLinks = await menuService.getMenuLinks(\n this.organizationUrl\n );\n } catch (e) {\n console.error(\"Failed to load local menu\", e);\n this.localMenuLinks = [];\n }\n }\n }\n\n validateAppAccessByUrl() {\n const currentUrl = window.location.href;\n const currentOrigin = window.location.origin;\n\n const globalLinks = this.config?.menu?.global?.links || [];\n\n // Check Global Links\n const matchGlobal = globalLinks.some(link => {\n try {\n const linkOrigin = new URL(link.url).origin;\n return currentOrigin === linkOrigin;\n } catch {\n return false;\n }\n });\n\n // Check Token organizationUrl\n const tokenParsed = this.keycloak?.tokenParsed;\n const allowedOrg = tokenParsed?.organizationUrl;\n\n const matchOrganization =\n allowedOrg && currentUrl.includes(allowedOrg);\n\n // global and org url validations\n const isAllowed = matchGlobal || matchOrganization;\n\n this.isRestricted = !isAllowed;\n }\n\n login() { \n this.keycloak.login() \n }\n\n logout() {\n localStorage.removeItem(\"keycloak\");\n // document.cookie = \"DASH_BTN=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;\";\n document.cookie = this.config.cookieName + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;\";\n this.keycloak.logout() \n } \n\n showModal() {\n const appModal = this.el.shadowRoot.querySelector('#appListModal');\n appModal.style.display = \"block\";\n }\n\n closeModal() {\n const appModal = this.el.shadowRoot.querySelector('#appListModal');\n appModal.style.display = \"none\";\n }\n\n render() {\n return <div>\n <div>\n {\n (() => {\n // GLOBAL LOADING SPINNER\n if (this.isLoading) {\n return (\n <a id=\"login-btn\" class=\"button button-link\">\n <div class=\"lds-ring\"><div></div><div></div><div></div><div></div></div>\n </a>\n );\n }\n\n if (this.isRestricted) {\n return (\n <div class=\"restricted-overlay\">\n <div class=\"restricted-card\">\n\n <div class=\"restricted-icon\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n </div>\n\n <h2>Access Restricted</h2>\n <p class=\"restricted-message\">\n You do not have permission to access this application.\n Please contact your administrator if you believe this is an error.\n </p>\n\n {/* Global Applications */}\n {this.config?.menu?.global?.links?.length > 0 && (\n <div class=\"restricted-links\">\n <h4>Publicly Available Modules</h4>\n <div class=\"link-grid\">\n {this.config.menu.global.links.map(item => (\n <a href={item.url} target=\"_blank\" class=\"restricted-link\">\n <i class={item.icon}></i>\n <span>{item.name}</span>\n </a>\n ))}\n </div>\n </div>\n )}\n\n {/* Actions */}\n <div class=\"restricted-actions\">\n {this.config?.defaultLink?.url && (\n <a\n href={this.config.defaultLink.url}\n target=\"_blank\"\n class=\"btn-primary\">\n Go to Portal\n </a>\n )}\n <button class=\"btn-danger\" onClick={this.logout.bind(this)}>\n Logout\n </button>\n </div>\n\n </div>\n </div>\n );\n }\n\n if(this.isAuth && this.showPostLoginText) { \n return (\n <a style={{background: this.primaryColor != undefined? this.primaryColor : \"\"}} href={this.redirectUri} id=\"login-btn\" class=\"button button-link\">\n <span style={{color: this.accentColor != undefined? this.accentColor : \"\"}} class=\"button-text button-text-full-width\">Go to Dashboard</span>\n </a>\n )\n } else if (this.isAuth) {\n return (\n <div id=\"profile-btn\" class=\"dropdown\">\n <button style={{background: this.primaryColor != undefined? this.primaryColor : \"\"}} type=\"button\" class=\"button\">\n <span class=\"button-profile\">\n {JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.imageUrl ?\n <img class=\"profile-image\" src=\"https://s-damith.github.io/test-avatar/images/e24da9c5-0b1f-46fa-82cd-7c711c77b5c7.png\"/>\n :\n <div innerHTML={this.avatarSvg}/>\n }\n </span>\n <span style={{color: this.accentColor != undefined? this.accentColor : \"\"}} id=\"given-name\" class=\"button-text\">{this.givenUserName}</span>\n <div class=\"button-icon\">\n {(this.config.menuViewType == \"grid\") ? <i class=\"fa-solid fa-grip-vertical\"></i> : <i class=\"fa-solid fa-bars\"></i>} \n </div>\n </button>\n <div class=\"dropdown-content\">\n <div class=\"dropdown-user-profile\">\n <div class=\"username\">@{this.givenUserName}</div>\n <div class=\"first-last-name\">{JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.name}</div>\n </div>\n\n\n { (this.config.menuViewType == \"grid\") ? (\n <div>\n <div class=\"grid-view-menu\">\n {\n this.config.menu.global.links.map(item => {\n return (\n <a href={item.url} target='_blank' class=\"grid-view-link\">\n <i class={item.icon + \" fa-2x\"}></i> \n <div class=\"grid-view-link-text\">{item.name}</div>\n </a>\n )\n })\n }\n </div>\n \n {/* show divider */}\n {this.config.menu.global.links.length != 0 && <hr class=\"solid\"></hr>}\n\n <div class=\"grid-view-menu\" style={this.config.menu.global.links.length == 0 && {\"margin-bottom\": \"12px\"}}>\n <a onClick={this.showModal.bind(this)} class=\"grid-view-link\">\n <i class=\"fa-regular fa-window-restore fa-2x\"></i> \n <div class=\"grid-view-link-text\">Modules</div>\n </a>\n <a href={this.config.defaultLink.url} target='_blank' class=\"grid-view-link\">\n <i class=\"fa-solid fa-globe fa-2x\"></i>\n <div class=\"grid-view-link-text\">{this.config.defaultLink.name}</div>\n </a>\n <a onClick={this.logout.bind(this)} class=\"grid-view-link\">\n <i class=\"fa-solid fa-right-from-bracket fa-2x\"></i>\n <div class=\"grid-view-link-text\">Logout</div>\n </a>\n \n </div>\n\n </div>\n ) : (\n\n // List View\n <div class=\"dropdown-content-link\">\n {\n this.config.menu.global.links.map(item => {\n return (\n <a href={item.url} target='_blank' id=\"applications-btn\">\n <i class={item.icon + \" menu-bar-icons\"}></i> \n {item.name}\n </a>\n )\n })\n }\n <a onClick={this.showModal.bind(this)} id=\"applications-btn\"><i class=\"fa-regular fa-window-restore menu-bar-icons\"></i>Modules</a>\n <a href={this.config.defaultLink.url} target='_blank' id=\"applications-btn\"><i class=\"fa-solid fa-globe menu-bar-icons\"></i>{this.config.defaultLink.name}</a>\n <a onClick={this.logout.bind(this)} id=\"logout-btn\"><i class=\"fa-solid fa-right-from-bracket menu-bar-icons\"></i>Logout</a>\n </div>\n\n )}\n </div>\n </div>\n )\n } else {\n return (\n <button style={{background: this.primaryColor != undefined? this.primaryColor : \"\"}} onClick={this.login.bind(this)} id=\"login-btn\" type=\"button\" class=\"button\">\n <span style={{color: this.accentColor != undefined? this.accentColor : \"\"}} class=\"button-text\">Login</span>\n </button>\n )\n }\n })() \n } \n </div>\n \n <div id=\"appListModal\" class=\"modal\">\n \n <div class=\"modal-content\">\n <span onClick={this.closeModal.bind(this)} class=\"close\">&times;</span>\n\n <div class=\"box\">\n {<input type=\"radio\" class=\"tab-toggle\" name=\"tab-toggle\" id=\"tab1\" checked/>}\n {/* {(this.menuLinkList.length != 0) && <input type=\"radio\" class=\"tab-toggle\" name=\"tab-toggle\" id=\"tab2\" checked={this.disableApplicationTab}/>} */}\n\n <ul class=\"tab-list\">\n {<li class=\"tab-item\">\n <label class=\"tab-trigger\" htmlFor=\"tab1\"><i class=\"fa-solid fa-table-list menu-bar-icons\"></i> {this.config.menu.local.name}</label>\n </li>}\n {/* {(this.menuLinkList.length != 0) && <li class=\"tab-item\">\n <label class=\"tab-trigger\" htmlFor=\"tab2\"><i class=\"fa-solid fa-link menu-bar-icons\"></i> {this.otherLinkDisplayName}</label>\n </li>} */}\n </ul>\n \n <div class=\"tab-container\">\n <div class=\"tab-content\">\n <div class=\"modal-body\">\n\n {!this.config?.menu?.local?.enableCustomLocalMenu ? (\n // <div>{this.localMenuLinks}</div>\n this.localMenuLinks?.map((app, index) => {\n const isDisabled = !app.url;\n\n return ( \n <a\n key={index}\n class=\"external-app-link\"\n href={isDisabled ? undefined : app.url}\n target={isDisabled ? undefined : \"_blank\"}\n rel={isDisabled ? undefined : \"noopener noreferrer\"}\n onClick={isDisabled ? (e) => e.preventDefault() : undefined}\n >\n <div class=\"modal-app\">\n <div>{app.name}</div>\n </div>\n </a>\n )\n })\n ) : (\n this.config.menu.local.links?.map((app, index) => (\n <a\n key={index}\n class=\"external-app-link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={app.url}\n >\n <div class=\"modal-app\">\n <div>{app.name}</div>\n </div>\n </a>\n ))\n )}\n\n {/* Error messages */}\n {!this.organizationUrl ? (\n <div>\n <h3 class=\"gray-text\">\n Organization Domain URL not set\n </h3>\n <p class=\"gray-text\">Please set your Organization Domain URL on the Portal profile page.</p>\n </div>\n ) : (\n (\n (!this.config?.menu?.local?.enableCustomLocalMenu &&\n (this.localMenuLinks?.length ?? 0) === 0) ||\n (this.config?.menu?.local?.enableCustomLocalMenu &&\n (this.config?.menu?.local?.links?.length ?? 0) === 0)\n ) && (\n <div>\n <h3 class=\"gray-text\">\n No installed {this.config?.menu?.local?.name || \"menu\"} found.\n </h3>\n <p class=\"gray-text\">Please contact administration.</p>\n </div>\n )\n )}\n\n </div>\n </div> \n {/* <div class=\"tab-content\">\n <div class=\"modal-body\">\n {\n this.menuLinkList.map(link => {\n return (\n <a class=\"external-app-link\" target='_blank' href={link.url}>\n <div class=\"modal-app\">\n <div>{link.name}</div>\n </div>\n </a>\n )\n })\n }\n </div>\n </div> */}\n </div>\n </div>\n\n </div>\n \n </div>\n\n <div id=\"appPermissionErrorModal\" class=\"modal\">\n <div class=\"modal-content\">\n <img src=\"data:image/png;base64,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\"/>\n <h2 class=\"green-text margin-b\">You don't have permission to access this application.</h2>\n <h3 class=\"green-text\">Please contact the administration.</h3>\n \n {(this.config.defaultLink.url && this.showUnauthorizedModal) ? \n <div>\n <h4 class=\"gray-text\">You will be automatically redirected to the portal.</h4>\n <div id=\"countdown\">\n <div id=\"countdown-number\"></div>\n <svg>\n <circle r=\"18\" cx=\"20\" cy=\"20\"></circle>\n </svg>\n </div>\n </div>\n : <div></div>\n }\n </div>\n </div>\n\n </div>;\n }\n}\n"],"version":3}
1
+ {"file":"dash-button.entry.js","mappings":"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E,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,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","names":["global","require$$0","base64","this$1","toSvg"],"sources":["node_modules/base64-js/index.js","node_modules/js-sha256/src/sha256.js","node_modules/jwt-decode/build/esm/index.js","node_modules/keycloak-js/dist/keycloak.mjs","node_modules/jdenticon/dist/jdenticon-module.js","src/services/config.ts","src/services/menu.ts","src/components/my-component/dash-button.css?tag=dash-button&encapsulation=shadow","src/components/my-component/dash-button.tsx"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.10.1\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2023\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = require('crypto')\n var Buffer = require('buffer').Buffer;\n var algorithm = is224 ? 'sha224' : 'sha256';\n var bufferFrom;\n if (Buffer.from && !root.JS_SHA256_NO_BUFFER_FROM) {\n bufferFrom = Buffer.from;\n } else {\n bufferFrom = function (message) {\n return new Buffer(message);\n };\n }\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(bufferFrom(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n this.chromeBugWorkAround = true;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","import base64 from 'base64-js';\nimport sha256 from 'js-sha256';\nimport { jwtDecode } from 'jwt-decode';\n\n/*\n * Copyright 2016 Red Hat, Inc. and/or its affiliates\n * and other contributors as indicated by the @author tags.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nif (typeof Promise === 'undefined') {\n throw Error('Keycloak requires an environment that supports Promises. Make sure that you include the appropriate polyfill.');\n}\n\nfunction Keycloak (config) {\n if (!(this instanceof Keycloak)) {\n throw new Error(\"The 'Keycloak' constructor must be invoked with 'new'.\")\n }\n\n var kc = this;\n var adapter;\n var refreshQueue = [];\n var callbackStorage;\n\n var loginIframe = {\n enable: true,\n callbackList: [],\n interval: 5\n };\n\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n if ((scripts[i].src.indexOf('keycloak.js') !== -1 || scripts[i].src.indexOf('keycloak.min.js') !== -1) && scripts[i].src.indexOf('version=') !== -1) {\n kc.iframeVersion = scripts[i].src.substring(scripts[i].src.indexOf('version=') + 8).split('&')[0];\n }\n }\n\n var useNonce = true;\n var logInfo = createLogger(console.info);\n var logWarn = createLogger(console.warn);\n\n kc.init = function (initOptions) {\n if (kc.didInitialize) {\n throw new Error(\"A 'Keycloak' instance can only be initialized once.\");\n }\n\n kc.didInitialize = true;\n\n kc.authenticated = false;\n\n callbackStorage = createCallbackStorage();\n var adapters = ['default', 'cordova', 'cordova-native'];\n\n if (initOptions && adapters.indexOf(initOptions.adapter) > -1) {\n adapter = loadAdapter(initOptions.adapter);\n } else if (initOptions && typeof initOptions.adapter === \"object\") {\n adapter = initOptions.adapter;\n } else {\n if (window.Cordova || window.cordova) {\n adapter = loadAdapter('cordova');\n } else {\n adapter = loadAdapter();\n }\n }\n\n if (initOptions) {\n if (typeof initOptions.useNonce !== 'undefined') {\n useNonce = initOptions.useNonce;\n }\n\n if (typeof initOptions.checkLoginIframe !== 'undefined') {\n loginIframe.enable = initOptions.checkLoginIframe;\n }\n\n if (initOptions.checkLoginIframeInterval) {\n loginIframe.interval = initOptions.checkLoginIframeInterval;\n }\n\n if (initOptions.onLoad === 'login-required') {\n kc.loginRequired = true;\n }\n\n if (initOptions.responseMode) {\n if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n kc.responseMode = initOptions.responseMode;\n } else {\n throw 'Invalid value for responseMode';\n }\n }\n\n if (initOptions.flow) {\n switch (initOptions.flow) {\n case 'standard':\n kc.responseType = 'code';\n break;\n case 'implicit':\n kc.responseType = 'id_token token';\n break;\n case 'hybrid':\n kc.responseType = 'code id_token token';\n break;\n default:\n throw 'Invalid value for flow';\n }\n kc.flow = initOptions.flow;\n }\n\n if (initOptions.timeSkew != null) {\n kc.timeSkew = initOptions.timeSkew;\n }\n\n if(initOptions.redirectUri) {\n kc.redirectUri = initOptions.redirectUri;\n }\n\n if (initOptions.silentCheckSsoRedirectUri) {\n kc.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri;\n }\n\n if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n kc.silentCheckSsoFallback = initOptions.silentCheckSsoFallback;\n } else {\n kc.silentCheckSsoFallback = true;\n }\n\n if (initOptions.pkceMethod) {\n if (initOptions.pkceMethod !== \"S256\") {\n throw 'Invalid value for pkceMethod';\n }\n kc.pkceMethod = initOptions.pkceMethod;\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n kc.enableLogging = initOptions.enableLogging;\n } else {\n kc.enableLogging = false;\n }\n\n if (typeof initOptions.scope === 'string') {\n kc.scope = initOptions.scope;\n }\n\n if (typeof initOptions.acrValues === 'string') {\n kc.acrValues = initOptions.acrValues;\n }\n\n if (typeof initOptions.messageReceiveTimeout === 'number' && initOptions.messageReceiveTimeout > 0) {\n kc.messageReceiveTimeout = initOptions.messageReceiveTimeout;\n } else {\n kc.messageReceiveTimeout = 10000;\n }\n }\n\n if (!kc.responseMode) {\n kc.responseMode = 'fragment';\n }\n if (!kc.responseType) {\n kc.responseType = 'code';\n kc.flow = 'standard';\n }\n\n var promise = createPromise();\n\n var initPromise = createPromise();\n initPromise.promise.then(function() {\n kc.onReady && kc.onReady(kc.authenticated);\n promise.setSuccess(kc.authenticated);\n }).catch(function(error) {\n promise.setError(error);\n });\n\n var configPromise = loadConfig();\n\n function onLoad() {\n var doLogin = function(prompt) {\n if (!prompt) {\n options.prompt = 'none';\n }\n\n if (initOptions && initOptions.locale) {\n options.locale = initOptions.locale;\n }\n kc.login(options).then(function () {\n initPromise.setSuccess();\n }).catch(function (error) {\n initPromise.setError(error);\n });\n };\n\n var checkSsoSilently = function() {\n var ifrm = document.createElement(\"iframe\");\n var src = kc.createLoginUrl({prompt: 'none', redirectUri: kc.silentCheckSsoRedirectUri});\n ifrm.setAttribute(\"src\", src);\n ifrm.setAttribute(\"sandbox\", \"allow-storage-access-by-user-activation allow-scripts allow-same-origin\");\n ifrm.setAttribute(\"title\", \"keycloak-silent-check-sso\");\n ifrm.style.display = \"none\";\n document.body.appendChild(ifrm);\n\n var messageCallback = function(event) {\n if (event.origin !== window.location.origin || ifrm.contentWindow !== event.source) {\n return;\n }\n\n var oauth = parseCallback(event.data);\n processCallback(oauth, initPromise);\n\n document.body.removeChild(ifrm);\n window.removeEventListener(\"message\", messageCallback);\n };\n\n window.addEventListener(\"message\", messageCallback);\n };\n\n var options = {};\n switch (initOptions.onLoad) {\n case 'check-sso':\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (!unchanged) {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n }\n break;\n case 'login-required':\n doLogin(true);\n break;\n default:\n throw 'Invalid value for onLoad';\n }\n }\n\n function processInit() {\n var callback = parseCallback(window.location.href);\n\n if (callback) {\n window.history.replaceState(window.history.state, null, callback.newUrl);\n }\n\n if (callback && callback.valid) {\n return setupCheckLoginIframe().then(function() {\n processCallback(callback, initPromise);\n }).catch(function (error) {\n initPromise.setError(error);\n });\n } else if (initOptions) {\n if (initOptions.token && initOptions.refreshToken) {\n setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);\n\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (unchanged) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n scheduleCheckIframe();\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.updateToken(-1).then(function() {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n }).catch(function(error) {\n kc.onAuthError && kc.onAuthError();\n if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setError(error);\n }\n });\n }\n } else if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setSuccess();\n }\n } else {\n initPromise.setSuccess();\n }\n }\n\n function domReady() {\n var promise = createPromise();\n\n var checkReadyState = function () {\n if (document.readyState === 'interactive' || document.readyState === 'complete') {\n document.removeEventListener('readystatechange', checkReadyState);\n promise.setSuccess();\n }\n };\n document.addEventListener('readystatechange', checkReadyState);\n\n checkReadyState(); // just in case the event was already fired and we missed it (in case the init is done later than at the load time, i.e. it's done from code)\n\n return promise.promise;\n }\n\n configPromise.then(function () {\n domReady()\n .then(check3pCookiesSupported)\n .then(processInit)\n .catch(function (error) {\n promise.setError(error);\n });\n });\n configPromise.catch(function (error) {\n promise.setError(error);\n });\n\n return promise.promise;\n };\n\n kc.login = function (options) {\n return adapter.login(options);\n };\n\n function generateRandomData(len) {\n // use web crypto APIs if possible\n var array = null;\n var crypto = window.crypto || window.msCrypto;\n if (crypto && crypto.getRandomValues && window.Uint8Array) {\n array = new Uint8Array(len);\n crypto.getRandomValues(array);\n return array;\n }\n\n // fallback to Math random\n array = new Array(len);\n for (var j = 0; j < array.length; j++) {\n array[j] = Math.floor(256 * Math.random());\n }\n return array;\n }\n\n function generateCodeVerifier(len) {\n return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');\n }\n\n function generateRandomString(len, alphabet){\n var randomData = generateRandomData(len);\n var chars = new Array(len);\n for (var i = 0; i < len; i++) {\n chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length);\n }\n return String.fromCharCode.apply(null, chars);\n }\n\n function generatePkceChallenge(pkceMethod, codeVerifier) {\n switch (pkceMethod) {\n // The use of the \"plain\" method is considered insecure and therefore not supported.\n case \"S256\":\n // hash codeVerifier, then encode as url-safe base64 without padding\n var hashBytes = new Uint8Array(sha256.arrayBuffer(codeVerifier));\n var encodedHash = base64.fromByteArray(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/\\=/g, '');\n return encodedHash;\n default:\n throw 'Invalid value for pkceMethod';\n }\n }\n\n function buildClaimsParameter(requestedAcr){\n var claims = {\n id_token: {\n acr: requestedAcr\n }\n };\n return JSON.stringify(claims);\n }\n\n kc.createLoginUrl = function(options) {\n var state = createUUID();\n var nonce = createUUID();\n\n var redirectUri = adapter.redirectUri(options);\n\n var callbackState = {\n state: state,\n nonce: nonce,\n redirectUri: encodeURIComponent(redirectUri)\n };\n\n if (options && options.prompt) {\n callbackState.prompt = options.prompt;\n }\n\n var baseUrl;\n if (options && options.action == 'register') {\n baseUrl = kc.endpoints.register();\n } else {\n baseUrl = kc.endpoints.authorize();\n }\n\n var scope = options && options.scope || kc.scope;\n if (!scope) {\n // if scope is not set, default to \"openid\"\n scope = \"openid\";\n } else if (scope.indexOf(\"openid\") === -1) {\n // if openid scope is missing, prefix the given scopes with it\n scope = \"openid \" + scope;\n }\n\n var url = baseUrl\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&redirect_uri=' + encodeURIComponent(redirectUri)\n + '&state=' + encodeURIComponent(state)\n + '&response_mode=' + encodeURIComponent(kc.responseMode)\n + '&response_type=' + encodeURIComponent(kc.responseType)\n + '&scope=' + encodeURIComponent(scope);\n if (useNonce) {\n url = url + '&nonce=' + encodeURIComponent(nonce);\n }\n\n if (options && options.prompt) {\n url += '&prompt=' + encodeURIComponent(options.prompt);\n }\n\n if (options && options.maxAge) {\n url += '&max_age=' + encodeURIComponent(options.maxAge);\n }\n\n if (options && options.loginHint) {\n url += '&login_hint=' + encodeURIComponent(options.loginHint);\n }\n\n if (options && options.idpHint) {\n url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);\n }\n\n if (options && options.action && options.action != 'register') {\n url += '&kc_action=' + encodeURIComponent(options.action);\n }\n\n if (options && options.locale) {\n url += '&ui_locales=' + encodeURIComponent(options.locale);\n }\n\n if (options && options.acr) {\n var claimsParameter = buildClaimsParameter(options.acr);\n url += '&claims=' + encodeURIComponent(claimsParameter);\n }\n\n if ((options && options.acrValues) || kc.acrValues) {\n url += '&acr_values=' + encodeURIComponent(options.acrValues || kc.acrValues);\n }\n\n if (kc.pkceMethod) {\n var codeVerifier = generateCodeVerifier(96);\n callbackState.pkceCodeVerifier = codeVerifier;\n var pkceChallenge = generatePkceChallenge(kc.pkceMethod, codeVerifier);\n url += '&code_challenge=' + pkceChallenge;\n url += '&code_challenge_method=' + kc.pkceMethod;\n }\n\n callbackStorage.add(callbackState);\n\n return url;\n };\n\n kc.logout = function(options) {\n return adapter.logout(options);\n };\n\n kc.createLogoutUrl = function(options) {\n var url = kc.endpoints.logout()\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&post_logout_redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false));\n\n if (kc.idToken) {\n url += '&id_token_hint=' + encodeURIComponent(kc.idToken);\n }\n\n return url;\n };\n\n kc.register = function (options) {\n return adapter.register(options);\n };\n\n kc.createRegisterUrl = function(options) {\n if (!options) {\n options = {};\n }\n options.action = 'register';\n return kc.createLoginUrl(options);\n };\n\n kc.createAccountUrl = function(options) {\n var realm = getRealmUrl();\n var url = undefined;\n if (typeof realm !== 'undefined') {\n url = realm\n + '/account'\n + '?referrer=' + encodeURIComponent(kc.clientId)\n + '&referrer_uri=' + encodeURIComponent(adapter.redirectUri(options));\n }\n return url;\n };\n\n kc.accountManagement = function() {\n return adapter.accountManagement();\n };\n\n kc.hasRealmRole = function (role) {\n var access = kc.realmAccess;\n return !!access && access.roles.indexOf(role) >= 0;\n };\n\n kc.hasResourceRole = function(role, resource) {\n if (!kc.resourceAccess) {\n return false;\n }\n\n var access = kc.resourceAccess[resource || kc.clientId];\n return !!access && access.roles.indexOf(role) >= 0;\n };\n\n kc.loadUserProfile = function() {\n var url = getRealmUrl() + '/account';\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.profile = JSON.parse(req.responseText);\n promise.setSuccess(kc.profile);\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n\n return promise.promise;\n };\n\n kc.loadUserInfo = function() {\n var url = kc.endpoints.userinfo();\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.userInfo = JSON.parse(req.responseText);\n promise.setSuccess(kc.userInfo);\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n\n return promise.promise;\n };\n\n kc.isTokenExpired = function(minValidity) {\n if (!kc.tokenParsed || (!kc.refreshToken && kc.flow != 'implicit' )) {\n throw 'Not authenticated';\n }\n\n if (kc.timeSkew == null) {\n logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set');\n return true;\n }\n\n var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;\n if (minValidity) {\n if (isNaN(minValidity)) {\n throw 'Invalid minValidity';\n }\n expiresIn -= minValidity;\n }\n return expiresIn < 0;\n };\n\n kc.updateToken = function(minValidity) {\n var promise = createPromise();\n\n if (!kc.refreshToken) {\n promise.setError();\n return promise.promise;\n }\n\n minValidity = minValidity || 5;\n\n var exec = function() {\n var refreshToken = false;\n if (minValidity == -1) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: forced refresh');\n } else if (!kc.tokenParsed || kc.isTokenExpired(minValidity)) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: token expired');\n }\n\n if (!refreshToken) {\n promise.setSuccess(false);\n } else {\n var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;\n var url = kc.endpoints.token();\n\n refreshQueue.push(promise);\n\n if (refreshQueue.length == 1) {\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n req.withCredentials = true;\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n\n var timeLocal = new Date().getTime();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n logInfo('[KEYCLOAK] Token refreshed');\n\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n var tokenResponse = JSON.parse(req.responseText);\n\n setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);\n\n kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setSuccess(true);\n }\n } else {\n logWarn('[KEYCLOAK] Failed to refresh token');\n\n if (req.status == 400) {\n kc.clearToken();\n }\n\n kc.onAuthRefreshError && kc.onAuthRefreshError();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setError(true);\n }\n }\n }\n };\n\n req.send(params);\n }\n }\n };\n\n if (loginIframe.enable) {\n var iframePromise = checkLoginIframe();\n iframePromise.then(function() {\n exec();\n }).catch(function(error) {\n promise.setError(error);\n });\n } else {\n exec();\n }\n\n return promise.promise;\n };\n\n kc.clearToken = function() {\n if (kc.token) {\n setToken(null, null, null);\n kc.onAuthLogout && kc.onAuthLogout();\n if (kc.loginRequired) {\n kc.login();\n }\n }\n };\n\n function getRealmUrl() {\n if (typeof kc.authServerUrl !== 'undefined') {\n if (kc.authServerUrl.charAt(kc.authServerUrl.length - 1) == '/') {\n return kc.authServerUrl + 'realms/' + encodeURIComponent(kc.realm);\n } else {\n return kc.authServerUrl + '/realms/' + encodeURIComponent(kc.realm);\n }\n } else {\n return undefined;\n }\n }\n\n function getOrigin() {\n if (!window.location.origin) {\n return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\n } else {\n return window.location.origin;\n }\n }\n\n function processCallback(oauth, promise) {\n var code = oauth.code;\n var error = oauth.error;\n var prompt = oauth.prompt;\n\n var timeLocal = new Date().getTime();\n\n if (oauth['kc_action_status']) {\n kc.onActionUpdate && kc.onActionUpdate(oauth['kc_action_status']);\n }\n\n if (error) {\n if (prompt != 'none') {\n var errorData = { error: error, error_description: oauth.error_description };\n kc.onAuthError && kc.onAuthError(errorData);\n promise && promise.setError(errorData);\n } else {\n promise && promise.setSuccess();\n }\n return;\n } else if ((kc.flow != 'standard') && (oauth.access_token || oauth.id_token)) {\n authSuccess(oauth.access_token, null, oauth.id_token, true);\n }\n\n if ((kc.flow != 'implicit') && code) {\n var params = 'code=' + code + '&grant_type=authorization_code';\n var url = kc.endpoints.token();\n\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n params += '&redirect_uri=' + oauth.redirectUri;\n\n if (oauth.pkceCodeVerifier) {\n params += '&code_verifier=' + oauth.pkceCodeVerifier;\n }\n\n req.withCredentials = true;\n\n req.onreadystatechange = function() {\n if (req.readyState == 4) {\n if (req.status == 200) {\n\n var tokenResponse = JSON.parse(req.responseText);\n authSuccess(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], kc.flow === 'standard');\n scheduleCheckIframe();\n } else {\n kc.onAuthError && kc.onAuthError();\n promise && promise.setError();\n }\n }\n };\n\n req.send(params);\n }\n\n function authSuccess(accessToken, refreshToken, idToken, fulfillPromise) {\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n setToken(accessToken, refreshToken, idToken, timeLocal);\n\n if (useNonce && ((kc.tokenParsed && kc.tokenParsed.nonce != oauth.storedNonce) ||\n (kc.refreshTokenParsed && kc.refreshTokenParsed.nonce != oauth.storedNonce) ||\n (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce))) {\n\n logInfo('[KEYCLOAK] Invalid nonce, clearing token');\n kc.clearToken();\n promise && promise.setError();\n } else {\n if (fulfillPromise) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n promise && promise.setSuccess();\n }\n }\n }\n\n }\n\n function loadConfig(url) {\n var promise = createPromise();\n var configUrl;\n\n if (!config) {\n configUrl = 'keycloak.json';\n } else if (typeof config === 'string') {\n configUrl = config;\n }\n\n function setupOidcEndoints(oidcConfiguration) {\n if (! oidcConfiguration) {\n kc.endpoints = {\n authorize: function() {\n return getRealmUrl() + '/protocol/openid-connect/auth';\n },\n token: function() {\n return getRealmUrl() + '/protocol/openid-connect/token';\n },\n logout: function() {\n return getRealmUrl() + '/protocol/openid-connect/logout';\n },\n checkSessionIframe: function() {\n var src = getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';\n if (kc.iframeVersion) {\n src = src + '?version=' + kc.iframeVersion;\n }\n return src;\n },\n thirdPartyCookiesIframe: function() {\n var src = getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html';\n if (kc.iframeVersion) {\n src = src + '?version=' + kc.iframeVersion;\n }\n return src;\n },\n register: function() {\n return getRealmUrl() + '/protocol/openid-connect/registrations';\n },\n userinfo: function() {\n return getRealmUrl() + '/protocol/openid-connect/userinfo';\n }\n };\n } else {\n kc.endpoints = {\n authorize: function() {\n return oidcConfiguration.authorization_endpoint;\n },\n token: function() {\n return oidcConfiguration.token_endpoint;\n },\n logout: function() {\n if (!oidcConfiguration.end_session_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.end_session_endpoint;\n },\n checkSessionIframe: function() {\n if (!oidcConfiguration.check_session_iframe) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.check_session_iframe;\n },\n register: function() {\n throw 'Redirection to \"Register user\" page not supported in standard OIDC mode';\n },\n userinfo: function() {\n if (!oidcConfiguration.userinfo_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.userinfo_endpoint;\n }\n };\n }\n }\n\n if (configUrl) {\n var req = new XMLHttpRequest();\n req.open('GET', configUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var config = JSON.parse(req.responseText);\n\n kc.authServerUrl = config['auth-server-url'];\n kc.realm = config['realm'];\n kc.clientId = config['resource'];\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n if (!config.clientId) {\n throw 'clientId missing';\n }\n\n kc.clientId = config.clientId;\n\n var oidcProvider = config['oidcProvider'];\n if (!oidcProvider) {\n if (!config['url']) {\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n if (scripts[i].src.match(/.*keycloak\\.js/)) {\n config.url = scripts[i].src.substr(0, scripts[i].src.indexOf('/js/keycloak.js'));\n break;\n }\n }\n }\n if (!config.realm) {\n throw 'realm missing';\n }\n\n kc.authServerUrl = config.url;\n kc.realm = config.realm;\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n if (typeof oidcProvider === 'string') {\n var oidcProviderConfigUrl;\n if (oidcProvider.charAt(oidcProvider.length - 1) == '/') {\n oidcProviderConfigUrl = oidcProvider + '.well-known/openid-configuration';\n } else {\n oidcProviderConfigUrl = oidcProvider + '/.well-known/openid-configuration';\n }\n var req = new XMLHttpRequest();\n req.open('GET', oidcProviderConfigUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var oidcProviderConfig = JSON.parse(req.responseText);\n setupOidcEndoints(oidcProviderConfig);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n setupOidcEndoints(oidcProvider);\n promise.setSuccess();\n }\n }\n }\n\n return promise.promise;\n }\n\n function fileLoaded(xhr) {\n return xhr.status == 0 && xhr.responseText && xhr.responseURL.startsWith('file:');\n }\n\n function setToken(token, refreshToken, idToken, timeLocal) {\n if (kc.tokenTimeoutHandle) {\n clearTimeout(kc.tokenTimeoutHandle);\n kc.tokenTimeoutHandle = null;\n }\n\n if (refreshToken) {\n kc.refreshToken = refreshToken;\n kc.refreshTokenParsed = jwtDecode(refreshToken);\n } else {\n delete kc.refreshToken;\n delete kc.refreshTokenParsed;\n }\n\n if (idToken) {\n kc.idToken = idToken;\n kc.idTokenParsed = jwtDecode(idToken);\n } else {\n delete kc.idToken;\n delete kc.idTokenParsed;\n }\n\n if (token) {\n kc.token = token;\n kc.tokenParsed = jwtDecode(token);\n kc.sessionId = kc.tokenParsed.session_state;\n kc.authenticated = true;\n kc.subject = kc.tokenParsed.sub;\n kc.realmAccess = kc.tokenParsed.realm_access;\n kc.resourceAccess = kc.tokenParsed.resource_access;\n\n if (timeLocal) {\n kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;\n }\n\n if (kc.timeSkew != null) {\n logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');\n\n if (kc.onTokenExpired) {\n var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;\n logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s');\n if (expiresIn <= 0) {\n kc.onTokenExpired();\n } else {\n kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);\n }\n }\n }\n } else {\n delete kc.token;\n delete kc.tokenParsed;\n delete kc.subject;\n delete kc.realmAccess;\n delete kc.resourceAccess;\n\n kc.authenticated = false;\n }\n }\n\n function createUUID() {\n var hexDigits = '0123456789abcdef';\n var s = generateRandomString(36, hexDigits).split(\"\");\n s[14] = '4';\n s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);\n s[8] = s[13] = s[18] = s[23] = '-';\n var uuid = s.join('');\n return uuid;\n }\n\n function parseCallback(url) {\n var oauth = parseCallbackUrl(url);\n if (!oauth) {\n return;\n }\n\n var oauthState = callbackStorage.get(oauth.state);\n\n if (oauthState) {\n oauth.valid = true;\n oauth.redirectUri = oauthState.redirectUri;\n oauth.storedNonce = oauthState.nonce;\n oauth.prompt = oauthState.prompt;\n oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier;\n }\n\n return oauth;\n }\n\n function parseCallbackUrl(url) {\n var supportedParams;\n switch (kc.flow) {\n case 'standard':\n supportedParams = ['code', 'state', 'session_state', 'kc_action_status', 'iss'];\n break;\n case 'implicit':\n supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status', 'iss'];\n break;\n case 'hybrid':\n supportedParams = ['access_token', 'token_type', 'id_token', 'code', 'state', 'session_state', 'expires_in', 'kc_action_status', 'iss'];\n break;\n }\n\n supportedParams.push('error');\n supportedParams.push('error_description');\n supportedParams.push('error_uri');\n\n var queryIndex = url.indexOf('?');\n var fragmentIndex = url.indexOf('#');\n\n var newUrl;\n var parsed;\n\n if (kc.responseMode === 'query' && queryIndex !== -1) {\n newUrl = url.substring(0, queryIndex);\n parsed = parseCallbackParams(url.substring(queryIndex + 1, fragmentIndex !== -1 ? fragmentIndex : url.length), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '?' + parsed.paramsString;\n }\n if (fragmentIndex !== -1) {\n newUrl += url.substring(fragmentIndex);\n }\n } else if (kc.responseMode === 'fragment' && fragmentIndex !== -1) {\n newUrl = url.substring(0, fragmentIndex);\n parsed = parseCallbackParams(url.substring(fragmentIndex + 1), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '#' + parsed.paramsString;\n }\n }\n\n if (parsed && parsed.oauthParams) {\n if (kc.flow === 'standard' || kc.flow === 'hybrid') {\n if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n } else if (kc.flow === 'implicit') {\n if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n }\n }\n }\n\n function parseCallbackParams(paramsString, supportedParams) {\n var p = paramsString.split('&');\n var result = {\n paramsString: '',\n oauthParams: {}\n };\n for (var i = 0; i < p.length; i++) {\n var split = p[i].indexOf(\"=\");\n var key = p[i].slice(0, split);\n if (supportedParams.indexOf(key) !== -1) {\n result.oauthParams[key] = p[i].slice(split + 1);\n } else {\n if (result.paramsString !== '') {\n result.paramsString += '&';\n }\n result.paramsString += p[i];\n }\n }\n return result;\n }\n\n function createPromise() {\n // Need to create a native Promise which also preserves the\n // interface of the custom promise type previously used by the API\n var p = {\n setSuccess: function(result) {\n p.resolve(result);\n },\n\n setError: function(result) {\n p.reject(result);\n }\n };\n p.promise = new Promise(function(resolve, reject) {\n p.resolve = resolve;\n p.reject = reject;\n });\n\n return p;\n }\n\n // Function to extend existing native Promise with timeout\n function applyTimeoutToPromise(promise, timeout, errorMessage) {\n var timeoutHandle = null;\n var timeoutPromise = new Promise(function (resolve, reject) {\n timeoutHandle = setTimeout(function () {\n reject({ \"error\": errorMessage || \"Promise is not settled within timeout of \" + timeout + \"ms\" });\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).finally(function () {\n clearTimeout(timeoutHandle);\n });\n }\n\n function setupCheckLoginIframe() {\n var promise = createPromise();\n\n if (!loginIframe.enable) {\n promise.setSuccess();\n return promise.promise;\n }\n\n if (loginIframe.iframe) {\n promise.setSuccess();\n return promise.promise;\n }\n\n var iframe = document.createElement('iframe');\n loginIframe.iframe = iframe;\n\n iframe.onload = function() {\n var authUrl = kc.endpoints.authorize();\n if (authUrl.charAt(0) === '/') {\n loginIframe.iframeOrigin = getOrigin();\n } else {\n loginIframe.iframeOrigin = authUrl.substring(0, authUrl.indexOf('/', 8));\n }\n promise.setSuccess();\n };\n\n var src = kc.endpoints.checkSessionIframe();\n iframe.setAttribute('src', src );\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-session-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if ((event.origin !== loginIframe.iframeOrigin) || (loginIframe.iframe.contentWindow !== event.source)) {\n return;\n }\n\n if (!(event.data == 'unchanged' || event.data == 'changed' || event.data == 'error')) {\n return;\n }\n\n\n if (event.data != 'unchanged') {\n kc.clearToken();\n }\n\n var callbacks = loginIframe.callbackList.splice(0, loginIframe.callbackList.length);\n\n for (var i = callbacks.length - 1; i >= 0; --i) {\n var promise = callbacks[i];\n if (event.data == 'error') {\n promise.setError();\n } else {\n promise.setSuccess(event.data == 'unchanged');\n }\n }\n };\n\n window.addEventListener('message', messageCallback, false);\n\n return promise.promise;\n }\n\n function scheduleCheckIframe() {\n if (loginIframe.enable) {\n if (kc.token) {\n setTimeout(function() {\n checkLoginIframe().then(function(unchanged) {\n if (unchanged) {\n scheduleCheckIframe();\n }\n });\n }, loginIframe.interval * 1000);\n }\n }\n }\n\n function checkLoginIframe() {\n var promise = createPromise();\n\n if (loginIframe.iframe && loginIframe.iframeOrigin ) {\n var msg = kc.clientId + ' ' + (kc.sessionId ? kc.sessionId : '');\n loginIframe.callbackList.push(promise);\n var origin = loginIframe.iframeOrigin;\n if (loginIframe.callbackList.length == 1) {\n loginIframe.iframe.contentWindow.postMessage(msg, origin);\n }\n } else {\n promise.setSuccess();\n }\n\n return promise.promise;\n }\n\n function check3pCookiesSupported() {\n var promise = createPromise();\n\n if (loginIframe.enable || kc.silentCheckSsoRedirectUri) {\n var iframe = document.createElement('iframe');\n iframe.setAttribute('src', kc.endpoints.thirdPartyCookiesIframe());\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-3p-check-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if (iframe.contentWindow !== event.source) {\n return;\n }\n\n if (event.data !== \"supported\" && event.data !== \"unsupported\") {\n return;\n } else if (event.data === \"unsupported\") {\n logWarn(\n \"[KEYCLOAK] Your browser is blocking access to 3rd-party cookies, this means:\\n\\n\" +\n \" - It is not possible to retrieve tokens without redirecting to the Keycloak server (a.k.a. no support for silent authentication).\\n\" +\n \" - It is not possible to automatically detect changes to the session status (such as the user logging out in another tab).\\n\\n\" +\n \"For more information see: https://www.keycloak.org/docs/latest/securing_apps/#_modern_browsers\"\n );\n\n loginIframe.enable = false;\n if (kc.silentCheckSsoFallback) {\n kc.silentCheckSsoRedirectUri = false;\n }\n }\n\n document.body.removeChild(iframe);\n window.removeEventListener(\"message\", messageCallback);\n promise.setSuccess();\n };\n\n window.addEventListener('message', messageCallback, false);\n } else {\n promise.setSuccess();\n }\n\n return applyTimeoutToPromise(promise.promise, kc.messageReceiveTimeout, \"Timeout when waiting for 3rd party check iframe message.\");\n }\n\n function loadAdapter(type) {\n if (!type || type == 'default') {\n return {\n login: function(options) {\n window.location.assign(kc.createLoginUrl(options));\n return createPromise().promise;\n },\n\n logout: function(options) {\n window.location.replace(kc.createLogoutUrl(options));\n return createPromise().promise;\n },\n\n register: function(options) {\n window.location.assign(kc.createRegisterUrl(options));\n return createPromise().promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.location.href = accountUrl;\n } else {\n throw \"Not supported by the OIDC server\";\n }\n return createPromise().promise;\n },\n\n redirectUri: function(options, encodeHash) {\n\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return location.href;\n }\n }\n };\n }\n\n if (type == 'cordova') {\n loginIframe.enable = false;\n var cordovaOpenWindowWrapper = function(loginUrl, target, options) {\n if (window.cordova && window.cordova.InAppBrowser) {\n // Use inappbrowser for IOS and Android if available\n return window.cordova.InAppBrowser.open(loginUrl, target, options);\n } else {\n return window.open(loginUrl, target, options);\n }\n };\n\n var shallowCloneCordovaOptions = function (userOptions) {\n if (userOptions && userOptions.cordovaOptions) {\n return Object.keys(userOptions.cordovaOptions).reduce(function (options, optionName) {\n options[optionName] = userOptions.cordovaOptions[optionName];\n return options;\n }, {});\n } else {\n return {};\n }\n };\n\n var formatCordovaOptions = function (cordovaOptions) {\n return Object.keys(cordovaOptions).reduce(function (options, optionName) {\n options.push(optionName+\"=\"+cordovaOptions[optionName]);\n return options;\n }, []).join(\",\");\n };\n\n var createCordovaOptions = function (userOptions) {\n var cordovaOptions = shallowCloneCordovaOptions(userOptions);\n cordovaOptions.location = 'no';\n if (userOptions && userOptions.prompt == 'none') {\n cordovaOptions.hidden = 'yes';\n }\n return formatCordovaOptions(cordovaOptions);\n };\n\n var getCordovaRedirectUri = function() {\n return kc.redirectUri || 'http://localhost';\n };\n \n return {\n login: function(options) {\n var promise = createPromise();\n\n var cordovaOptions = createCordovaOptions(options);\n var loginUrl = kc.createLoginUrl(options);\n var ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions);\n var completed = false;\n\n var closed = false;\n var closeBrowser = function() {\n closed = true;\n ref.close();\n };\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (!completed) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n } else {\n promise.setError();\n closeBrowser();\n }\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (!closed) {\n promise.setError({\n reason: \"closed_by_user\"\n });\n }\n });\n\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n\n var logoutUrl = kc.createLogoutUrl(options);\n var ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes,clearcache=yes');\n\n var error;\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n } else {\n error = true;\n ref.close();\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (error) {\n promise.setError();\n } else {\n kc.clearToken();\n promise.setSuccess();\n }\n });\n\n return promise.promise;\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl();\n var cordovaOptions = createCordovaOptions(options);\n var ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions);\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n }\n });\n return promise.promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n var ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no');\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n return getCordovaRedirectUri();\n }\n }\n }\n\n if (type == 'cordova-native') {\n loginIframe.enable = false;\n\n return {\n login: function(options) {\n var promise = createPromise();\n var loginUrl = kc.createLoginUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n\n window.cordova.plugins.browsertab.openUrl(loginUrl);\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n var logoutUrl = kc.createLogoutUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n kc.clearToken();\n promise.setSuccess();\n });\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl);\n return promise.promise;\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl(options);\n universalLinks.subscribe('keycloak' , function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n window.cordova.plugins.browsertab.openUrl(registerUrl);\n return promise.promise;\n\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.cordova.plugins.browsertab.openUrl(accountUrl);\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return \"http://localhost\";\n }\n }\n }\n }\n\n throw 'invalid adapter type: ' + type;\n }\n\n var LocalStorage = function() {\n if (!(this instanceof LocalStorage)) {\n return new LocalStorage();\n }\n\n localStorage.setItem('kc-test', 'test');\n localStorage.removeItem('kc-test');\n\n var cs = this;\n\n function clearExpired() {\n var time = new Date().getTime();\n for (var i = 0; i < localStorage.length; i++) {\n var key = localStorage.key(i);\n if (key && key.indexOf('kc-callback-') == 0) {\n var value = localStorage.getItem(key);\n if (value) {\n try {\n var expires = JSON.parse(value).expires;\n if (!expires || expires < time) {\n localStorage.removeItem(key);\n }\n } catch (err) {\n localStorage.removeItem(key);\n }\n }\n }\n }\n }\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var key = 'kc-callback-' + state;\n var value = localStorage.getItem(key);\n if (value) {\n localStorage.removeItem(key);\n value = JSON.parse(value);\n }\n\n clearExpired();\n return value;\n };\n\n cs.add = function(state) {\n clearExpired();\n\n var key = 'kc-callback-' + state.state;\n state.expires = new Date().getTime() + (60 * 60 * 1000);\n localStorage.setItem(key, JSON.stringify(state));\n };\n };\n\n var CookieStorage = function() {\n if (!(this instanceof CookieStorage)) {\n return new CookieStorage();\n }\n\n var cs = this;\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var value = getCookie('kc-callback-' + state);\n setCookie('kc-callback-' + state, '', cookieExpiration(-100));\n if (value) {\n return JSON.parse(value);\n }\n };\n\n cs.add = function(state) {\n setCookie('kc-callback-' + state.state, JSON.stringify(state), cookieExpiration(60));\n };\n\n cs.removeItem = function(key) {\n setCookie(key, '', cookieExpiration(-100));\n };\n\n var cookieExpiration = function (minutes) {\n var exp = new Date();\n exp.setTime(exp.getTime() + (minutes*60*1000));\n return exp;\n };\n\n var getCookie = function (key) {\n var name = key + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n };\n\n var setCookie = function (key, value, expirationDate) {\n var cookie = key + '=' + value + '; '\n + 'expires=' + expirationDate.toUTCString() + '; ';\n document.cookie = cookie;\n };\n };\n\n function createCallbackStorage() {\n try {\n return new LocalStorage();\n } catch (err) {\n }\n\n return new CookieStorage();\n }\n\n function createLogger(fn) {\n return function() {\n if (kc.enableLogging) {\n fn.apply(console, Array.prototype.slice.call(arguments));\n }\n };\n }\n}\n\nexport { Keycloak as default };\n","/**\r\n * Jdenticon 3.3.0\r\n * http://jdenticon.com\r\n *\r\n * Built: 2024-05-10T09:48:41.921Z\r\n * \r\n * MIT License\r\n * \r\n * Copyright (c) 2014-2024 Daniel Mester Pirttijärvi\r\n * \r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n */\r\n\r\n'use strict';\n\n/**\r\n * Parses a substring of the hash as a number.\r\n * @param {number} startPosition \r\n * @param {number=} octets\r\n */\r\nfunction parseHex(hash, startPosition, octets) {\r\n return parseInt(hash.substr(startPosition, octets), 16);\r\n}\n\nfunction decToHex(v) {\r\n v |= 0; // Ensure integer value\r\n return v < 0 ? \"00\" :\r\n v < 16 ? \"0\" + v.toString(16) :\r\n v < 256 ? v.toString(16) :\r\n \"ff\";\r\n}\r\n\r\nfunction hueToRgb(m1, m2, h) {\r\n h = h < 0 ? h + 6 : h > 6 ? h - 6 : h;\r\n return decToHex(255 * (\r\n h < 1 ? m1 + (m2 - m1) * h :\r\n h < 3 ? m2 :\r\n h < 4 ? m1 + (m2 - m1) * (4 - h) :\r\n m1));\r\n}\r\n\r\n/**\r\n * @param {string} color Color value to parse. Currently hexadecimal strings on the format #rgb[a] and #rrggbb[aa] are supported.\r\n * @returns {string}\r\n */\r\nfunction parseColor(color) {\r\n if (/^#[0-9a-f]{3,8}$/i.test(color)) {\r\n var result;\r\n var colorLength = color.length;\r\n\r\n if (colorLength < 6) {\r\n var r = color[1],\r\n g = color[2],\r\n b = color[3],\r\n a = color[4] || \"\";\r\n result = \"#\" + r + r + g + g + b + b + a + a;\r\n }\r\n if (colorLength == 7 || colorLength > 8) {\r\n result = color;\r\n }\r\n \r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * Converts a hexadecimal color to a CSS3 compatible color.\r\n * @param {string} hexColor Color on the format \"#RRGGBB\" or \"#RRGGBBAA\"\r\n * @returns {string}\r\n */\r\nfunction toCss3Color(hexColor) {\r\n var a = parseHex(hexColor, 7, 2);\r\n var result;\r\n\r\n if (isNaN(a)) {\r\n result = hexColor;\r\n } else {\r\n var r = parseHex(hexColor, 1, 2),\r\n g = parseHex(hexColor, 3, 2),\r\n b = parseHex(hexColor, 5, 2);\r\n result = \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + (a / 255).toFixed(2) + \")\";\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Converts an HSL color to a hexadecimal RGB color.\r\n * @param {number} hue Hue in range [0, 1]\r\n * @param {number} saturation Saturation in range [0, 1]\r\n * @param {number} lightness Lightness in range [0, 1]\r\n * @returns {string}\r\n */\r\nfunction hsl(hue, saturation, lightness) {\r\n // Based on http://www.w3.org/TR/2011/REC-css3-color-20110607/#hsl-color\r\n var result;\r\n\r\n if (saturation == 0) {\r\n var partialHex = decToHex(lightness * 255);\r\n result = partialHex + partialHex + partialHex;\r\n }\r\n else {\r\n var m2 = lightness <= 0.5 ? lightness * (saturation + 1) : lightness + saturation - lightness * saturation,\r\n m1 = lightness * 2 - m2;\r\n result =\r\n hueToRgb(m1, m2, hue * 6 + 2) +\r\n hueToRgb(m1, m2, hue * 6) +\r\n hueToRgb(m1, m2, hue * 6 - 2);\r\n }\r\n\r\n return \"#\" + result;\r\n}\r\n\r\n/**\r\n * Converts an HSL color to a hexadecimal RGB color. This function will correct the lightness for the \"dark\" hues\r\n * @param {number} hue Hue in range [0, 1]\r\n * @param {number} saturation Saturation in range [0, 1]\r\n * @param {number} lightness Lightness in range [0, 1]\r\n * @returns {string}\r\n */\r\nfunction correctedHsl(hue, saturation, lightness) {\r\n // The corrector specifies the perceived middle lightness for each hue\r\n var correctors = [ 0.55, 0.5, 0.5, 0.46, 0.6, 0.55, 0.55 ],\r\n corrector = correctors[(hue * 6 + 0.5) | 0];\r\n \r\n // Adjust the input lightness relative to the corrector\r\n lightness = lightness < 0.5 ? lightness * corrector * 2 : corrector + (lightness - 0.5) * (1 - corrector) * 2;\r\n \r\n return hsl(hue, saturation, lightness);\r\n}\n\n// In the future we can replace `GLOBAL` with `globalThis`, but for now use the old school global detection for\r\n// backward compatibility.\r\n\r\nvar GLOBAL = \r\n typeof window !== \"undefined\" ? window :\r\n typeof self !== \"undefined\" ? self :\r\n typeof global !== \"undefined\" ? global :\r\n {};\n\n/**\r\n * @typedef {Object} ParsedConfiguration\r\n * @property {number} colorSaturation\r\n * @property {number} grayscaleSaturation\r\n * @property {string} backColor\r\n * @property {number} iconPadding\r\n * @property {function(number):number} hue\r\n * @property {function(number):number} colorLightness\r\n * @property {function(number):number} grayscaleLightness\r\n */\r\n\r\nvar CONFIG_PROPERTIES = {\r\n W/*GLOBAL*/: \"jdenticon_config\",\r\n n/*MODULE*/: \"config\",\r\n};\r\n\r\nvar rootConfigurationHolder = {};\r\n\r\n/**\r\n * Defines the deprecated `config` property on the root Jdenticon object without printing a warning in the console\r\n * when it is being used.\r\n * @param {!Object} rootObject \r\n */\r\nfunction defineConfigProperty(rootObject) {\r\n rootConfigurationHolder = rootObject;\r\n}\r\n\r\n/**\r\n * Sets a new icon style configuration. The new configuration is not merged with the previous one. * \r\n * @param {Object} newConfiguration - New configuration object.\r\n */\r\nfunction configure(newConfiguration) {\r\n if (arguments.length) {\r\n rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] = newConfiguration;\r\n }\r\n return rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/];\r\n}\r\n\r\n/**\r\n * Gets the normalized current Jdenticon color configuration. Missing fields have default values.\r\n * @param {Object|number|undefined} paddingOrLocalConfig - Configuration passed to the called API method. A\r\n * local configuration overrides the global configuration in it entirety. This parameter can for backward\r\n * compatibility also contain a padding value. A padding value only overrides the global padding, not the\r\n * entire global configuration.\r\n * @param {number} defaultPadding - Padding used if no padding is specified in neither the configuration nor\r\n * explicitly to the API method.\r\n * @returns {ParsedConfiguration}\r\n */\r\nfunction getConfiguration(paddingOrLocalConfig, defaultPadding) {\r\n var configObject = \r\n typeof paddingOrLocalConfig == \"object\" && paddingOrLocalConfig ||\r\n rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] ||\r\n GLOBAL[CONFIG_PROPERTIES.W/*GLOBAL*/] ||\r\n { },\r\n\r\n lightnessConfig = configObject[\"lightness\"] || { },\r\n \r\n // In versions < 2.1.0 there was no grayscale saturation -\r\n // saturation was the color saturation.\r\n saturation = configObject[\"saturation\"] || { },\r\n colorSaturation = \"color\" in saturation ? saturation[\"color\"] : saturation,\r\n grayscaleSaturation = saturation[\"grayscale\"],\r\n\r\n backColor = configObject[\"backColor\"],\r\n padding = configObject[\"padding\"];\r\n \r\n /**\r\n * Creates a lightness range.\r\n */\r\n function lightness(configName, defaultRange) {\r\n var range = lightnessConfig[configName];\r\n \r\n // Check if the lightness range is an array-like object. This way we ensure the\r\n // array contain two values at the same time.\r\n if (!(range && range.length > 1)) {\r\n range = defaultRange;\r\n }\r\n\r\n /**\r\n * Gets a lightness relative the specified value in the specified lightness range.\r\n */\r\n return function (value) {\r\n value = range[0] + value * (range[1] - range[0]);\r\n return value < 0 ? 0 : value > 1 ? 1 : value;\r\n };\r\n }\r\n\r\n /**\r\n * Gets a hue allowed by the configured hue restriction,\r\n * provided the originally computed hue.\r\n */\r\n function hueFunction(originalHue) {\r\n var hueConfig = configObject[\"hues\"];\r\n var hue;\r\n \r\n // Check if 'hues' is an array-like object. This way we also ensure that\r\n // the array is not empty, which would mean no hue restriction.\r\n if (hueConfig && hueConfig.length > 0) {\r\n // originalHue is in the range [0, 1]\r\n // Multiply with 0.999 to change the range to [0, 1) and then truncate the index.\r\n hue = hueConfig[0 | (0.999 * originalHue * hueConfig.length)];\r\n }\r\n\r\n return typeof hue == \"number\" ?\r\n \r\n // A hue was specified. We need to convert the hue from\r\n // degrees on any turn - e.g. 746° is a perfectly valid hue -\r\n // to turns in the range [0, 1).\r\n ((((hue / 360) % 1) + 1) % 1) :\r\n\r\n // No hue configured => use original hue\r\n originalHue;\r\n }\r\n \r\n return {\r\n X/*hue*/: hueFunction,\r\n o/*colorSaturation*/: typeof colorSaturation == \"number\" ? colorSaturation : 0.5,\r\n F/*grayscaleSaturation*/: typeof grayscaleSaturation == \"number\" ? grayscaleSaturation : 0,\r\n p/*colorLightness*/: lightness(\"color\", [0.4, 0.8]),\r\n G/*grayscaleLightness*/: lightness(\"grayscale\", [0.3, 0.9]),\r\n H/*backColor*/: parseColor(backColor),\r\n Y/*iconPadding*/: \r\n typeof paddingOrLocalConfig == \"number\" ? paddingOrLocalConfig : \r\n typeof padding == \"number\" ? padding : \r\n defaultPadding\r\n }\r\n}\n\n/**\r\n * Represents a point.\r\n */\r\nfunction Point(x, y) {\r\n this.x = x;\r\n this.y = y;\r\n}\n\n/**\r\n * Translates and rotates a point before being passed on to the canvas context. This was previously done by the canvas context itself, \r\n * but this caused a rendering issue in Chrome on sizes > 256 where the rotation transformation of inverted paths was not done properly.\r\n */\r\nfunction Transform(x, y, size, rotation) {\r\n this.q/*_x*/ = x;\r\n this.t/*_y*/ = y;\r\n this.I/*_size*/ = size;\r\n this.Z/*_rotation*/ = rotation;\r\n}\r\n\r\n/**\r\n * Transforms the specified point based on the translation and rotation specification for this Transform.\r\n * @param {number} x x-coordinate\r\n * @param {number} y y-coordinate\r\n * @param {number=} w The width of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.\r\n * @param {number=} h The height of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.\r\n */\r\nTransform.prototype.J/*transformIconPoint*/ = function transformIconPoint (x, y, w, h) {\r\n var right = this.q/*_x*/ + this.I/*_size*/,\r\n bottom = this.t/*_y*/ + this.I/*_size*/,\r\n rotation = this.Z/*_rotation*/;\r\n return rotation === 1 ? new Point(right - y - (h || 0), this.t/*_y*/ + x) :\r\n rotation === 2 ? new Point(right - x - (w || 0), bottom - y - (h || 0)) :\r\n rotation === 3 ? new Point(this.q/*_x*/ + y, bottom - x - (w || 0)) :\r\n new Point(this.q/*_x*/ + x, this.t/*_y*/ + y);\r\n};\r\n\r\nvar NO_TRANSFORM = new Transform(0, 0, 0, 0);\n\n\r\n\r\n/**\r\n * Provides helper functions for rendering common basic shapes.\r\n */\r\nfunction Graphics(renderer) {\r\n /**\r\n * @type {Renderer}\r\n * @private\r\n */\r\n this.K/*_renderer*/ = renderer;\r\n\r\n /**\r\n * @type {Transform}\r\n */\r\n this.u/*currentTransform*/ = NO_TRANSFORM;\r\n}\r\nvar Graphics__prototype = Graphics.prototype;\r\n\r\n/**\r\n * Adds a polygon to the underlying renderer.\r\n * @param {Array<number>} points The points of the polygon clockwise on the format [ x0, y0, x1, y1, ..., xn, yn ]\r\n * @param {boolean=} invert Specifies if the polygon will be inverted.\r\n */\r\nGraphics__prototype.g/*addPolygon*/ = function addPolygon (points, invert) {\n var this$1 = this;\n\r\n var di = invert ? -2 : 2,\r\n transformedPoints = [];\r\n \r\n for (var i = invert ? points.length - 2 : 0; i < points.length && i >= 0; i += di) {\r\n transformedPoints.push(this$1.u/*currentTransform*/.J/*transformIconPoint*/(points[i], points[i + 1]));\r\n }\r\n \r\n this.K/*_renderer*/.g/*addPolygon*/(transformedPoints);\r\n};\r\n \r\n/**\r\n * Adds a polygon to the underlying renderer.\r\n * Source: http://stackoverflow.com/a/2173084\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the entire ellipse.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the entire ellipse.\r\n * @param {number} size The size of the ellipse.\r\n * @param {boolean=} invert Specifies if the ellipse will be inverted.\r\n */\r\nGraphics__prototype.h/*addCircle*/ = function addCircle (x, y, size, invert) {\r\n var p = this.u/*currentTransform*/.J/*transformIconPoint*/(x, y, size, size);\r\n this.K/*_renderer*/.h/*addCircle*/(p, size, invert);\r\n};\r\n\r\n/**\r\n * Adds a rectangle to the underlying renderer.\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle.\r\n * @param {number} w The width of the rectangle.\r\n * @param {number} h The height of the rectangle.\r\n * @param {boolean=} invert Specifies if the rectangle will be inverted.\r\n */\r\nGraphics__prototype.i/*addRectangle*/ = function addRectangle (x, y, w, h, invert) {\r\n this.g/*addPolygon*/([\r\n x, y, \r\n x + w, y,\r\n x + w, y + h,\r\n x, y + h\r\n ], invert);\r\n};\r\n\r\n/**\r\n * Adds a right triangle to the underlying renderer.\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the triangle.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the triangle.\r\n * @param {number} w The width of the triangle.\r\n * @param {number} h The height of the triangle.\r\n * @param {number} r The rotation of the triangle (clockwise). 0 = right corner of the triangle in the lower left corner of the bounding rectangle.\r\n * @param {boolean=} invert Specifies if the triangle will be inverted.\r\n */\r\nGraphics__prototype.j/*addTriangle*/ = function addTriangle (x, y, w, h, r, invert) {\r\n var points = [\r\n x + w, y, \r\n x + w, y + h, \r\n x, y + h,\r\n x, y\r\n ];\r\n points.splice(((r || 0) % 4) * 2, 2);\r\n this.g/*addPolygon*/(points, invert);\r\n};\r\n\r\n/**\r\n * Adds a rhombus to the underlying renderer.\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the rhombus.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the rhombus.\r\n * @param {number} w The width of the rhombus.\r\n * @param {number} h The height of the rhombus.\r\n * @param {boolean=} invert Specifies if the rhombus will be inverted.\r\n */\r\nGraphics__prototype.L/*addRhombus*/ = function addRhombus (x, y, w, h, invert) {\r\n this.g/*addPolygon*/([\r\n x + w / 2, y,\r\n x + w, y + h / 2,\r\n x + w / 2, y + h,\r\n x, y + h / 2\r\n ], invert);\r\n};\n\n/**\r\n * @param {number} index\r\n * @param {Graphics} g\r\n * @param {number} cell\r\n * @param {number} positionIndex\r\n */\r\nfunction centerShape(index, g, cell, positionIndex) {\r\n index = index % 14;\r\n\r\n var k, m, w, h, inner, outer;\r\n\r\n !index ? (\r\n k = cell * 0.42,\r\n g.g/*addPolygon*/([\r\n 0, 0,\r\n cell, 0,\r\n cell, cell - k * 2,\r\n cell - k, cell,\r\n 0, cell\r\n ])) :\r\n\r\n index == 1 ? (\r\n w = 0 | (cell * 0.5), \r\n h = 0 | (cell * 0.8),\r\n\r\n g.j/*addTriangle*/(cell - w, 0, w, h, 2)) :\r\n\r\n index == 2 ? (\r\n w = 0 | (cell / 3),\r\n g.i/*addRectangle*/(w, w, cell - w, cell - w)) :\r\n\r\n index == 3 ? (\r\n inner = cell * 0.1,\r\n // Use fixed outer border widths in small icons to ensure the border is drawn\r\n outer = \r\n cell < 6 ? 1 :\r\n cell < 8 ? 2 :\r\n (0 | (cell * 0.25)),\r\n \r\n inner = \r\n inner > 1 ? (0 | inner) : // large icon => truncate decimals\r\n inner > 0.5 ? 1 : // medium size icon => fixed width\r\n inner, // small icon => anti-aliased border\r\n\r\n g.i/*addRectangle*/(outer, outer, cell - inner - outer, cell - inner - outer)) :\r\n\r\n index == 4 ? (\r\n m = 0 | (cell * 0.15),\r\n w = 0 | (cell * 0.5),\r\n g.h/*addCircle*/(cell - w - m, cell - w - m, w)) :\r\n\r\n index == 5 ? (\r\n inner = cell * 0.1,\r\n outer = inner * 4,\r\n\r\n // Align edge to nearest pixel in large icons\r\n outer > 3 && (outer = 0 | outer),\r\n \r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.g/*addPolygon*/([\r\n outer, outer,\r\n cell - inner, outer,\r\n outer + (cell - outer - inner) / 2, cell - inner\r\n ], true)) :\r\n\r\n index == 6 ? \r\n g.g/*addPolygon*/([\r\n 0, 0,\r\n cell, 0,\r\n cell, cell * 0.7,\r\n cell * 0.4, cell * 0.4,\r\n cell * 0.7, cell,\r\n 0, cell\r\n ]) :\r\n\r\n index == 7 ? \r\n g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :\r\n\r\n index == 8 ? (\r\n g.i/*addRectangle*/(0, 0, cell, cell / 2),\r\n g.i/*addRectangle*/(0, cell / 2, cell / 2, cell / 2),\r\n g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 1)) :\r\n\r\n index == 9 ? (\r\n inner = cell * 0.14,\r\n // Use fixed outer border widths in small icons to ensure the border is drawn\r\n outer = \r\n cell < 4 ? 1 :\r\n cell < 6 ? 2 :\r\n (0 | (cell * 0.35)),\r\n\r\n inner = \r\n cell < 8 ? inner : // small icon => anti-aliased border\r\n (0 | inner), // large icon => truncate decimals\r\n\r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.i/*addRectangle*/(outer, outer, cell - outer - inner, cell - outer - inner, true)) :\r\n\r\n index == 10 ? (\r\n inner = cell * 0.12,\r\n outer = inner * 3,\r\n\r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.h/*addCircle*/(outer, outer, cell - inner - outer, true)) :\r\n\r\n index == 11 ? \r\n g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :\r\n\r\n index == 12 ? (\r\n m = cell * 0.25,\r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.L/*addRhombus*/(m, m, cell - m, cell - m, true)) :\r\n\r\n // 13\r\n (\r\n !positionIndex && (\r\n m = cell * 0.4, w = cell * 1.2,\r\n g.h/*addCircle*/(m, m, w)\r\n )\r\n );\r\n}\r\n\r\n/**\r\n * @param {number} index\r\n * @param {Graphics} g\r\n * @param {number} cell\r\n */\r\nfunction outerShape(index, g, cell) {\r\n index = index % 4;\r\n\r\n var m;\r\n\r\n !index ?\r\n g.j/*addTriangle*/(0, 0, cell, cell, 0) :\r\n \r\n index == 1 ?\r\n g.j/*addTriangle*/(0, cell / 2, cell, cell / 2, 0) :\r\n\r\n index == 2 ?\r\n g.L/*addRhombus*/(0, 0, cell, cell) :\r\n\r\n // 3\r\n (\r\n m = cell / 6,\r\n g.h/*addCircle*/(m, m, cell - 2 * m)\r\n );\r\n}\n\n/**\r\n * Gets a set of identicon color candidates for a specified hue and config.\r\n * @param {number} hue\r\n * @param {ParsedConfiguration} config\r\n */\r\nfunction colorTheme(hue, config) {\r\n hue = config.X/*hue*/(hue);\r\n return [\r\n // Dark gray\r\n correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(0)),\r\n // Mid color\r\n correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0.5)),\r\n // Light gray\r\n correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(1)),\r\n // Light color\r\n correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(1)),\r\n // Dark color\r\n correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0))\r\n ];\r\n}\n\n/**\r\n * Draws an identicon to a specified renderer.\r\n * @param {Renderer} renderer\r\n * @param {string} hash\r\n * @param {Object|number=} config\r\n */\r\nfunction iconGenerator(renderer, hash, config) {\r\n var parsedConfig = getConfiguration(config, 0.08);\r\n\r\n // Set background color\r\n if (parsedConfig.H/*backColor*/) {\r\n renderer.m/*setBackground*/(parsedConfig.H/*backColor*/);\r\n }\r\n \r\n // Calculate padding and round to nearest integer\r\n var size = renderer.k/*iconSize*/;\r\n var padding = (0.5 + size * parsedConfig.Y/*iconPadding*/) | 0;\r\n size -= padding * 2;\r\n \r\n var graphics = new Graphics(renderer);\r\n \r\n // Calculate cell size and ensure it is an integer\r\n var cell = 0 | (size / 4);\r\n \r\n // Since the cell size is integer based, the actual icon will be slightly smaller than specified => center icon\r\n var x = 0 | (padding + size / 2 - cell * 2);\r\n var y = 0 | (padding + size / 2 - cell * 2);\r\n\r\n function renderShape(colorIndex, shapes, index, rotationIndex, positions) {\r\n var shapeIndex = parseHex(hash, index, 1);\r\n var r = rotationIndex ? parseHex(hash, rotationIndex, 1) : 0;\r\n \r\n renderer.M/*beginShape*/(availableColors[selectedColorIndexes[colorIndex]]);\r\n \r\n for (var i = 0; i < positions.length; i++) {\r\n graphics.u/*currentTransform*/ = new Transform(x + positions[i][0] * cell, y + positions[i][1] * cell, cell, r++ % 4);\r\n shapes(shapeIndex, graphics, cell, i);\r\n }\r\n \r\n renderer.N/*endShape*/();\r\n }\r\n\r\n // AVAILABLE COLORS\r\n var hue = parseHex(hash, -7) / 0xfffffff,\r\n \r\n // Available colors for this icon\r\n availableColors = colorTheme(hue, parsedConfig),\r\n\r\n // The index of the selected colors\r\n selectedColorIndexes = [];\r\n\r\n var index;\r\n\r\n function isDuplicate(values) {\r\n if (values.indexOf(index) >= 0) {\r\n for (var i = 0; i < values.length; i++) {\r\n if (selectedColorIndexes.indexOf(values[i]) >= 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0; i < 3; i++) {\r\n index = parseHex(hash, 8 + i, 1) % availableColors.length;\r\n if (isDuplicate([0, 4]) || // Disallow dark gray and dark color combo\r\n isDuplicate([2, 3])) { // Disallow light gray and light color combo\r\n index = 1;\r\n }\r\n selectedColorIndexes.push(index);\r\n }\r\n\r\n // ACTUAL RENDERING\r\n // Sides\r\n renderShape(0, outerShape, 2, 3, [[1, 0], [2, 0], [2, 3], [1, 3], [0, 1], [3, 1], [3, 2], [0, 2]]);\r\n // Corners\r\n renderShape(1, outerShape, 4, 5, [[0, 0], [3, 0], [3, 3], [0, 3]]);\r\n // Center\r\n renderShape(2, centerShape, 1, null, [[1, 1], [2, 1], [2, 2], [1, 2]]);\r\n \r\n renderer.finish();\r\n}\n\n/**\r\n * Computes a SHA1 hash for any value and returns it as a hexadecimal string.\r\n * \r\n * This function is optimized for minimal code size and rather short messages.\r\n * \r\n * @param {string} message \r\n */\r\nfunction sha1(message) {\r\n var HASH_SIZE_HALF_BYTES = 40;\r\n var BLOCK_SIZE_WORDS = 16;\r\n\r\n // Variables\r\n // `var` is used to be able to minimize the number of `var` keywords.\r\n var i = 0,\r\n f = 0,\r\n \r\n // Use `encodeURI` to UTF8 encode the message without any additional libraries\r\n // We could use `unescape` + `encodeURI` to minimize the code, but that would be slightly risky\r\n // since `unescape` is deprecated.\r\n urlEncodedMessage = encodeURI(message) + \"%80\", // trailing '1' bit padding\r\n \r\n // This can be changed to a preallocated Uint32Array array for greater performance and larger code size\r\n data = [],\r\n dataSize,\r\n \r\n hashBuffer = [],\r\n\r\n a = 0x67452301,\r\n b = 0xefcdab89,\r\n c = ~a,\r\n d = ~b,\r\n e = 0xc3d2e1f0,\r\n hash = [a, b, c, d, e],\r\n\r\n blockStartIndex = 0,\r\n hexHash = \"\";\r\n\r\n /**\r\n * Rotates the value a specified number of bits to the left.\r\n * @param {number} value Value to rotate\r\n * @param {number} shift Bit count to shift.\r\n */\r\n function rotl(value, shift) {\r\n return (value << shift) | (value >>> (32 - shift));\r\n }\r\n\r\n // Message data\r\n for ( ; i < urlEncodedMessage.length; f++) {\r\n data[f >> 2] = data[f >> 2] |\r\n (\r\n (\r\n urlEncodedMessage[i] == \"%\"\r\n // Percent encoded byte\r\n ? parseInt(urlEncodedMessage.substring(i + 1, i += 3), 16)\r\n // Unencoded byte\r\n : urlEncodedMessage.charCodeAt(i++)\r\n )\r\n\r\n // Read bytes in reverse order (big endian words)\r\n << ((3 - (f & 3)) * 8)\r\n );\r\n }\r\n\r\n // f is now the length of the utf8 encoded message\r\n // 7 = 8 bytes (64 bit) for message size, -1 to round down\r\n // >> 6 = integer division with block size\r\n dataSize = (((f + 7) >> 6) + 1) * BLOCK_SIZE_WORDS;\r\n\r\n // Message size in bits.\r\n // SHA1 uses a 64 bit integer to represent the size, but since we only support short messages only the least\r\n // significant 32 bits are set. -8 is for the '1' bit padding byte.\r\n data[dataSize - 1] = f * 8 - 8;\r\n \r\n // Compute hash\r\n for ( ; blockStartIndex < dataSize; blockStartIndex += BLOCK_SIZE_WORDS) {\r\n for (i = 0; i < 80; i++) {\r\n f = rotl(a, 5) + e + (\r\n // Ch\r\n i < 20 ? ((b & c) ^ ((~b) & d)) + 0x5a827999 :\r\n \r\n // Parity\r\n i < 40 ? (b ^ c ^ d) + 0x6ed9eba1 :\r\n \r\n // Maj\r\n i < 60 ? ((b & c) ^ (b & d) ^ (c & d)) + 0x8f1bbcdc :\r\n \r\n // Parity\r\n (b ^ c ^ d) + 0xca62c1d6\r\n ) + ( \r\n hashBuffer[i] = i < BLOCK_SIZE_WORDS\r\n // Bitwise OR is used to coerse `undefined` to 0\r\n ? (data[blockStartIndex + i] | 0)\r\n : rotl(hashBuffer[i - 3] ^ hashBuffer[i - 8] ^ hashBuffer[i - 14] ^ hashBuffer[i - 16], 1)\r\n );\r\n\r\n e = d;\r\n d = c;\r\n c = rotl(b, 30);\r\n b = a;\r\n a = f;\r\n }\r\n\r\n hash[0] = a = ((hash[0] + a) | 0);\r\n hash[1] = b = ((hash[1] + b) | 0);\r\n hash[2] = c = ((hash[2] + c) | 0);\r\n hash[3] = d = ((hash[3] + d) | 0);\r\n hash[4] = e = ((hash[4] + e) | 0);\r\n }\r\n\r\n // Format hex hash\r\n for (i = 0; i < HASH_SIZE_HALF_BYTES; i++) {\r\n hexHash += (\r\n (\r\n // Get word (2^3 half-bytes per word)\r\n hash[i >> 3] >>>\r\n\r\n // Append half-bytes in reverse order\r\n ((7 - (i & 7)) * 4)\r\n ) \r\n // Clamp to half-byte\r\n & 0xf\r\n ).toString(16);\r\n }\r\n\r\n return hexHash;\r\n}\n\n/**\r\n * Inputs a value that might be a valid hash string for Jdenticon and returns it \r\n * if it is determined valid, otherwise a falsy value is returned.\r\n */\r\nfunction isValidHash(hashCandidate) {\r\n return /^[0-9a-f]{11,}$/i.test(hashCandidate) && hashCandidate;\r\n}\r\n\r\n/**\r\n * Computes a hash for the specified value. Currently SHA1 is used. This function\r\n * always returns a valid hash.\r\n */\r\nfunction computeHash(value) {\r\n return sha1(value == null ? \"\" : \"\" + value);\r\n}\n\n\r\n\r\n/**\r\n * Renderer redirecting drawing commands to a canvas context.\r\n * @implements {Renderer}\r\n */\r\nfunction CanvasRenderer(ctx, iconSize) {\r\n var canvas = ctx.canvas; \r\n var width = canvas.width;\r\n var height = canvas.height;\r\n \r\n ctx.save();\r\n \r\n if (!iconSize) {\r\n iconSize = Math.min(width, height);\r\n \r\n ctx.translate(\r\n ((width - iconSize) / 2) | 0,\r\n ((height - iconSize) / 2) | 0);\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n this.l/*_ctx*/ = ctx;\r\n this.k/*iconSize*/ = iconSize;\r\n \r\n ctx.clearRect(0, 0, iconSize, iconSize);\r\n}\r\nvar CanvasRenderer__prototype = CanvasRenderer.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb[aa].\r\n */\r\nCanvasRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {\r\n var ctx = this.l/*_ctx*/;\r\n var iconSize = this.k/*iconSize*/;\r\n\r\n ctx.fillStyle = toCss3Color(fillColor);\r\n ctx.fillRect(0, 0, iconSize, iconSize);\r\n};\r\n\r\n/**\r\n * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.\r\n * @param {string} fillColor Fill color on format #rrggbb[aa].\r\n */\r\nCanvasRenderer__prototype.M/*beginShape*/ = function beginShape (fillColor) {\r\n var ctx = this.l/*_ctx*/;\r\n ctx.fillStyle = toCss3Color(fillColor);\r\n ctx.beginPath();\r\n};\r\n\r\n/**\r\n * Marks the end of the currently drawn shape. This causes the queued paths to be rendered on the canvas.\r\n */\r\nCanvasRenderer__prototype.N/*endShape*/ = function endShape () {\r\n this.l/*_ctx*/.fill();\r\n};\r\n\r\n/**\r\n * Adds a polygon to the rendering queue.\r\n * @param points An array of Point objects.\r\n */\r\nCanvasRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {\r\n var ctx = this.l/*_ctx*/;\r\n ctx.moveTo(points[0].x, points[0].y);\r\n for (var i = 1; i < points.length; i++) {\r\n ctx.lineTo(points[i].x, points[i].y);\r\n }\r\n ctx.closePath();\r\n};\r\n\r\n/**\r\n * Adds a circle to the rendering queue.\r\n * @param {Point} point The upper left corner of the circle bounding box.\r\n * @param {number} diameter The diameter of the circle.\r\n * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n */\r\nCanvasRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {\r\n var ctx = this.l/*_ctx*/,\r\n radius = diameter / 2;\r\n ctx.moveTo(point.x + radius, point.y + radius);\r\n ctx.arc(point.x + radius, point.y + radius, radius, 0, Math.PI * 2, counterClockwise);\r\n ctx.closePath();\r\n};\r\n\r\n/**\r\n * Called when the icon has been completely drawn.\r\n */\r\nCanvasRenderer__prototype.finish = function finish () {\r\n this.l/*_ctx*/.restore();\r\n};\n\nvar ICON_TYPE_SVG = 1;\r\n\r\nvar ICON_TYPE_CANVAS = 2;\r\n\r\nvar ATTRIBUTES = {\r\n O/*HASH*/: \"data-jdenticon-hash\",\r\n v/*VALUE*/: \"data-jdenticon-value\"\r\n};\r\n\r\nvar IS_RENDERED_PROPERTY = \"jdenticonRendered\";\r\n\r\nvar ICON_SELECTOR = \"[\" + ATTRIBUTES.O/*HASH*/ +\"],[\" + ATTRIBUTES.v/*VALUE*/ +\"]\";\r\n\r\nvar documentQuerySelectorAll = /** @type {!Function} */ (\r\n typeof document !== \"undefined\" && document.querySelectorAll.bind(document));\r\n\r\nfunction getIdenticonType(el) {\r\n if (el) {\r\n var tagName = el[\"tagName\"];\r\n\r\n if (/^svg$/i.test(tagName)) {\r\n return ICON_TYPE_SVG;\r\n }\r\n\r\n if (/^canvas$/i.test(tagName) && \"getContext\" in el) {\r\n return ICON_TYPE_CANVAS;\r\n }\r\n }\r\n}\n\n/**\r\n * Draws an identicon to a context.\r\n * @param {CanvasRenderingContext2D} ctx - Canvas context on which the icon will be drawn at location (0, 0).\r\n * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.\r\n * @param {number} size - Icon size in pixels.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction drawIcon(ctx, hashOrValue, size, config) {\r\n if (!ctx) {\r\n throw new Error(\"No canvas specified.\");\r\n }\r\n \r\n iconGenerator(new CanvasRenderer(ctx, size), \r\n isValidHash(hashOrValue) || computeHash(hashOrValue), \r\n config);\r\n\r\n var canvas = ctx.canvas;\r\n if (canvas) {\r\n canvas[IS_RENDERED_PROPERTY] = true;\r\n }\r\n}\n\n/**\r\n * Prepares a measure to be used as a measure in an SVG path, by\r\n * rounding the measure to a single decimal. This reduces the file\r\n * size of the generated SVG with more than 50% in some cases.\r\n */\r\nfunction svgValue(value) {\r\n return ((value * 10 + 0.5) | 0) / 10;\r\n}\r\n\r\n/**\r\n * Represents an SVG path element.\r\n */\r\nfunction SvgPath() {\r\n /**\r\n * This property holds the data string (path.d) of the SVG path.\r\n * @type {string}\r\n */\r\n this.A/*dataString*/ = \"\";\r\n}\r\nvar SvgPath__prototype = SvgPath.prototype;\r\n\r\n/**\r\n * Adds a polygon with the current fill color to the SVG path.\r\n * @param points An array of Point objects.\r\n */\r\nSvgPath__prototype.g/*addPolygon*/ = function addPolygon (points) {\r\n var dataString = \"\";\r\n for (var i = 0; i < points.length; i++) {\r\n dataString += (i ? \"L\" : \"M\") + svgValue(points[i].x) + \" \" + svgValue(points[i].y);\r\n }\r\n this.A/*dataString*/ += dataString + \"Z\";\r\n};\r\n\r\n/**\r\n * Adds a circle with the current fill color to the SVG path.\r\n * @param {Point} point The upper left corner of the circle bounding box.\r\n * @param {number} diameter The diameter of the circle.\r\n * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n */\r\nSvgPath__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {\r\n var sweepFlag = counterClockwise ? 0 : 1,\r\n svgRadius = svgValue(diameter / 2),\r\n svgDiameter = svgValue(diameter),\r\n svgArc = \"a\" + svgRadius + \",\" + svgRadius + \" 0 1,\" + sweepFlag + \" \";\r\n \r\n this.A/*dataString*/ += \r\n \"M\" + svgValue(point.x) + \" \" + svgValue(point.y + diameter / 2) +\r\n svgArc + svgDiameter + \",0\" + \r\n svgArc + (-svgDiameter) + \",0\";\r\n};\n\n\r\n\r\n/**\r\n * Renderer producing SVG output.\r\n * @implements {Renderer}\r\n */\r\nfunction SvgRenderer(target) {\r\n /**\r\n * @type {SvgPath}\r\n * @private\r\n */\r\n this.B/*_path*/;\r\n\r\n /**\r\n * @type {Object.<string,SvgPath>}\r\n * @private\r\n */\r\n this.C/*_pathsByColor*/ = { };\r\n\r\n /**\r\n * @type {SvgElement|SvgWriter}\r\n * @private\r\n */\r\n this.P/*_target*/ = target;\r\n\r\n /**\r\n * @type {number}\r\n */\r\n this.k/*iconSize*/ = target.k/*iconSize*/;\r\n}\r\nvar SvgRenderer__prototype = SvgRenderer.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb[aa].\r\n */\r\nSvgRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {\r\n var match = /^(#......)(..)?/.exec(fillColor),\r\n opacity = match[2] ? parseHex(match[2], 0) / 255 : 1;\r\n this.P/*_target*/.m/*setBackground*/(match[1], opacity);\r\n};\r\n\r\n/**\r\n * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.\r\n * @param {string} color Fill color on format #xxxxxx.\r\n */\r\nSvgRenderer__prototype.M/*beginShape*/ = function beginShape (color) {\r\n this.B/*_path*/ = this.C/*_pathsByColor*/[color] || (this.C/*_pathsByColor*/[color] = new SvgPath());\r\n};\r\n\r\n/**\r\n * Marks the end of the currently drawn shape.\r\n */\r\nSvgRenderer__prototype.N/*endShape*/ = function endShape () { };\r\n\r\n/**\r\n * Adds a polygon with the current fill color to the SVG.\r\n * @param points An array of Point objects.\r\n */\r\nSvgRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {\r\n this.B/*_path*/.g/*addPolygon*/(points);\r\n};\r\n\r\n/**\r\n * Adds a circle with the current fill color to the SVG.\r\n * @param {Point} point The upper left corner of the circle bounding box.\r\n * @param {number} diameter The diameter of the circle.\r\n * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n */\r\nSvgRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {\r\n this.B/*_path*/.h/*addCircle*/(point, diameter, counterClockwise);\r\n};\r\n\r\n/**\r\n * Called when the icon has been completely drawn.\r\n */\r\nSvgRenderer__prototype.finish = function finish () {\n var this$1 = this;\n \r\n var pathsByColor = this.C/*_pathsByColor*/;\r\n for (var color in pathsByColor) {\r\n // hasOwnProperty cannot be shadowed in pathsByColor\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (pathsByColor.hasOwnProperty(color)) {\r\n this$1.P/*_target*/.R/*appendPath*/(color, pathsByColor[color].A/*dataString*/);\r\n }\r\n }\r\n};\n\nvar SVG_CONSTANTS = {\r\n S/*XMLNS*/: \"http://www.w3.org/2000/svg\",\r\n T/*WIDTH*/: \"width\",\r\n U/*HEIGHT*/: \"height\",\r\n};\n\n/**\r\n * Renderer producing SVG output.\r\n */\r\nfunction SvgWriter(iconSize) {\r\n /**\r\n * @type {number}\r\n */\r\n this.k/*iconSize*/ = iconSize;\r\n\r\n /**\r\n * @type {string}\r\n * @private\r\n */\r\n this.D/*_s*/ =\r\n '<svg xmlns=\"' + SVG_CONSTANTS.S/*XMLNS*/ + '\" width=\"' + \r\n iconSize + '\" height=\"' + iconSize + '\" viewBox=\"0 0 ' + \r\n iconSize + ' ' + iconSize + '\">';\r\n}\r\nvar SvgWriter__prototype = SvgWriter.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb.\r\n * @param {number} opacity Opacity in the range [0.0, 1.0].\r\n */\r\nSvgWriter__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {\r\n if (opacity) {\r\n this.D/*_s*/ += '<rect width=\"100%\" height=\"100%\" fill=\"' + \r\n fillColor + '\" opacity=\"' + opacity.toFixed(2) + '\"/>';\r\n }\r\n};\r\n\r\n/**\r\n * Writes a path to the SVG string.\r\n * @param {string} color Fill color on format #rrggbb.\r\n * @param {string} dataString The SVG path data string.\r\n */\r\nSvgWriter__prototype.R/*appendPath*/ = function appendPath (color, dataString) {\r\n this.D/*_s*/ += '<path fill=\"' + color + '\" d=\"' + dataString + '\"/>';\r\n};\r\n\r\n/**\r\n * Gets the rendered image as an SVG string.\r\n */\r\nSvgWriter__prototype.toString = function toString () {\r\n return this.D/*_s*/ + \"</svg>\";\r\n};\n\n/**\r\n * Draws an identicon as an SVG string.\r\n * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.\r\n * @param {number} size - Icon size in pixels.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n * @returns {string} SVG string\r\n */\r\nfunction toSvg(hashOrValue, size, config) {\r\n var writer = new SvgWriter(size);\r\n iconGenerator(new SvgRenderer(writer), \r\n isValidHash(hashOrValue) || computeHash(hashOrValue),\r\n config);\r\n return writer.toString();\r\n}\n\n/**\r\n * Creates a new element and adds it to the specified parent.\r\n * @param {Element} parentNode\r\n * @param {string} name\r\n * @param {...(string|number)} keyValuePairs\r\n */\r\nfunction SvgElement_append(parentNode, name) {\n var keyValuePairs = [], len = arguments.length - 2;\n while ( len-- > 0 ) keyValuePairs[ len ] = arguments[ len + 2 ];\n\r\n var el = document.createElementNS(SVG_CONSTANTS.S/*XMLNS*/, name);\r\n \r\n for (var i = 0; i + 1 < keyValuePairs.length; i += 2) {\r\n el.setAttribute(\r\n /** @type {string} */(keyValuePairs[i]),\r\n /** @type {string} */(keyValuePairs[i + 1])\r\n );\r\n }\r\n\r\n parentNode.appendChild(el);\r\n}\r\n\r\n\r\n/**\r\n * Renderer producing SVG output.\r\n */\r\nfunction SvgElement(element) {\r\n // Don't use the clientWidth and clientHeight properties on SVG elements\r\n // since Firefox won't serve a proper value of these properties on SVG\r\n // elements (https://bugzilla.mozilla.org/show_bug.cgi?id=874811)\r\n // Instead use 100px as a hardcoded size (the svg viewBox will rescale \r\n // the icon to the correct dimensions)\r\n var iconSize = this.k/*iconSize*/ = Math.min(\r\n (Number(element.getAttribute(SVG_CONSTANTS.T/*WIDTH*/)) || 100),\r\n (Number(element.getAttribute(SVG_CONSTANTS.U/*HEIGHT*/)) || 100)\r\n );\r\n \r\n /**\r\n * @type {Element}\r\n * @private\r\n */\r\n this.V/*_el*/ = element;\r\n \r\n // Clear current SVG child elements\r\n while (element.firstChild) {\r\n element.removeChild(element.firstChild);\r\n }\r\n \r\n // Set viewBox attribute to ensure the svg scales nicely.\r\n element.setAttribute(\"viewBox\", \"0 0 \" + iconSize + \" \" + iconSize);\r\n element.setAttribute(\"preserveAspectRatio\", \"xMidYMid meet\");\r\n}\r\nvar SvgElement__prototype = SvgElement.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb.\r\n * @param {number} opacity Opacity in the range [0.0, 1.0].\r\n */\r\nSvgElement__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {\r\n if (opacity) {\r\n SvgElement_append(this.V/*_el*/, \"rect\",\r\n SVG_CONSTANTS.T/*WIDTH*/, \"100%\",\r\n SVG_CONSTANTS.U/*HEIGHT*/, \"100%\",\r\n \"fill\", fillColor,\r\n \"opacity\", opacity);\r\n }\r\n};\r\n\r\n/**\r\n * Appends a path to the SVG element.\r\n * @param {string} color Fill color on format #xxxxxx.\r\n * @param {string} dataString The SVG path data string.\r\n */\r\nSvgElement__prototype.R/*appendPath*/ = function appendPath (color, dataString) {\r\n SvgElement_append(this.V/*_el*/, \"path\",\r\n \"fill\", color,\r\n \"d\", dataString);\r\n};\n\n/**\r\n * Updates all canvas elements with the `data-jdenticon-hash` or `data-jdenticon-value` attribute.\r\n */\r\nfunction updateAll() {\r\n if (documentQuerySelectorAll) {\r\n update(ICON_SELECTOR);\r\n }\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified `<canvas>` or `<svg>` elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<svg>` or `<canvas>`, or a CSS selector to such an element.\r\n * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction update(el, hashOrValue, config) {\r\n renderDomElement(el, hashOrValue, config, function (el, iconType) {\r\n if (iconType) {\r\n return iconType == ICON_TYPE_SVG ? \r\n new SvgRenderer(new SvgElement(el)) : \r\n new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext(\"2d\"));\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified `<canvas>` elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<canvas>`, or a CSS selector to such an element.\r\n * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction updateCanvas(el, hashOrValue, config) {\r\n renderDomElement(el, hashOrValue, config, function (el, iconType) {\r\n if (iconType == ICON_TYPE_CANVAS) {\r\n return new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext(\"2d\"));\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified `<svg>` elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<svg>`, or a CSS selector to such an element.\r\n * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction updateSvg(el, hashOrValue, config) {\r\n renderDomElement(el, hashOrValue, config, function (el, iconType) {\r\n if (iconType == ICON_TYPE_SVG) {\r\n return new SvgRenderer(new SvgElement(el));\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified canvas or svg elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<svg>` or `<canvas>`, or a CSS selector to such an element.\r\n * @param {*} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number|undefined} config\r\n * @param {function(Element,number):Renderer} rendererFactory - Factory function for creating an icon renderer.\r\n */\r\nfunction renderDomElement(el, hashOrValue, config, rendererFactory) {\r\n if (typeof el === \"string\") {\r\n if (documentQuerySelectorAll) {\r\n var elements = documentQuerySelectorAll(el);\r\n for (var i = 0; i < elements.length; i++) {\r\n renderDomElement(elements[i], hashOrValue, config, rendererFactory);\r\n }\r\n }\r\n return;\r\n }\r\n \r\n // Hash selection. The result from getValidHash or computeHash is \r\n // accepted as a valid hash.\r\n var hash = \r\n // 1. Explicit valid hash\r\n isValidHash(hashOrValue) ||\r\n \r\n // 2. Explicit value (`!= null` catches both null and undefined)\r\n hashOrValue != null && computeHash(hashOrValue) ||\r\n \r\n // 3. `data-jdenticon-hash` attribute\r\n isValidHash(el.getAttribute(ATTRIBUTES.O/*HASH*/)) ||\r\n \r\n // 4. `data-jdenticon-value` attribute. \r\n // We want to treat an empty attribute as an empty value. \r\n // Some browsers return empty string even if the attribute \r\n // is not specified, so use hasAttribute to determine if \r\n // the attribute is specified.\r\n el.hasAttribute(ATTRIBUTES.v/*VALUE*/) && computeHash(el.getAttribute(ATTRIBUTES.v/*VALUE*/));\r\n \r\n if (!hash) {\r\n // No hash specified. Don't render an icon.\r\n return;\r\n }\r\n \r\n var renderer = rendererFactory(el, getIdenticonType(el));\r\n if (renderer) {\r\n // Draw icon\r\n iconGenerator(renderer, hash, config);\r\n el[IS_RENDERED_PROPERTY] = true;\r\n }\r\n}\n\n// This file is compiled to dist/jdenticon-module.js\r\n\r\nvar jdenticon = updateAll;\r\n\r\ndefineConfigProperty(jdenticon);\r\n\r\n// Export public API\r\njdenticon[\"configure\"] = configure;\r\njdenticon[\"drawIcon\"] = drawIcon;\r\njdenticon[\"toSvg\"] = toSvg;\r\njdenticon[\"update\"] = update;\r\njdenticon[\"updateCanvas\"] = updateCanvas;\r\njdenticon[\"updateSvg\"] = updateSvg;\r\n\r\n/**\r\n * Specifies the version of the Jdenticon package in use.\r\n * @type {string}\r\n */\r\njdenticon[\"version\"] = \"3.3.0\";\r\n\r\n/**\r\n * Specifies which bundle of Jdenticon that is used.\r\n * @type {string}\r\n */\r\njdenticon[\"bundle\"] = \"browser-cjs\";\r\n\r\nmodule.exports = jdenticon;\n//# sourceMappingURL=jdenticon-module.js.map\n","export interface KeycloakConfig {\n url: string;\n realm: string;\n clientId: string;\n}\n\nexport interface LinkItem {\n name: string;\n url: string;\n icon?: string;\n}\n\nexport interface MenuSection {\n name: string;\n links: LinkItem[];\n}\n\nexport interface LocalMenuSection {\n name: string;\n enableCustomLocalMenu: boolean;\n links: LinkItem[];\n}\n\nexport interface MenuConfig {\n global: MenuSection;\n local: LocalMenuSection;\n}\n\nexport interface LoadingConfig {\n isLoading: boolean;\n duration: number; // in milliseconds\n}\n\nexport interface AppConfig {\n keycloak: KeycloakConfig;\n defaultLink: LinkItem;\n menuViewType: string;\n cookieName: string;\n menu: MenuConfig;\n loading?: LoadingConfig;\n}\n\n\nconst DEFAULT_CONFIG: AppConfig = {\n keycloak: {\n url: 'https://keycloak.ds2.icelab.cloud',\n realm: 'ds2',\n clientId: 'dashbtn'\n },\n defaultLink: { name: 'Portal', url: 'https://portal.ds2.icelab.cloud' },\n menuViewType: 'grid',\n cookieName: 'ZDZW_cookie',\n menu: {\n global: {\n name: 'Applications',\n links: []\n },\n local: {\n name: 'Applications',\n enableCustomLocalMenu: true,\n links: []\n }\n },\n loading: {\n isLoading: true,\n duration: 800\n },\n};\n\n// Fetch config from API\nclass ConfigService {\n private static instance: ConfigService;\n private _config: AppConfig = DEFAULT_CONFIG;\n\n static getInstance() {\n if (!ConfigService.instance) {\n ConfigService.instance = new ConfigService();\n }\n return ConfigService.instance;\n }\n\n async fetchConfig(portalApiUrl: string) {\n try {\n const res = await fetch(portalApiUrl + '/developer/dashbuttons/config');\n if (!res.ok) throw new Error('Failed to fetch config');\n const data = await res.json();\n this._config = { ...DEFAULT_CONFIG, ...data }; // Merge API data with defaults\n } catch (e) {\n console.warn('Using default config due to API failure', e);\n this._config = DEFAULT_CONFIG; // fallback to defaults\n }\n\n return this._config;\n }\n\n /**\n * Return cached config without calling API\n */\n get config() {\n return this._config;\n }\n}\n\nexport const configService = ConfigService.getInstance();","export interface InstalledChartMetadata {\n category?: string;\n frontendUrlPrefix?: string;\n}\n\nexport interface InstalledChart {\n id: number;\n installChartName: string;\n metadata: InstalledChartMetadata;\n}\n\nexport interface PaginatedInstalledChartsResponse {\n data: InstalledChart[];\n total: number;\n page: number;\n perPage: number;\n totalPages: number;\n}\n\nexport interface MenuLink {\n name: string;\n url: string;\n category?: string;\n}\n\n// const getRootDomain = (hostOrUrl: string): string => {\n// // Ensure we can parse it with URL\n// const url = hostOrUrl.startsWith(\"http\") ? new URL(hostOrUrl) : new URL(`https://${hostOrUrl}`);\n// const hostname = url.hostname;\n// const port = url.port ? `:${url.port}` : \"\";\n// const parts = hostname.split(\".\");\n\n// // localhost → return with port\n// if (hostname === \"localhost\") return hostname + port;\n\n// // sslip.io → keep last 3 parts\n// if (hostname.endsWith(\".sslip.io\")) return parts.slice(-5).join(\".\") + port;\n\n// // Normal domains → remove first label\n// return parts.slice(1).join(\".\") + port;\n// };\n\nconst getRootDomain = (hostOrUrl: string): string => {\n const url = hostOrUrl.startsWith(\"http\")\n ? new URL(hostOrUrl)\n : new URL(`https://${hostOrUrl}`);\n\n const hostname = url.hostname;\n const port = url.port ? `:${url.port}` : \"\";\n const parts = hostname.split(\".\");\n\n // localhost → return with port\n if (hostname === \"localhost\") return hostname + port;\n\n // sslip.io → keep last 3 parts\n if (hostname.endsWith(\".sslip.io\")) return parts.slice(-5).join(\".\") + port;\n\n // Keep full hostname\n return hostname + port;\n};\n\n\nconst getUrlProtocol = (url: string, defaultProtocol = \"https://\"): string => {\n if (!url) return defaultProtocol;\n\n const trimmed = url.trim();\n\n // Match protocol (http:// or https://)\n const match = trimmed.match(/^(https?:\\/\\/)/i);\n return match ? match[1] : defaultProtocol;\n};\n\nclass MenuService {\n\n async getMenuConfig(url): Promise<PaginatedInstalledChartsResponse> {\n try {\n const res = await fetch(url);\n if (!res.ok) throw new Error('API error');\n return await res.json();\n } catch {\n return { data: [], total: 0, page: 1, perPage: 0, totalPages: 0 };\n }\n }\n\n private setDefaultProtocol(url: string): string {\n // If protocol already exists (http:// or https://), keep it\n if (/^https?:\\/\\//i.test(url)) {\n return url;\n }\n\n // Otherwise default to https\n return `https://${url}`;\n }\n\n async getMenuLinks(BASE_URL): Promise<MenuLink[]> {\n const normalizedBaseUrl = this.setDefaultProtocol(BASE_URL);\n // Create a URL object from normalizedBaseUrl\n const urlObj = new URL(normalizedBaseUrl);\n\n // Add the 'containerisationbackend' subdomain\n urlObj.hostname = `containerisationbackend.${urlObj.hostname}`;\n \n const { data } = await this.getMenuConfig(`${urlObj.origin}/developer/charts/installed`);\n\n return data.map(d => {\n const frontendUrlPrefix = d.metadata?.frontendUrlPrefix;\n\n const rootDomain = getRootDomain(BASE_URL);\n const generatedUrl = `${getUrlProtocol(BASE_URL)}${frontendUrlPrefix}.${rootDomain}`;\n \n return {\n name: d.installChartName,\n url: frontendUrlPrefix ? generatedUrl : \"\",\n category: d.metadata?.category ?? \"\",\n };\n });\n }\n}\n\nexport const menuService = new MenuService();","@import '../../assets/fontawesome-6.7.2-web/css/all.min.css';\n\n.button {\n\tdisplay: flex;\n\theight: 50px;\n\tpadding: 0;\n\tbackground: #3e7671;\n\tborder: none;\n\toutline: none;\n\tborder-radius: 5px;\n\toverflow: hidden;\n\tfont-size: 16px;\n\tfont-weight: 500;\n\tcursor: pointer;\n min-width: 220px;\n max-width: 220px;\n}\n\n.button:hover {\n\tbackground: #008168;\n}\n\n.button:active {\n\tbackground: #3e7671;\n}\n\n.button-text{\n\tdisplay: block;\n\tmargin: auto;\n\tpadding: 0 10px;\n\tcolor: #fff;\n text-overflow: ellipsis;\n overflow:hidden;\n white-space:nowrap;\n width: 50%;\n text-transform: capitalize;\n}\n\n.button-icon {\n margin: auto;\n padding: 10px;\n font-size: 20px;\n color: #ffffff;\n}\n\n.button-profile {\n\tmargin: auto;\n}\n\n.button-profile svg {\n display: flex;\n margin-left: 4px;\n background-color: #fff;\n border-radius: 4px;\n}\n\n.profile-image {\n display: flex;\n margin-left: 4px;\n width: 40px;\n height: 40px;\n border-radius: 4px;\n background-color: #fff;\n}\n\n.button-text-full-width {\n width: auto!important;\n}\n\n.button-link {\n text-decoration: none!important;\n}\n\n/* Drop down section */\n.dropdown {\n position: relative;\n display: inline-block;\n}\n \n.dropdown-content {\n display: none;\n position: absolute;\n right: 0;\n background-color: #f9f9f9;\n min-width: 180px;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n border-radius: 5px;\n text-align: left!important;\n}\n \n.dropdown-content-link a {\n color: #71797E;\n padding: 16px 20px;\n text-decoration: none;\n display: block;\n cursor: pointer;\n font-size: 1rem!important;\n}\n \n.dropdown-content-link a:hover {\n background-color: #f1f1f1;\n color: #000;\n opacity: 0.7;\n}\n\n.dropdown:hover .dropdown-content {\n display: block;\n}\n\n\n/* Modal Content */\n.modal {\n display: none;\n position: fixed;\n z-index: 1;\n padding-top: 100px;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: auto;\n background-color: rgb(0,0,0);\n background-color: rgba(0,0,0,0.4);\n text-align: center;\n }\n \n\n .modal-content {\n background-color: #fefefe;\n margin: auto;\n padding: 20px;\n border: 1px solid #888;\n width: 40%;\n }\n\n .modal-body {\n max-height: 50vh;\n overflow-y: auto;\n }\n \n .close {\n color: #aaaaaa;\n float: right;\n font-size: 28px;\n font-weight: bold;\n }\n \n .close:hover,\n .close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n }\n\n .modal-app {\n background-color: #c3e9bc;\n padding: 15px;\n margin: 10px;\n border-radius: 5px;\n }\n\n .external-app-link {\n text-decoration:none; \n color: #000;\n }\n\n .gray-text {\n color: #606060;\n }\n\n .green-text {\n color: #3e7671;\n }\n\n #countdown {\n position: relative;\n margin: auto;\n margin-top: 30px;\n height: 40px;\n width: 40px;\n text-align: center;\n }\n \n #countdown-number {\n color: #2e2e2e;\n display: inline-block;\n line-height: 40px;\n }\n \n #countdown svg {\n position: absolute;\n top: 0;\n right: 0;\n width: 40px;\n height: 40px;\n transform: rotateY(-180deg) rotateZ(-90deg);\n }\n \n #countdown svg circle {\n stroke-dasharray: 113px;\n stroke-dashoffset: 0px;\n stroke-linecap: round;\n stroke-width: 4px;\n stroke: #008168;\n fill: none;\n animation: countdown 6s linear infinite forwards;\n }\n \n @keyframes countdown {\n from {\n stroke-dashoffset: 0px;\n }\n to {\n stroke-dashoffset: 113px;\n }\n }\n\n .lds-ring {\n color: #fff\n }\n .lds-ring {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: auto;\n position: relative;\n }\n .lds-ring div {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 25px;\n height: 25px;\n margin: 3px;\n border: 2px solid currentColor;\n border-radius: 50%;\n animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: currentColor transparent transparent transparent;\n }\n .lds-ring div:nth-child(1) {\n animation-delay: -0.45s;\n }\n .lds-ring div:nth-child(2) {\n animation-delay: -0.3s;\n }\n .lds-ring div:nth-child(3) {\n animation-delay: -0.15s;\n }\n @keyframes lds-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n\n.dropdown-content .dropdown-user-profile {\n padding: 12px 10px 8px 18px;\n border-bottom: 1px solid #aaaaaa;\n}\n\n.dropdown-content .dropdown-user-profile .username {\n font-size: 16px;\n color: #2e2e2e;\n text-transform: capitalize;\n}\n\n.dropdown-content .dropdown-user-profile .first-last-name {\n font-size: 13px;\n color: #606060;\n}\n\n\n.menu-bar-icons {\n color: #008168;\n display: inline-block;\n margin-right: 8px;\n font-size: 18px;\n}\n\n.other-links-list {\n /* display: flex;\n justify-content: space-between; */\n padding: 14px;\n background-color: #f1f1f1;\n margin-bottom: 8px;\n text-align: start;\n border-radius: 5px;\n}\n\n/* .box {\n box-shadow: 0 3px 12px rgba(0,0,0,0.15);\n background-color: #fff;\n border-radius: 3px;\n overflow: hidden;\n} */\n\n.tab-list {\n margin: 0px 40px;\n padding: 0;\n list-style: none;\n display: flex;\n position: relative;\n width: 85%;\n border-bottom: 1px solid #aaa;\n}\n\n/* .tab-list::before {\n content: '';\n display: block;\n height: 2px;\n width: 50%;\n position: absolute;\n bottom: 0;\n background-color: #aaa;\n transition: .3s;\n} */\n\n.tab-item {\n flex: 1;\n text-align: center;\n transition: .3s;\n opacity: 0.5;\n}\n\n.tab-toggle {\n display: none;\n}\n\n.tab-content {\n display: none;\n}\n\n.tab-toggle:nth-child(1):checked ~ .tab-list .tab-item:nth-child(1),\n.tab-toggle:nth-child(2):checked ~ .tab-list .tab-item:nth-child(2) {\n opacity: 1;\n color: #008168;\n border-bottom: 2px solid #008168;\n}\n\n.tab-toggle:nth-child(2):checked ~ .tab-list::before {\n transform: translateX(100%);\n}\n\n.tab-toggle:nth-child(3):checked ~ .tab-list::before {\n transform: translateX(200%);\n}\n\n.tab-toggle:nth-child(1):checked ~ .tab-container .tab-content:nth-child(1),\n.tab-toggle:nth-child(2):checked ~ .tab-container .tab-content:nth-child(2) {\n display: block;\n}\n\n.tab-trigger {\n display: block;\n padding: 10px 0;\n}\n\n.tab-container {\n padding: 15px 30px;\n}\n\n.grid-view-menu {\n display: grid;\n gap: 4px;\n grid-template-columns: repeat(3, 1fr);\n align-content: start;\n padding: 8px;\n max-height: 230px;\n overflow-y: auto;\n}\n\n.grid-view-link {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 6px;\n width: 75px;\n height: 70px;\n padding: 6px;\n text-decoration: none;\n font-size: 13px;\n color: #128f8b;\n text-align: center;\n transition: transform 0.2s ease, background-color 0.1s ease;\n position: relative;\n z-index: 1;\n /* background-color: white; */\n border-radius: 3px;\n cursor: pointer;\n}\n\n.grid-view-link:hover {\n background-color: #eeeeee;\n transform: scale(1.1);\n z-index: 5;\n}\n\n.grid-view-link-text {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: #71797e;\n width: 100%;\n}\n\n.grid-view-link:hover .grid-view-link-text {\n white-space: pre-wrap;\n overflow: visible;\n text-overflow: unset;\n}\n\n.grid-view-link i {\n transition: transform 0.2s ease;\n}\n\n.grid-view-link:hover i {\n transform: scale(1.1);\n}\n\nhr.solid {\n border-top: 1px solid #bbb;\n margin: 2px 0;\n} \n\n/* ===== Overlay ===== */\n.restricted-overlay {\n position: fixed;\n inset: 0;\n background: linear-gradient(135deg, #0f3d3e, #128f8b);\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 20px;\n z-index: 9999999;\n font-family: \"Segoe UI\", sans-serif;\n}\n\n/* ===== Card ===== */\n.restricted-card {\n background: #ffffff;\n border-radius: 10px;\n padding: 50px;\n max-width: 540px;\n width: 100%;\n text-align: center;\n box-shadow: 0 25px 70px rgba(0, 0, 0, 0.25);\n animation: fadeInUp 0.3s ease;\n}\n\n/* ===== Icon ===== */\n.restricted-icon {\n font-size: 48px;\n color: #128f8b;\n margin-bottom: 30px;\n}\n\n/* ===== Text ===== */\n.restricted-card h2 {\n margin-bottom: 10px;\n color: #128f8b;\n}\n\n.restricted-message {\n color: #555;\n font-size: 16px;\n margin-bottom: 30px;\n line-height: 1.5;\n}\n\n/* ===== Links Section ===== */\n.restricted-links h4 {\n margin-bottom: 20px;\n color: #128f8b;\n}\n\n.link-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 20px;\n margin-bottom: 25px;\n}\n\n.restricted-link {\n background: #ecf2f2;\n padding: 10px;\n border-radius: 10px;\n text-decoration: none;\n color: #128f8b;\n font-size: 13px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n transition: all 0.2s ease;\n}\n\n.restricted-link:hover {\n background: #128f8b;\n color: #fff;\n}\n\n/* ===== Buttons ===== */\n.restricted-actions {\n display: flex;\n justify-content: center;\n gap: 15px;\n}\n\n.btn-primary {\n background: #128f8b;\n color: #fff;\n padding: 10px 20px;\n border-radius: 8px;\n text-decoration: none;\n font-weight: 500;\n transition: 0.2s;\n}\n\n.btn-primary:hover {\n background: #0f6e6b;\n}\n\n.btn-secondary {\n background: transparent;\n border: 2px solid #128f8b;\n color: #128f8b;\n padding: 8px 18px;\n border-radius: 8px;\n cursor: pointer;\n transition: 0.2s;\n}\n\n.btn-danger {\n background: transparent;\n border: 2px solid #dc3545;\n color: #dc3545;\n padding: 8px 18px;\n border-radius: 8px;\n cursor: pointer;\n transition: 0.2s;\n}\n\n.btn-secondary:hover {\n background: #128f8b;\n color: #fff;\n}\n\n/* ===== Animation ===== */\n@keyframes fadeInUp {\n from {\n opacity: 0;\n transform: translateY(15px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n","import { Component, Prop, State, h, Element } from '@stencil/core';\nimport Keycloak from \"keycloak-js\";\nimport { toSvg } from \"jdenticon\";\nimport { AppConfig, configService } from '../../services/config';\nimport { MenuLink, menuService } from '../../services/menu';\n\n@Component({\n tag: 'dash-button',\n styleUrl: 'dash-button.css',\n shadow: true,\n})\nexport class DashButtonComponent {\n\n @Element() el;\n \n @Prop() showPostLoginText: boolean = false;\n @Prop() silentCheckSso: boolean = false;\n @Prop() redirectUri: string;\n @Prop() authMethod: string = \"check-sso\";\n\n @Prop() portalApiUrl: string = \"\";\n @Prop() plmUrl: string = \"https://productlicensemanager-zdzw.cloud.zdzw-project.com\";\n @Prop() showUnauthorizedModal: boolean = false;\n\n @Prop() primaryColor: string = \"\";\n @Prop() accentColor: string = \"\";\n\n @State() keycloak: any = null;\n\n @State() isAuth = false;\n @State() givenUserName: string = \"\";\n @State() silentCheckSsoRedirectUri: string = window.location.origin + '/assets/verificar-sso.html';\n\n @State() appList = []\n \n @State() avatarSvg = toSvg(\"init-avatar\", 40);\n\n @State() isLoading: boolean = false;\n @State() config: AppConfig;\n\n @State() localMenuLinks: MenuLink[];\n @State() organizationUrl: any;\n\n @State() isRestricted: boolean = false;\n\n async componentWillLoad() {\n\n // Fetch config from API\n this.config = await configService.fetchConfig(this.portalApiUrl);\n console.log(this.config)\n\n if (!this.config) return; // prevent Keycloak init if fetch failed\n\n // render will show spinner\n if(this.config?.loading?.isLoading) {\n this.isLoading = true;\n setTimeout(() => {\n this.isLoading = false;\n }, this.config?.loading?.duration);\n }\n\n // Initialize Keycloak\n this.keycloak = new Keycloak({\n url: this.config.keycloak.url,\n realm: this.config.keycloak.realm,\n clientId: this.config.keycloak.clientId\n });\n\n //\n // Init Keycloak\n //\n this.initKeycloak().then(() => {\n // Check if the user is authenticated\n if(this.isAuth) {\n // Get organization URL and load local menu items\n // If the user has not set an organization URL, they can configure it in the Portal profile page\n this.loadOrganizationUrlAndLinks();\n \n // Validate user access permission for the application. \n // If unauthorized, display the restricted access modal.\n this.validateAppAccessByUrl()\n\n }\n })\n }\n\n async initKeycloak() {\n // Remove the initiation time permission localstorage object\n localStorage.removeItem(\"ZDZW_app_permission\");\n\n await this.keycloak.init(\n {\n onLoad: this.authMethod,\n checkLoginIframe: false,\n silentCheckSsoRedirectUri: this.silentCheckSso ? this.silentCheckSsoRedirectUri : '',\n }).then(res => {\n if(res) {\n this.isAuth = true\n localStorage.setItem(\"keycloak\", JSON.stringify(this.keycloak));\n // document.cookie = \"DASH_BTN=\" + JSON.parse(localStorage.getItem('keycloak')).token;\n document.cookie = this.config.cookieName +\"=\" + JSON.parse(localStorage.getItem('keycloak')).token;\n\n // Set userName\n this.givenUserName = JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.preferred_username\n\n // Set user avatar\n this.avatarSvg = toSvg(JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.sub, 40);\n } \n });\n }\n\n async loadOrganizationUrlAndLinks() {\n // Read org URL safely\n try {\n const kc = JSON.parse(localStorage.getItem(\"keycloak\") || \"{}\");\n this.organizationUrl = kc?.idTokenParsed?.organizationUrl || null;\n } catch {\n this.organizationUrl = null;\n }\n\n // If no organization, do nothing\n if (!this.organizationUrl) return;\n\n // If config or menu not ready, skip\n if (!this.config?.menu?.local) return;\n\n // Only load when custom menu is NOT enabled\n if (!this.config.menu.local.enableCustomLocalMenu) {\n try {\n this.localMenuLinks = await menuService.getMenuLinks(\n this.organizationUrl\n );\n } catch (e) {\n console.error(\"Failed to load local menu\", e);\n this.localMenuLinks = [];\n }\n }\n }\n\n validateAppAccessByUrl() {\n const currentUrl = window.location.href;\n const currentOrigin = window.location.origin;\n\n const globalLinks = this.config?.menu?.global?.links || [];\n\n // Check Global Links\n const matchGlobal = globalLinks.some(link => {\n try {\n const linkOrigin = new URL(link.url).origin;\n return currentOrigin === linkOrigin;\n } catch {\n return false;\n }\n });\n\n // Check Token organizationUrl\n const tokenParsed = this.keycloak?.tokenParsed;\n const allowedOrg = tokenParsed?.organizationUrl;\n\n const matchOrganization =\n allowedOrg && currentUrl.includes(allowedOrg);\n\n // global and org url validations\n const isAllowed = matchGlobal || matchOrganization;\n\n this.isRestricted = !isAllowed;\n }\n\n login() { \n this.keycloak.login() \n }\n\n logout() {\n localStorage.removeItem(\"keycloak\");\n // document.cookie = \"DASH_BTN=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;\";\n document.cookie = this.config.cookieName + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;\";\n this.keycloak.logout() \n } \n\n showModal() {\n const appModal = this.el.shadowRoot.querySelector('#appListModal');\n appModal.style.display = \"block\";\n }\n\n closeModal() {\n const appModal = this.el.shadowRoot.querySelector('#appListModal');\n appModal.style.display = \"none\";\n }\n\n render() {\n return <div>\n <div>\n {\n (() => {\n // GLOBAL LOADING SPINNER\n if (this.isLoading) {\n return (\n <a id=\"login-btn\" class=\"button button-link\">\n <div class=\"lds-ring\"><div></div><div></div><div></div><div></div></div>\n </a>\n );\n }\n\n if (this.isRestricted) {\n return (\n <div class=\"restricted-overlay\">\n <div class=\"restricted-card\">\n\n <div class=\"restricted-icon\">\n <i class=\"fa-solid fa-shield-halved\"></i>\n </div>\n\n <h2>Access Restricted</h2>\n <p class=\"restricted-message\">\n You do not have permission to access this application.\n Please contact your administrator if you believe this is an error.\n </p>\n\n {/* Global Applications */}\n {this.config?.menu?.global?.links?.length > 0 && (\n <div class=\"restricted-links\">\n <h4>Publicly Available Modules</h4>\n <div class=\"link-grid\">\n {this.config.menu.global.links.map(item => (\n <a href={item.url} target=\"_blank\" class=\"restricted-link\">\n <i class={item.icon}></i>\n <span>{item.name}</span>\n </a>\n ))}\n </div>\n </div>\n )}\n\n {/* Actions */}\n <div class=\"restricted-actions\">\n {this.config?.defaultLink?.url && (\n <a\n href={this.config.defaultLink.url}\n target=\"_blank\"\n class=\"btn-primary\">\n Go to Portal\n </a>\n )}\n <button class=\"btn-danger\" onClick={this.logout.bind(this)}>\n Logout\n </button>\n </div>\n\n </div>\n </div>\n );\n }\n\n if(this.isAuth && this.showPostLoginText) { \n return (\n <a style={{background: this.primaryColor != undefined? this.primaryColor : \"\"}} href={this.redirectUri} id=\"login-btn\" class=\"button button-link\">\n <span style={{color: this.accentColor != undefined? this.accentColor : \"\"}} class=\"button-text button-text-full-width\">Go to Dashboard</span>\n </a>\n )\n } else if (this.isAuth) {\n return (\n <div id=\"profile-btn\" class=\"dropdown\">\n <button style={{background: this.primaryColor != undefined? this.primaryColor : \"\"}} type=\"button\" class=\"button\">\n <span class=\"button-profile\">\n {JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.imageUrl ?\n <img class=\"profile-image\" src=\"https://s-damith.github.io/test-avatar/images/e24da9c5-0b1f-46fa-82cd-7c711c77b5c7.png\"/>\n :\n <div innerHTML={this.avatarSvg}/>\n }\n </span>\n <span style={{color: this.accentColor != undefined? this.accentColor : \"\"}} id=\"given-name\" class=\"button-text\">{this.givenUserName}</span>\n <div class=\"button-icon\">\n {(this.config.menuViewType == \"grid\") ? <i class=\"fa-solid fa-grip-vertical\"></i> : <i class=\"fa-solid fa-bars\"></i>} \n </div>\n </button>\n <div class=\"dropdown-content\">\n <div class=\"dropdown-user-profile\">\n <div class=\"username\">@{this.givenUserName}</div>\n <div class=\"first-last-name\">{JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.name}</div>\n </div>\n\n\n { (this.config.menuViewType == \"grid\") ? (\n <div>\n <div class=\"grid-view-menu\">\n {\n this.config.menu.global.links.map(item => {\n return (\n <a href={item.url} target='_blank' class=\"grid-view-link\">\n <i class={item.icon + \" fa-2x\"}></i> \n <div class=\"grid-view-link-text\">{item.name}</div>\n </a>\n )\n })\n }\n </div>\n \n {/* show divider */}\n {this.config.menu.global.links.length != 0 && <hr class=\"solid\"></hr>}\n\n <div class=\"grid-view-menu\" style={this.config.menu.global.links.length == 0 && {\"margin-bottom\": \"12px\"}}>\n <a onClick={this.showModal.bind(this)} class=\"grid-view-link\">\n <i class=\"fa-regular fa-window-restore fa-2x\"></i> \n <div class=\"grid-view-link-text\">Modules</div>\n </a>\n <a href={this.config.defaultLink.url} target='_blank' class=\"grid-view-link\">\n <i class=\"fa-solid fa-globe fa-2x\"></i>\n <div class=\"grid-view-link-text\">{this.config.defaultLink.name}</div>\n </a>\n <a onClick={this.logout.bind(this)} class=\"grid-view-link\">\n <i class=\"fa-solid fa-right-from-bracket fa-2x\"></i>\n <div class=\"grid-view-link-text\">Logout</div>\n </a>\n \n </div>\n\n </div>\n ) : (\n\n // List View\n <div class=\"dropdown-content-link\">\n {\n this.config.menu.global.links.map(item => {\n return (\n <a href={item.url} target='_blank' id=\"applications-btn\">\n <i class={item.icon + \" menu-bar-icons\"}></i> \n {item.name}\n </a>\n )\n })\n }\n <a onClick={this.showModal.bind(this)} id=\"applications-btn\"><i class=\"fa-regular fa-window-restore menu-bar-icons\"></i>Modules</a>\n <a href={this.config.defaultLink.url} target='_blank' id=\"applications-btn\"><i class=\"fa-solid fa-globe menu-bar-icons\"></i>{this.config.defaultLink.name}</a>\n <a onClick={this.logout.bind(this)} id=\"logout-btn\"><i class=\"fa-solid fa-right-from-bracket menu-bar-icons\"></i>Logout</a>\n </div>\n\n )}\n </div>\n </div>\n )\n } else {\n return (\n <button style={{background: this.primaryColor != undefined? this.primaryColor : \"\"}} onClick={this.login.bind(this)} id=\"login-btn\" type=\"button\" class=\"button\">\n <span style={{color: this.accentColor != undefined? this.accentColor : \"\"}} class=\"button-text\">Login</span>\n </button>\n )\n }\n })() \n } \n </div>\n \n <div id=\"appListModal\" class=\"modal\">\n \n <div class=\"modal-content\">\n <span onClick={this.closeModal.bind(this)} class=\"close\">&times;</span>\n\n <div class=\"box\">\n {<input type=\"radio\" class=\"tab-toggle\" name=\"tab-toggle\" id=\"tab1\" checked/>}\n {/* {(this.menuLinkList.length != 0) && <input type=\"radio\" class=\"tab-toggle\" name=\"tab-toggle\" id=\"tab2\" checked={this.disableApplicationTab}/>} */}\n\n <ul class=\"tab-list\">\n {<li class=\"tab-item\">\n <label class=\"tab-trigger\" htmlFor=\"tab1\"><i class=\"fa-solid fa-table-list menu-bar-icons\"></i> {this.config.menu.local.name}</label>\n </li>}\n {/* {(this.menuLinkList.length != 0) && <li class=\"tab-item\">\n <label class=\"tab-trigger\" htmlFor=\"tab2\"><i class=\"fa-solid fa-link menu-bar-icons\"></i> {this.otherLinkDisplayName}</label>\n </li>} */}\n </ul>\n \n <div class=\"tab-container\">\n <div class=\"tab-content\">\n <div class=\"modal-body\">\n\n {!this.config?.menu?.local?.enableCustomLocalMenu ? (\n // <div>{this.localMenuLinks}</div>\n this.localMenuLinks?.map((app, index) => {\n const isDisabled = !app.url;\n\n return ( \n <a\n key={index}\n class=\"external-app-link\"\n href={isDisabled ? undefined : app.url}\n target={isDisabled ? undefined : \"_blank\"}\n rel={isDisabled ? undefined : \"noopener noreferrer\"}\n onClick={isDisabled ? (e) => e.preventDefault() : undefined}\n >\n <div class=\"modal-app\">\n <div>{app.name}</div>\n </div>\n </a>\n )\n })\n ) : (\n this.config.menu.local.links?.map((app, index) => (\n <a\n key={index}\n class=\"external-app-link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={app.url}\n >\n <div class=\"modal-app\">\n <div>{app.name}</div>\n </div>\n </a>\n ))\n )}\n\n {/* Error messages */}\n {!this.organizationUrl ? (\n <div>\n <h3 class=\"gray-text\">\n Organization Domain URL not set\n </h3>\n <p class=\"gray-text\">Please set your Organization Domain URL on the Portal profile page.</p>\n </div>\n ) : (\n (\n (!this.config?.menu?.local?.enableCustomLocalMenu &&\n (this.localMenuLinks?.length ?? 0) === 0) ||\n (this.config?.menu?.local?.enableCustomLocalMenu &&\n (this.config?.menu?.local?.links?.length ?? 0) === 0)\n ) && (\n <div>\n <h3 class=\"gray-text\">\n No installed {this.config?.menu?.local?.name || \"menu\"} found.\n </h3>\n <p class=\"gray-text\">Please contact administration.</p>\n </div>\n )\n )}\n\n </div>\n </div> \n {/* <div class=\"tab-content\">\n <div class=\"modal-body\">\n {\n this.menuLinkList.map(link => {\n return (\n <a class=\"external-app-link\" target='_blank' href={link.url}>\n <div class=\"modal-app\">\n <div>{link.name}</div>\n </div>\n </a>\n )\n })\n }\n </div>\n </div> */}\n </div>\n </div>\n\n </div>\n \n </div>\n\n <div id=\"appPermissionErrorModal\" class=\"modal\">\n <div class=\"modal-content\">\n <img src=\"data:image/png;base64,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\"/>\n <h2 class=\"green-text margin-b\">You don't have permission to access this application.</h2>\n <h3 class=\"green-text\">Please contact the administration.</h3>\n \n {(this.config.defaultLink.url && this.showUnauthorizedModal) ? \n <div>\n <h4 class=\"gray-text\">You will be automatically redirected to the portal.</h4>\n <div id=\"countdown\">\n <div id=\"countdown-number\"></div>\n <svg>\n <circle r=\"18\" cx=\"20\" cy=\"20\"></circle>\n </svg>\n </div>\n </div>\n : <div></div>\n }\n </div>\n </div>\n\n </div>;\n }\n}\n"],"version":3}