From e4c0e952e2ef64457a61456bf618cfc5824b9432 Mon Sep 17 00:00:00 2001 From: Srijon Saha Date: Tue, 30 Apr 2024 05:45:47 -0700 Subject: [PATCH] Update endpoint and add API to get password reset challenge (#1431) Co-authored-by: Steve Hobbs --- dist/auth0.js | 282 +++++----- dist/auth0.min.esm.js | 4 +- dist/auth0.min.esm.js.map | 2 +- dist/auth0.min.js | 4 +- dist/auth0.min.js.map | 2 +- dist/cordova-auth0-plugin.js | 120 +++-- dist/cordova-auth0-plugin.min.js | 4 +- dist/cordova-auth0-plugin.min.js.map | 2 +- src/authentication/db-connection.js | 4 +- src/web-auth/captcha.js | 101 +--- src/web-auth/index.js | 49 +- test/authentication/db-connection.test.js | 12 +- test/web-auth/captcha.test.js | 612 +++++++++++++++++++++- test/web-auth/web-auth.test.js | 118 +++-- 14 files changed, 975 insertions(+), 341 deletions(-) diff --git a/dist/auth0.js b/dist/auth0.js index 8c8a6135..339bede1 100644 --- a/dist/auth0.js +++ b/dist/auth0.js @@ -1,7 +1,7 @@ /** * auth0-js v9.25.0 * Author: Auth0 - * Date: 2024-04-25 + * Date: 2024-04-29 * License: MIT */ @@ -154,46 +154,88 @@ return shams(); }; + var test = { + foo: {} + }; + + var $Object = Object; + + var hasProto = function hasProto() { + return { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object); + }; + /* eslint no-invalid-this: 1 */ var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; - var slice = Array.prototype.slice; var toStr = Object.prototype.toString; + var max = Math.max; var funcType = '[object Function]'; + var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; + }; + + var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; + }; + + var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; + }; + var implementation = function bind(that) { var target = this; - if (typeof target !== 'function' || toStr.call(target) !== funcType) { + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { throw new TypeError(ERROR_MESSAGE + target); } - var args = slice.call(arguments, 1); + var args = slicy(arguments, 1); var bound; var binder = function () { if (this instanceof bound) { var result = target.apply( this, - args.concat(slice.call(arguments)) + concatty(args, arguments) ); if (Object(result) === result) { return result; } return this; - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); } + return target.apply( + that, + concatty(args, arguments) + ); + }; - var boundLength = Math.max(0, target.length - args.length); + var boundLength = max(0, target.length - args.length); var boundArgs = []; for (var i = 0; i < boundLength; i++) { - boundArgs.push('$' + i); + boundArgs[i] = '$' + i; } - bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); if (target.prototype) { var Empty = function Empty() {}; @@ -252,18 +294,23 @@ : throwTypeError; var hasSymbols$1 = hasSymbols(); + var hasProto$1 = hasProto(); - var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto + var getProto = Object.getPrototypeOf || ( + hasProto$1 + ? function (x) { return x.__proto__; } // eslint-disable-line no-proto + : null + ); var needsEval = {}; - var TypedArray = typeof Uint8Array === 'undefined' ? undefined$1 : getProto(Uint8Array); + var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined$1 : getProto(Uint8Array); var INTRINSICS = { '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError, '%Array%': Array, '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer, - '%ArrayIteratorPrototype%': hasSymbols$1 ? getProto([][Symbol.iterator]()) : undefined$1, + '%ArrayIteratorPrototype%': hasSymbols$1 && getProto ? getProto([][Symbol.iterator]()) : undefined$1, '%AsyncFromSyncIteratorPrototype%': undefined$1, '%AsyncFunction%': needsEval, '%AsyncGenerator%': needsEval, @@ -293,10 +340,10 @@ '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array, '%isFinite%': isFinite, '%isNaN%': isNaN, - '%IteratorPrototype%': hasSymbols$1 ? getProto(getProto([][Symbol.iterator]())) : undefined$1, + '%IteratorPrototype%': hasSymbols$1 && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined$1, '%JSON%': typeof JSON === 'object' ? JSON : undefined$1, '%Map%': typeof Map === 'undefined' ? undefined$1 : Map, - '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$1 ? undefined$1 : getProto(new Map()[Symbol.iterator]()), + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$1 || !getProto ? undefined$1 : getProto(new Map()[Symbol.iterator]()), '%Math%': Math, '%Number%': Number, '%Object%': Object, @@ -309,10 +356,10 @@ '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect, '%RegExp%': RegExp, '%Set%': typeof Set === 'undefined' ? undefined$1 : Set, - '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$1 ? undefined$1 : getProto(new Set()[Symbol.iterator]()), + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$1 || !getProto ? undefined$1 : getProto(new Set()[Symbol.iterator]()), '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer, '%String%': String, - '%StringIteratorPrototype%': hasSymbols$1 ? getProto(''[Symbol.iterator]()) : undefined$1, + '%StringIteratorPrototype%': hasSymbols$1 && getProto ? getProto(''[Symbol.iterator]()) : undefined$1, '%Symbol%': hasSymbols$1 ? Symbol : undefined$1, '%SyntaxError%': $SyntaxError, '%ThrowTypeError%': ThrowTypeError, @@ -328,12 +375,14 @@ '%WeakSet%': typeof WeakSet === 'undefined' ? undefined$1 : WeakSet }; - try { - null.error; // eslint-disable-line no-unused-expressions - } catch (e) { - // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 - var errorProto = getProto(getProto(e)); - INTRINSICS['%Error.prototype%'] = errorProto; + if (getProto) { + try { + null.error; // eslint-disable-line no-unused-expressions + } catch (e) { + // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 + var errorProto = getProto(getProto(e)); + INTRINSICS['%Error.prototype%'] = errorProto; + } } var doEval = function doEval(name) { @@ -351,7 +400,7 @@ } } else if (name === '%AsyncIteratorPrototype%') { var gen = doEval('%AsyncGenerator%'); - if (gen) { + if (gen && getProto) { value = getProto(gen.prototype); } } @@ -1544,7 +1593,6 @@ }; var isArray$2 = Array.isArray; - var split = String.prototype.split; var push = Array.prototype.push; var pushToArray = function (arr, valueOrArray) { push.apply(arr, isArray$2(valueOrArray) ? valueOrArray : [valueOrArray]); @@ -1646,14 +1694,6 @@ if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { if (encoder) { var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); - if (generateArrayPrefix === 'comma' && encodeValuesOnly) { - var valuesArray = split.call(String(obj), ','); - var valuesJoined = ''; - for (var i = 0; i < valuesArray.length; ++i) { - valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format)); - } - return [formatter(keyValue) + (commaRoundTrip && isArray$2(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined]; - } return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; } return [formatter(prefix) + '=' + formatter(String(obj))]; @@ -1668,6 +1708,9 @@ var objKeys; if (generateArrayPrefix === 'comma' && isArray$2(obj)) { // we need to join elements in + if (encodeValuesOnly && encoder) { + obj = utils.maybeMap(obj, encoder); + } objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; } else if (isArray$2(filter)) { objKeys = filter; @@ -1700,7 +1743,7 @@ commaRoundTrip, strictNullHandling, skipNulls, - encoder, + generateArrayPrefix === 'comma' && encodeValuesOnly && isArray$2(obj) ? null : encoder, filter, sort, allowDots, @@ -1897,7 +1940,8 @@ var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') var parseValues = function parseQueryStringValues(str, options) { - var obj = {}; + var obj = { __proto__: null }; + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; var parts = cleanStr.split(options.delimiter, limit); @@ -5915,7 +5959,7 @@ oauthAuthorizeParams: oauthAuthorizeParams }; - var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r=e(function(e,r){e.exports=function(){function e(t){return "function"==typeof t}var r=Array.isArray?Array.isArray:function(t){return "[object Array]"===Object.prototype.toString.call(t)},i=0,n=void 0,o=void 0,s=function(t,e){l[i]=t,l[i+1]=e,2===(i+=2)&&(o?o(d):w());},h="undefined"!=typeof window?window:void 0,u=h||{},a=u.MutationObserver||u.WebKitMutationObserver,f="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),c="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function p(){var t=setTimeout;return function(){return t(d,1)}}var l=new Array(1e3);function d(){for(var t=0;t>>2]|=(r[o>>>2]>>>24-o%4*8&255)<<24-(i+o)%4*8;else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4);},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16));}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new f.init(r,e/2)}},l=c.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255));return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new f.init(r,e)}},d=c.Utf8={stringify:function(t){try{return decodeURIComponent(escape(l.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return l.parse(unescape(encodeURIComponent(t)))}},m=u.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new f.init,this._nDataBytes=0;},_append:function(t){"string"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes;},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,h=o/(4*s),u=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*s,a=e.min(4*u,o);if(u){for(var c=0;c>>7)^(d<<14|d>>>18)^d>>>3)+a[l-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+a[l-16];}var v=i&n^i&o^n&o,y=p+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&f^~h&c)+u[l]+a[l];p=c,c=f,f=h,h=s+y|0,s=o,o=n,n=i,i=y+(((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+v)|0;}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+h|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+p|0;},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(f),e.HmacSHA256=o._createHmacHelper(f);}(Math),r.SHA256);}),s=e(function(t,e){var r,i;t.exports=(i=(r=n).lib.WordArray,r.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,h=0;h<4&&o+.75*h>>6*(3-h)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join("")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=(h|u)<<24-o%4*8,o++;}return i.create(n,o)}(t,e,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},r.enc.Base64);}),h=e(function(t,e){t.exports=n.enc.Hex;}),u=e(function(e,r){(function(){var t;function r(t,e,r){null!=t&&("number"==typeof t?this.fromNumber(t,e,r):this.fromString(t,null==e&&"string"!=typeof t?256:e));}function i(){return new r(null)}var n="undefined"!=typeof navigator;n&&"Microsoft Internet Explorer"==navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(var s=32767&e,h=e>>15;--o>=0;){var u=32767&this[t],a=this[t++]>>15,f=h*u+a*s;n=((u=s*u+((32767&f)<<15)+r[i]+(1073741823&n))>>>30)+(f>>>15)+h*a+(n>>>30),r[i++]=1073741823&u;}return n},t=30):n&&"Netscape"!=navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(;--o>=0;){var s=e*this[t++]+r[i]+n;n=Math.floor(s/67108864),r[i++]=67108863&s;}return n},t=26):(r.prototype.am=function(t,e,r,i,n,o){for(var s=16383&e,h=e>>14;--o>=0;){var u=16383&this[t],a=this[t++]>>14,f=h*u+a*s;n=((u=s*u+((16383&f)<<14)+r[i]+n)>>28)+(f>>14)+h*a,r[i++]=268435455&u;}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function p(t){this.m=t;}function l(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function w(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function T(){}function b(t){return t}function _(t){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t;}p.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},p.prototype.revert=function(t){return t},p.prototype.reduce=function(t){t.divRemTo(this.m,null,t);},p.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r);},p.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e);},l.prototype.convert=function(t){var e=i();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(r.ZERO)>0&&this.m.subTo(e,e),e},l.prototype.revert=function(t){var e=i();return t.copyTo(e),this.reduce(e),e},l.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,i,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++;}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t);},l.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r);},l.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e);},r.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s;},r.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0;},r.prototype.fromString=function(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else {if(4!=e)return void this.fromRadix(t,e);i=2;}this.t=0,this.s=0;for(var n=t.length,o=!1,s=0;--n>=0;){var h=8==i?255&t[n]:a(t,n);h<0?"-"==t.charAt(n)&&(o=!0):(o=!1,0==s?this[this.t++]=h:s+i>this.DB?(this[this.t-1]|=(h&(1<>this.DB-s):this[this.t-1]|=h<=this.DB&&(s-=this.DB));}8==i&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t;},r.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s;},r.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>n|h,h=(this[r]&o)<=0;--r)e[r]=0;e[s]=h,e.t=this.t+s+1,e.s=this.s,e.clamp();},r.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else {var i=t%this.DB,n=this.DB-i,o=(1<>i;for(var s=r+1;s>i;i>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;i+=this.s;}else {for(i+=this.s;r>=this.DB;i-=t.s;}e.s=i<0?-1:0,i<-1?e[r++]=this.DV+i:i>0&&(e[r++]=i),e.t=r,e.clamp();},r.prototype.multiplyTo=function(t,e){var i=this.abs(),n=t.abs(),o=i.t;for(e.t=o+n.t;--o>=0;)e[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1);}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp();},r.prototype.divRemTo=function(t,e,n){var o=t.abs();if(!(o.t<=0)){var s=this.abs();if(s.t0?(o.lShiftTo(f,h),s.lShiftTo(f,n)):(o.copyTo(h),s.copyTo(n));var p=h.t,l=h[p-1];if(0!=l){var d=l*(1<1?h[p-2]>>this.F2:0),m=this.FV/d,v=(1<=0&&(n[n.t++]=1,n.subTo(T,n)),r.ONE.dlShiftTo(p,T),T.subTo(h,h);h.t=0;){var b=n[--g]==l?this.DM:Math.floor(n[g]*m+(n[g-1]+y)*v);if((n[g]+=h.am(0,b,n,w,0,p))0&&n.rShiftTo(f,n),u<0&&r.ZERO.subTo(n,n);}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return (e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(t,e){if(t>4294967295||t<1)return r.ONE;var n=i(),o=i(),s=e.convert(this),h=c(t)-1;for(s.copyTo(n);--h>=0;)if(e.sqrTo(n,o),(t&1<0)e.mulTo(o,s,n);else {var u=n;n=o,o=u;}return e.revert(n)},r.prototype.toString=function(t){if(this.s<0)return "-"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else {if(4!=t)return this.toRadix(t);e=2;}var r,i=(1<0)for(h>h)>0&&(n=!0,o=u(r));s>=0;)h>(h+=this.DB-e)):(r=this[s]>>(h-=e)&i,h<=0&&(h+=this.DB,--s)),r>0&&(n=!0),n&&(o+=u(r));return n?o:"0"},r.prototype.negate=function(){var t=i();return r.ZERO.subTo(this,t),t},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+c(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(t){var e=i();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(r.ZERO)>0&&t.subTo(e,e),e},r.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new p(e):new l(e),this.exp(t,r)},r.ZERO=f(0),r.ONE=f(1),T.prototype.convert=b,T.prototype.revert=b,T.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r);},T.prototype.sqrTo=function(t,e){t.squareTo(e);},_.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=i();return t.copyTo(e),this.reduce(e),e},_.prototype.revert=function(t){return t},_.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t);},_.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r);},_.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e);};var S,A,D,B=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],x=(1<<26)/B[B.length-1];function E(){var t;t=(new Date).getTime(),A[D++]^=255&t,A[D++]^=t>>8&255,A[D++]^=t>>16&255,A[D++]^=t>>24&255,D>=j&&(D-=j);}if(r.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},r.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return "0";var e=this.chunkSize(t),r=Math.pow(t,e),n=f(r),o=i(),s=i(),h="";for(this.divRemTo(n,o,s);o.signum()>0;)h=(r+s.intValue()).toString(t).substr(1)+h,o.divRemTo(n,o,s);return s.intValue().toString(t)+h},r.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var i=this.chunkSize(e),n=Math.pow(e,i),o=!1,s=0,h=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(h,0),s=0,h=0));}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(h,0)),o&&r.ZERO.subTo(this,this);},r.prototype.fromNumber=function(t,e,i){if("number"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(r.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(r.ONE.shiftLeft(t-1),this);else {var n=new Array,o=7&t;n.length=1+(t>>3),e.nextBytes(n),o>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;i+=this.s;}else {for(i+=this.s;r>=this.DB;i+=t.s;}e.s=i<0?-1:0,i>0?e[r++]=i:i<-1&&(e[r++]=this.DV+i),e.t=r,e.clamp();},r.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp();},r.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e];}},r.prototype.multiplyLowerTo=function(t,e,r){var i,n=Math.min(this.t+t.t,e);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(e-this.t,0);i0)if(0==e)r=this[0]%t;else for(var i=this.t-1;i>=0;--i)r=(e*r+this[i])%t;return r},r.prototype.millerRabin=function(t){var e=this.subtract(r.ONE),n=e.getLowestSetBit();if(n<=0)return !1;var o=e.shiftRight(n);(t=t+1>>1)>B.length&&(t=B.length);for(var s=i(),h=0;h>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,i=this.DB-t*this.DB%8,n=0;if(t-- >0)for(i>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<=0;)i<8?(r=(this[t]&(1<>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,i<=0&&(i+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(e[n++]=r);return e},r.prototype.equals=function(t){return 0==this.compareTo(t)},r.prototype.min=function(t){return this.compareTo(t)<0?this:t},r.prototype.max=function(t){return this.compareTo(t)>0?this:t},r.prototype.and=function(t){var e=i();return this.bitwiseTo(t,d,e),e},r.prototype.or=function(t){var e=i();return this.bitwiseTo(t,m,e),e},r.prototype.xor=function(t){var e=i();return this.bitwiseTo(t,v,e),e},r.prototype.andNot=function(t){var e=i();return this.bitwiseTo(t,y,e),e},r.prototype.not=function(){for(var t=i(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var m=i();for(n.sqrTo(h[1],m);u<=d;)h[u]=i(),n.mulTo(m,h[u-2],h[u]),u+=2;}var v,y,g=t.t-1,w=!0,T=i();for(o=c(t[g])-1;g>=0;){for(o>=a?v=t[g]>>o-a&d:(v=(t[g]&(1<0&&(v|=t[g-1]>>this.DB+o-a)),u=r;0==(1&v);)v>>=1,--u;if((o-=u)<0&&(o+=this.DB,--g),w)h[v].copyTo(s),w=!1;else {for(;u>1;)n.sqrTo(s,T),n.sqrTo(T,s),u-=2;u>0?n.sqrTo(s,T):(y=s,s=T,T=y),n.mulTo(T,h[v],s);}for(;g>=0&&0==(t[g]&1<=0?(i.subTo(n,i),e&&o.subTo(h,o),s.subTo(u,s)):(n.subTo(i,n),e&&h.subTo(o,h),u.subTo(s,u));}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(t)>=0?u.subtract(t):u.signum()<0?(u.addTo(t,u),u.signum()<0?u.add(t):u):u},r.prototype.pow=function(t){return this.exp(t,new T)},r.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var i=e;e=r,r=i;}var n=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(n0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},r.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=B[B.length-1]){for(e=0;e>>8,A[D++]=255&k;D=0,E();}function C(){if(null==S){for(E(),(S=new O).init(A),D=0;D0&&e.length>0))throw new Error("Invalid key data");this.n=new u.BigInteger(t,16),this.e=parseInt(e,16);}c.prototype.verify=function(t,e){e=e.replace(/[^0-9a-f]|[\s\n]]/gi,"");var r=new u.BigInteger(e,16);if(r.bitLength()>this.n.bitLength())throw new Error("Signature does not match with the key modulus.");var i=function(t){for(var e in a){var r=a[e],i=r.length;if(t.substring(0,i)===r)return {alg:e,hash:t.substring(i)}}return []}(r.modPowInt(this.e,this.n).toString(16).replace(/^1f+00/,""));if(0===i.length)return !1;if(!f.hasOwnProperty(i.alg))throw new Error("Hashing algorithm is not supported.");var n=f[i.alg](t).toString();return i.hash===n};for(var p=[],l=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0,y=m.length;v0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return -1===r&&(r=e),[r,r===e?0:4-r%4]}(t),n=i[0],o=i[1],s=new d(function(t,e,r){return 3*(e+r)/4-r}(0,n,o)),h=0,u=o>0?n-4:n;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;return 2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,s[h++]=255&e),1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e),s};function w(t){var e=t.length%4;return 0===e?t:t+new Array(4-e+1).join("=")}function T(t){return t=w(t).replace(/\-/g,"+").replace(/_/g,"/"),decodeURIComponent(function(t){for(var e="",r=0;r1){var r=t.shift();t[0]=r+t[0];}t[0]=t[0].match(/^file:\/\/\//)?t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(n=n.replace(/^[\/]+/,"")),n=n.replace(/[\/]+$/,i0?"?":"")+s.join("&")}return function(){return t("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():r.urljoin=i();});function S(t,e){return e=e||{},new Promise(function(r,i){var n=new XMLHttpRequest,o=[],s=[],h={},u=function(){return {ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:u,headers:{keys:function(){return o},entries:function(){return s},get:function(t){return h[t.toLowerCase()]},has:function(t){return t.toLowerCase()in h}}}};for(var a in n.open(e.method||"get",t,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(t,e,r){o.push(e=e.toLowerCase()),s.push([e,r]),h[e]=h[e]?h[e]+","+r:r;}),r(u());},n.onerror=i,n.withCredentials="include"==e.credentials,e.headers)n.setRequestHeader(a,e.headers[a]);n.send(e.body||null);})}function A(t){if(t.ok)return t.json();var e=new Error(t.statusText);return e.response=t,Promise.reject(e)}function D(t){this.name="ConfigurationError",this.message=t||"";}function B(t){this.name="TokenValidationError",this.message=t||"";}D.prototype=Error.prototype,B.prototype=Error.prototype;var x=function(){function t(){}var e=t.prototype;return e.get=function(){return null},e.has=function(){return null},e.set=function(){return null},t}();r.polyfill();var E="RS256",k=function(t){return "number"==typeof t},I=function(){return new Date};function M(t){var e=t||{};if(this.jwksCache=e.jwksCache||new x,this.expectedAlg=e.expectedAlg||"RS256",this.issuer=e.issuer,this.audience=e.audience,this.leeway=0===e.leeway?0:e.leeway||60,this.jwksURI=e.jwksURI,this.maxAge=e.maxAge,this.__clock="function"==typeof e.__clock?e.__clock:I,this.leeway<0||this.leeway>300)throw new D("The leeway should be positive and lower than five minutes.");if(E!==this.expectedAlg)throw new D('Signature algorithm of "'+this.expectedAlg+'" is not supported. Expected the ID token to be signed with "'+E+'".')}M.prototype.verify=function(t,e,r){if(!r&&e&&"function"==typeof e&&(r=e,e=void 0),!t)return r(new B("ID token is required but missing"),null);var i=this.decode(t);if(i instanceof Error)return r(new B("ID token could not be decoded"),null);var n=i.encoded.header+"."+i.encoded.payload,o=b(i.encoded.signature),s=i.header.alg,h=i.header.kid,u=i.payload.aud,a=i.payload.sub,f=i.payload.iss,c=i.payload.exp,p=i.payload.nbf,l=i.payload.iat,d=i.payload.azp,m=i.payload.auth_time,v=i.payload.nonce,y=this.__clock(),g=this;if(g.expectedAlg!==s)return r(new B('Signature algorithm of "'+s+'" is not supported. Expected the ID token to be signed with "'+E+'".'),null);this.getRsaVerifier(f,h,function(t,s){if(t)return r(t,null);if(!s.verify(n,o))return r(new B("Invalid ID token signature."),null);if(!f||"string"!=typeof f)return r(new B("Issuer (iss) claim must be a string present in the ID token"),null);if(g.issuer!==f)return r(new B('Issuer (iss) claim mismatch in the ID token, expected "'+g.issuer+'", found "'+f+'"'),null);if(!a||"string"!=typeof a)return r(new B("Subject (sub) claim must be a string present in the ID token"),null);if(!u||"string"!=typeof u&&!Array.isArray(u))return r(new B("Audience (aud) claim must be a string or array of strings present in the ID token"),null);if(Array.isArray(u)&&!u.includes(g.audience))return r(new B('Audience (aud) claim mismatch in the ID token; expected "'+g.audience+'" but was not one of "'+u.join(", ")+'"'),null);if("string"==typeof u&&g.audience!==u)return r(new B('Audience (aud) claim mismatch in the ID token; expected "'+g.audience+'" but found "'+u+'"'),null);if(e){if(!v||"string"!=typeof v)return r(new B("Nonce (nonce) claim must be a string present in the ID token"),null);if(v!==e)return r(new B('Nonce (nonce) claim value mismatch in the ID token; expected "'+e+'", found "'+v+'"'),null)}if(Array.isArray(u)&&u.length>1){if(!d||"string"!=typeof d)return r(new B("Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values"),null);if(d!==g.audience)return r(new B('Authorized Party (azp) claim mismatch in the ID token; expected "'+g.audience+'", found "'+d+'"'),null)}if(!c||!k(c))return r(new B("Expiration Time (exp) claim must be a number present in the ID token"),null);if(!l||!k(l))return r(new B("Issued At (iat) claim must be a number present in the ID token"),null);var h=c+g.leeway,w=new Date(0);if(w.setUTCSeconds(h),y>w)return r(new B('Expiration Time (exp) claim error in the ID token; current time "'+y+'" is after expiration time "'+w+'"'),null);if(p&&k(p)){var T=p-g.leeway,b=new Date(0);if(b.setUTCSeconds(T),yS)return r(new B('Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time "'+y+'" is after last auth time at "'+S+'"'),null)}return r(null,i.payload)});},M.prototype.getRsaVerifier=function(t,e,r){var i=this,n=t+e;Promise.resolve(this.jwksCache.has(n)).then(function(r){return r?i.jwksCache.get(n):(o={jwksURI:i.jwksURI,iss:t,kid:e},("undefined"==typeof fetch?S:fetch)(o.jwksURI||_(o.iss,".well-known","jwks.json")).then(A).then(function(t){var e,r,i,n=null;for(e=0;e>>2]|=(r[o>>>2]>>>24-o%4*8&255)<<24-(i+o)%4*8;else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4);},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16));}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new f.init(r,e/2)}},l=c.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255));return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new f.init(r,e)}},d=c.Utf8={stringify:function(t){try{return decodeURIComponent(escape(l.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return l.parse(unescape(encodeURIComponent(t)))}},m=u.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new f.init,this._nDataBytes=0;},_append:function(t){"string"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes;},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,h=o/(4*s),u=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*s,a=e.min(4*u,o);if(u){for(var c=0;c>>7)^(d<<14|d>>>18)^d>>>3)+a[l-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+a[l-16];}var v=i&n^i&o^n&o,y=p+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&f^~h&c)+u[l]+a[l];p=c,c=f,f=h,h=s+y|0,s=o,o=n,n=i,i=y+(((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+v)|0;}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+h|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+p|0;},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(f),e.HmacSHA256=o._createHmacHelper(f);}(Math),r.SHA256);}),s=e(function(t,e){var r,i;t.exports=(i=(r=n).lib.WordArray,r.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,h=0;h<4&&o+.75*h>>6*(3-h)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join("")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=(h|u)<<24-o%4*8,o++;}return i.create(n,o)}(t,e,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},r.enc.Base64);}),h=e(function(t,e){t.exports=n.enc.Hex;}),u=e(function(e,r){(function(){var t;function r(t,e,r){null!=t&&("number"==typeof t?this.fromNumber(t,e,r):this.fromString(t,null==e&&"string"!=typeof t?256:e));}function i(){return new r(null)}var n="undefined"!=typeof navigator;n&&"Microsoft Internet Explorer"==navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(var s=32767&e,h=e>>15;--o>=0;){var u=32767&this[t],a=this[t++]>>15,f=h*u+a*s;n=((u=s*u+((32767&f)<<15)+r[i]+(1073741823&n))>>>30)+(f>>>15)+h*a+(n>>>30),r[i++]=1073741823&u;}return n},t=30):n&&"Netscape"!=navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(;--o>=0;){var s=e*this[t++]+r[i]+n;n=Math.floor(s/67108864),r[i++]=67108863&s;}return n},t=26):(r.prototype.am=function(t,e,r,i,n,o){for(var s=16383&e,h=e>>14;--o>=0;){var u=16383&this[t],a=this[t++]>>14,f=h*u+a*s;n=((u=s*u+((16383&f)<<14)+r[i]+n)>>28)+(f>>14)+h*a,r[i++]=268435455&u;}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function p(t){this.m=t;}function l(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function w(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function T(){}function b(t){return t}function _(t){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t;}p.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},p.prototype.revert=function(t){return t},p.prototype.reduce=function(t){t.divRemTo(this.m,null,t);},p.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r);},p.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e);},l.prototype.convert=function(t){var e=i();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(r.ZERO)>0&&this.m.subTo(e,e),e},l.prototype.revert=function(t){var e=i();return t.copyTo(e),this.reduce(e),e},l.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,i,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++;}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t);},l.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r);},l.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e);},r.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s;},r.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0;},r.prototype.fromString=function(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else {if(4!=e)return void this.fromRadix(t,e);i=2;}this.t=0,this.s=0;for(var n=t.length,o=!1,s=0;--n>=0;){var h=8==i?255&t[n]:a(t,n);h<0?"-"==t.charAt(n)&&(o=!0):(o=!1,0==s?this[this.t++]=h:s+i>this.DB?(this[this.t-1]|=(h&(1<>this.DB-s):this[this.t-1]|=h<=this.DB&&(s-=this.DB));}8==i&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t;},r.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s;},r.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>n|h,h=(this[r]&o)<=0;--r)e[r]=0;e[s]=h,e.t=this.t+s+1,e.s=this.s,e.clamp();},r.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else {var i=t%this.DB,n=this.DB-i,o=(1<>i;for(var s=r+1;s>i;i>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;i+=this.s;}else {for(i+=this.s;r>=this.DB;i-=t.s;}e.s=i<0?-1:0,i<-1?e[r++]=this.DV+i:i>0&&(e[r++]=i),e.t=r,e.clamp();},r.prototype.multiplyTo=function(t,e){var i=this.abs(),n=t.abs(),o=i.t;for(e.t=o+n.t;--o>=0;)e[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1);}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp();},r.prototype.divRemTo=function(t,e,n){var o=t.abs();if(!(o.t<=0)){var s=this.abs();if(s.t0?(o.lShiftTo(f,h),s.lShiftTo(f,n)):(o.copyTo(h),s.copyTo(n));var p=h.t,l=h[p-1];if(0!=l){var d=l*(1<1?h[p-2]>>this.F2:0),m=this.FV/d,v=(1<=0&&(n[n.t++]=1,n.subTo(T,n)),r.ONE.dlShiftTo(p,T),T.subTo(h,h);h.t=0;){var b=n[--g]==l?this.DM:Math.floor(n[g]*m+(n[g-1]+y)*v);if((n[g]+=h.am(0,b,n,w,0,p))0&&n.rShiftTo(f,n),u<0&&r.ZERO.subTo(n,n);}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return (e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(t,e){if(t>4294967295||t<1)return r.ONE;var n=i(),o=i(),s=e.convert(this),h=c(t)-1;for(s.copyTo(n);--h>=0;)if(e.sqrTo(n,o),(t&1<0)e.mulTo(o,s,n);else {var u=n;n=o,o=u;}return e.revert(n)},r.prototype.toString=function(t){if(this.s<0)return "-"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else {if(4!=t)return this.toRadix(t);e=2;}var r,i=(1<0)for(h>h)>0&&(n=!0,o=u(r));s>=0;)h>(h+=this.DB-e)):(r=this[s]>>(h-=e)&i,h<=0&&(h+=this.DB,--s)),r>0&&(n=!0),n&&(o+=u(r));return n?o:"0"},r.prototype.negate=function(){var t=i();return r.ZERO.subTo(this,t),t},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+c(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(t){var e=i();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(r.ZERO)>0&&t.subTo(e,e),e},r.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new p(e):new l(e),this.exp(t,r)},r.ZERO=f(0),r.ONE=f(1),T.prototype.convert=b,T.prototype.revert=b,T.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r);},T.prototype.sqrTo=function(t,e){t.squareTo(e);},_.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=i();return t.copyTo(e),this.reduce(e),e},_.prototype.revert=function(t){return t},_.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t);},_.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r);},_.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e);};var S,A,D,B=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],x=(1<<26)/B[B.length-1];function E(){var t;t=(new Date).getTime(),A[D++]^=255&t,A[D++]^=t>>8&255,A[D++]^=t>>16&255,A[D++]^=t>>24&255,D>=j&&(D-=j);}if(r.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},r.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return "0";var e=this.chunkSize(t),r=Math.pow(t,e),n=f(r),o=i(),s=i(),h="";for(this.divRemTo(n,o,s);o.signum()>0;)h=(r+s.intValue()).toString(t).substr(1)+h,o.divRemTo(n,o,s);return s.intValue().toString(t)+h},r.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var i=this.chunkSize(e),n=Math.pow(e,i),o=!1,s=0,h=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(h,0),s=0,h=0));}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(h,0)),o&&r.ZERO.subTo(this,this);},r.prototype.fromNumber=function(t,e,i){if("number"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(r.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(r.ONE.shiftLeft(t-1),this);else {var n=new Array,o=7&t;n.length=1+(t>>3),e.nextBytes(n),o>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;i+=this.s;}else {for(i+=this.s;r>=this.DB;i+=t.s;}e.s=i<0?-1:0,i>0?e[r++]=i:i<-1&&(e[r++]=this.DV+i),e.t=r,e.clamp();},r.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp();},r.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e];}},r.prototype.multiplyLowerTo=function(t,e,r){var i,n=Math.min(this.t+t.t,e);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(e-this.t,0);i0)if(0==e)r=this[0]%t;else for(var i=this.t-1;i>=0;--i)r=(e*r+this[i])%t;return r},r.prototype.millerRabin=function(t){var e=this.subtract(r.ONE),n=e.getLowestSetBit();if(n<=0)return !1;var o=e.shiftRight(n);(t=t+1>>1)>B.length&&(t=B.length);for(var s=i(),h=0;h>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,i=this.DB-t*this.DB%8,n=0;if(t-- >0)for(i>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<=0;)i<8?(r=(this[t]&(1<>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,i<=0&&(i+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(e[n++]=r);return e},r.prototype.equals=function(t){return 0==this.compareTo(t)},r.prototype.min=function(t){return this.compareTo(t)<0?this:t},r.prototype.max=function(t){return this.compareTo(t)>0?this:t},r.prototype.and=function(t){var e=i();return this.bitwiseTo(t,d,e),e},r.prototype.or=function(t){var e=i();return this.bitwiseTo(t,m,e),e},r.prototype.xor=function(t){var e=i();return this.bitwiseTo(t,v,e),e},r.prototype.andNot=function(t){var e=i();return this.bitwiseTo(t,y,e),e},r.prototype.not=function(){for(var t=i(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var m=i();for(n.sqrTo(h[1],m);u<=d;)h[u]=i(),n.mulTo(m,h[u-2],h[u]),u+=2;}var v,y,g=t.t-1,w=!0,T=i();for(o=c(t[g])-1;g>=0;){for(o>=a?v=t[g]>>o-a&d:(v=(t[g]&(1<0&&(v|=t[g-1]>>this.DB+o-a)),u=r;0==(1&v);)v>>=1,--u;if((o-=u)<0&&(o+=this.DB,--g),w)h[v].copyTo(s),w=!1;else {for(;u>1;)n.sqrTo(s,T),n.sqrTo(T,s),u-=2;u>0?n.sqrTo(s,T):(y=s,s=T,T=y),n.mulTo(T,h[v],s);}for(;g>=0&&0==(t[g]&1<=0?(i.subTo(n,i),e&&o.subTo(h,o),s.subTo(u,s)):(n.subTo(i,n),e&&h.subTo(o,h),u.subTo(s,u));}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(t)>=0?u.subtract(t):u.signum()<0?(u.addTo(t,u),u.signum()<0?u.add(t):u):u},r.prototype.pow=function(t){return this.exp(t,new T)},r.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var i=e;e=r,r=i;}var n=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(n0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},r.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=B[B.length-1]){for(e=0;e>>8,A[D++]=255&k;D=0,E();}function C(){if(null==S){for(E(),(S=new O).init(A),D=0;D0&&e.length>0))throw new Error("Invalid key data");this.n=new u.BigInteger(t,16),this.e=parseInt(e,16);}c.prototype.verify=function(t,e){e=e.replace(/[^0-9a-f]|[\s\n]]/gi,"");var r=new u.BigInteger(e,16);if(r.bitLength()>this.n.bitLength())throw new Error("Signature does not match with the key modulus.");var i=function(t){for(var e in a){var r=a[e],i=r.length;if(t.substring(0,i)===r)return {alg:e,hash:t.substring(i)}}return []}(r.modPowInt(this.e,this.n).toString(16).replace(/^1f+00/,""));if(0===i.length)return !1;if(!f.hasOwnProperty(i.alg))throw new Error("Hashing algorithm is not supported.");var n=f[i.alg](t).toString();return i.hash===n};for(var p=[],l=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0;v<64;++v)p[v]=m[v],l[m.charCodeAt(v)]=v;l["-".charCodeAt(0)]=62,l["_".charCodeAt(0)]=63;var y=function(t){var e,r,i=function(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return -1===r&&(r=e),[r,r===e?0:4-r%4]}(t),n=i[0],o=i[1],s=new d(function(t,e,r){return 3*(e+r)/4-r}(0,n,o)),h=0,u=o>0?n-4:n;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;return 2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,s[h++]=255&e),1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e),s};function g(t){var e=t.length%4;return 0===e?t:t+new Array(4-e+1).join("=")}function w(t){return t=g(t).replace(/\-/g,"+").replace(/_/g,"/"),decodeURIComponent(function(t){for(var e="",r=0;r1){var r=t.shift();t[0]=r+t[0];}t[0]=t[0].match(/^file:\/\/\//)?t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(n=n.replace(/^[\/]+/,"")),n=n.replace(/[\/]+$/,i0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():r.urljoin=i();});function _(t,e){return e=e||{},new Promise(function(r,i){var n=new XMLHttpRequest,o=[],s=[],h={},u=function(){return {ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:u,headers:{keys:function(){return o},entries:function(){return s},get:function(t){return h[t.toLowerCase()]},has:function(t){return t.toLowerCase()in h}}}};for(var a in n.open(e.method||"get",t,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(t,e,r){o.push(e=e.toLowerCase()),s.push([e,r]),h[e]=h[e]?h[e]+","+r:r;}),r(u());},n.onerror=i,n.withCredentials="include"==e.credentials,e.headers)n.setRequestHeader(a,e.headers[a]);n.send(e.body||null);})}function S(t){if(t.ok)return t.json();var e=new Error(t.statusText);return e.response=t,Promise.reject(e)}function A(t){this.name="ConfigurationError",this.message=t||"";}function D(t){this.name="TokenValidationError",this.message=t||"";}A.prototype=Error.prototype,D.prototype=Error.prototype;var B=function(){function t(){}var e=t.prototype;return e.get=function(){return null},e.has=function(){return null},e.set=function(){return null},t}();r.polyfill();var x="RS256",E=function(t){return "number"==typeof t},k=function(){return new Date};function I(t){var e=t||{};if(this.jwksCache=e.jwksCache||new B,this.expectedAlg=e.expectedAlg||"RS256",this.issuer=e.issuer,this.audience=e.audience,this.leeway=0===e.leeway?0:e.leeway||60,this.jwksURI=e.jwksURI,this.maxAge=e.maxAge,this.__clock="function"==typeof e.__clock?e.__clock:k,this.leeway<0||this.leeway>300)throw new A("The leeway should be positive and lower than five minutes.");if(x!==this.expectedAlg)throw new A('Signature algorithm of "'+this.expectedAlg+'" is not supported. Expected the ID token to be signed with "'+x+'".')}I.prototype.verify=function(t,e,r){if(!r&&e&&"function"==typeof e&&(r=e,e=void 0),!t)return r(new D("ID token is required but missing"),null);var i=this.decode(t);if(i instanceof Error)return r(new D("ID token could not be decoded"),null);var n=i.encoded.header+"."+i.encoded.payload,o=T(i.encoded.signature),s=i.header.alg,h=i.header.kid,u=i.payload.aud,a=i.payload.sub,f=i.payload.iss,c=i.payload.exp,p=i.payload.nbf,l=i.payload.iat,d=i.payload.azp,m=i.payload.auth_time,v=i.payload.nonce,y=this.__clock(),g=this;if(g.expectedAlg!==s)return r(new D('Signature algorithm of "'+s+'" is not supported. Expected the ID token to be signed with "'+x+'".'),null);this.getRsaVerifier(f,h,function(t,s){if(t)return r(t,null);if(!s.verify(n,o))return r(new D("Invalid ID token signature."),null);if(!f||"string"!=typeof f)return r(new D("Issuer (iss) claim must be a string present in the ID token"),null);if(g.issuer!==f)return r(new D('Issuer (iss) claim mismatch in the ID token, expected "'+g.issuer+'", found "'+f+'"'),null);if(!a||"string"!=typeof a)return r(new D("Subject (sub) claim must be a string present in the ID token"),null);if(!u||"string"!=typeof u&&!Array.isArray(u))return r(new D("Audience (aud) claim must be a string or array of strings present in the ID token"),null);if(Array.isArray(u)&&!u.includes(g.audience))return r(new D('Audience (aud) claim mismatch in the ID token; expected "'+g.audience+'" but was not one of "'+u.join(", ")+'"'),null);if("string"==typeof u&&g.audience!==u)return r(new D('Audience (aud) claim mismatch in the ID token; expected "'+g.audience+'" but found "'+u+'"'),null);if(e){if(!v||"string"!=typeof v)return r(new D("Nonce (nonce) claim must be a string present in the ID token"),null);if(v!==e)return r(new D('Nonce (nonce) claim value mismatch in the ID token; expected "'+e+'", found "'+v+'"'),null)}if(Array.isArray(u)&&u.length>1){if(!d||"string"!=typeof d)return r(new D("Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values"),null);if(d!==g.audience)return r(new D('Authorized Party (azp) claim mismatch in the ID token; expected "'+g.audience+'", found "'+d+'"'),null)}if(!c||!E(c))return r(new D("Expiration Time (exp) claim must be a number present in the ID token"),null);if(!l||!E(l))return r(new D("Issued At (iat) claim must be a number present in the ID token"),null);var h=c+g.leeway,w=new Date(0);if(w.setUTCSeconds(h),y>w)return r(new D('Expiration Time (exp) claim error in the ID token; current time "'+y+'" is after expiration time "'+w+'"'),null);if(p&&E(p)){var T=p-g.leeway,b=new Date(0);if(b.setUTCSeconds(T),yS)return r(new D('Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time "'+y+'" is after last auth time at "'+S+'"'),null)}return r(null,i.payload)});},I.prototype.getRsaVerifier=function(t,e,r){var i=this,n=t+e;Promise.resolve(this.jwksCache.has(n)).then(function(r){return r?i.jwksCache.get(n):(s=(o={jwksURI:i.jwksURI,iss:t,kid:e}).jwksURI||b(o.iss,".well-known","jwks.json"),("undefined"==fetch?_:fetch)(s).then(S).then(function(t){var e,r,i,n=null;for(e=0;e1){var first=strArray.shift();strArray[0]=first+strArray[0]}strArray[0].match(/^file:\/\/\//)?strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1:///"):strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(component=component.replace(/^[\/]+/,"")),component=i0?"?":"")+parts.join("&")}return function(){return normalize("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},module.exports?module.exports=definition():context.urljoin=definition()})),origSymbol="undefined"!=typeof Symbol&&Symbol,ERROR_MESSAGE="Function.prototype.bind called on incompatible ",slice=Array.prototype.slice,toStr=Object.prototype.toString,functionBind=Function.prototype.bind||function(that){var target=this;if("function"!=typeof target||"[object Function]"!==toStr.call(target))throw new TypeError(ERROR_MESSAGE+target);for(var bound,args=slice.call(arguments,1),binder=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))},boundLength=Math.max(0,target.length-args.length),boundArgs=[],i=0;i1&&"boolean"!=typeof allowMissing)throw new $TypeError('"allowMissing" argument must be a boolean');if(null===$exec(/^%?[^%]*%?$/,name))throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var parts=stringToPath(name),intrinsicBaseName=parts.length>0?parts[0]:"",intrinsic=getBaseIntrinsic("%"+intrinsicBaseName+"%",allowMissing),intrinsicRealName=intrinsic.name,value=intrinsic.value,skipFurtherCaching=!1,alias=intrinsic.alias;alias&&(intrinsicBaseName=alias[0],$spliceApply(parts,$concat([0,1],alias)));for(var i=1,isOwn=!0;i=parts.length){var desc=$gOPD(value,part);value=(isOwn=!!desc)&&"get"in desc&&!("originalValue"in desc.get)?desc.get:value[part]}else isOwn=src(value,part),value=value[part];isOwn&&!skipFurtherCaching&&(INTRINSICS[intrinsicRealName]=value)}}return value},callBind=createCommonjsModule((function(module){var $apply=getIntrinsic("%Function.prototype.apply%"),$call=getIntrinsic("%Function.prototype.call%"),$reflectApply=getIntrinsic("%Reflect.apply%",!0)||functionBind.call($call,$apply),$gOPD=getIntrinsic("%Object.getOwnPropertyDescriptor%",!0),$defineProperty=getIntrinsic("%Object.defineProperty%",!0),$max=getIntrinsic("%Math.max%");if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=null}module.exports=function(originalFunction){var func=$reflectApply(functionBind,$call,arguments);if($gOPD&&$defineProperty){var desc=$gOPD(func,"length");desc.configurable&&$defineProperty(func,"length",{value:1+$max(0,originalFunction.length-(arguments.length-1))})}return func};var applyBind=function(){return $reflectApply(functionBind,$apply,arguments)};$defineProperty?$defineProperty(module.exports,"apply",{value:applyBind}):module.exports.apply=applyBind})),$indexOf=(callBind.apply,callBind(getIntrinsic("String.prototype.indexOf"))),callBound=function(name,allowMissing){var intrinsic=getIntrinsic(name,!!allowMissing);return"function"==typeof intrinsic&&$indexOf(name,".prototype.")>-1?callBind(intrinsic):intrinsic},semver=function(n){return n&&n.default||n}(Object.freeze({__proto__:null,default:{}})),hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,weakMapHas="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,weakSetHas="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,weakRefDeref="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,$match=String.prototype.match,$slice=String.prototype.slice,$replace$1=String.prototype.replace,$toUpperCase=String.prototype.toUpperCase,$toLowerCase=String.prototype.toLowerCase,$test=RegExp.prototype.test,$concat$1=Array.prototype.concat,$join=Array.prototype.join,$arrSlice=Array.prototype.slice,$floor=Math.floor,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,toStringTag="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===hasShammedSymbols||"symbol")?Symbol.toStringTag:null,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(O){return O.__proto__}:null);function addNumericSeparator(num,str){if(num===1/0||num===-1/0||num!=num||num&&num>-1e3&&num<1e3||$test.call(/e/,str))return str;var sepRegex=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof num){var int=num<0?-$floor(-num):$floor(num);if(int!==num){var intStr=String(int),dec=$slice.call(str,intStr.length+1);return $replace$1.call(intStr,sepRegex,"$&_")+"."+$replace$1.call($replace$1.call(dec,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace$1.call(str,sepRegex,"$&_")}var inspectCustom=semver.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null,objectInspect=function inspect_(obj,options,depth,seen){var opts=options||{};if(has(opts,"quoteStyle")&&"single"!==opts.quoteStyle&&"double"!==opts.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(opts,"maxStringLength")&&("number"==typeof opts.maxStringLength?opts.maxStringLength<0&&opts.maxStringLength!==1/0:null!==opts.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var customInspect=!has(opts,"customInspect")||opts.customInspect;if("boolean"!=typeof customInspect&&"symbol"!==customInspect)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(opts,"indent")&&null!==opts.indent&&"\t"!==opts.indent&&!(parseInt(opts.indent,10)===opts.indent&&opts.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(opts,"numericSeparator")&&"boolean"!=typeof opts.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var numericSeparator=opts.numericSeparator;if(void 0===obj)return"undefined";if(null===obj)return"null";if("boolean"==typeof obj)return obj?"true":"false";if("string"==typeof obj)return function inspectString(str,opts){if(str.length>opts.maxStringLength){var remaining=str.length-opts.maxStringLength,trailer="... "+remaining+" more character"+(remaining>1?"s":"");return inspectString($slice.call(str,0,opts.maxStringLength),opts)+trailer}return wrapQuotes($replace$1.call($replace$1.call(str,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",opts)}(obj,opts);if("number"==typeof obj){if(0===obj)return 1/0/obj>0?"0":"-0";var str=String(obj);return numericSeparator?addNumericSeparator(obj,str):str}if("bigint"==typeof obj){var bigIntStr=String(obj)+"n";return numericSeparator?addNumericSeparator(obj,bigIntStr):bigIntStr}var maxDepth=void 0===opts.depth?5:opts.depth;if(void 0===depth&&(depth=0),depth>=maxDepth&&maxDepth>0&&"object"==typeof obj)return isArray(obj)?"[Array]":"[Object]";var indent=function(opts,depth){var baseIndent;if("\t"===opts.indent)baseIndent="\t";else{if(!("number"==typeof opts.indent&&opts.indent>0))return null;baseIndent=$join.call(Array(opts.indent+1)," ")}return{base:baseIndent,prev:$join.call(Array(depth+1),baseIndent)}}(opts,depth);if(void 0===seen)seen=[];else if(indexOf(seen,obj)>=0)return"[Circular]";function inspect(value,from,noIndent){if(from&&(seen=$arrSlice.call(seen)).push(from),noIndent){var newOpts={depth:opts.depth};return has(opts,"quoteStyle")&&(newOpts.quoteStyle=opts.quoteStyle),inspect_(value,newOpts,depth+1,seen)}return inspect_(value,opts,depth+1,seen)}if("function"==typeof obj&&!isRegExp(obj)){var name=function(f){if(f.name)return f.name;var m=$match.call(functionToString.call(f),/^function\s*([\w$]+)/);if(m)return m[1];return null}(obj),keys=arrObjKeys(obj,inspect);return"[Function"+(name?": "+name:" (anonymous)")+"]"+(keys.length>0?" { "+$join.call(keys,", ")+" }":"")}if(isSymbol(obj)){var symString=hasShammedSymbols?$replace$1.call(String(obj),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(obj);return"object"!=typeof obj||hasShammedSymbols?symString:markBoxed(symString)}if(function(x){if(!x||"object"!=typeof x)return!1;if("undefined"!=typeof HTMLElement&&x instanceof HTMLElement)return!0;return"string"==typeof x.nodeName&&"function"==typeof x.getAttribute}(obj)){for(var s="<"+$toLowerCase.call(String(obj.nodeName)),attrs=obj.attributes||[],i=0;i"}if(isArray(obj)){if(0===obj.length)return"[]";var xs=arrObjKeys(obj,inspect);return indent&&!function(xs){for(var i=0;i=0)return!1;return!0}(xs)?"["+indentedJoin(xs,indent)+"]":"[ "+$join.call(xs,", ")+" ]"}if(function(obj){return!("[object Error]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)){var parts=arrObjKeys(obj,inspect);return"cause"in Error.prototype||!("cause"in obj)||isEnumerable.call(obj,"cause")?0===parts.length?"["+String(obj)+"]":"{ ["+String(obj)+"] "+$join.call(parts,", ")+" }":"{ ["+String(obj)+"] "+$join.call($concat$1.call("[cause]: "+inspect(obj.cause),parts),", ")+" }"}if("object"==typeof obj&&customInspect){if(inspectSymbol&&"function"==typeof obj[inspectSymbol]&&semver)return semver(obj,{depth:maxDepth-depth});if("symbol"!==customInspect&&"function"==typeof obj.inspect)return obj.inspect()}if(function(x){if(!mapSize||!x||"object"!=typeof x)return!1;try{mapSize.call(x);try{setSize.call(x)}catch(s){return!0}return x instanceof Map}catch(e){}return!1}(obj)){var mapParts=[];return mapForEach&&mapForEach.call(obj,(function(value,key){mapParts.push(inspect(key,obj,!0)+" => "+inspect(value,obj))})),collectionOf("Map",mapSize.call(obj),mapParts,indent)}if(function(x){if(!setSize||!x||"object"!=typeof x)return!1;try{setSize.call(x);try{mapSize.call(x)}catch(m){return!0}return x instanceof Set}catch(e){}return!1}(obj)){var setParts=[];return setForEach&&setForEach.call(obj,(function(value){setParts.push(inspect(value,obj))})),collectionOf("Set",setSize.call(obj),setParts,indent)}if(function(x){if(!weakMapHas||!x||"object"!=typeof x)return!1;try{weakMapHas.call(x,weakMapHas);try{weakSetHas.call(x,weakSetHas)}catch(s){return!0}return x instanceof WeakMap}catch(e){}return!1}(obj))return weakCollectionOf("WeakMap");if(function(x){if(!weakSetHas||!x||"object"!=typeof x)return!1;try{weakSetHas.call(x,weakSetHas);try{weakMapHas.call(x,weakMapHas)}catch(s){return!0}return x instanceof WeakSet}catch(e){}return!1}(obj))return weakCollectionOf("WeakSet");if(function(x){if(!weakRefDeref||!x||"object"!=typeof x)return!1;try{return weakRefDeref.call(x),!0}catch(e){}return!1}(obj))return weakCollectionOf("WeakRef");if(function(obj){return!("[object Number]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(Number(obj)));if(function(obj){if(!obj||"object"!=typeof obj||!bigIntValueOf)return!1;try{return bigIntValueOf.call(obj),!0}catch(e){}return!1}(obj))return markBoxed(inspect(bigIntValueOf.call(obj)));if(function(obj){return!("[object Boolean]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(booleanValueOf.call(obj));if(function(obj){return!("[object String]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(String(obj)));if(!function(obj){return!("[object Date]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)&&!isRegExp(obj)){var ys=arrObjKeys(obj,inspect),isPlainObject=gPO?gPO(obj)===Object.prototype:obj instanceof Object||obj.constructor===Object,protoTag=obj instanceof Object?"":"null prototype",stringTag=!isPlainObject&&toStringTag&&Object(obj)===obj&&toStringTag in obj?$slice.call(toStr$1(obj),8,-1):protoTag?"Object":"",tag=(isPlainObject||"function"!=typeof obj.constructor?"":obj.constructor.name?obj.constructor.name+" ":"")+(stringTag||protoTag?"["+$join.call($concat$1.call([],stringTag||[],protoTag||[]),": ")+"] ":"");return 0===ys.length?tag+"{}":indent?tag+"{"+indentedJoin(ys,indent)+"}":tag+"{ "+$join.call(ys,", ")+" }"}return String(obj)};function wrapQuotes(s,defaultStyle,opts){var quoteChar="double"===(opts.quoteStyle||defaultStyle)?'"':"'";return quoteChar+s+quoteChar}function quote(s){return $replace$1.call(String(s),/"/g,""")}function isArray(obj){return!("[object Array]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isRegExp(obj){return!("[object RegExp]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isSymbol(obj){if(hasShammedSymbols)return obj&&"object"==typeof obj&&obj instanceof Symbol;if("symbol"==typeof obj)return!0;if(!obj||"object"!=typeof obj||!symToString)return!1;try{return symToString.call(obj),!0}catch(e){}return!1}var hasOwn=Object.prototype.hasOwnProperty||function(key){return key in this};function has(obj,key){return hasOwn.call(obj,key)}function toStr$1(obj){return objectToString.call(obj)}function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0,l=xs.length;i1;){var item=queue.pop(),obj=item.obj[item.prop];if(isArray$1(obj)){for(var compacted=[],j=0;j=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||format===formats.RFC1738&&(40===c||41===c)?out+=string.charAt(i):c<128?out+=hexTable[c]:c<2048?out+=hexTable[192|c>>6]+hexTable[128|63&c]:c<55296||c>=57344?out+=hexTable[224|c>>12]+hexTable[128|c>>6&63]+hexTable[128|63&c]:(i+=1,c=65536+((1023&c)<<10|1023&string.charCodeAt(i)),out+=hexTable[240|c>>18]+hexTable[128|c>>12&63]+hexTable[128|c>>6&63]+hexTable[128|63&c])}return out},isBuffer:function(obj){return!(!obj||"object"!=typeof obj)&&!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj))},isRegExp:function(obj){return"[object RegExp]"===Object.prototype.toString.call(obj)},maybeMap:function(val,fn){if(isArray$1(val)){for(var mapped=[],i=0;i0?obj.join(",")||null:void 0}];else if(isArray$2(filter))objKeys=filter;else{var keys=Object.keys(obj);objKeys=sort?keys.sort(sort):keys}for(var adjustedPrefix=commaRoundTrip&&isArray$2(obj)&&1===obj.length?prefix+"[]":prefix,j=0;j-1?val.split(","):val},parseKeys=function(givenKey,val,options,valuesParsed){if(givenKey){var key=options.allowDots?givenKey.replace(/\.([^.[]+)/g,"[$1]"):givenKey,child=/(\[[^[\]]*])/g,segment=options.depth>0&&/(\[[^[\]]*])/.exec(key),parent=segment?key.slice(0,segment.index):key,keys=[];if(parent){if(!options.plainObjects&&has$3.call(Object.prototype,parent)&&!options.allowPrototypes)return;keys.push(parent)}for(var i=0;options.depth>0&&null!==(segment=child.exec(key))&&i=0;--i){var obj,root=chain[i];if("[]"===root&&options.parseArrays)obj=[].concat(leaf);else{obj=options.plainObjects?Object.create(null):{};var cleanRoot="["===root.charAt(0)&&"]"===root.charAt(root.length-1)?root.slice(1,-1):root,index=parseInt(cleanRoot,10);options.parseArrays||""!==cleanRoot?!isNaN(index)&&root!==cleanRoot&&String(index)===cleanRoot&&index>=0&&options.parseArrays&&index<=options.arrayLimit?(obj=[])[index]=leaf:"__proto__"!==cleanRoot&&(obj[cleanRoot]=leaf):obj={0:leaf}}leaf=obj}return leaf}(keys,val,options,valuesParsed)}},lib={formats:formats,parse:function(str,opts){var options=function(opts){if(!opts)return defaults$1;if(null!==opts.decoder&&void 0!==opts.decoder&&"function"!=typeof opts.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==opts.charset&&"utf-8"!==opts.charset&&"iso-8859-1"!==opts.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var charset=void 0===opts.charset?defaults$1.charset:opts.charset;return{allowDots:void 0===opts.allowDots?defaults$1.allowDots:!!opts.allowDots,allowPrototypes:"boolean"==typeof opts.allowPrototypes?opts.allowPrototypes:defaults$1.allowPrototypes,allowSparse:"boolean"==typeof opts.allowSparse?opts.allowSparse:defaults$1.allowSparse,arrayLimit:"number"==typeof opts.arrayLimit?opts.arrayLimit:defaults$1.arrayLimit,charset:charset,charsetSentinel:"boolean"==typeof opts.charsetSentinel?opts.charsetSentinel:defaults$1.charsetSentinel,comma:"boolean"==typeof opts.comma?opts.comma:defaults$1.comma,decoder:"function"==typeof opts.decoder?opts.decoder:defaults$1.decoder,delimiter:"string"==typeof opts.delimiter||utils.isRegExp(opts.delimiter)?opts.delimiter:defaults$1.delimiter,depth:"number"==typeof opts.depth||!1===opts.depth?+opts.depth:defaults$1.depth,ignoreQueryPrefix:!0===opts.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof opts.interpretNumericEntities?opts.interpretNumericEntities:defaults$1.interpretNumericEntities,parameterLimit:"number"==typeof opts.parameterLimit?opts.parameterLimit:defaults$1.parameterLimit,parseArrays:!1!==opts.parseArrays,plainObjects:"boolean"==typeof opts.plainObjects?opts.plainObjects:defaults$1.plainObjects,strictNullHandling:"boolean"==typeof opts.strictNullHandling?opts.strictNullHandling:defaults$1.strictNullHandling}}(opts);if(""===str||null==str)return options.plainObjects?Object.create(null):{};for(var tempObj="string"==typeof str?function(str,options){var i,obj={},cleanStr=options.ignoreQueryPrefix?str.replace(/^\?/,""):str,limit=options.parameterLimit===1/0?void 0:options.parameterLimit,parts=cleanStr.split(options.delimiter,limit),skipIndex=-1,charset=options.charset;if(options.charsetSentinel)for(i=0;i-1&&(val=isArray$3(val)?[val]:val),has$3.call(obj,key)?obj[key]=utils.combine(obj[key],val):obj[key]=val}return obj}(str,options):str,obj=options.plainObjects?Object.create(null):{},keys=Object.keys(tempObj),i=0;i0?prefix+joined:""}},componentEmitter=createCommonjsModule((function(module){function Emitter(obj){if(obj)return function(obj){for(var key in Emitter.prototype)obj[key]=Emitter.prototype[key];return obj}(obj)}module.exports=Emitter,Emitter.prototype.on=Emitter.prototype.addEventListener=function(event,fn){return this._callbacks=this._callbacks||{},(this._callbacks["$"+event]=this._callbacks["$"+event]||[]).push(fn),this},Emitter.prototype.once=function(event,fn){function on(){this.off(event,on),fn.apply(this,arguments)}return on.fn=fn,this.on(event,on),this},Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(event,fn){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var cb,callbacks=this._callbacks["$"+event];if(!callbacks)return this;if(1==arguments.length)return delete this._callbacks["$"+event],this;for(var i=0;ioptions.depthLimit)return void setReplace("[...]",val,k,parent);if(void 0!==options.edgesLimit&&edgeIndex+1>options.edgesLimit)return void setReplace("[...]",val,k,parent);if(stack.push(val),Array.isArray(val))for(i=0;ib?1:0}function deterministicStringify(obj,replacer,spacer,options){void 0===options&&(options=defaultOptions());var res,tmp=function deterministicDecirc(val,k,edgeIndex,stack,parent,depth,options){var i;if(depth+=1,"object"==typeof val&&null!==val){for(i=0;ioptions.depthLimit)return void setReplace("[...]",val,k,parent);if(void 0!==options.edgesLimit&&edgeIndex+1>options.edgesLimit)return void setReplace("[...]",val,k,parent);if(stack.push(val),Array.isArray(val))for(i=0;i0)for(var i=0;i=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i=this._maxRetries)return!1;if(this._retryCallback)try{var override=this._retryCallback(error,res);if(!0===override)return!0;if(!1===override)return!1}catch(err){console.error(err)}if(res&&res.status&&STATUS_CODES.has(res.status))return!0;if(error){if(error.code&&ERROR_CODES.has(error.code))return!0;if(error.timeout&&"ECONNABORTED"===error.code)return!0;if(error.crossDomain)return!0}return!1},RequestBase.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this.timedoutError=null,this._end()},RequestBase.prototype.then=function(resolve,reject){var _this=this;if(!this._fullfilledPromise){var self=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise((function(resolve,reject){self.on("abort",(function(){if(!(_this._maxRetries&&_this._maxRetries>_this._retries))if(_this.timedout&&_this.timedoutError)reject(_this.timedoutError);else{var error=new Error("Aborted");error.code="ABORTED",error.status=_this.status,error.method=_this.method,error.url=_this.url,reject(error)}})),self.end((function(error,res){error?reject(error):resolve(res)}))}))}return this._fullfilledPromise.then(resolve,reject)},RequestBase.prototype.catch=function(callback){return this.then(void 0,callback)},RequestBase.prototype.use=function(fn){return fn(this),this},RequestBase.prototype.ok=function(callback){if("function"!=typeof callback)throw new Error("Callback required");return this._okCallback=callback,this},RequestBase.prototype._isResponseOK=function(res){return!!res&&(this._okCallback?this._okCallback(res):res.status>=200&&res.status<300)},RequestBase.prototype.get=function(field){return this._header[field.toLowerCase()]},RequestBase.prototype.getHeader=RequestBase.prototype.get,RequestBase.prototype.set=function(field,value){if(isObject(field)){for(var key in field)hasOwn$1(field,key)&&this.set(key,field[key]);return this}return this._header[field.toLowerCase()]=value,this.header[field]=value,this},RequestBase.prototype.unset=function(field){return delete this._header[field.toLowerCase()],delete this.header[field],this},RequestBase.prototype.field=function(name,value,options){if(null==name)throw new Error(".field(name, val) name can not be empty");if(this._data)throw new Error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()");if(isObject(name)){for(var key in name)hasOwn$1(name,key)&&this.field(key,name[key]);return this}if(Array.isArray(value)){for(var i in value)hasOwn$1(value,i)&&this.field(name,value[i]);return this}if(null==value)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof value&&(value=String(value)),options?this._getFormData().append(name,value,options):this._getFormData().append(name,value),this},RequestBase.prototype.abort=function(){if(this._aborted)return this;if(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req){if(semver.gte(process.version,"v13.0.0")&&semver.lt(process.version,"v14.0.0"))throw new Error("Superagent does not work in v13 properly with abort() due to Node.js core changes");semver.gte(process.version,"v14.0.0")&&(this.req.destroyed=!0),this.req.abort()}return this.clearTimeout(),this.emit("abort"),this},RequestBase.prototype._auth=function(user,pass,options,base64Encoder){switch(options.type){case"basic":this.set("Authorization","Basic ".concat(base64Encoder("".concat(user,":").concat(pass))));break;case"auto":this.username=user,this.password=pass;break;case"bearer":this.set("Authorization","Bearer ".concat(user))}return this},RequestBase.prototype.withCredentials=function(on){return void 0===on&&(on=!0),this._withCredentials=on,this},RequestBase.prototype.redirects=function(n){return this._maxRedirects=n,this},RequestBase.prototype.maxResponseSize=function(n){if("number"!=typeof n)throw new TypeError("Invalid argument");return this._maxResponseSize=n,this},RequestBase.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},RequestBase.prototype.send=function(data){var isObject_=isObject(data),type=this._header["content-type"];if(this._formData)throw new Error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()");if(isObject_&&!this._data)Array.isArray(data)?this._data=[]:this._isHost(data)||(this._data={});else if(data&&this._data&&this._isHost(this._data))throw new Error("Can't merge these send calls");if(isObject_&&isObject(this._data))for(var key in data)hasOwn$1(data,key)&&(this._data[key]=data[key]);else"string"==typeof data?(type||this.type("form"),(type=this._header["content-type"])&&(type=type.toLowerCase().trim()),this._data="application/x-www-form-urlencoded"===type?this._data?"".concat(this._data,"&").concat(data):data:(this._data||"")+data):this._data=data;return!isObject_||this._isHost(data)||type||this.type("json"),this},RequestBase.prototype.sortQuery=function(sort){return this._sort=void 0===sort||sort,this},RequestBase.prototype._finalizeQueryString=function(){var query=this._query.join("&");if(query&&(this.url+=(this.url.includes("?")?"&":"?")+query),this._query.length=0,this._sort){var index=this.url.indexOf("?");if(index>=0){var queryArray=this.url.slice(index+1).split("&");"function"==typeof this._sort?queryArray.sort(this._sort):queryArray.sort(),this.url=this.url.slice(0,index)+"?"+queryArray.join("&")}}},RequestBase.prototype._appendQueryString=function(){console.warn("Unsupported")},RequestBase.prototype._timeoutError=function(reason,timeout,errno){if(!this._aborted){var error=new Error("".concat(reason+timeout,"ms exceeded"));error.timeout=timeout,error.code="ECONNABORTED",error.errno=errno,this.timedout=!0,this.timedoutError=error,this.abort(),this.callback(error)}},RequestBase.prototype._setTimeouts=function(){var self=this;this._timeout&&!this._timer&&(this._timer=setTimeout((function(){self._timeoutError("Timeout of ",self._timeout,"ETIME")}),this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout((function(){self._timeoutError("Response timeout of ",self._responseTimeout,"ETIMEDOUT")}),this._responseTimeout))};var responseBase=ResponseBase;function ResponseBase(){}function _toConsumableArray(arr){return function(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr)}(arr)||function(iter){if("undefined"!=typeof Symbol&&null!=iter[Symbol.iterator]||null!=iter["@@iterator"])return Array.from(iter)}(arr)||_unsupportedIterableToArray(arr)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _unsupportedIterableToArray(o,minLen){if(o){if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(o):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(o,minLen):void 0}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}(this._defaults);try{for(_iterator.s();!(_step=_iterator.n()).done;){var def=_step.value;request[def.fn].apply(request,_toConsumableArray(def.args))}}catch(err){_iterator.e(err)}finally{_iterator.f()}};for(var agentBase=Agent,client=createCommonjsModule((function(module,exports){function _typeof(obj){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj})(obj)}function _createForOfIteratorHelper(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(!it){if(Array.isArray(o)||(it=function(o,minLen){if(!o)return;if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);"Object"===n&&o.constructor&&(n=o.constructor.name);if("Map"===n||"Set"===n)return Array.from(o);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}(o))||allowArrayLike&&o&&"number"==typeof o.length){it&&(o=it);var i=0,F=function(){};return{s:F,n:function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i0||string_ instanceof Object)?parse(string_):null)},Response.prototype.toError=function(){var req=this.req,method=req.method,url=req.url,message="cannot ".concat(method," ").concat(url," (").concat(this.status,")"),error=new Error(message);return error.status=this.status,error.method=method,error.url=url,error},request.Response=Response,componentEmitter(Request.prototype),mixin(Request.prototype,requestBase.prototype),Request.prototype.type=function(type){return this.set("Content-Type",request.types[type]||type),this},Request.prototype.accept=function(type){return this.set("Accept",request.types[type]||type),this},Request.prototype.auth=function(user,pass,options){1===arguments.length&&(pass=""),"object"===_typeof(pass)&&null!==pass&&(options=pass,pass=""),options||(options={type:"function"==typeof btoa?"basic":"auto"});var encoder=options.encoder?options.encoder:function(string){if("function"==typeof btoa)return btoa(string);throw new Error("Cannot use basic auth, btoa is not a function")};return this._auth(user,pass,options,encoder)},Request.prototype.query=function(value){return"string"!=typeof value&&(value=serialize(value)),value&&this._query.push(value),this},Request.prototype.attach=function(field,file,options){if(file){if(this._data)throw new Error("superagent can't mix .send() and .attach()");this._getFormData().append(field,file,options||file.name)}return this},Request.prototype._getFormData=function(){return this._formData||(this._formData=new root.FormData),this._formData},Request.prototype.callback=function(error,res){if(this._shouldRetry(error,res))return this._retry();var fn=this._callback;this.clearTimeout(),error&&(this._maxRetries&&(error.retries=this._retries-1),this.emit("error",error)),fn(error,res)},Request.prototype.crossDomainError=function(){var error=new Error("Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.");error.crossDomain=!0,error.status=this.status,error.method=this.method,error.url=this.url,this.callback(error)},Request.prototype.agent=function(){return console.warn("This is not supported in browser version of superagent"),this},Request.prototype.ca=Request.prototype.agent,Request.prototype.buffer=Request.prototype.ca,Request.prototype.write=function(){throw new Error("Streaming is not supported in browser version of superagent")},Request.prototype.pipe=Request.prototype.write,Request.prototype._isHost=function(object){return object&&"object"===_typeof(object)&&!Array.isArray(object)&&"[object Object]"!==Object.prototype.toString.call(object)},Request.prototype.end=function(fn){this._endCalled&&console.warn("Warning: .end() was called twice. This is not supported in superagent"),this._endCalled=!0,this._callback=fn||noop,this._finalizeQueryString(),this._end()},Request.prototype._setUploadTimeout=function(){var self=this;this._uploadTimeout&&!this._uploadTimeoutTimer&&(this._uploadTimeoutTimer=setTimeout((function(){self._timeoutError("Upload timeout of ",self._uploadTimeout,"ETIMEDOUT")}),this._uploadTimeout))},Request.prototype._end=function(){if(this._aborted)return this.callback(new Error("The request has been aborted even before .end() was called"));var self=this;this.xhr=request.getXHR();var xhr=this.xhr,data=this._formData||this._data;this._setTimeouts(),xhr.addEventListener("readystatechange",(function(){var readyState=xhr.readyState;if(readyState>=2&&self._responseTimeoutTimer&&clearTimeout(self._responseTimeoutTimer),4===readyState){var status;try{status=xhr.status}catch(_unused5){status=0}if(!status){if(self.timedout||self._aborted)return;return self.crossDomainError()}self.emit("end")}}));var handleProgress=function(direction,e){e.total>0&&(e.percent=e.loaded/e.total*100,100===e.percent&&clearTimeout(self._uploadTimeoutTimer)),e.direction=direction,self.emit("progress",e)};if(this.hasListeners("progress"))try{xhr.addEventListener("progress",handleProgress.bind(null,"download")),xhr.upload&&xhr.upload.addEventListener("progress",handleProgress.bind(null,"upload"))}catch(_unused6){}xhr.upload&&this._setUploadTimeout();try{this.username&&this.password?xhr.open(this.method,this.url,!0,this.username,this.password):xhr.open(this.method,this.url,!0)}catch(err){return this.callback(err)}if(this._withCredentials&&(xhr.withCredentials=!0),!this._formData&&"GET"!==this.method&&"HEAD"!==this.method&&"string"!=typeof data&&!this._isHost(data)){var contentType=this._header["content-type"],_serialize=this._serializer||request.serialize[contentType?contentType.split(";")[0]:""];!_serialize&&isJSON(contentType)&&(_serialize=request.serialize["application/json"]),_serialize&&(data=_serialize(data))}for(var field in this.header)null!==this.header[field]&&hasOwn(this.header,field)&&xhr.setRequestHeader(field,this.header[field]);this._responseType&&(xhr.responseType=this._responseType),this.emit("request",this),xhr.send(void 0===data?null:data)},request.agent=function(){return new agentBase};for(var _loop=function(){var method=_arr[_i];agentBase.prototype[method.toLowerCase()]=function(url,fn){var request_=new request.Request(method,url);return this._setDefaults(request_),fn&&request_.end(fn),request_}},_i=0,_arr=["GET","POST","OPTIONS","PATCH","PUT","DELETE"];_i<_arr.length;_i++)_loop();function del(url,data,fn){var request_=request("DELETE",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_}agentBase.prototype.del=agentBase.prototype.delete,request.get=function(url,data,fn){var request_=request("GET",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.query(data),fn&&request_.end(fn),request_},request.head=function(url,data,fn){var request_=request("HEAD",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.query(data),fn&&request_.end(fn),request_},request.options=function(url,data,fn){var request_=request("OPTIONS",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.del=del,request.delete=del,request.patch=function(url,data,fn){var request_=request("PATCH",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.post=function(url,data,fn){var request_=request("POST",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.put=function(url,data,fn){var request_=request("PUT",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_}})),byteLength_1=(client.Request,function(b64){var lens=getLens(b64),validLen=lens[0],placeHoldersLen=lens[1];return 3*(validLen+placeHoldersLen)/4-placeHoldersLen}),toByteArray_1=function(b64){var tmp,i,lens=getLens(b64),validLen=lens[0],placeHoldersLen=lens[1],arr=new Arr(function(b64,validLen,placeHoldersLen){return 3*(validLen+placeHoldersLen)/4-placeHoldersLen}(0,validLen,placeHoldersLen)),curByte=0,len=placeHoldersLen>0?validLen-4:validLen;for(i=0;i>16&255,arr[curByte++]=tmp>>8&255,arr[curByte++]=255&tmp;2===placeHoldersLen&&(tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4,arr[curByte++]=255&tmp);1===placeHoldersLen&&(tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2,arr[curByte++]=tmp>>8&255,arr[curByte++]=255&tmp);return arr},fromByteArray_1=function(uint8){for(var tmp,len=uint8.length,extraBytes=len%3,parts=[],i=0,len2=len-extraBytes;ilen2?len2:i+16383));1===extraBytes?(tmp=uint8[len-1],parts.push(lookup[tmp>>2]+lookup[tmp<<4&63]+"==")):2===extraBytes&&(tmp=(uint8[len-2]<<8)+uint8[len-1],parts.push(lookup[tmp>>10]+lookup[tmp>>4&63]+lookup[tmp<<2&63]+"="));return parts.join("")},lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,len=code.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var validLen=b64.indexOf("=");return-1===validLen&&(validLen=len),[validLen,validLen===len?0:4-validLen%4]}function encodeChunk(uint8,start,end){for(var tmp,num,output=[],i=start;i>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[63&num]);return output.join("")}revLookup["-".charCodeAt(0)]=62,revLookup["_".charCodeAt(0)]=63;var base64Js={byteLength:byteLength_1,toByteArray:toByteArray_1,fromByteArray:fromByteArray_1};var base64Url={encode:function(str){return base64Js.fromByteArray(function(str){for(var arr=new Array(str.length),a=0;a=65&&code<=90||!wasPrevNumber&&code>=48&&code<=57?(newKey+="_",newKey+=str[index].toLowerCase()):newKey+=str[index].toLowerCase(),wasPrevNumber=code>=48&&code<=57,wasPrevUppercase=code>=65&&code<=90,index++;return newKey}(key):key]=toSnakeCase(object[key]),p}),{}))},toCamelCase:function toCamelCase(object,exceptions,options){return"object"!=typeof object||assert.isArray(object)||null===object?object:(exceptions=exceptions||[],options=options||{},Object.keys(object).reduce((function(p,key){var parts,newKey=-1===exceptions.indexOf(key)?(parts=key.split("_")).reduce((function(p,c){return p+c.charAt(0).toUpperCase()+c.slice(1)}),parts.shift()):key;return p[newKey]=toCamelCase(object[newKey]||object[key],[],options),options.keepOriginal&&(p[key]=toCamelCase(object[key],[],options)),p}),{}))},blacklist:function(object,blacklistedKeys){return Object.keys(object).reduce((function(p,key){return-1===blacklistedKeys.indexOf(key)&&(p[key]=object[key]),p}),{})},merge:function(object,keys){return{base:keys?pick(object,keys):object,with:function(object2,keys2){return object2=keys2?pick(object2,keys2):object2,extend(this.base,object2)}}},pick:pick,getKeysNotIn:function(obj,allowedKeys){var notAllowed=[];for(var key in obj)-1===allowedKeys.indexOf(key)&¬Allowed.push(key);return notAllowed},extend:extend,getOriginFromUrl:function(url){if(url){var parsed=getLocationFromUrl(url);if(!parsed)return null;var origin=parsed.protocol+"//"+parsed.hostname;return parsed.port&&(origin+=":"+parsed.port),origin}},getLocationFromUrl:getLocationFromUrl,trimUserDetails:function(options){return function(options,keys){return keys.reduce(trim,options)}(options,["username","email","phoneNumber"])},updatePropertyOn:function updatePropertyOn(obj,path,value){"string"==typeof path&&(path=path.split("."));var next=path[0];obj.hasOwnProperty(next)&&(1===path.length?obj[next]=value:updatePropertyOn(obj[next],path.slice(1),value))}};function RequestWrapper(req){this.request=req,this.method=req.method,this.url=req.url,this.body=req._data,this.headers=req._header}function RequestObj(req){this.request=req}function RequestBuilder(options){this._sendTelemetry=!1!==options._sendTelemetry||options._sendTelemetry,this._telemetryInfo=options._telemetryInfo||null,this._timesToRetryFailedRequests=options._timesToRetryFailedRequests,this.headers=options.headers||{},this._universalLoginPage=options.universalLoginPage}function getWindow(){return window}RequestWrapper.prototype.abort=function(){this.request.abort()},RequestWrapper.prototype.getMethod=function(){return this.method},RequestWrapper.prototype.getBody=function(){return this.body},RequestWrapper.prototype.getUrl=function(){return this.url},RequestWrapper.prototype.getHeaders=function(){return this.headers},RequestObj.prototype.set=function(key,value){return this.request=this.request.set(key,value),this},RequestObj.prototype.send=function(body){return this.request=this.request.send(objectHelper.trimUserDetails(body)),this},RequestObj.prototype.withCredentials=function(){return this.request=this.request.withCredentials(),this},RequestObj.prototype.end=function(cb){return this.request.end(cb),new RequestWrapper(this.request)},RequestBuilder.prototype.setCommonConfiguration=function(ongoingRequest,options){if(options=options||{},this._timesToRetryFailedRequests>0&&(ongoingRequest=ongoingRequest.retry(this._timesToRetryFailedRequests)),options.noHeaders)return ongoingRequest;var headers=this.headers;ongoingRequest=ongoingRequest.set("Content-Type","application/json"),options.xRequestLanguage&&(ongoingRequest=ongoingRequest.set("X-Request-Language",options.xRequestLanguage));for(var keys=Object.keys(this.headers),a=0;a0&&warn.warning("Following parameters are not allowed on the `/authorize` endpoint: ["+notAllowed.join(",")+"]"),params}},t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r=e((function(e,r){e.exports=function(){function e(t){return"function"==typeof t}var r=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},i=0,n=void 0,o=void 0,s=function(t,e){l[i]=t,l[i+1]=e,2===(i+=2)&&(o?o(d):w())},h="undefined"!=typeof window?window:void 0,u=h||{},a=u.MutationObserver||u.WebKitMutationObserver,f="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),c="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function p(){var t=setTimeout;return function(){return t(d,1)}}var l=new Array(1e3);function d(){for(var t=0;t>>2]|=(r[o>>>2]>>>24-o%4*8&255)<<24-(i+o)%4*8;else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new f.init(r,e/2)}},l=c.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255));return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new f.init(r,e)}},d=c.Utf8={stringify:function(t){try{return decodeURIComponent(escape(l.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return l.parse(unescape(encodeURIComponent(t)))}},m=u.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new f.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,h=o/(4*s),u=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*s,a=e.min(4*u,o);if(u){for(var c=0;c>>7)^(d<<14|d>>>18)^d>>>3)+a[l-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+a[l-16]}var v=i&n^i&o^n&o,y=p+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&f^~h&c)+u[l]+a[l];p=c,c=f,f=h,h=s+y|0,s=o,o=n,n=i,i=y+(((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+v)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+h|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+p|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(f),e.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)})),s=e((function(t,e){var r,i;t.exports=(i=(r=n).lib.WordArray,r.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,h=0;h<4&&o+.75*h>>6*(3-h)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join("")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=(h|u)<<24-o%4*8,o++}return i.create(n,o)}(t,e,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},r.enc.Base64)})),h=e((function(t,e){t.exports=n.enc.Hex})),u=e((function(e,r){(function(){var t;function r(t,e,r){null!=t&&("number"==typeof t?this.fromNumber(t,e,r):this.fromString(t,null==e&&"string"!=typeof t?256:e))}function i(){return new r(null)}var n="undefined"!=typeof navigator;n&&"Microsoft Internet Explorer"==navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(var s=32767&e,h=e>>15;--o>=0;){var u=32767&this[t],a=this[t++]>>15,f=h*u+a*s;n=((u=s*u+((32767&f)<<15)+r[i]+(1073741823&n))>>>30)+(f>>>15)+h*a+(n>>>30),r[i++]=1073741823&u}return n},t=30):n&&"Netscape"!=navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(;--o>=0;){var s=e*this[t++]+r[i]+n;n=Math.floor(s/67108864),r[i++]=67108863&s}return n},t=26):(r.prototype.am=function(t,e,r,i,n,o){for(var s=16383&e,h=e>>14;--o>=0;){var u=16383&this[t],a=this[t++]>>14,f=h*u+a*s;n=((u=s*u+((16383&f)<<14)+r[i]+n)>>28)+(f>>14)+h*a,r[i++]=268435455&u}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function p(t){this.m=t}function l(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function w(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function T(){}function b(t){return t}function _(t){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}p.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},p.prototype.revert=function(t){return t},p.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},p.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},p.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},l.prototype.convert=function(t){var e=i();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(r.ZERO)>0&&this.m.subTo(e,e),e},l.prototype.revert=function(t){var e=i();return t.copyTo(e),this.reduce(e),e},l.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,i,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},l.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},l.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},r.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},r.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},r.prototype.fromString=function(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else{if(4!=e)return void this.fromRadix(t,e);i=2}this.t=0,this.s=0;for(var n=t.length,o=!1,s=0;--n>=0;){var h=8==i?255&t[n]:a(t,n);h<0?"-"==t.charAt(n)&&(o=!0):(o=!1,0==s?this[this.t++]=h:s+i>this.DB?(this[this.t-1]|=(h&(1<>this.DB-s):this[this.t-1]|=h<=this.DB&&(s-=this.DB))}8==i&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},r.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},r.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>n|h,h=(this[r]&o)<=0;--r)e[r]=0;e[s]=h,e.t=this.t+s+1,e.s=this.s,e.clamp()},r.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var i=t%this.DB,n=this.DB-i,o=(1<>i;for(var s=r+1;s>i;i>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i-=t.s}e.s=i<0?-1:0,i<-1?e[r++]=this.DV+i:i>0&&(e[r++]=i),e.t=r,e.clamp()},r.prototype.multiplyTo=function(t,e){var i=this.abs(),n=t.abs(),o=i.t;for(e.t=o+n.t;--o>=0;)e[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},r.prototype.divRemTo=function(t,e,n){var o=t.abs();if(!(o.t<=0)){var s=this.abs();if(s.t0?(o.lShiftTo(f,h),s.lShiftTo(f,n)):(o.copyTo(h),s.copyTo(n));var p=h.t,l=h[p-1];if(0!=l){var d=l*(1<1?h[p-2]>>this.F2:0),m=this.FV/d,v=(1<=0&&(n[n.t++]=1,n.subTo(T,n)),r.ONE.dlShiftTo(p,T),T.subTo(h,h);h.t=0;){var b=n[--g]==l?this.DM:Math.floor(n[g]*m+(n[g-1]+y)*v);if((n[g]+=h.am(0,b,n,w,0,p))0&&n.rShiftTo(f,n),u<0&&r.ZERO.subTo(n,n)}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(t,e){if(t>4294967295||t<1)return r.ONE;var n=i(),o=i(),s=e.convert(this),h=c(t)-1;for(s.copyTo(n);--h>=0;)if(e.sqrTo(n,o),(t&1<0)e.mulTo(o,s,n);else{var u=n;n=o,o=u}return e.revert(n)},r.prototype.toString=function(t){if(this.s<0)return"-"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,i=(1<0)for(h>h)>0&&(n=!0,o=u(r));s>=0;)h>(h+=this.DB-e)):(r=this[s]>>(h-=e)&i,h<=0&&(h+=this.DB,--s)),r>0&&(n=!0),n&&(o+=u(r));return n?o:"0"},r.prototype.negate=function(){var t=i();return r.ZERO.subTo(this,t),t},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+c(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(t){var e=i();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(r.ZERO)>0&&t.subTo(e,e),e},r.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new p(e):new l(e),this.exp(t,r)},r.ZERO=f(0),r.ONE=f(1),T.prototype.convert=b,T.prototype.revert=b,T.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},T.prototype.sqrTo=function(t,e){t.squareTo(e)},_.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=i();return t.copyTo(e),this.reduce(e),e},_.prototype.revert=function(t){return t},_.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},_.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},_.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var S,A,D,B=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],x=(1<<26)/B[B.length-1];function E(){var t;t=(new Date).getTime(),A[D++]^=255&t,A[D++]^=t>>8&255,A[D++]^=t>>16&255,A[D++]^=t>>24&255,D>=j&&(D-=j)}if(r.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},r.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return"0";var e=this.chunkSize(t),r=Math.pow(t,e),n=f(r),o=i(),s=i(),h="";for(this.divRemTo(n,o,s);o.signum()>0;)h=(r+s.intValue()).toString(t).substr(1)+h,o.divRemTo(n,o,s);return s.intValue().toString(t)+h},r.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var i=this.chunkSize(e),n=Math.pow(e,i),o=!1,s=0,h=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(h,0),s=0,h=0))}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(h,0)),o&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(t,e,i){if("number"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(r.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(r.ONE.shiftLeft(t-1),this);else{var n=new Array,o=7&t;n.length=1+(t>>3),e.nextBytes(n),o>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i+=t.s}e.s=i<0?-1:0,i>0?e[r++]=i:i<-1&&(e[r++]=this.DV+i),e.t=r,e.clamp()},r.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},r.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},r.prototype.multiplyLowerTo=function(t,e,r){var i,n=Math.min(this.t+t.t,e);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(e-this.t,0);i0)if(0==e)r=this[0]%t;else for(var i=this.t-1;i>=0;--i)r=(e*r+this[i])%t;return r},r.prototype.millerRabin=function(t){var e=this.subtract(r.ONE),n=e.getLowestSetBit();if(n<=0)return!1;var o=e.shiftRight(n);(t=t+1>>1)>B.length&&(t=B.length);for(var s=i(),h=0;h>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,i=this.DB-t*this.DB%8,n=0;if(t-- >0)for(i>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<=0;)i<8?(r=(this[t]&(1<>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,i<=0&&(i+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(e[n++]=r);return e},r.prototype.equals=function(t){return 0==this.compareTo(t)},r.prototype.min=function(t){return this.compareTo(t)<0?this:t},r.prototype.max=function(t){return this.compareTo(t)>0?this:t},r.prototype.and=function(t){var e=i();return this.bitwiseTo(t,d,e),e},r.prototype.or=function(t){var e=i();return this.bitwiseTo(t,m,e),e},r.prototype.xor=function(t){var e=i();return this.bitwiseTo(t,v,e),e},r.prototype.andNot=function(t){var e=i();return this.bitwiseTo(t,y,e),e},r.prototype.not=function(){for(var t=i(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var m=i();for(n.sqrTo(h[1],m);u<=d;)h[u]=i(),n.mulTo(m,h[u-2],h[u]),u+=2}var v,y,g=t.t-1,w=!0,T=i();for(o=c(t[g])-1;g>=0;){for(o>=a?v=t[g]>>o-a&d:(v=(t[g]&(1<0&&(v|=t[g-1]>>this.DB+o-a)),u=r;0==(1&v);)v>>=1,--u;if((o-=u)<0&&(o+=this.DB,--g),w)h[v].copyTo(s),w=!1;else{for(;u>1;)n.sqrTo(s,T),n.sqrTo(T,s),u-=2;u>0?n.sqrTo(s,T):(y=s,s=T,T=y),n.mulTo(T,h[v],s)}for(;g>=0&&0==(t[g]&1<=0?(i.subTo(n,i),e&&o.subTo(h,o),s.subTo(u,s)):(n.subTo(i,n),e&&h.subTo(o,h),u.subTo(s,u))}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(t)>=0?u.subtract(t):u.signum()<0?(u.addTo(t,u),u.signum()<0?u.add(t):u):u},r.prototype.pow=function(t){return this.exp(t,new T)},r.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var i=e;e=r,r=i}var n=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(n0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},r.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=B[B.length-1]){for(e=0;e>>8,A[D++]=255&k;D=0,E()}function C(){if(null==S){for(E(),(S=new O).init(A),D=0;D0&&e.length>0))throw new Error("Invalid key data");this.n=new u.BigInteger(t,16),this.e=parseInt(e,16)}c.prototype.verify=function(t,e){e=e.replace(/[^0-9a-f]|[\s\n]]/gi,"");var r=new u.BigInteger(e,16);if(r.bitLength()>this.n.bitLength())throw new Error("Signature does not match with the key modulus.");var i=function(t){for(var e in a){var r=a[e],i=r.length;if(t.substring(0,i)===r)return{alg:e,hash:t.substring(i)}}return[]}(r.modPowInt(this.e,this.n).toString(16).replace(/^1f+00/,""));if(0===i.length)return!1;if(!f.hasOwnProperty(i.alg))throw new Error("Hashing algorithm is not supported.");var n=f[i.alg](t).toString();return i.hash===n};for(var p=[],l=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0,y=m.length;v0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}(t),n=i[0],o=i[1],s=new d(function(t,e,r){return 3*(e+r)/4-r}(0,n,o)),h=0,u=o>0?n-4:n;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;return 2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,s[h++]=255&e),1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e),s};function w(t){var e=t.length%4;return 0===e?t:t+new Array(4-e+1).join("=")}function T(t){return t=w(t).replace(/\-/g,"+").replace(/_/g,"/"),decodeURIComponent(function(t){for(var e="",r=0;r1){var r=t.shift();t[0]=r+t[0]}t[0]=t[0].match(/^file:\/\/\//)?t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(n=n.replace(/^[\/]+/,"")),n=n.replace(/[\/]+$/,i0?"?":"")+s.join("&")}return function(){return t("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():r.urljoin=i()}));function S(t,e){return e=e||{},new Promise((function(r,i){var n=new XMLHttpRequest,o=[],s=[],h={},u=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:u,headers:{keys:function(){return o},entries:function(){return s},get:function(t){return h[t.toLowerCase()]},has:function(t){return t.toLowerCase()in h}}}};for(var a in n.open(e.method||"get",t,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(t,e,r){o.push(e=e.toLowerCase()),s.push([e,r]),h[e]=h[e]?h[e]+","+r:r})),r(u())},n.onerror=i,n.withCredentials="include"==e.credentials,e.headers)n.setRequestHeader(a,e.headers[a]);n.send(e.body||null)}))}function A(t){if(t.ok)return t.json();var e=new Error(t.statusText);return e.response=t,Promise.reject(e)}function D(t){this.name="ConfigurationError",this.message=t||""}function B(t){this.name="TokenValidationError",this.message=t||""}D.prototype=Error.prototype,B.prototype=Error.prototype;var x=function(){function t(){}var e=t.prototype;return e.get=function(){return null},e.has=function(){return null},e.set=function(){return null},t}();r.polyfill();var E="RS256",k=function(t){return"number"==typeof t},I=function(){return new Date};function M(t){var e=t||{};if(this.jwksCache=e.jwksCache||new x,this.expectedAlg=e.expectedAlg||"RS256",this.issuer=e.issuer,this.audience=e.audience,this.leeway=0===e.leeway?0:e.leeway||60,this.jwksURI=e.jwksURI,this.maxAge=e.maxAge,this.__clock="function"==typeof e.__clock?e.__clock:I,this.leeway<0||this.leeway>300)throw new D("The leeway should be positive and lower than five minutes.");if(E!==this.expectedAlg)throw new D('Signature algorithm of "'+this.expectedAlg+'" is not supported. Expected the ID token to be signed with "'+E+'".')}function PluginHandler(webAuth,plugins){this.plugins=plugins;for(var a=0;a1){if(!d||"string"!=typeof d)return r(new B("Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values"),null);if(d!==g.audience)return r(new B('Authorized Party (azp) claim mismatch in the ID token; expected "'+g.audience+'", found "'+d+'"'),null)}if(!c||!k(c))return r(new B("Expiration Time (exp) claim must be a number present in the ID token"),null);if(!l||!k(l))return r(new B("Issued At (iat) claim must be a number present in the ID token"),null);var h=c+g.leeway,w=new Date(0);if(w.setUTCSeconds(h),y>w)return r(new B('Expiration Time (exp) claim error in the ID token; current time "'+y+'" is after expiration time "'+w+'"'),null);if(p&&k(p)){var T=p-g.leeway,b=new Date(0);if(b.setUTCSeconds(T),yS)return r(new B('Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time "'+y+'" is after last auth time at "'+S+'"'),null)}return r(null,i.payload)}))},M.prototype.getRsaVerifier=function(t,e,r){var i=this,n=t+e;Promise.resolve(this.jwksCache.has(n)).then((function(r){return r?i.jwksCache.get(n):(o={jwksURI:i.jwksURI,iss:t,kid:e},("undefined"==typeof fetch?S:fetch)(o.jwksURI||_(o.iss,".well-known","jwks.json")).then(A).then((function(t){var e,r,i,n=null;for(e=0;e-1){null!==new RegExp("rv:([0-9]{2,2}[.0-9]{0,})").exec(ua)&&(rv=parseFloat(RegExp.$1))}return rv>=8}();return"undefined"!=typeof window&&window.JSON&&window.JSON.stringify&&window.JSON.parse&&window.postMessage?{open:function(opts,cb){if(!cb)throw"missing required callback argument";var err,iframe;opts.url||(err="missing required 'url' parameter"),opts.relay_url||(err="missing required 'relay_url' parameter"),err&&setTimeout((function(){cb(err)}),0),opts.window_name||(opts.window_name=null),opts.window_features&&!function(){try{var userAgent=navigator.userAgent;return-1!=userAgent.indexOf("Fennec/")||-1!=userAgent.indexOf("Firefox/")&&-1!=userAgent.indexOf("Android")}catch(e){}return!1}()||(opts.window_features=void 0);var messageTarget,origin=opts.origin||extractOrigin(opts.url);if(origin!==extractOrigin(opts.relay_url))return setTimeout((function(){cb("invalid arguments: origin of url and relay_url must match")}),0);isIE&&((iframe=document.createElement("iframe")).setAttribute("src",opts.relay_url),iframe.style.display="none",iframe.setAttribute("name","__winchan_relay_frame"),document.body.appendChild(iframe),messageTarget=iframe.contentWindow);var w=opts.popup||window.open(opts.url,opts.window_name,opts.window_features);opts.popup&&(w.location.href=opts.url),messageTarget||(messageTarget=w);var closeInterval=setInterval((function(){w&&w.closed&&(cleanup(),cb&&(cb("User closed the popup window"),cb=null))}),500),req=JSON.stringify({a:"request",d:opts.params});function cleanup(){if(iframe&&document.body.removeChild(iframe),iframe=void 0,closeInterval&&(closeInterval=clearInterval(closeInterval)),removeListener(window,"message",onMessage),removeListener(window,"unload",cleanup),w)try{w.close()}catch(securityViolation){messageTarget.postMessage("die",origin)}w=messageTarget=void 0}function onMessage(e){if(e.origin===origin){try{var d=JSON.parse(e.data)}catch(err){if(cb)return cb(err);throw err}"ready"===d.a?messageTarget.postMessage(req,origin):"error"===d.a?(cleanup(),cb&&(cb(d.d),cb=null)):"response"===d.a&&(cleanup(),cb&&(cb(null,d.d),cb=null))}}return addListener(window,"unload",cleanup),addListener(window,"message",onMessage),{originalPopup:w,close:cleanup,focus:function(){if(w)try{w.focus()}catch(e){}}}},onOpen:function(cb){var o="*",msgTarget=isIE?function(){for(var frames=window.opener.frames,i=frames.length-1;i>=0;i--)try{if(frames[i].location.protocol===window.location.protocol&&frames[i].location.host===window.location.host&&"__winchan_relay_frame"===frames[i].name)return frames[i]}catch(e){}}():window.opener;if(!msgTarget)throw"can't find relay frame";function doPost(msg){msg=JSON.stringify(msg),isIE?msgTarget.doPost(msg,o):msgTarget.postMessage(msg,o)}function onDie(e){if("die"===e.data)try{window.close()}catch(o_O){}}addListener(isIE?msgTarget:window,"message",(function onMessage(e){var d;try{d=JSON.parse(e.data)}catch(err){}d&&"request"===d.a&&(removeListener(window,"message",onMessage),o=e.origin,cb&&setTimeout((function(){cb(o,d.d,(function(r){cb=void 0,doPost({a:"response",d:r})}))}),0))})),addListener(isIE?msgTarget:window,"message",onDie);try{doPost({a:"ready"})}catch(e){addListener(msgTarget,"load",(function(e){doPost({a:"ready"})}))}var onUnload=function(){try{removeListener(isIE?msgTarget:window,"message",onDie)}catch(ohWell){}cb&&doPost({a:"error",d:"client closed window"}),cb=void 0;try{window.close()}catch(e){}};return addListener(window,"unload",onUnload),{detach:function(){removeListener(window,"unload",onUnload)}}}}:{open:function(url,winopts,arg,cb){setTimeout((function(){cb("unsupported browser")}),0)},onOpen:function(cb){setTimeout((function(){cb("unsupported browser")}),0)}}}();module.exports&&(module.exports=WinChan)}));var urlHelper={extractOrigin:function(url){/^https?:\/\//.test(url)||(url=window.location.href);var m=/^(https?:\/\/[-_a-zA-Z.0-9:]+)/.exec(url);return m?m[1]:url}};function PopupHandler(){this._current_popup=null}function Popup(webAuth,options){this.baseOptions=options,this.baseOptions.popupOrigin=options.popupOrigin,this.client=webAuth.client,this.webAuth=webAuth,this.transactionManager=new TransactionManager(this.baseOptions),this.crossOriginAuthentication=new CrossOriginAuthentication(webAuth,this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings})}function SilentAuthenticationHandler(options){this.authenticationUrl=options.authenticationUrl,this.timeout=options.timeout||6e4,this.handler=null,this.postMessageDataType=options.postMessageDataType||!1,this.postMessageOrigin=options.postMessageOrigin||windowHelper.getWindow().location.origin||windowHelper.getWindow().location.protocol+"//"+windowHelper.getWindow().location.hostname+(windowHelper.getWindow().location.port?":"+windowHelper.getWindow().location.port:"")}function UsernamePassword(options){this.baseOptions=options,this.request=new RequestBuilder(options),this.transactionManager=new TransactionManager(this.baseOptions)}function HostedPages(client,options){this.baseOptions=options,this.client=client,this.baseOptions.universalLoginPage=!0,this.request=new RequestBuilder(this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings})}PopupHandler.prototype.calculatePosition=function(options){var width=options.width||500,height=options.height||600,_window=windowHelper.getWindow(),screenX=void 0!==_window.screenX?_window.screenX:_window.screenLeft,screenY=void 0!==_window.screenY?_window.screenY:_window.screenTop,outerWidth=void 0!==_window.outerWidth?_window.outerWidth:_window.document.body.clientWidth,outerHeight=void 0!==_window.outerHeight?_window.outerHeight:_window.document.body.clientHeight;return{width:width,height:height,left:options.left||screenX+(outerWidth-width)/2,top:options.top||screenY+(outerHeight-height)/2}},PopupHandler.prototype.preload=function(options){var _this=this,_window=windowHelper.getWindow(),popupPosition=this.calculatePosition(options.popupOptions||{}),popupOptions=objectHelper.merge(popupPosition).with(options.popupOptions),url=options.url||"about:blank",windowFeatures=lib.stringify(popupOptions,{encode:!1,delimiter:","});return this._current_popup&&!this._current_popup.closed||(this._current_popup=_window.open(url,"auth0_signup_popup",windowFeatures),this._current_popup.kill=function(){this.close(),_this._current_popup=null}),this._current_popup},PopupHandler.prototype.load=function(url,relayUrl,options,cb){var _this=this,popupPosition=this.calculatePosition(options.popupOptions||{}),popupOptions=objectHelper.merge(popupPosition).with(options.popupOptions),winchanOptions=objectHelper.merge({url:url,relay_url:relayUrl,window_features:lib.stringify(popupOptions,{delimiter:",",encode:!1}),popup:this._current_popup}).with(options),popup=winchan.open(winchanOptions,(function(err,data){if(!err||"SyntaxError"!==err.name)return _this._current_popup=null,cb(err,data)}));return popup.focus(),popup},Popup.prototype.buildPopupHandler=function(){var pluginHandler=this.baseOptions.plugins.get("popup.getPopupHandler");return pluginHandler?pluginHandler.getPopupHandler():new PopupHandler},Popup.prototype.preload=function(options){options=options||{};var popup=this.buildPopupHandler();return popup.preload(options),popup},Popup.prototype.getPopupHandler=function(options,preload){return options.popupHandler?options.popupHandler:preload?this.preload(options):this.buildPopupHandler()},Popup.prototype.callback=function(options){var _this=this,theWindow=windowHelper.getWindow(),originUrl=(options=options||{}).popupOrigin||this.baseOptions.popupOrigin||windowHelper.getOrigin();theWindow.opener?winchan.onOpen((function(popupOrigin,r,cb){if(popupOrigin!==originUrl)return cb({error:"origin_mismatch",error_description:"The popup's origin ("+popupOrigin+") should match the `popupOrigin` parameter ("+originUrl+")."});_this.webAuth.parseHash(options||{},(function(err,data){return cb(err||data)}))})):theWindow.doPost=function(msg){theWindow.parent&&theWindow.parent.postMessage(msg,originUrl)}},Popup.prototype.authorize=function(options,cb){var url,relayUrl,popOpts={},pluginHandler=this.baseOptions.plugins.get("popup.authorize"),params=objectHelper.merge(this.baseOptions,["clientID","scope","domain","audience","tenant","responseType","redirectUri","_csrf","state","_intstate","nonce","organization","invitation"]).with(objectHelper.blacklist(options,["popupHandler"]));return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),relayUrl=urlJoin(this.baseOptions.rootUrl,"relay.html"),options.owp?params.owp=!0:(popOpts.origin=urlHelper.extractOrigin(params.redirectUri),relayUrl=params.redirectUri),options.popupOptions&&(popOpts.popupOptions=objectHelper.pick(options.popupOptions,["width","height","top","left"])),pluginHandler&&(params=pluginHandler.processParams(params)),(params=this.transactionManager.process(params)).scope=params.scope||"openid profile email",delete params.domain,url=this.client.buildAuthorizeUrl(params),this.getPopupHandler(options).load(url,relayUrl,popOpts,wrapCallback(cb,{keepOriginalCasing:!0}))},Popup.prototype.loginWithCredentials=function(options,cb){options.realm=options.realm||options.connection,options.popup=!0,options=objectHelper.merge(this.baseOptions,["redirectUri","responseType","state","nonce","timeout"]).with(objectHelper.blacklist(options,["popupHandler","connection"])),options=this.transactionManager.process(options),this.crossOriginAuthentication.login(options,cb)},Popup.prototype.passwordlessVerify=function(options,cb){var _this=this;return this.client.passwordless.verify(objectHelper.blacklist(options,["popupHandler"]),(function(err){if(err)return cb(err);options.username=options.phoneNumber||options.email,options.password=options.verificationCode,delete options.email,delete options.phoneNumber,delete options.verificationCode,delete options.type,_this.client.loginWithResourceOwner(options,cb)}))},Popup.prototype.signupAndLogin=function(options,cb){var _this=this;return this.client.dbConnection.signup(options,(function(err){if(err)return cb(err);_this.loginWithCredentials(options,cb)}))},SilentAuthenticationHandler.create=function(options){return new SilentAuthenticationHandler(options)},SilentAuthenticationHandler.prototype.login=function(usePostMessage,callback){this.handler=new IframeHandler({auth0:this.auth0,url:this.authenticationUrl,eventListenerType:usePostMessage?"message":"load",callback:this.getCallbackHandler(callback,usePostMessage),timeout:this.timeout,eventValidator:this.getEventValidator(),timeoutCallback:function(){callback(null,"#error=timeout&error_description=Timeout+during+authentication+renew.")},usePostMessage:usePostMessage||!1}),this.handler.init()},SilentAuthenticationHandler.prototype.getEventValidator=function(){var _this=this;return{isValid:function(eventData){switch(eventData.event.type){case"message":return eventData.event.origin===_this.postMessageOrigin&&eventData.event.source===_this.handler.iframe.contentWindow&&(!1===_this.postMessageDataType||eventData.event.data.type&&eventData.event.data.type===_this.postMessageDataType);case"load":if("about:"===eventData.sourceObject.contentWindow.location.protocol)return!1;default:return!0}}}},SilentAuthenticationHandler.prototype.getCallbackHandler=function(callback,usePostMessage){return function(eventData){var callbackValue;callbackValue=usePostMessage?"object"==typeof eventData.event.data&&eventData.event.data.hash?eventData.event.data.hash:eventData.event.data:eventData.sourceObject.contentWindow.location.hash,callback(null,callbackValue)}},UsernamePassword.prototype.login=function(options,cb){var url,body;return url=urlJoin(this.baseOptions.rootUrl,"usernamepassword","login"),options.username=options.username||options.email,options=objectHelper.blacklist(options,["email","onRedirecting"]),body=objectHelper.merge(this.baseOptions,["clientID","redirectUri","tenant","responseType","responseMode","scope","audience"]).with(options),body=this.transactionManager.process(body),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},UsernamePassword.prototype.callback=function(formHtml){var div,_document=windowHelper.getDocument();(div=_document.createElement("div")).innerHTML=formHtml,_document.body.appendChild(div).children[0].submit()},HostedPages.prototype.login=function(options,cb){if(windowHelper.getWindow().location.host!==this.baseOptions.domain)throw new Error("This method is meant to be used only inside the Universal Login Page.");var usernamePassword,params=objectHelper.merge(this.baseOptions,["clientID","redirectUri","tenant","responseType","responseMode","scope","audience","_csrf","state","_intstate","nonce"]).with(options);return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),(usernamePassword=new UsernamePassword(this.baseOptions)).login(params,(function(err,data){if(err)return cb(err);function doAuth(){usernamePassword.callback(data)}if("function"==typeof options.onRedirecting)return options.onRedirecting((function(){doAuth()}));doAuth()}))},HostedPages.prototype.signupAndLogin=function(options,cb){var _this=this;return _this.client.client.dbConnection.signup(options,(function(err){return err?cb(err):_this.login(options,cb)}))},HostedPages.prototype.getSSOData=function(withActiveDirectories,cb){var url,params="";return"function"==typeof withActiveDirectories&&(cb=withActiveDirectories,withActiveDirectories=!1),assert.check(withActiveDirectories,{type:"boolean",message:"withActiveDirectories parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),withActiveDirectories&&(params="?"+lib.stringify({ldaps:1,client_id:this.baseOptions.clientID})),url=urlJoin(this.baseOptions.rootUrl,"user","ssodata",params),this.request.get(url,{noHeaders:!0}).withCredentials().end(wrapCallback(cb))};var noop=function(){},captchaSolved=noop,defaults$2={lang:"en",templates:{auth0:function(challenge){var message="code"===challenge.type?"Enter the code shown above":"Solve the formula shown above";return'
\n \n \n
\n'},recaptcha_v2:function(){return'
'},recaptcha_enterprise:function(){return'
'},hcaptcha:function(){return'
'},friendly_captcha:function(){return'
'},arkose:function(){return'
'},auth0_v2:function(){return'
'},error:function(){return'
Error getting the bot detection challenge. Please contact the system administrator.
'}}};function handleAuth0Provider(element,options,challenge,load){element.innerHTML=options.templates[challenge.provider](challenge),element.querySelector(".captcha-reload").addEventListener("click",(function(e){e.preventDefault(),load()}))}function globalForCaptchaProvider(provider){switch(provider){case"recaptcha_v2":return window.grecaptcha;case"recaptcha_enterprise":return window.grecaptcha.enterprise;case"hcaptcha":return window.hcaptcha;case"friendly_captcha":return window.friendlyChallenge;case"arkose":return window.arkose;case"auth0_v2":return window.turnstile;default:throw new Error("Unknown captcha provider")}}function loadScript(url,attributes){var script=window.document.createElement("script");for(var attr in attributes)attr.startsWith("data-")?script.dataset[attr.replace("data-","")]=attributes[attr]:script[attr]=attributes[attr];script.src=url,window.document.body.appendChild(script)}function removeScript(url){window.document.querySelectorAll('script[src="'+url+'"]').forEach((function(script){script.remove()}))}function injectCaptchaScript(element,opts,callback,setValue){var callbackName=opts.provider+"Callback_"+Math.floor(1000001*Math.random()),attributes={async:!0,defer:!0},scriptSrc=function(provider,lang,callback,clientSubdomain,siteKey){switch(provider){case"recaptcha_v2":return"https://www.recaptcha.net/recaptcha/api.js?hl="+lang+"&onload="+callback;case"recaptcha_enterprise":return"https://www.recaptcha.net/recaptcha/enterprise.js?render=explicit&hl="+lang+"&onload="+callback;case"hcaptcha":return"https://js.hcaptcha.com/1/api.js?hl="+lang+"&onload="+callback;case"friendly_captcha":return"https://cdn.jsdelivr.net/npm/friendly-challenge@0.9.12/widget.min.js";case"arkose":return"https://"+clientSubdomain+".arkoselabs.com/v2/"+siteKey+"/api.js";case"auth0_v2":return"https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload="+callback;default:throw new Error("Unknown captcha provider")}}(opts.provider,opts.lang,callbackName,opts.clientSubdomain,opts.siteKey);if("arkose"===opts.provider||"auth0_v2"===opts.provider){var retryCount=0;attributes["data-callback"]=callbackName,attributes.onerror=function(){if(retryCount<3)return removeScript(scriptSrc),loadScript(scriptSrc,attributes),void retryCount++;removeScript(scriptSrc),setValue("BYPASS_CAPTCHA")},window[callbackName]=function(arkose){window.arkose=arkose,callback(arkose)}}else window[callbackName]=function(){delete window[callbackName],callback()},"friendly_captcha"===opts.provider&&(attributes.onload=window[callbackName]);loadScript(scriptSrc,attributes)}function handleCaptchaProvider(element,options,challenge){var captchaClass,widgetId=element.hasAttribute("data-wid")&&element.getAttribute("data-wid");function setValue(value){element.querySelector('input[name="captcha"]').value=value||""}if("friendly_captcha"===challenge.provider&&window.auth0FCInstance)return setValue(),void window.auth0FCInstance.reset();if("arkose"===challenge.provider&&globalForCaptchaProvider(challenge.provider))return setValue(),void globalForCaptchaProvider(challenge.provider).reset();if(widgetId)return setValue(),void globalForCaptchaProvider(challenge.provider).reset(widgetId);switch(element.innerHTML=options.templates[challenge.provider](challenge),challenge.provider){case"recaptcha_enterprise":case"recaptcha_v2":captchaClass=".recaptcha";break;case"hcaptcha":captchaClass=".hcaptcha";break;case"friendly_captcha":captchaClass=".friendly-captcha";break;case"arkose":captchaClass=".arkose";break;case"auth0_v2":captchaClass=".auth0_v2"}var captchaDiv=element.querySelector(captchaClass);injectCaptchaScript(0,{lang:options.lang,provider:challenge.provider,clientSubdomain:challenge.clientSubdomain,siteKey:challenge.siteKey},(function(arkose){var global=globalForCaptchaProvider(challenge.provider);if("arkose"===challenge.provider){var retryCount=0;arkose.setConfig({onCompleted:function(response){setValue(response.token),captchaSolved()},onError:function(){retryCount<3?(setValue(),arkose.reset(),setTimeout((function(){arkose.run()}),500),retryCount++):setValue("BYPASS_CAPTCHA")}})}else if("friendly_captcha"===challenge.provider)window.auth0FCInstance=new global.WidgetInstance(captchaDiv,{sitekey:challenge.siteKey,language:options.lang,doneCallback:function(solution){setValue(solution)},errorCallback:function(){setValue()}});else{var renderParams={callback:setValue,"expired-callback":function(){setValue()},"error-callback":function(){setValue()},sitekey:challenge.siteKey};"auth0_v2"===challenge.provider&&(retryCount=0,renderParams.language=options.lang,renderParams.theme="light",renderParams.retry="never",renderParams["response-field"]=!1,renderParams["error-callback"]=function(){return retryCount<3?(setValue(),globalForCaptchaProvider(challenge.provider).reset(widgetId),retryCount++):setValue("BYPASS_CAPTCHA"),!0}),widgetId=global.render(captchaDiv,renderParams),element.setAttribute("data-wid",widgetId)}}),setValue)}var captcha={render:function(auth0Client,element,options,callback){function load(done){done=done||noop,auth0Client.getChallenge((function(err,challenge){return err?(element.innerHTML=options.templates.error(err),done(err)):challenge.required?(element.style.display="","auth0"===challenge.provider?handleAuth0Provider(element,options,challenge,load):"recaptcha_v2"!==challenge.provider&&"recaptcha_enterprise"!==challenge.provider&&"hcaptcha"!==challenge.provider&&"friendly_captcha"!==challenge.provider&&"arkose"!==challenge.provider&&"auth0_v2"!==challenge.provider||handleCaptchaProvider(element,options,challenge),void("arkose"===challenge.provider?done(null,{triggerCaptcha:function(solvedCallback){globalForCaptchaProvider(challenge.provider).run(),captchaSolved=solvedCallback}}):done())):(element.style.display="none",void(element.innerHTML=""))}))}return options=objectHelper.merge(defaults$2).with(options||{}),load(callback),{reload:load,getValue:function(){var captchaInput=element.querySelector('input[name="captcha"]');if(captchaInput)return captchaInput.value}}},renderPasswordless:function(auth0Client,element,options,callback){function load(done){done=done||noop,auth0Client.passwordless.getChallenge((function(err,challenge){return err?(element.innerHTML=options.templates.error(err),done(err)):challenge.required?(element.style.display="","auth0"===challenge.provider?handleAuth0Provider(element,options,challenge,load):"recaptcha_v2"!==challenge.provider&&"recaptcha_enterprise"!==challenge.provider&&"hcaptcha"!==challenge.provider&&"friendly_captcha"!==challenge.provider&&"arkose"!==challenge.provider&&"auth0_v2"!==challenge.provider||handleCaptchaProvider(element,options,challenge),void("arkose"===challenge.provider?done(null,{triggerCaptcha:function(solvedCallback){globalForCaptchaProvider(challenge.provider).run(),captchaSolved=solvedCallback}}):done())):(element.style.display="none",void(element.innerHTML=""))}))}return options=objectHelper.merge(defaults$2).with(options||{}),load(callback),{reload:load,getValue:function(){var captchaInput=element.querySelector('input[name="captcha"]');if(captchaInput)return captchaInput.value}}}};function defaultClock(){return new Date}function WebAuth(options){assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},clientID:{type:"string",message:"clientID option is required"},responseType:{optional:!0,type:"string",message:"responseType is not valid"},responseMode:{optional:!0,type:"string",message:"responseMode is not valid"},redirectUri:{optional:!0,type:"string",message:"redirectUri is not valid"},scope:{optional:!0,type:"string",message:"scope is not valid"},audience:{optional:!0,type:"string",message:"audience is not valid"},popupOrigin:{optional:!0,type:"string",message:"popupOrigin is not valid"},leeway:{optional:!0,type:"number",message:"leeway is not valid"},plugins:{optional:!0,type:"array",message:"plugins is not valid"},maxAge:{optional:!0,type:"number",message:"maxAge is not valid"},stateExpiration:{optional:!0,type:"number",message:"stateExpiration is not valid"},legacySameSiteCookie:{optional:!0,type:"boolean",message:"legacySameSiteCookie option is not valid"},_disableDeprecationWarnings:{optional:!0,type:"boolean",message:"_disableDeprecationWarnings option is not valid"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"},_timesToRetryFailedRequests:{optional:!0,type:"number",message:"_timesToRetryFailedRequests option is not valid"}}),options.overrides&&assert.check(options.overrides,{type:"object",message:"overrides option is not valid"},{__tenant:{optional:!0,type:"string",message:"__tenant option is required"},__token_issuer:{optional:!0,type:"string",message:"__token_issuer option is required"},__jwks_uri:{optional:!0,type:"string",message:"__jwks_uri is required"}}),this.baseOptions=options,this.baseOptions.plugins=new PluginHandler(this,this.baseOptions.plugins||[]),this.baseOptions._sendTelemetry=!1!==this.baseOptions._sendTelemetry||this.baseOptions._sendTelemetry,this.baseOptions._timesToRetryFailedRequests=options._timesToRetryFailedRequests?parseInt(options._timesToRetryFailedRequests):0,this.baseOptions.tenant=this.baseOptions.overrides&&this.baseOptions.overrides.__tenant||this.baseOptions.domain.split(".")[0],this.baseOptions.token_issuer=this.baseOptions.overrides&&this.baseOptions.overrides.__token_issuer||"https://"+this.baseOptions.domain+"/",this.baseOptions.jwksURI=this.baseOptions.overrides&&this.baseOptions.overrides.__jwks_uri,!1!==options.legacySameSiteCookie&&(this.baseOptions.legacySameSiteCookie=!0),this.transactionManager=new TransactionManager(this.baseOptions),this.client=new Authentication(this.baseOptions),this.redirect=new Redirect(this,this.baseOptions),this.popup=new Popup(this,this.baseOptions),this.crossOriginAuthentication=new CrossOriginAuthentication(this,this.baseOptions),this.webMessageHandler=new WebMessageHandler(this),this._universalLogin=new HostedPages(this,this.baseOptions),this.ssodataStorage=new SSODataStorage(this.baseOptions)}function PasswordlessAuthentication(request,options){this.baseOptions=options,this.request=request}function DBConnection(request,options){this.baseOptions=options,this.request=request}function Authentication(auth0,options){2===arguments.length?this.auth0=auth0:options=auth0,assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},clientID:{type:"string",message:"clientID option is required"},responseType:{optional:!0,type:"string",message:"responseType is not valid"},responseMode:{optional:!0,type:"string",message:"responseMode is not valid"},redirectUri:{optional:!0,type:"string",message:"redirectUri is not valid"},scope:{optional:!0,type:"string",message:"scope is not valid"},audience:{optional:!0,type:"string",message:"audience is not valid"},_disableDeprecationWarnings:{optional:!0,type:"boolean",message:"_disableDeprecationWarnings option is not valid"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"}}),this.baseOptions=options,this.baseOptions._sendTelemetry=!1!==this.baseOptions._sendTelemetry||this.baseOptions._sendTelemetry,this.baseOptions.rootUrl=this.baseOptions.domain&&0===this.baseOptions.domain.toLowerCase().indexOf("http")?this.baseOptions.domain:"https://"+this.baseOptions.domain,this.request=new RequestBuilder(this.baseOptions),this.passwordless=new PasswordlessAuthentication(this.request,this.baseOptions),this.dbConnection=new DBConnection(this.request,this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings}),this.ssodataStorage=new SSODataStorage(this.baseOptions)}function Management(options){assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},token:{type:"string",message:"token option is required"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"}}),this.baseOptions=options,this.baseOptions.headers={Authorization:"Bearer "+this.baseOptions.token},this.request=new RequestBuilder(this.baseOptions),this.baseOptions.rootUrl=urlJoin("https://"+this.baseOptions.domain,"api","v2")}WebAuth.prototype.parseHash=function(options,cb){var parsedQs,err;cb||"function"!=typeof options?options=options||{}:(cb=options,options={});var hashStr=void 0===options.hash?windowHelper.getWindow().location.hash:options.hash;if(hashStr=hashStr.replace(/^#?\/?/,""),(parsedQs=lib.parse(hashStr)).hasOwnProperty("error"))return err=error.buildResponse(parsedQs.error,parsedQs.error_description),parsedQs.state&&(err.state=parsedQs.state),cb(err);if(!parsedQs.hasOwnProperty("access_token")&&!parsedQs.hasOwnProperty("id_token")&&!parsedQs.hasOwnProperty("refresh_token"))return cb(null,null);var responseTypes=(this.baseOptions.responseType||options.responseType||"").split(" ");return responseTypes.length>0&&-1!==responseTypes.indexOf("token")&&!parsedQs.hasOwnProperty("access_token")?cb(error.buildResponse("invalid_hash","response_type contains `token`, but the parsed hash does not contain an `access_token` property")):responseTypes.length>0&&-1!==responseTypes.indexOf("id_token")&&!parsedQs.hasOwnProperty("id_token")?cb(error.buildResponse("invalid_hash","response_type contains `id_token`, but the parsed hash does not contain an `id_token` property")):this.validateAuthenticationResponse(options,parsedQs,cb)},WebAuth.prototype.validateAuthenticationResponse=function(options,parsedHash,cb){var _this=this;options.__enableIdPInitiatedLogin=options.__enableIdPInitiatedLogin||options.__enableImpersonation;var state=parsedHash.state,transaction=this.transactionManager.getStoredTransaction(state),transactionState=options.state||transaction&&transaction.state||null,transactionStateMatchesState=transactionState===state;if(!(!state&&!transactionState&&options.__enableIdPInitiatedLogin)&&!transactionStateMatchesState)return cb({error:"invalid_token",errorDescription:"`state` does not match."});var transactionNonce=options.nonce||transaction&&transaction.nonce||null,transactionOrganization=transaction&&transaction.organization,appState=options.state||transaction&&transaction.appState||null,callback=function(err,payload){if(err)return cb(err);var sub;transaction&&transaction.lastUsedConnection&&(payload&&(sub=payload.sub),_this.ssodataStorage.set(transaction.lastUsedConnection,sub));return cb(null,function(qsParams,appState,token){return{accessToken:qsParams.access_token||null,idToken:qsParams.id_token||null,idTokenPayload:token||null,appState:appState||null,refreshToken:qsParams.refresh_token||null,state:qsParams.state||null,expiresIn:qsParams.expires_in?parseInt(qsParams.expires_in,10):null,tokenType:qsParams.token_type||null,scope:qsParams.scope||null}}(parsedHash,appState,payload))};return parsedHash.id_token?this.validateToken(parsedHash.id_token,transactionNonce,(function(validationError,payload){if(!validationError){if(transactionOrganization)if(0===transactionOrganization.indexOf("org_")){if(!payload.org_id)return callback(error.invalidToken("Organization Id (org_id) claim must be a string present in the ID token"));if(payload.org_id!==transactionOrganization)return callback(error.invalidToken('Organization Id (org_id) claim value mismatch in the ID token; expected "'+transactionOrganization+'", found "'+payload.org_id+'"'))}else{if(!payload.org_name)return callback(error.invalidToken("Organization Name (org_name) claim must be a string present in the ID token"));if(payload.org_name!==transactionOrganization.toLowerCase())return callback(error.invalidToken('Organization Name (org_name) claim value mismatch in the ID token; expected "'+transactionOrganization+'", found "'+payload.org_name+'"'))}return parsedHash.access_token&&payload.at_hash?(new M).validateAccessToken(parsedHash.access_token,"RS256",payload.at_hash,(function(err){return err?callback(error.invalidToken(err.message)):callback(null,payload)})):callback(null,payload)}if("invalid_token"!==validationError.error||validationError.errorDescription&&validationError.errorDescription.indexOf("Nonce (nonce) claim value mismatch in the ID token")>-1)return callback(validationError);var decodedToken=(new M).decode(parsedHash.id_token);if("HS256"!==decodedToken.header.alg)return callback(validationError);if((decodedToken.payload.nonce||null)!==transactionNonce)return callback({error:"invalid_token",errorDescription:'Nonce (nonce) claim value mismatch in the ID token; expected "'+transactionNonce+'", found "'+decodedToken.payload.nonce+'"'});if(!parsedHash.access_token){return callback({error:"invalid_token",description:"The id_token cannot be validated because it was signed with the HS256 algorithm and public clients (like a browser) can’t store secrets. Please read the associated doc for possible ways to fix this. Read more: https://auth0.com/docs/errors/libraries/auth0-js/invalid-token#parsing-an-hs256-signed-id-token-without-an-access-token"})}return _this.client.userInfo(parsedHash.access_token,(function(errUserInfo,profile){return errUserInfo?callback(errUserInfo):callback(null,profile)}))})):callback(null,null)},WebAuth.prototype.validateToken=function(token,nonce,cb){new M({issuer:this.baseOptions.token_issuer,jwksURI:this.baseOptions.jwksURI,audience:this.baseOptions.clientID,leeway:this.baseOptions.leeway||60,maxAge:this.baseOptions.maxAge,__clock:this.baseOptions.__clock||defaultClock}).verify(token,nonce,(function(err,payload){if(err)return cb(error.invalidToken(err.message));cb(null,payload)}))},WebAuth.prototype.renewAuth=function(options,cb){var usePostMessage=!!options.usePostMessage,postMessageDataType=options.postMessageDataType||!1,postMessageOrigin=options.postMessageOrigin||windowHelper.getWindow().origin,timeout=options.timeout,_this=this,params=objectHelper.merge(this.baseOptions,["clientID","redirectUri","responseType","scope","audience","_csrf","state","_intstate","nonce"]).with(options);params.responseType=params.responseType||"token",params.responseMode=params.responseMode||"fragment",params=this.transactionManager.process(params),assert.check(params,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),params.prompt="none",params=objectHelper.blacklist(params,["usePostMessage","tenant","postMessageDataType","postMessageOrigin"]),SilentAuthenticationHandler.create({authenticationUrl:this.client.buildAuthorizeUrl(params),postMessageDataType:postMessageDataType,postMessageOrigin:postMessageOrigin,timeout:timeout}).login(usePostMessage,(function(err,hash){if("object"==typeof hash)return cb(err,hash);_this.parseHash({hash:hash},cb)}))},WebAuth.prototype.checkSession=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(options);return"code"===params.responseType?cb({error:"error",error_description:"responseType can't be `code`"}):(options.nonce||(params=this.transactionManager.process(params)),params.redirectUri?(assert.check(params,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),params=objectHelper.blacklist(params,["usePostMessage","tenant","postMessageDataType"]),void this.webMessageHandler.run(params,wrapCallback(cb,{forceLegacyError:!0,ignoreCasing:!0}))):cb({error:"error",error_description:"redirectUri can't be empty"}))},WebAuth.prototype.changePassword=function(options,cb){return this.client.dbConnection.changePassword(options,cb)},WebAuth.prototype.passwordlessStart=function(options,cb){var authParams=objectHelper.merge(this.baseOptions,["responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(options.authParams);return options.authParams=this.transactionManager.process(authParams),this.client.passwordless.start(options,cb)},WebAuth.prototype.signup=function(options,cb){return this.client.dbConnection.signup(options,cb)},WebAuth.prototype.authorize=function(options){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce","organization","invitation"]).with(options);assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),(params=this.transactionManager.process(params)).scope=params.scope||"openid profile email",windowHelper.redirect(this.client.buildAuthorizeUrl(params))},WebAuth.prototype.signupAndAuthorize=function(options,cb){var _this=this;return this.client.dbConnection.signup(objectHelper.blacklist(options,["popupHandler"]),(function(err){if(err)return cb(err);options.realm=options.connection,options.username||(options.username=options.email),_this.client.login(options,cb)}))},WebAuth.prototype.login=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting","organization","invitation"]).with(options);params=this.transactionManager.process(params),windowHelper.getWindow().location.host===this.baseOptions.domain?(params.connection=params.realm,delete params.realm,this._universalLogin.login(params,cb)):this.crossOriginAuthentication.login(params,cb)},WebAuth.prototype.passwordlessLogin=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting"]).with(options);if(params=this.transactionManager.process(params),windowHelper.getWindow().location.host===this.baseOptions.domain)this.passwordlessVerify(params,cb);else{var crossOriginOptions=objectHelper.extend({credentialType:"http://auth0.com/oauth/grant-type/passwordless/otp",realm:params.connection,username:params.email||params.phoneNumber,otp:params.verificationCode},objectHelper.blacklist(params,["connection","email","phoneNumber","verificationCode"]));this.crossOriginAuthentication.login(crossOriginOptions,cb)}},WebAuth.prototype.crossOriginAuthenticationCallback=function(){this.crossOriginVerification()},WebAuth.prototype.crossOriginVerification=function(){this.crossOriginAuthentication.callback()},WebAuth.prototype.logout=function(options){windowHelper.redirect(this.client.buildLogoutUrl(options))},WebAuth.prototype.passwordlessVerify=function(options,cb){var _this=this,params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting"]).with(options);return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),params=this.transactionManager.process(params),this.client.passwordless.verify(params,(function(err){if(err)return cb(err);function doAuth(){windowHelper.redirect(_this.client.passwordless.buildVerifyUrl(params))}if("function"==typeof options.onRedirecting)return options.onRedirecting((function(){doAuth()}));doAuth()}))},WebAuth.prototype.renderCaptcha=function(element,options,callback){return captcha.render(this.client,element,options,callback)},WebAuth.prototype.renderPasswordlessCaptcha=function(element,options,callback){return captcha.renderPasswordless(this.client,element,options,callback)},PasswordlessAuthentication.prototype.buildVerifyUrl=function(options){var params,qString;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},verificationCode:{type:"string",message:"verificationCode option is required"},phoneNumber:{optional:!1,type:"string",message:"phoneNumber option is required",condition:function(o){return!o.email}},email:{optional:!1,type:"string",message:"email option is required",condition:function(o){return!o.phoneNumber}}}),params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","protocol","nonce"]).with(options),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params=objectHelper.toSnakeCase(params,["auth0Client"]),qString=lib.stringify(params),urlJoin(this.baseOptions.rootUrl,"passwordless","verify_redirect","?"+qString)},PasswordlessAuthentication.prototype.start=function(options,cb){var url,body;assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},send:{type:"string",message:"send option is required",values:["link","code"],value_message:"send is not valid ([link, code])"},phoneNumber:{optional:!0,type:"string",message:"phoneNumber option is required",condition:function(o){return"code"===o.send||!o.email}},email:{optional:!0,type:"string",message:"email option is required",condition:function(o){return"link"===o.send||!o.phoneNumber}},authParams:{optional:!0,type:"object",message:"authParams option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"passwordless","start");var xRequestLanguage=options.xRequestLanguage;delete options.xRequestLanguage,(body=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope"]).with(options)).scope&&(body.authParams=body.authParams||{},body.authParams.scope=body.authParams.scope||body.scope),body.redirectUri&&(body.authParams=body.authParams||{},body.authParams.redirect_uri=body.authParams.redirectUri||body.redirectUri),body.responseType&&(body.authParams=body.authParams||{},body.authParams.response_type=body.authParams.responseType||body.responseType),delete body.redirectUri,delete body.responseType,delete body.scope,body=objectHelper.toSnakeCase(body,["auth0Client","authParams"]);var postOptions=xRequestLanguage?{xRequestLanguage:xRequestLanguage}:void 0;return this.request.post(url,postOptions).send(body).end(wrapCallback(cb))},PasswordlessAuthentication.prototype.verify=function(options,cb){var url,cleanOption;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},verificationCode:{type:"string",message:"verificationCode option is required"},phoneNumber:{optional:!1,type:"string",message:"phoneNumber option is required",condition:function(o){return!o.email}},email:{optional:!1,type:"string",message:"email option is required",condition:function(o){return!o.phoneNumber}}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),cleanOption=objectHelper.pick(options,["connection","verificationCode","phoneNumber","email","auth0Client","clientID"]),cleanOption=objectHelper.toSnakeCase(cleanOption,["auth0Client"]),url=urlJoin(this.baseOptions.rootUrl,"passwordless","verify"),this.request.post(url).send(cleanOption).end(wrapCallback(cb))},PasswordlessAuthentication.prototype.getChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"passwordless","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},DBConnection.prototype.signup=function(options,cb){var url,body,metadata;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},email:{type:"string",message:"email option is required"},password:{type:"string",message:"password option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"dbconnections","signup"),metadata=(body=objectHelper.merge(this.baseOptions,["clientID","state"]).with(options)).user_metadata||body.userMetadata,body=objectHelper.blacklist(body,["scope","userMetadata","user_metadata"]),body=objectHelper.toSnakeCase(body,["auth0Client"]),metadata&&(body.user_metadata=metadata),this.request.post(url).send(body).end(wrapCallback(cb))},DBConnection.prototype.changePassword=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},email:{type:"string",message:"email option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"dbconnections","change_password"),body=objectHelper.merge(this.baseOptions,["clientID","state"]).with(options,["email","connection","captcha"]),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},DBConnection.prototype.getChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"dbconnections","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.buildAuthorizeUrl=function(options){var params,qString;return assert.check(options,{type:"object",message:"options parameter is not valid"}),params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience"]).with(options),assert.check(params,{type:"object",message:"options parameter is not valid"},{clientID:{type:"string",message:"clientID option is required"},redirectUri:{optional:!0,type:"string",message:"redirectUri option is required"},responseType:{type:"string",message:"responseType option is required"},nonce:{type:"string",message:"nonce option is required",condition:function(o){return-1===o.responseType.indexOf("code")&&-1!==o.responseType.indexOf("id_token")}},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params.connection_scope&&assert.isArray(params.connection_scope)&&(params.connection_scope=params.connection_scope.join(",")),params=objectHelper.blacklist(params,["username","popupOptions","domain","tenant","timeout","appState"]),params=objectHelper.toSnakeCase(params,["auth0Client"]),params=parametersWhitelist.oauthAuthorizeParams(this.warn,params),qString=lib.stringify(params),urlJoin(this.baseOptions.rootUrl,"authorize","?"+qString)},Authentication.prototype.buildLogoutUrl=function(options){var params,qString;return assert.check(options,{optional:!0,type:"object",message:"options parameter is not valid"}),params=objectHelper.merge(this.baseOptions,["clientID"]).with(options||{}),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params=objectHelper.toSnakeCase(params,["auth0Client","returnTo"]),qString=lib.stringify(objectHelper.blacklist(params,["federated"])),options&&void 0!==options.federated&&!1!==options.federated&&"false"!==options.federated&&(qString+="&federated"),urlJoin(this.baseOptions.rootUrl,"v2","logout","?"+qString)},Authentication.prototype.loginWithDefaultDirectory=function(options,cb){return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),options.grantType="password",this.oauthToken(options,cb)},Authentication.prototype.login=function(options,cb){return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},realm:{type:"string",message:"realm option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),options.grantType="http://auth0.com/oauth/grant-type/password-realm",this.oauthToken(options,cb)},Authentication.prototype.oauthToken=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"oauth","token"),body=objectHelper.merge(this.baseOptions,["clientID","scope","audience"]).with(options),assert.check(body,{type:"object",message:"options parameter is not valid"},{clientID:{type:"string",message:"clientID option is required"},grantType:{type:"string",message:"grantType option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),body=objectHelper.toSnakeCase(body,["auth0Client"]),body=parametersWhitelist.oauthTokenParams(this.warn,body),this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.loginWithResourceOwner=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},connection:{type:"string",message:"connection option is required"},scope:{optional:!0,type:"string",message:"scope option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"oauth","ro"),body=objectHelper.merge(this.baseOptions,["clientID","scope"]).with(options,["username","password","scope","connection","device"]),(body=objectHelper.toSnakeCase(body,["auth0Client"])).grant_type=body.grant_type||"password",this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.getSSOData=function(withActiveDirectories,cb){if(this.auth0||(this.auth0=new WebAuth(this.baseOptions)),windowHelper.getWindow().location.host===this.baseOptions.domain)return this.auth0._universalLogin.getSSOData(withActiveDirectories,cb);"function"==typeof withActiveDirectories&&(cb=withActiveDirectories),assert.check(cb,{type:"function",message:"cb parameter is not valid"});var clientId=this.baseOptions.clientID,ssodataInformation=this.ssodataStorage.get()||{};this.auth0.checkSession({responseType:"token id_token",scope:"openid profile email",connection:ssodataInformation.lastUsedConnection,timeout:5e3},(function(err,result){return err?"login_required"===err.error?cb(null,{sso:!1}):("consent_required"===err.error&&(err.error_description="Consent required. When using `getSSOData`, the user has to be authenticated with the following scope: `openid profile email`."),cb(err,{sso:!1})):ssodataInformation.lastUsedSub&&ssodataInformation.lastUsedSub!==result.idTokenPayload.sub?cb(err,{sso:!1}):cb(null,{lastUsedConnection:{name:ssodataInformation.lastUsedConnection},lastUsedUserID:result.idTokenPayload.sub,lastUsedUsername:result.idTokenPayload.email||result.idTokenPayload.name,lastUsedClientID:clientId,sessionClients:[clientId],sso:!0})}))},Authentication.prototype.userInfo=function(accessToken,cb){var url;return assert.check(accessToken,{type:"string",message:"accessToken parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"userinfo"),this.request.get(url).set("Authorization","Bearer "+accessToken).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.getChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"usernamepassword","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.delegation=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{grant_type:{type:"string",message:"grant_type option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"delegation"),body=objectHelper.merge(this.baseOptions,["clientID"]).with(options),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.getUserCountry=function(cb){var url;return assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"user","geoloc","country"),this.request.get(url).end(wrapCallback(cb))},Management.prototype.getUser=function(userId,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.get(url).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.patchUserMetadata=function(userId,userMetadata,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(userMetadata,{type:"object",message:"userMetadata parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.patch(url).send({user_metadata:userMetadata}).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.patchUserAttributes=function(userId,user,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(user,{type:"object",message:"user parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.patch(url).send(user).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.linkUser=function(userId,secondaryUserToken,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(secondaryUserToken,{type:"string",message:"secondaryUserToken parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId,"identities"),this.request.post(url).send({link_with:secondaryUserToken}).end(wrapCallback(cb,{ignoreCasing:!0}))};var index={Authentication:Authentication,Management:Management,WebAuth:WebAuth,version:version};export default index;export{Authentication,Management,WebAuth,version}; +var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(fn,module){return fn(module={exports:{}},module.exports),module.exports}var urlJoin=createCommonjsModule((function(module){var context,definition;context=commonjsGlobal,definition=function(){function normalize(strArray){var resultArray=[];if(0===strArray.length)return"";if("string"!=typeof strArray[0])throw new TypeError("Url must be a string. Received "+strArray[0]);if(strArray[0].match(/^[^/:]+:\/*$/)&&strArray.length>1){var first=strArray.shift();strArray[0]=first+strArray[0]}strArray[0].match(/^file:\/\/\//)?strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1:///"):strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(component=component.replace(/^[\/]+/,"")),component=i0?"?":"")+parts.join("&")}return function(){return normalize("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},module.exports?module.exports=definition():context.urljoin=definition()})),origSymbol="undefined"!=typeof Symbol&&Symbol,test={foo:{}},$Object=Object,ERROR_MESSAGE="Function.prototype.bind called on incompatible ",toStr=Object.prototype.toString,max=Math.max,concatty=function(a,b){for(var arr=[],i=0;i1&&"boolean"!=typeof allowMissing)throw new $TypeError('"allowMissing" argument must be a boolean');if(null===$exec(/^%?[^%]*%?$/,name))throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var parts=stringToPath(name),intrinsicBaseName=parts.length>0?parts[0]:"",intrinsic=getBaseIntrinsic("%"+intrinsicBaseName+"%",allowMissing),intrinsicRealName=intrinsic.name,value=intrinsic.value,skipFurtherCaching=!1,alias=intrinsic.alias;alias&&(intrinsicBaseName=alias[0],$spliceApply(parts,$concat([0,1],alias)));for(var i=1,isOwn=!0;i=parts.length){var desc=$gOPD(value,part);value=(isOwn=!!desc)&&"get"in desc&&!("originalValue"in desc.get)?desc.get:value[part]}else isOwn=src(value,part),value=value[part];isOwn&&!skipFurtherCaching&&(INTRINSICS[intrinsicRealName]=value)}}return value},callBind=createCommonjsModule((function(module){var $apply=getIntrinsic("%Function.prototype.apply%"),$call=getIntrinsic("%Function.prototype.call%"),$reflectApply=getIntrinsic("%Reflect.apply%",!0)||functionBind.call($call,$apply),$gOPD=getIntrinsic("%Object.getOwnPropertyDescriptor%",!0),$defineProperty=getIntrinsic("%Object.defineProperty%",!0),$max=getIntrinsic("%Math.max%");if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=null}module.exports=function(originalFunction){var func=$reflectApply(functionBind,$call,arguments);if($gOPD&&$defineProperty){var desc=$gOPD(func,"length");desc.configurable&&$defineProperty(func,"length",{value:1+$max(0,originalFunction.length-(arguments.length-1))})}return func};var applyBind=function(){return $reflectApply(functionBind,$apply,arguments)};$defineProperty?$defineProperty(module.exports,"apply",{value:applyBind}):module.exports.apply=applyBind})),$indexOf=(callBind.apply,callBind(getIntrinsic("String.prototype.indexOf"))),callBound=function(name,allowMissing){var intrinsic=getIntrinsic(name,!!allowMissing);return"function"==typeof intrinsic&&$indexOf(name,".prototype.")>-1?callBind(intrinsic):intrinsic},semver=function(n){return n&&n.default||n}(Object.freeze({__proto__:null,default:{}})),hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,weakMapHas="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,weakSetHas="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,weakRefDeref="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,$match=String.prototype.match,$slice=String.prototype.slice,$replace$1=String.prototype.replace,$toUpperCase=String.prototype.toUpperCase,$toLowerCase=String.prototype.toLowerCase,$test=RegExp.prototype.test,$concat$1=Array.prototype.concat,$join=Array.prototype.join,$arrSlice=Array.prototype.slice,$floor=Math.floor,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,toStringTag="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===hasShammedSymbols||"symbol")?Symbol.toStringTag:null,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(O){return O.__proto__}:null);function addNumericSeparator(num,str){if(num===1/0||num===-1/0||num!=num||num&&num>-1e3&&num<1e3||$test.call(/e/,str))return str;var sepRegex=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof num){var int=num<0?-$floor(-num):$floor(num);if(int!==num){var intStr=String(int),dec=$slice.call(str,intStr.length+1);return $replace$1.call(intStr,sepRegex,"$&_")+"."+$replace$1.call($replace$1.call(dec,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace$1.call(str,sepRegex,"$&_")}var inspectCustom=semver.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null,objectInspect=function inspect_(obj,options,depth,seen){var opts=options||{};if(has(opts,"quoteStyle")&&"single"!==opts.quoteStyle&&"double"!==opts.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(opts,"maxStringLength")&&("number"==typeof opts.maxStringLength?opts.maxStringLength<0&&opts.maxStringLength!==1/0:null!==opts.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var customInspect=!has(opts,"customInspect")||opts.customInspect;if("boolean"!=typeof customInspect&&"symbol"!==customInspect)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(opts,"indent")&&null!==opts.indent&&"\t"!==opts.indent&&!(parseInt(opts.indent,10)===opts.indent&&opts.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(opts,"numericSeparator")&&"boolean"!=typeof opts.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var numericSeparator=opts.numericSeparator;if(void 0===obj)return"undefined";if(null===obj)return"null";if("boolean"==typeof obj)return obj?"true":"false";if("string"==typeof obj)return function inspectString(str,opts){if(str.length>opts.maxStringLength){var remaining=str.length-opts.maxStringLength,trailer="... "+remaining+" more character"+(remaining>1?"s":"");return inspectString($slice.call(str,0,opts.maxStringLength),opts)+trailer}return wrapQuotes($replace$1.call($replace$1.call(str,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",opts)}(obj,opts);if("number"==typeof obj){if(0===obj)return 1/0/obj>0?"0":"-0";var str=String(obj);return numericSeparator?addNumericSeparator(obj,str):str}if("bigint"==typeof obj){var bigIntStr=String(obj)+"n";return numericSeparator?addNumericSeparator(obj,bigIntStr):bigIntStr}var maxDepth=void 0===opts.depth?5:opts.depth;if(void 0===depth&&(depth=0),depth>=maxDepth&&maxDepth>0&&"object"==typeof obj)return isArray(obj)?"[Array]":"[Object]";var indent=function(opts,depth){var baseIndent;if("\t"===opts.indent)baseIndent="\t";else{if(!("number"==typeof opts.indent&&opts.indent>0))return null;baseIndent=$join.call(Array(opts.indent+1)," ")}return{base:baseIndent,prev:$join.call(Array(depth+1),baseIndent)}}(opts,depth);if(void 0===seen)seen=[];else if(indexOf(seen,obj)>=0)return"[Circular]";function inspect(value,from,noIndent){if(from&&(seen=$arrSlice.call(seen)).push(from),noIndent){var newOpts={depth:opts.depth};return has(opts,"quoteStyle")&&(newOpts.quoteStyle=opts.quoteStyle),inspect_(value,newOpts,depth+1,seen)}return inspect_(value,opts,depth+1,seen)}if("function"==typeof obj&&!isRegExp(obj)){var name=function(f){if(f.name)return f.name;var m=$match.call(functionToString.call(f),/^function\s*([\w$]+)/);if(m)return m[1];return null}(obj),keys=arrObjKeys(obj,inspect);return"[Function"+(name?": "+name:" (anonymous)")+"]"+(keys.length>0?" { "+$join.call(keys,", ")+" }":"")}if(isSymbol(obj)){var symString=hasShammedSymbols?$replace$1.call(String(obj),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(obj);return"object"!=typeof obj||hasShammedSymbols?symString:markBoxed(symString)}if(function(x){if(!x||"object"!=typeof x)return!1;if("undefined"!=typeof HTMLElement&&x instanceof HTMLElement)return!0;return"string"==typeof x.nodeName&&"function"==typeof x.getAttribute}(obj)){for(var s="<"+$toLowerCase.call(String(obj.nodeName)),attrs=obj.attributes||[],i=0;i"}if(isArray(obj)){if(0===obj.length)return"[]";var xs=arrObjKeys(obj,inspect);return indent&&!function(xs){for(var i=0;i=0)return!1;return!0}(xs)?"["+indentedJoin(xs,indent)+"]":"[ "+$join.call(xs,", ")+" ]"}if(function(obj){return!("[object Error]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)){var parts=arrObjKeys(obj,inspect);return"cause"in Error.prototype||!("cause"in obj)||isEnumerable.call(obj,"cause")?0===parts.length?"["+String(obj)+"]":"{ ["+String(obj)+"] "+$join.call(parts,", ")+" }":"{ ["+String(obj)+"] "+$join.call($concat$1.call("[cause]: "+inspect(obj.cause),parts),", ")+" }"}if("object"==typeof obj&&customInspect){if(inspectSymbol&&"function"==typeof obj[inspectSymbol]&&semver)return semver(obj,{depth:maxDepth-depth});if("symbol"!==customInspect&&"function"==typeof obj.inspect)return obj.inspect()}if(function(x){if(!mapSize||!x||"object"!=typeof x)return!1;try{mapSize.call(x);try{setSize.call(x)}catch(s){return!0}return x instanceof Map}catch(e){}return!1}(obj)){var mapParts=[];return mapForEach&&mapForEach.call(obj,(function(value,key){mapParts.push(inspect(key,obj,!0)+" => "+inspect(value,obj))})),collectionOf("Map",mapSize.call(obj),mapParts,indent)}if(function(x){if(!setSize||!x||"object"!=typeof x)return!1;try{setSize.call(x);try{mapSize.call(x)}catch(m){return!0}return x instanceof Set}catch(e){}return!1}(obj)){var setParts=[];return setForEach&&setForEach.call(obj,(function(value){setParts.push(inspect(value,obj))})),collectionOf("Set",setSize.call(obj),setParts,indent)}if(function(x){if(!weakMapHas||!x||"object"!=typeof x)return!1;try{weakMapHas.call(x,weakMapHas);try{weakSetHas.call(x,weakSetHas)}catch(s){return!0}return x instanceof WeakMap}catch(e){}return!1}(obj))return weakCollectionOf("WeakMap");if(function(x){if(!weakSetHas||!x||"object"!=typeof x)return!1;try{weakSetHas.call(x,weakSetHas);try{weakMapHas.call(x,weakMapHas)}catch(s){return!0}return x instanceof WeakSet}catch(e){}return!1}(obj))return weakCollectionOf("WeakSet");if(function(x){if(!weakRefDeref||!x||"object"!=typeof x)return!1;try{return weakRefDeref.call(x),!0}catch(e){}return!1}(obj))return weakCollectionOf("WeakRef");if(function(obj){return!("[object Number]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(Number(obj)));if(function(obj){if(!obj||"object"!=typeof obj||!bigIntValueOf)return!1;try{return bigIntValueOf.call(obj),!0}catch(e){}return!1}(obj))return markBoxed(inspect(bigIntValueOf.call(obj)));if(function(obj){return!("[object Boolean]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(booleanValueOf.call(obj));if(function(obj){return!("[object String]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(String(obj)));if(!function(obj){return!("[object Date]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)&&!isRegExp(obj)){var ys=arrObjKeys(obj,inspect),isPlainObject=gPO?gPO(obj)===Object.prototype:obj instanceof Object||obj.constructor===Object,protoTag=obj instanceof Object?"":"null prototype",stringTag=!isPlainObject&&toStringTag&&Object(obj)===obj&&toStringTag in obj?$slice.call(toStr$1(obj),8,-1):protoTag?"Object":"",tag=(isPlainObject||"function"!=typeof obj.constructor?"":obj.constructor.name?obj.constructor.name+" ":"")+(stringTag||protoTag?"["+$join.call($concat$1.call([],stringTag||[],protoTag||[]),": ")+"] ":"");return 0===ys.length?tag+"{}":indent?tag+"{"+indentedJoin(ys,indent)+"}":tag+"{ "+$join.call(ys,", ")+" }"}return String(obj)};function wrapQuotes(s,defaultStyle,opts){var quoteChar="double"===(opts.quoteStyle||defaultStyle)?'"':"'";return quoteChar+s+quoteChar}function quote(s){return $replace$1.call(String(s),/"/g,""")}function isArray(obj){return!("[object Array]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isRegExp(obj){return!("[object RegExp]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isSymbol(obj){if(hasShammedSymbols)return obj&&"object"==typeof obj&&obj instanceof Symbol;if("symbol"==typeof obj)return!0;if(!obj||"object"!=typeof obj||!symToString)return!1;try{return symToString.call(obj),!0}catch(e){}return!1}var hasOwn=Object.prototype.hasOwnProperty||function(key){return key in this};function has(obj,key){return hasOwn.call(obj,key)}function toStr$1(obj){return objectToString.call(obj)}function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0,l=xs.length;i1;){var item=queue.pop(),obj=item.obj[item.prop];if(isArray$1(obj)){for(var compacted=[],j=0;j=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||format===formats.RFC1738&&(40===c||41===c)?out+=string.charAt(i):c<128?out+=hexTable[c]:c<2048?out+=hexTable[192|c>>6]+hexTable[128|63&c]:c<55296||c>=57344?out+=hexTable[224|c>>12]+hexTable[128|c>>6&63]+hexTable[128|63&c]:(i+=1,c=65536+((1023&c)<<10|1023&string.charCodeAt(i)),out+=hexTable[240|c>>18]+hexTable[128|c>>12&63]+hexTable[128|c>>6&63]+hexTable[128|63&c])}return out},isBuffer:function(obj){return!(!obj||"object"!=typeof obj)&&!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj))},isRegExp:function(obj){return"[object RegExp]"===Object.prototype.toString.call(obj)},maybeMap:function(val,fn){if(isArray$1(val)){for(var mapped=[],i=0;i0?obj.join(",")||null:void 0}];else if(isArray$2(filter))objKeys=filter;else{var keys=Object.keys(obj);objKeys=sort?keys.sort(sort):keys}for(var adjustedPrefix=commaRoundTrip&&isArray$2(obj)&&1===obj.length?prefix+"[]":prefix,j=0;j-1?val.split(","):val},parseKeys=function(givenKey,val,options,valuesParsed){if(givenKey){var key=options.allowDots?givenKey.replace(/\.([^.[]+)/g,"[$1]"):givenKey,child=/(\[[^[\]]*])/g,segment=options.depth>0&&/(\[[^[\]]*])/.exec(key),parent=segment?key.slice(0,segment.index):key,keys=[];if(parent){if(!options.plainObjects&&has$3.call(Object.prototype,parent)&&!options.allowPrototypes)return;keys.push(parent)}for(var i=0;options.depth>0&&null!==(segment=child.exec(key))&&i=0;--i){var obj,root=chain[i];if("[]"===root&&options.parseArrays)obj=[].concat(leaf);else{obj=options.plainObjects?Object.create(null):{};var cleanRoot="["===root.charAt(0)&&"]"===root.charAt(root.length-1)?root.slice(1,-1):root,index=parseInt(cleanRoot,10);options.parseArrays||""!==cleanRoot?!isNaN(index)&&root!==cleanRoot&&String(index)===cleanRoot&&index>=0&&options.parseArrays&&index<=options.arrayLimit?(obj=[])[index]=leaf:"__proto__"!==cleanRoot&&(obj[cleanRoot]=leaf):obj={0:leaf}}leaf=obj}return leaf}(keys,val,options,valuesParsed)}},lib={formats:formats,parse:function(str,opts){var options=function(opts){if(!opts)return defaults$1;if(null!==opts.decoder&&void 0!==opts.decoder&&"function"!=typeof opts.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==opts.charset&&"utf-8"!==opts.charset&&"iso-8859-1"!==opts.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var charset=void 0===opts.charset?defaults$1.charset:opts.charset;return{allowDots:void 0===opts.allowDots?defaults$1.allowDots:!!opts.allowDots,allowPrototypes:"boolean"==typeof opts.allowPrototypes?opts.allowPrototypes:defaults$1.allowPrototypes,allowSparse:"boolean"==typeof opts.allowSparse?opts.allowSparse:defaults$1.allowSparse,arrayLimit:"number"==typeof opts.arrayLimit?opts.arrayLimit:defaults$1.arrayLimit,charset:charset,charsetSentinel:"boolean"==typeof opts.charsetSentinel?opts.charsetSentinel:defaults$1.charsetSentinel,comma:"boolean"==typeof opts.comma?opts.comma:defaults$1.comma,decoder:"function"==typeof opts.decoder?opts.decoder:defaults$1.decoder,delimiter:"string"==typeof opts.delimiter||utils.isRegExp(opts.delimiter)?opts.delimiter:defaults$1.delimiter,depth:"number"==typeof opts.depth||!1===opts.depth?+opts.depth:defaults$1.depth,ignoreQueryPrefix:!0===opts.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof opts.interpretNumericEntities?opts.interpretNumericEntities:defaults$1.interpretNumericEntities,parameterLimit:"number"==typeof opts.parameterLimit?opts.parameterLimit:defaults$1.parameterLimit,parseArrays:!1!==opts.parseArrays,plainObjects:"boolean"==typeof opts.plainObjects?opts.plainObjects:defaults$1.plainObjects,strictNullHandling:"boolean"==typeof opts.strictNullHandling?opts.strictNullHandling:defaults$1.strictNullHandling}}(opts);if(""===str||null==str)return options.plainObjects?Object.create(null):{};for(var tempObj="string"==typeof str?function(str,options){var i,obj={__proto__:null},cleanStr=options.ignoreQueryPrefix?str.replace(/^\?/,""):str,limit=options.parameterLimit===1/0?void 0:options.parameterLimit,parts=cleanStr.split(options.delimiter,limit),skipIndex=-1,charset=options.charset;if(options.charsetSentinel)for(i=0;i-1&&(val=isArray$3(val)?[val]:val),has$3.call(obj,key)?obj[key]=utils.combine(obj[key],val):obj[key]=val}return obj}(str,options):str,obj=options.plainObjects?Object.create(null):{},keys=Object.keys(tempObj),i=0;i0?prefix+joined:""}},componentEmitter=createCommonjsModule((function(module){function Emitter(obj){if(obj)return function(obj){for(var key in Emitter.prototype)obj[key]=Emitter.prototype[key];return obj}(obj)}module.exports=Emitter,Emitter.prototype.on=Emitter.prototype.addEventListener=function(event,fn){return this._callbacks=this._callbacks||{},(this._callbacks["$"+event]=this._callbacks["$"+event]||[]).push(fn),this},Emitter.prototype.once=function(event,fn){function on(){this.off(event,on),fn.apply(this,arguments)}return on.fn=fn,this.on(event,on),this},Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(event,fn){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var cb,callbacks=this._callbacks["$"+event];if(!callbacks)return this;if(1==arguments.length)return delete this._callbacks["$"+event],this;for(var i=0;ioptions.depthLimit)return void setReplace("[...]",val,k,parent);if(void 0!==options.edgesLimit&&edgeIndex+1>options.edgesLimit)return void setReplace("[...]",val,k,parent);if(stack.push(val),Array.isArray(val))for(i=0;ib?1:0}function deterministicStringify(obj,replacer,spacer,options){void 0===options&&(options=defaultOptions());var res,tmp=function deterministicDecirc(val,k,edgeIndex,stack,parent,depth,options){var i;if(depth+=1,"object"==typeof val&&null!==val){for(i=0;ioptions.depthLimit)return void setReplace("[...]",val,k,parent);if(void 0!==options.edgesLimit&&edgeIndex+1>options.edgesLimit)return void setReplace("[...]",val,k,parent);if(stack.push(val),Array.isArray(val))for(i=0;i0)for(var i=0;i=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i=this._maxRetries)return!1;if(this._retryCallback)try{var override=this._retryCallback(error,res);if(!0===override)return!0;if(!1===override)return!1}catch(err){console.error(err)}if(res&&res.status&&STATUS_CODES.has(res.status))return!0;if(error){if(error.code&&ERROR_CODES.has(error.code))return!0;if(error.timeout&&"ECONNABORTED"===error.code)return!0;if(error.crossDomain)return!0}return!1},RequestBase.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this.timedoutError=null,this._end()},RequestBase.prototype.then=function(resolve,reject){var _this=this;if(!this._fullfilledPromise){var self=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise((function(resolve,reject){self.on("abort",(function(){if(!(_this._maxRetries&&_this._maxRetries>_this._retries))if(_this.timedout&&_this.timedoutError)reject(_this.timedoutError);else{var error=new Error("Aborted");error.code="ABORTED",error.status=_this.status,error.method=_this.method,error.url=_this.url,reject(error)}})),self.end((function(error,res){error?reject(error):resolve(res)}))}))}return this._fullfilledPromise.then(resolve,reject)},RequestBase.prototype.catch=function(callback){return this.then(void 0,callback)},RequestBase.prototype.use=function(fn){return fn(this),this},RequestBase.prototype.ok=function(callback){if("function"!=typeof callback)throw new Error("Callback required");return this._okCallback=callback,this},RequestBase.prototype._isResponseOK=function(res){return!!res&&(this._okCallback?this._okCallback(res):res.status>=200&&res.status<300)},RequestBase.prototype.get=function(field){return this._header[field.toLowerCase()]},RequestBase.prototype.getHeader=RequestBase.prototype.get,RequestBase.prototype.set=function(field,value){if(isObject(field)){for(var key in field)hasOwn$1(field,key)&&this.set(key,field[key]);return this}return this._header[field.toLowerCase()]=value,this.header[field]=value,this},RequestBase.prototype.unset=function(field){return delete this._header[field.toLowerCase()],delete this.header[field],this},RequestBase.prototype.field=function(name,value,options){if(null==name)throw new Error(".field(name, val) name can not be empty");if(this._data)throw new Error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()");if(isObject(name)){for(var key in name)hasOwn$1(name,key)&&this.field(key,name[key]);return this}if(Array.isArray(value)){for(var i in value)hasOwn$1(value,i)&&this.field(name,value[i]);return this}if(null==value)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof value&&(value=String(value)),options?this._getFormData().append(name,value,options):this._getFormData().append(name,value),this},RequestBase.prototype.abort=function(){if(this._aborted)return this;if(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req){if(semver.gte(process.version,"v13.0.0")&&semver.lt(process.version,"v14.0.0"))throw new Error("Superagent does not work in v13 properly with abort() due to Node.js core changes");semver.gte(process.version,"v14.0.0")&&(this.req.destroyed=!0),this.req.abort()}return this.clearTimeout(),this.emit("abort"),this},RequestBase.prototype._auth=function(user,pass,options,base64Encoder){switch(options.type){case"basic":this.set("Authorization","Basic ".concat(base64Encoder("".concat(user,":").concat(pass))));break;case"auto":this.username=user,this.password=pass;break;case"bearer":this.set("Authorization","Bearer ".concat(user))}return this},RequestBase.prototype.withCredentials=function(on){return void 0===on&&(on=!0),this._withCredentials=on,this},RequestBase.prototype.redirects=function(n){return this._maxRedirects=n,this},RequestBase.prototype.maxResponseSize=function(n){if("number"!=typeof n)throw new TypeError("Invalid argument");return this._maxResponseSize=n,this},RequestBase.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},RequestBase.prototype.send=function(data){var isObject_=isObject(data),type=this._header["content-type"];if(this._formData)throw new Error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()");if(isObject_&&!this._data)Array.isArray(data)?this._data=[]:this._isHost(data)||(this._data={});else if(data&&this._data&&this._isHost(this._data))throw new Error("Can't merge these send calls");if(isObject_&&isObject(this._data))for(var key in data)hasOwn$1(data,key)&&(this._data[key]=data[key]);else"string"==typeof data?(type||this.type("form"),(type=this._header["content-type"])&&(type=type.toLowerCase().trim()),this._data="application/x-www-form-urlencoded"===type?this._data?"".concat(this._data,"&").concat(data):data:(this._data||"")+data):this._data=data;return!isObject_||this._isHost(data)||type||this.type("json"),this},RequestBase.prototype.sortQuery=function(sort){return this._sort=void 0===sort||sort,this},RequestBase.prototype._finalizeQueryString=function(){var query=this._query.join("&");if(query&&(this.url+=(this.url.includes("?")?"&":"?")+query),this._query.length=0,this._sort){var index=this.url.indexOf("?");if(index>=0){var queryArray=this.url.slice(index+1).split("&");"function"==typeof this._sort?queryArray.sort(this._sort):queryArray.sort(),this.url=this.url.slice(0,index)+"?"+queryArray.join("&")}}},RequestBase.prototype._appendQueryString=function(){console.warn("Unsupported")},RequestBase.prototype._timeoutError=function(reason,timeout,errno){if(!this._aborted){var error=new Error("".concat(reason+timeout,"ms exceeded"));error.timeout=timeout,error.code="ECONNABORTED",error.errno=errno,this.timedout=!0,this.timedoutError=error,this.abort(),this.callback(error)}},RequestBase.prototype._setTimeouts=function(){var self=this;this._timeout&&!this._timer&&(this._timer=setTimeout((function(){self._timeoutError("Timeout of ",self._timeout,"ETIME")}),this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout((function(){self._timeoutError("Response timeout of ",self._responseTimeout,"ETIMEDOUT")}),this._responseTimeout))};var responseBase=ResponseBase;function ResponseBase(){}function _toConsumableArray(arr){return function(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr)}(arr)||function(iter){if("undefined"!=typeof Symbol&&null!=iter[Symbol.iterator]||null!=iter["@@iterator"])return Array.from(iter)}(arr)||_unsupportedIterableToArray(arr)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _unsupportedIterableToArray(o,minLen){if(o){if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(o):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(o,minLen):void 0}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}(this._defaults);try{for(_iterator.s();!(_step=_iterator.n()).done;){var def=_step.value;request[def.fn].apply(request,_toConsumableArray(def.args))}}catch(err){_iterator.e(err)}finally{_iterator.f()}};for(var agentBase=Agent,client=createCommonjsModule((function(module,exports){function _typeof(obj){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj})(obj)}function _createForOfIteratorHelper(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(!it){if(Array.isArray(o)||(it=function(o,minLen){if(!o)return;if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);"Object"===n&&o.constructor&&(n=o.constructor.name);if("Map"===n||"Set"===n)return Array.from(o);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}(o))||allowArrayLike&&o&&"number"==typeof o.length){it&&(o=it);var i=0,F=function(){};return{s:F,n:function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i0||string_ instanceof Object)?parse(string_):null)},Response.prototype.toError=function(){var req=this.req,method=req.method,url=req.url,message="cannot ".concat(method," ").concat(url," (").concat(this.status,")"),error=new Error(message);return error.status=this.status,error.method=method,error.url=url,error},request.Response=Response,componentEmitter(Request.prototype),mixin(Request.prototype,requestBase.prototype),Request.prototype.type=function(type){return this.set("Content-Type",request.types[type]||type),this},Request.prototype.accept=function(type){return this.set("Accept",request.types[type]||type),this},Request.prototype.auth=function(user,pass,options){1===arguments.length&&(pass=""),"object"===_typeof(pass)&&null!==pass&&(options=pass,pass=""),options||(options={type:"function"==typeof btoa?"basic":"auto"});var encoder=options.encoder?options.encoder:function(string){if("function"==typeof btoa)return btoa(string);throw new Error("Cannot use basic auth, btoa is not a function")};return this._auth(user,pass,options,encoder)},Request.prototype.query=function(value){return"string"!=typeof value&&(value=serialize(value)),value&&this._query.push(value),this},Request.prototype.attach=function(field,file,options){if(file){if(this._data)throw new Error("superagent can't mix .send() and .attach()");this._getFormData().append(field,file,options||file.name)}return this},Request.prototype._getFormData=function(){return this._formData||(this._formData=new root.FormData),this._formData},Request.prototype.callback=function(error,res){if(this._shouldRetry(error,res))return this._retry();var fn=this._callback;this.clearTimeout(),error&&(this._maxRetries&&(error.retries=this._retries-1),this.emit("error",error)),fn(error,res)},Request.prototype.crossDomainError=function(){var error=new Error("Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.");error.crossDomain=!0,error.status=this.status,error.method=this.method,error.url=this.url,this.callback(error)},Request.prototype.agent=function(){return console.warn("This is not supported in browser version of superagent"),this},Request.prototype.ca=Request.prototype.agent,Request.prototype.buffer=Request.prototype.ca,Request.prototype.write=function(){throw new Error("Streaming is not supported in browser version of superagent")},Request.prototype.pipe=Request.prototype.write,Request.prototype._isHost=function(object){return object&&"object"===_typeof(object)&&!Array.isArray(object)&&"[object Object]"!==Object.prototype.toString.call(object)},Request.prototype.end=function(fn){this._endCalled&&console.warn("Warning: .end() was called twice. This is not supported in superagent"),this._endCalled=!0,this._callback=fn||noop,this._finalizeQueryString(),this._end()},Request.prototype._setUploadTimeout=function(){var self=this;this._uploadTimeout&&!this._uploadTimeoutTimer&&(this._uploadTimeoutTimer=setTimeout((function(){self._timeoutError("Upload timeout of ",self._uploadTimeout,"ETIMEDOUT")}),this._uploadTimeout))},Request.prototype._end=function(){if(this._aborted)return this.callback(new Error("The request has been aborted even before .end() was called"));var self=this;this.xhr=request.getXHR();var xhr=this.xhr,data=this._formData||this._data;this._setTimeouts(),xhr.addEventListener("readystatechange",(function(){var readyState=xhr.readyState;if(readyState>=2&&self._responseTimeoutTimer&&clearTimeout(self._responseTimeoutTimer),4===readyState){var status;try{status=xhr.status}catch(_unused5){status=0}if(!status){if(self.timedout||self._aborted)return;return self.crossDomainError()}self.emit("end")}}));var handleProgress=function(direction,e){e.total>0&&(e.percent=e.loaded/e.total*100,100===e.percent&&clearTimeout(self._uploadTimeoutTimer)),e.direction=direction,self.emit("progress",e)};if(this.hasListeners("progress"))try{xhr.addEventListener("progress",handleProgress.bind(null,"download")),xhr.upload&&xhr.upload.addEventListener("progress",handleProgress.bind(null,"upload"))}catch(_unused6){}xhr.upload&&this._setUploadTimeout();try{this.username&&this.password?xhr.open(this.method,this.url,!0,this.username,this.password):xhr.open(this.method,this.url,!0)}catch(err){return this.callback(err)}if(this._withCredentials&&(xhr.withCredentials=!0),!this._formData&&"GET"!==this.method&&"HEAD"!==this.method&&"string"!=typeof data&&!this._isHost(data)){var contentType=this._header["content-type"],_serialize=this._serializer||request.serialize[contentType?contentType.split(";")[0]:""];!_serialize&&isJSON(contentType)&&(_serialize=request.serialize["application/json"]),_serialize&&(data=_serialize(data))}for(var field in this.header)null!==this.header[field]&&hasOwn(this.header,field)&&xhr.setRequestHeader(field,this.header[field]);this._responseType&&(xhr.responseType=this._responseType),this.emit("request",this),xhr.send(void 0===data?null:data)},request.agent=function(){return new agentBase};for(var _loop=function(){var method=_arr[_i];agentBase.prototype[method.toLowerCase()]=function(url,fn){var request_=new request.Request(method,url);return this._setDefaults(request_),fn&&request_.end(fn),request_}},_i=0,_arr=["GET","POST","OPTIONS","PATCH","PUT","DELETE"];_i<_arr.length;_i++)_loop();function del(url,data,fn){var request_=request("DELETE",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_}agentBase.prototype.del=agentBase.prototype.delete,request.get=function(url,data,fn){var request_=request("GET",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.query(data),fn&&request_.end(fn),request_},request.head=function(url,data,fn){var request_=request("HEAD",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.query(data),fn&&request_.end(fn),request_},request.options=function(url,data,fn){var request_=request("OPTIONS",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.del=del,request.delete=del,request.patch=function(url,data,fn){var request_=request("PATCH",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.post=function(url,data,fn){var request_=request("POST",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.put=function(url,data,fn){var request_=request("PUT",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_}})),byteLength_1=(client.Request,function(b64){var lens=getLens(b64),validLen=lens[0],placeHoldersLen=lens[1];return 3*(validLen+placeHoldersLen)/4-placeHoldersLen}),toByteArray_1=function(b64){var tmp,i,lens=getLens(b64),validLen=lens[0],placeHoldersLen=lens[1],arr=new Arr(function(b64,validLen,placeHoldersLen){return 3*(validLen+placeHoldersLen)/4-placeHoldersLen}(0,validLen,placeHoldersLen)),curByte=0,len=placeHoldersLen>0?validLen-4:validLen;for(i=0;i>16&255,arr[curByte++]=tmp>>8&255,arr[curByte++]=255&tmp;2===placeHoldersLen&&(tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4,arr[curByte++]=255&tmp);1===placeHoldersLen&&(tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2,arr[curByte++]=tmp>>8&255,arr[curByte++]=255&tmp);return arr},fromByteArray_1=function(uint8){for(var tmp,len=uint8.length,extraBytes=len%3,parts=[],i=0,len2=len-extraBytes;ilen2?len2:i+16383));1===extraBytes?(tmp=uint8[len-1],parts.push(lookup[tmp>>2]+lookup[tmp<<4&63]+"==")):2===extraBytes&&(tmp=(uint8[len-2]<<8)+uint8[len-1],parts.push(lookup[tmp>>10]+lookup[tmp>>4&63]+lookup[tmp<<2&63]+"="));return parts.join("")},lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,len=code.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var validLen=b64.indexOf("=");return-1===validLen&&(validLen=len),[validLen,validLen===len?0:4-validLen%4]}function encodeChunk(uint8,start,end){for(var tmp,num,output=[],i=start;i>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[63&num]);return output.join("")}revLookup["-".charCodeAt(0)]=62,revLookup["_".charCodeAt(0)]=63;var base64Js={byteLength:byteLength_1,toByteArray:toByteArray_1,fromByteArray:fromByteArray_1};var base64Url={encode:function(str){return base64Js.fromByteArray(function(str){for(var arr=new Array(str.length),a=0;a=65&&code<=90||!wasPrevNumber&&code>=48&&code<=57?(newKey+="_",newKey+=str[index].toLowerCase()):newKey+=str[index].toLowerCase(),wasPrevNumber=code>=48&&code<=57,wasPrevUppercase=code>=65&&code<=90,index++;return newKey}(key):key]=toSnakeCase(object[key]),p}),{}))},toCamelCase:function toCamelCase(object,exceptions,options){return"object"!=typeof object||assert.isArray(object)||null===object?object:(exceptions=exceptions||[],options=options||{},Object.keys(object).reduce((function(p,key){var parts,newKey=-1===exceptions.indexOf(key)?(parts=key.split("_")).reduce((function(p,c){return p+c.charAt(0).toUpperCase()+c.slice(1)}),parts.shift()):key;return p[newKey]=toCamelCase(object[newKey]||object[key],[],options),options.keepOriginal&&(p[key]=toCamelCase(object[key],[],options)),p}),{}))},blacklist:function(object,blacklistedKeys){return Object.keys(object).reduce((function(p,key){return-1===blacklistedKeys.indexOf(key)&&(p[key]=object[key]),p}),{})},merge:function(object,keys){return{base:keys?pick(object,keys):object,with:function(object2,keys2){return object2=keys2?pick(object2,keys2):object2,extend(this.base,object2)}}},pick:pick,getKeysNotIn:function(obj,allowedKeys){var notAllowed=[];for(var key in obj)-1===allowedKeys.indexOf(key)&¬Allowed.push(key);return notAllowed},extend:extend,getOriginFromUrl:function(url){if(url){var parsed=getLocationFromUrl(url);if(!parsed)return null;var origin=parsed.protocol+"//"+parsed.hostname;return parsed.port&&(origin+=":"+parsed.port),origin}},getLocationFromUrl:getLocationFromUrl,trimUserDetails:function(options){return function(options,keys){return keys.reduce(trim,options)}(options,["username","email","phoneNumber"])},updatePropertyOn:function updatePropertyOn(obj,path,value){"string"==typeof path&&(path=path.split("."));var next=path[0];obj.hasOwnProperty(next)&&(1===path.length?obj[next]=value:updatePropertyOn(obj[next],path.slice(1),value))}};function RequestWrapper(req){this.request=req,this.method=req.method,this.url=req.url,this.body=req._data,this.headers=req._header}function RequestObj(req){this.request=req}function RequestBuilder(options){this._sendTelemetry=!1!==options._sendTelemetry||options._sendTelemetry,this._telemetryInfo=options._telemetryInfo||null,this._timesToRetryFailedRequests=options._timesToRetryFailedRequests,this.headers=options.headers||{},this._universalLoginPage=options.universalLoginPage}function getWindow(){return window}RequestWrapper.prototype.abort=function(){this.request.abort()},RequestWrapper.prototype.getMethod=function(){return this.method},RequestWrapper.prototype.getBody=function(){return this.body},RequestWrapper.prototype.getUrl=function(){return this.url},RequestWrapper.prototype.getHeaders=function(){return this.headers},RequestObj.prototype.set=function(key,value){return this.request=this.request.set(key,value),this},RequestObj.prototype.send=function(body){return this.request=this.request.send(objectHelper.trimUserDetails(body)),this},RequestObj.prototype.withCredentials=function(){return this.request=this.request.withCredentials(),this},RequestObj.prototype.end=function(cb){return this.request.end(cb),new RequestWrapper(this.request)},RequestBuilder.prototype.setCommonConfiguration=function(ongoingRequest,options){if(options=options||{},this._timesToRetryFailedRequests>0&&(ongoingRequest=ongoingRequest.retry(this._timesToRetryFailedRequests)),options.noHeaders)return ongoingRequest;var headers=this.headers;ongoingRequest=ongoingRequest.set("Content-Type","application/json"),options.xRequestLanguage&&(ongoingRequest=ongoingRequest.set("X-Request-Language",options.xRequestLanguage));for(var keys=Object.keys(this.headers),a=0;a0&&warn.warning("Following parameters are not allowed on the `/authorize` endpoint: ["+notAllowed.join(",")+"]"),params}},t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r=e((function(e,r){e.exports=function(){function e(t){return"function"==typeof t}var r=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},i=0,n=void 0,o=void 0,s=function(t,e){l[i]=t,l[i+1]=e,2===(i+=2)&&(o?o(d):w())},h="undefined"!=typeof window?window:void 0,u=h||{},a=u.MutationObserver||u.WebKitMutationObserver,f="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),c="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function p(){var t=setTimeout;return function(){return t(d,1)}}var l=new Array(1e3);function d(){for(var t=0;t>>2]|=(r[o>>>2]>>>24-o%4*8&255)<<24-(i+o)%4*8;else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new f.init(r,e/2)}},l=c.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255));return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new f.init(r,e)}},d=c.Utf8={stringify:function(t){try{return decodeURIComponent(escape(l.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return l.parse(unescape(encodeURIComponent(t)))}},m=u.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new f.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,h=o/(4*s),u=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*s,a=e.min(4*u,o);if(u){for(var c=0;c>>7)^(d<<14|d>>>18)^d>>>3)+a[l-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+a[l-16]}var v=i&n^i&o^n&o,y=p+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&f^~h&c)+u[l]+a[l];p=c,c=f,f=h,h=s+y|0,s=o,o=n,n=i,i=y+(((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+v)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+h|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+p|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(f),e.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)})),s=e((function(t,e){var r,i;t.exports=(i=(r=n).lib.WordArray,r.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,h=0;h<4&&o+.75*h>>6*(3-h)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join("")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=(h|u)<<24-o%4*8,o++}return i.create(n,o)}(t,e,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},r.enc.Base64)})),h=e((function(t,e){t.exports=n.enc.Hex})),u=e((function(e,r){(function(){var t;function r(t,e,r){null!=t&&("number"==typeof t?this.fromNumber(t,e,r):this.fromString(t,null==e&&"string"!=typeof t?256:e))}function i(){return new r(null)}var n="undefined"!=typeof navigator;n&&"Microsoft Internet Explorer"==navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(var s=32767&e,h=e>>15;--o>=0;){var u=32767&this[t],a=this[t++]>>15,f=h*u+a*s;n=((u=s*u+((32767&f)<<15)+r[i]+(1073741823&n))>>>30)+(f>>>15)+h*a+(n>>>30),r[i++]=1073741823&u}return n},t=30):n&&"Netscape"!=navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(;--o>=0;){var s=e*this[t++]+r[i]+n;n=Math.floor(s/67108864),r[i++]=67108863&s}return n},t=26):(r.prototype.am=function(t,e,r,i,n,o){for(var s=16383&e,h=e>>14;--o>=0;){var u=16383&this[t],a=this[t++]>>14,f=h*u+a*s;n=((u=s*u+((16383&f)<<14)+r[i]+n)>>28)+(f>>14)+h*a,r[i++]=268435455&u}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function p(t){this.m=t}function l(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function w(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function T(){}function b(t){return t}function _(t){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}p.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},p.prototype.revert=function(t){return t},p.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},p.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},p.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},l.prototype.convert=function(t){var e=i();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(r.ZERO)>0&&this.m.subTo(e,e),e},l.prototype.revert=function(t){var e=i();return t.copyTo(e),this.reduce(e),e},l.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,i,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},l.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},l.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},r.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},r.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},r.prototype.fromString=function(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else{if(4!=e)return void this.fromRadix(t,e);i=2}this.t=0,this.s=0;for(var n=t.length,o=!1,s=0;--n>=0;){var h=8==i?255&t[n]:a(t,n);h<0?"-"==t.charAt(n)&&(o=!0):(o=!1,0==s?this[this.t++]=h:s+i>this.DB?(this[this.t-1]|=(h&(1<>this.DB-s):this[this.t-1]|=h<=this.DB&&(s-=this.DB))}8==i&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},r.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},r.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>n|h,h=(this[r]&o)<=0;--r)e[r]=0;e[s]=h,e.t=this.t+s+1,e.s=this.s,e.clamp()},r.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var i=t%this.DB,n=this.DB-i,o=(1<>i;for(var s=r+1;s>i;i>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i-=t.s}e.s=i<0?-1:0,i<-1?e[r++]=this.DV+i:i>0&&(e[r++]=i),e.t=r,e.clamp()},r.prototype.multiplyTo=function(t,e){var i=this.abs(),n=t.abs(),o=i.t;for(e.t=o+n.t;--o>=0;)e[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},r.prototype.divRemTo=function(t,e,n){var o=t.abs();if(!(o.t<=0)){var s=this.abs();if(s.t0?(o.lShiftTo(f,h),s.lShiftTo(f,n)):(o.copyTo(h),s.copyTo(n));var p=h.t,l=h[p-1];if(0!=l){var d=l*(1<1?h[p-2]>>this.F2:0),m=this.FV/d,v=(1<=0&&(n[n.t++]=1,n.subTo(T,n)),r.ONE.dlShiftTo(p,T),T.subTo(h,h);h.t=0;){var b=n[--g]==l?this.DM:Math.floor(n[g]*m+(n[g-1]+y)*v);if((n[g]+=h.am(0,b,n,w,0,p))0&&n.rShiftTo(f,n),u<0&&r.ZERO.subTo(n,n)}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(t,e){if(t>4294967295||t<1)return r.ONE;var n=i(),o=i(),s=e.convert(this),h=c(t)-1;for(s.copyTo(n);--h>=0;)if(e.sqrTo(n,o),(t&1<0)e.mulTo(o,s,n);else{var u=n;n=o,o=u}return e.revert(n)},r.prototype.toString=function(t){if(this.s<0)return"-"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,i=(1<0)for(h>h)>0&&(n=!0,o=u(r));s>=0;)h>(h+=this.DB-e)):(r=this[s]>>(h-=e)&i,h<=0&&(h+=this.DB,--s)),r>0&&(n=!0),n&&(o+=u(r));return n?o:"0"},r.prototype.negate=function(){var t=i();return r.ZERO.subTo(this,t),t},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+c(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(t){var e=i();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(r.ZERO)>0&&t.subTo(e,e),e},r.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new p(e):new l(e),this.exp(t,r)},r.ZERO=f(0),r.ONE=f(1),T.prototype.convert=b,T.prototype.revert=b,T.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},T.prototype.sqrTo=function(t,e){t.squareTo(e)},_.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=i();return t.copyTo(e),this.reduce(e),e},_.prototype.revert=function(t){return t},_.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},_.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},_.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var S,A,D,B=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],x=(1<<26)/B[B.length-1];function E(){var t;t=(new Date).getTime(),A[D++]^=255&t,A[D++]^=t>>8&255,A[D++]^=t>>16&255,A[D++]^=t>>24&255,D>=j&&(D-=j)}if(r.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},r.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return"0";var e=this.chunkSize(t),r=Math.pow(t,e),n=f(r),o=i(),s=i(),h="";for(this.divRemTo(n,o,s);o.signum()>0;)h=(r+s.intValue()).toString(t).substr(1)+h,o.divRemTo(n,o,s);return s.intValue().toString(t)+h},r.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var i=this.chunkSize(e),n=Math.pow(e,i),o=!1,s=0,h=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(h,0),s=0,h=0))}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(h,0)),o&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(t,e,i){if("number"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(r.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(r.ONE.shiftLeft(t-1),this);else{var n=new Array,o=7&t;n.length=1+(t>>3),e.nextBytes(n),o>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i+=t.s}e.s=i<0?-1:0,i>0?e[r++]=i:i<-1&&(e[r++]=this.DV+i),e.t=r,e.clamp()},r.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},r.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},r.prototype.multiplyLowerTo=function(t,e,r){var i,n=Math.min(this.t+t.t,e);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(e-this.t,0);i0)if(0==e)r=this[0]%t;else for(var i=this.t-1;i>=0;--i)r=(e*r+this[i])%t;return r},r.prototype.millerRabin=function(t){var e=this.subtract(r.ONE),n=e.getLowestSetBit();if(n<=0)return!1;var o=e.shiftRight(n);(t=t+1>>1)>B.length&&(t=B.length);for(var s=i(),h=0;h>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,i=this.DB-t*this.DB%8,n=0;if(t-- >0)for(i>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<=0;)i<8?(r=(this[t]&(1<>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,i<=0&&(i+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(e[n++]=r);return e},r.prototype.equals=function(t){return 0==this.compareTo(t)},r.prototype.min=function(t){return this.compareTo(t)<0?this:t},r.prototype.max=function(t){return this.compareTo(t)>0?this:t},r.prototype.and=function(t){var e=i();return this.bitwiseTo(t,d,e),e},r.prototype.or=function(t){var e=i();return this.bitwiseTo(t,m,e),e},r.prototype.xor=function(t){var e=i();return this.bitwiseTo(t,v,e),e},r.prototype.andNot=function(t){var e=i();return this.bitwiseTo(t,y,e),e},r.prototype.not=function(){for(var t=i(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var m=i();for(n.sqrTo(h[1],m);u<=d;)h[u]=i(),n.mulTo(m,h[u-2],h[u]),u+=2}var v,y,g=t.t-1,w=!0,T=i();for(o=c(t[g])-1;g>=0;){for(o>=a?v=t[g]>>o-a&d:(v=(t[g]&(1<0&&(v|=t[g-1]>>this.DB+o-a)),u=r;0==(1&v);)v>>=1,--u;if((o-=u)<0&&(o+=this.DB,--g),w)h[v].copyTo(s),w=!1;else{for(;u>1;)n.sqrTo(s,T),n.sqrTo(T,s),u-=2;u>0?n.sqrTo(s,T):(y=s,s=T,T=y),n.mulTo(T,h[v],s)}for(;g>=0&&0==(t[g]&1<=0?(i.subTo(n,i),e&&o.subTo(h,o),s.subTo(u,s)):(n.subTo(i,n),e&&h.subTo(o,h),u.subTo(s,u))}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(t)>=0?u.subtract(t):u.signum()<0?(u.addTo(t,u),u.signum()<0?u.add(t):u):u},r.prototype.pow=function(t){return this.exp(t,new T)},r.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var i=e;e=r,r=i}var n=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(n0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},r.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=B[B.length-1]){for(e=0;e>>8,A[D++]=255&k;D=0,E()}function C(){if(null==S){for(E(),(S=new O).init(A),D=0;D0&&e.length>0))throw new Error("Invalid key data");this.n=new u.BigInteger(t,16),this.e=parseInt(e,16)}c.prototype.verify=function(t,e){e=e.replace(/[^0-9a-f]|[\s\n]]/gi,"");var r=new u.BigInteger(e,16);if(r.bitLength()>this.n.bitLength())throw new Error("Signature does not match with the key modulus.");var i=function(t){for(var e in a){var r=a[e],i=r.length;if(t.substring(0,i)===r)return{alg:e,hash:t.substring(i)}}return[]}(r.modPowInt(this.e,this.n).toString(16).replace(/^1f+00/,""));if(0===i.length)return!1;if(!f.hasOwnProperty(i.alg))throw new Error("Hashing algorithm is not supported.");var n=f[i.alg](t).toString();return i.hash===n};for(var p=[],l=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0;v<64;++v)p[v]=m[v],l[m.charCodeAt(v)]=v;l["-".charCodeAt(0)]=62,l["_".charCodeAt(0)]=63;var y=function(t){var e,r,i=function(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}(t),n=i[0],o=i[1],s=new d(function(t,e,r){return 3*(e+r)/4-r}(0,n,o)),h=0,u=o>0?n-4:n;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;return 2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,s[h++]=255&e),1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e),s};function g(t){var e=t.length%4;return 0===e?t:t+new Array(4-e+1).join("=")}function w(t){return t=g(t).replace(/\-/g,"+").replace(/_/g,"/"),decodeURIComponent(function(t){for(var e="",r=0;r1){var r=t.shift();t[0]=r+t[0]}t[0]=t[0].match(/^file:\/\/\//)?t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(n=n.replace(/^[\/]+/,"")),n=n.replace(/[\/]+$/,i0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():r.urljoin=i()}));function _(t,e){return e=e||{},new Promise((function(r,i){var n=new XMLHttpRequest,o=[],s=[],h={},u=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:u,headers:{keys:function(){return o},entries:function(){return s},get:function(t){return h[t.toLowerCase()]},has:function(t){return t.toLowerCase()in h}}}};for(var a in n.open(e.method||"get",t,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(t,e,r){o.push(e=e.toLowerCase()),s.push([e,r]),h[e]=h[e]?h[e]+","+r:r})),r(u())},n.onerror=i,n.withCredentials="include"==e.credentials,e.headers)n.setRequestHeader(a,e.headers[a]);n.send(e.body||null)}))}function S(t){if(t.ok)return t.json();var e=new Error(t.statusText);return e.response=t,Promise.reject(e)}function A(t){this.name="ConfigurationError",this.message=t||""}function D(t){this.name="TokenValidationError",this.message=t||""}A.prototype=Error.prototype,D.prototype=Error.prototype;var B=function(){function t(){}var e=t.prototype;return e.get=function(){return null},e.has=function(){return null},e.set=function(){return null},t}();r.polyfill();var x="RS256",E=function(t){return"number"==typeof t},k=function(){return new Date};function I(t){var e=t||{};if(this.jwksCache=e.jwksCache||new B,this.expectedAlg=e.expectedAlg||"RS256",this.issuer=e.issuer,this.audience=e.audience,this.leeway=0===e.leeway?0:e.leeway||60,this.jwksURI=e.jwksURI,this.maxAge=e.maxAge,this.__clock="function"==typeof e.__clock?e.__clock:k,this.leeway<0||this.leeway>300)throw new A("The leeway should be positive and lower than five minutes.");if(x!==this.expectedAlg)throw new A('Signature algorithm of "'+this.expectedAlg+'" is not supported. Expected the ID token to be signed with "'+x+'".')}function PluginHandler(webAuth,plugins){this.plugins=plugins;for(var a=0;a1){if(!d||"string"!=typeof d)return r(new D("Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values"),null);if(d!==g.audience)return r(new D('Authorized Party (azp) claim mismatch in the ID token; expected "'+g.audience+'", found "'+d+'"'),null)}if(!c||!E(c))return r(new D("Expiration Time (exp) claim must be a number present in the ID token"),null);if(!l||!E(l))return r(new D("Issued At (iat) claim must be a number present in the ID token"),null);var h=c+g.leeway,w=new Date(0);if(w.setUTCSeconds(h),y>w)return r(new D('Expiration Time (exp) claim error in the ID token; current time "'+y+'" is after expiration time "'+w+'"'),null);if(p&&E(p)){var T=p-g.leeway,b=new Date(0);if(b.setUTCSeconds(T),yS)return r(new D('Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time "'+y+'" is after last auth time at "'+S+'"'),null)}return r(null,i.payload)}))},I.prototype.getRsaVerifier=function(t,e,r){var i=this,n=t+e;Promise.resolve(this.jwksCache.has(n)).then((function(r){return r?i.jwksCache.get(n):(s=(o={jwksURI:i.jwksURI,iss:t,kid:e}).jwksURI||b(o.iss,".well-known","jwks.json"),("undefined"==fetch?_:fetch)(s).then(S).then((function(t){var e,r,i,n=null;for(e=0;e-1){null!==new RegExp("rv:([0-9]{2,2}[.0-9]{0,})").exec(ua)&&(rv=parseFloat(RegExp.$1))}return rv>=8}();return"undefined"!=typeof window&&window.JSON&&window.JSON.stringify&&window.JSON.parse&&window.postMessage?{open:function(opts,cb){if(!cb)throw"missing required callback argument";var err,iframe;opts.url||(err="missing required 'url' parameter"),opts.relay_url||(err="missing required 'relay_url' parameter"),err&&setTimeout((function(){cb(err)}),0),opts.window_name||(opts.window_name=null),opts.window_features&&!function(){try{var userAgent=navigator.userAgent;return-1!=userAgent.indexOf("Fennec/")||-1!=userAgent.indexOf("Firefox/")&&-1!=userAgent.indexOf("Android")}catch(e){}return!1}()||(opts.window_features=void 0);var messageTarget,origin=opts.origin||extractOrigin(opts.url);if(origin!==extractOrigin(opts.relay_url))return setTimeout((function(){cb("invalid arguments: origin of url and relay_url must match")}),0);isIE&&((iframe=document.createElement("iframe")).setAttribute("src",opts.relay_url),iframe.style.display="none",iframe.setAttribute("name","__winchan_relay_frame"),document.body.appendChild(iframe),messageTarget=iframe.contentWindow);var w=opts.popup||window.open(opts.url,opts.window_name,opts.window_features);opts.popup&&(w.location.href=opts.url),messageTarget||(messageTarget=w);var closeInterval=setInterval((function(){w&&w.closed&&(cleanup(),cb&&(cb("User closed the popup window"),cb=null))}),500),req=JSON.stringify({a:"request",d:opts.params});function cleanup(){if(iframe&&document.body.removeChild(iframe),iframe=void 0,closeInterval&&(closeInterval=clearInterval(closeInterval)),removeListener(window,"message",onMessage),removeListener(window,"unload",cleanup),w)try{w.close()}catch(securityViolation){messageTarget.postMessage("die",origin)}w=messageTarget=void 0}function onMessage(e){if(e.origin===origin){try{var d=JSON.parse(e.data)}catch(err){if(cb)return cb(err);throw err}"ready"===d.a?messageTarget.postMessage(req,origin):"error"===d.a?(cleanup(),cb&&(cb(d.d),cb=null)):"response"===d.a&&(cleanup(),cb&&(cb(null,d.d),cb=null))}}return addListener(window,"unload",cleanup),addListener(window,"message",onMessage),{originalPopup:w,close:cleanup,focus:function(){if(w)try{w.focus()}catch(e){}}}},onOpen:function(cb){var o="*",msgTarget=isIE?function(){for(var frames=window.opener.frames,i=frames.length-1;i>=0;i--)try{if(frames[i].location.protocol===window.location.protocol&&frames[i].location.host===window.location.host&&"__winchan_relay_frame"===frames[i].name)return frames[i]}catch(e){}}():window.opener;if(!msgTarget)throw"can't find relay frame";function doPost(msg){msg=JSON.stringify(msg),isIE?msgTarget.doPost(msg,o):msgTarget.postMessage(msg,o)}function onDie(e){if("die"===e.data)try{window.close()}catch(o_O){}}addListener(isIE?msgTarget:window,"message",(function onMessage(e){var d;try{d=JSON.parse(e.data)}catch(err){}d&&"request"===d.a&&(removeListener(window,"message",onMessage),o=e.origin,cb&&setTimeout((function(){cb(o,d.d,(function(r){cb=void 0,doPost({a:"response",d:r})}))}),0))})),addListener(isIE?msgTarget:window,"message",onDie);try{doPost({a:"ready"})}catch(e){addListener(msgTarget,"load",(function(e){doPost({a:"ready"})}))}var onUnload=function(){try{removeListener(isIE?msgTarget:window,"message",onDie)}catch(ohWell){}cb&&doPost({a:"error",d:"client closed window"}),cb=void 0;try{window.close()}catch(e){}};return addListener(window,"unload",onUnload),{detach:function(){removeListener(window,"unload",onUnload)}}}}:{open:function(url,winopts,arg,cb){setTimeout((function(){cb("unsupported browser")}),0)},onOpen:function(cb){setTimeout((function(){cb("unsupported browser")}),0)}}}();module.exports&&(module.exports=WinChan)}));var urlHelper={extractOrigin:function(url){/^https?:\/\//.test(url)||(url=window.location.href);var m=/^(https?:\/\/[-_a-zA-Z.0-9:]+)/.exec(url);return m?m[1]:url}};function PopupHandler(){this._current_popup=null}function Popup(webAuth,options){this.baseOptions=options,this.baseOptions.popupOrigin=options.popupOrigin,this.client=webAuth.client,this.webAuth=webAuth,this.transactionManager=new TransactionManager(this.baseOptions),this.crossOriginAuthentication=new CrossOriginAuthentication(webAuth,this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings})}function SilentAuthenticationHandler(options){this.authenticationUrl=options.authenticationUrl,this.timeout=options.timeout||6e4,this.handler=null,this.postMessageDataType=options.postMessageDataType||!1,this.postMessageOrigin=options.postMessageOrigin||windowHelper.getWindow().location.origin||windowHelper.getWindow().location.protocol+"//"+windowHelper.getWindow().location.hostname+(windowHelper.getWindow().location.port?":"+windowHelper.getWindow().location.port:"")}function UsernamePassword(options){this.baseOptions=options,this.request=new RequestBuilder(options),this.transactionManager=new TransactionManager(this.baseOptions)}function HostedPages(client,options){this.baseOptions=options,this.client=client,this.baseOptions.universalLoginPage=!0,this.request=new RequestBuilder(this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings})}PopupHandler.prototype.calculatePosition=function(options){var width=options.width||500,height=options.height||600,_window=windowHelper.getWindow(),screenX=void 0!==_window.screenX?_window.screenX:_window.screenLeft,screenY=void 0!==_window.screenY?_window.screenY:_window.screenTop,outerWidth=void 0!==_window.outerWidth?_window.outerWidth:_window.document.body.clientWidth,outerHeight=void 0!==_window.outerHeight?_window.outerHeight:_window.document.body.clientHeight;return{width:width,height:height,left:options.left||screenX+(outerWidth-width)/2,top:options.top||screenY+(outerHeight-height)/2}},PopupHandler.prototype.preload=function(options){var _this=this,_window=windowHelper.getWindow(),popupPosition=this.calculatePosition(options.popupOptions||{}),popupOptions=objectHelper.merge(popupPosition).with(options.popupOptions),url=options.url||"about:blank",windowFeatures=lib.stringify(popupOptions,{encode:!1,delimiter:","});return this._current_popup&&!this._current_popup.closed||(this._current_popup=_window.open(url,"auth0_signup_popup",windowFeatures),this._current_popup.kill=function(){this.close(),_this._current_popup=null}),this._current_popup},PopupHandler.prototype.load=function(url,relayUrl,options,cb){var _this=this,popupPosition=this.calculatePosition(options.popupOptions||{}),popupOptions=objectHelper.merge(popupPosition).with(options.popupOptions),winchanOptions=objectHelper.merge({url:url,relay_url:relayUrl,window_features:lib.stringify(popupOptions,{delimiter:",",encode:!1}),popup:this._current_popup}).with(options),popup=winchan.open(winchanOptions,(function(err,data){if(!err||"SyntaxError"!==err.name)return _this._current_popup=null,cb(err,data)}));return popup.focus(),popup},Popup.prototype.buildPopupHandler=function(){var pluginHandler=this.baseOptions.plugins.get("popup.getPopupHandler");return pluginHandler?pluginHandler.getPopupHandler():new PopupHandler},Popup.prototype.preload=function(options){options=options||{};var popup=this.buildPopupHandler();return popup.preload(options),popup},Popup.prototype.getPopupHandler=function(options,preload){return options.popupHandler?options.popupHandler:preload?this.preload(options):this.buildPopupHandler()},Popup.prototype.callback=function(options){var _this=this,theWindow=windowHelper.getWindow(),originUrl=(options=options||{}).popupOrigin||this.baseOptions.popupOrigin||windowHelper.getOrigin();theWindow.opener?winchan.onOpen((function(popupOrigin,r,cb){if(popupOrigin!==originUrl)return cb({error:"origin_mismatch",error_description:"The popup's origin ("+popupOrigin+") should match the `popupOrigin` parameter ("+originUrl+")."});_this.webAuth.parseHash(options||{},(function(err,data){return cb(err||data)}))})):theWindow.doPost=function(msg){theWindow.parent&&theWindow.parent.postMessage(msg,originUrl)}},Popup.prototype.authorize=function(options,cb){var url,relayUrl,popOpts={},pluginHandler=this.baseOptions.plugins.get("popup.authorize"),params=objectHelper.merge(this.baseOptions,["clientID","scope","domain","audience","tenant","responseType","redirectUri","_csrf","state","_intstate","nonce","organization","invitation"]).with(objectHelper.blacklist(options,["popupHandler"]));return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),relayUrl=urlJoin(this.baseOptions.rootUrl,"relay.html"),options.owp?params.owp=!0:(popOpts.origin=urlHelper.extractOrigin(params.redirectUri),relayUrl=params.redirectUri),options.popupOptions&&(popOpts.popupOptions=objectHelper.pick(options.popupOptions,["width","height","top","left"])),pluginHandler&&(params=pluginHandler.processParams(params)),(params=this.transactionManager.process(params)).scope=params.scope||"openid profile email",delete params.domain,url=this.client.buildAuthorizeUrl(params),this.getPopupHandler(options).load(url,relayUrl,popOpts,wrapCallback(cb,{keepOriginalCasing:!0}))},Popup.prototype.loginWithCredentials=function(options,cb){options.realm=options.realm||options.connection,options.popup=!0,options=objectHelper.merge(this.baseOptions,["redirectUri","responseType","state","nonce","timeout"]).with(objectHelper.blacklist(options,["popupHandler","connection"])),options=this.transactionManager.process(options),this.crossOriginAuthentication.login(options,cb)},Popup.prototype.passwordlessVerify=function(options,cb){var _this=this;return this.client.passwordless.verify(objectHelper.blacklist(options,["popupHandler"]),(function(err){if(err)return cb(err);options.username=options.phoneNumber||options.email,options.password=options.verificationCode,delete options.email,delete options.phoneNumber,delete options.verificationCode,delete options.type,_this.client.loginWithResourceOwner(options,cb)}))},Popup.prototype.signupAndLogin=function(options,cb){var _this=this;return this.client.dbConnection.signup(options,(function(err){if(err)return cb(err);_this.loginWithCredentials(options,cb)}))},SilentAuthenticationHandler.create=function(options){return new SilentAuthenticationHandler(options)},SilentAuthenticationHandler.prototype.login=function(usePostMessage,callback){this.handler=new IframeHandler({auth0:this.auth0,url:this.authenticationUrl,eventListenerType:usePostMessage?"message":"load",callback:this.getCallbackHandler(callback,usePostMessage),timeout:this.timeout,eventValidator:this.getEventValidator(),timeoutCallback:function(){callback(null,"#error=timeout&error_description=Timeout+during+authentication+renew.")},usePostMessage:usePostMessage||!1}),this.handler.init()},SilentAuthenticationHandler.prototype.getEventValidator=function(){var _this=this;return{isValid:function(eventData){switch(eventData.event.type){case"message":return eventData.event.origin===_this.postMessageOrigin&&eventData.event.source===_this.handler.iframe.contentWindow&&(!1===_this.postMessageDataType||eventData.event.data.type&&eventData.event.data.type===_this.postMessageDataType);case"load":if("about:"===eventData.sourceObject.contentWindow.location.protocol)return!1;default:return!0}}}},SilentAuthenticationHandler.prototype.getCallbackHandler=function(callback,usePostMessage){return function(eventData){var callbackValue;callbackValue=usePostMessage?"object"==typeof eventData.event.data&&eventData.event.data.hash?eventData.event.data.hash:eventData.event.data:eventData.sourceObject.contentWindow.location.hash,callback(null,callbackValue)}},UsernamePassword.prototype.login=function(options,cb){var url,body;return url=urlJoin(this.baseOptions.rootUrl,"usernamepassword","login"),options.username=options.username||options.email,options=objectHelper.blacklist(options,["email","onRedirecting"]),body=objectHelper.merge(this.baseOptions,["clientID","redirectUri","tenant","responseType","responseMode","scope","audience"]).with(options),body=this.transactionManager.process(body),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},UsernamePassword.prototype.callback=function(formHtml){var div,_document=windowHelper.getDocument();(div=_document.createElement("div")).innerHTML=formHtml,_document.body.appendChild(div).children[0].submit()},HostedPages.prototype.login=function(options,cb){if(windowHelper.getWindow().location.host!==this.baseOptions.domain)throw new Error("This method is meant to be used only inside the Universal Login Page.");var usernamePassword,params=objectHelper.merge(this.baseOptions,["clientID","redirectUri","tenant","responseType","responseMode","scope","audience","_csrf","state","_intstate","nonce"]).with(options);return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),(usernamePassword=new UsernamePassword(this.baseOptions)).login(params,(function(err,data){if(err)return cb(err);function doAuth(){usernamePassword.callback(data)}if("function"==typeof options.onRedirecting)return options.onRedirecting((function(){doAuth()}));doAuth()}))},HostedPages.prototype.signupAndLogin=function(options,cb){var _this=this;return _this.client.client.dbConnection.signup(options,(function(err){return err?cb(err):_this.login(options,cb)}))},HostedPages.prototype.getSSOData=function(withActiveDirectories,cb){var url,params="";return"function"==typeof withActiveDirectories&&(cb=withActiveDirectories,withActiveDirectories=!1),assert.check(withActiveDirectories,{type:"boolean",message:"withActiveDirectories parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),withActiveDirectories&&(params="?"+lib.stringify({ldaps:1,client_id:this.baseOptions.clientID})),url=urlJoin(this.baseOptions.rootUrl,"user","ssodata",params),this.request.get(url,{noHeaders:!0}).withCredentials().end(wrapCallback(cb))};var noop=function(){},captchaSolved=noop,Flow={DEFAULT:"default",PASSWORDLESS:"passwordless",PASSWORD_RESET:"password_reset"},defaults$2={lang:"en",templates:{auth0:function(challenge){var message="code"===challenge.type?"Enter the code shown above":"Solve the formula shown above";return'
\n \n \n
\n'},recaptcha_v2:function(){return'
'},recaptcha_enterprise:function(){return'
'},hcaptcha:function(){return'
'},friendly_captcha:function(){return'
'},arkose:function(){return'
'},auth0_v2:function(){return'
'},error:function(){return'
Error getting the bot detection challenge. Please contact the system administrator.
'}}};function globalForCaptchaProvider(provider){switch(provider){case"recaptcha_v2":return window.grecaptcha;case"recaptcha_enterprise":return window.grecaptcha.enterprise;case"hcaptcha":return window.hcaptcha;case"friendly_captcha":return window.friendlyChallenge;case"arkose":return window.arkose;case"auth0_v2":return window.turnstile;default:throw new Error("Unknown captcha provider")}}function loadScript(url,attributes){var script=window.document.createElement("script");for(var attr in attributes)attr.startsWith("data-")?script.dataset[attr.replace("data-","")]=attributes[attr]:script[attr]=attributes[attr];script.src=url,window.document.body.appendChild(script)}function removeScript(url){window.document.querySelectorAll('script[src="'+url+'"]').forEach((function(script){script.remove()}))}function injectCaptchaScript(element,opts,callback,setValue){var callbackName=opts.provider+"Callback_"+Math.floor(1000001*Math.random()),attributes={async:!0,defer:!0},scriptSrc=function(provider,lang,callback,clientSubdomain,siteKey){switch(provider){case"recaptcha_v2":return"https://www.recaptcha.net/recaptcha/api.js?hl="+lang+"&onload="+callback;case"recaptcha_enterprise":return"https://www.recaptcha.net/recaptcha/enterprise.js?render=explicit&hl="+lang+"&onload="+callback;case"hcaptcha":return"https://js.hcaptcha.com/1/api.js?hl="+lang+"&onload="+callback;case"friendly_captcha":return"https://cdn.jsdelivr.net/npm/friendly-challenge@0.9.12/widget.min.js";case"arkose":return"https://"+clientSubdomain+".arkoselabs.com/v2/"+siteKey+"/api.js";case"auth0_v2":return"https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload="+callback;default:throw new Error("Unknown captcha provider")}}(opts.provider,opts.lang,callbackName,opts.clientSubdomain,opts.siteKey);if("arkose"===opts.provider||"auth0_v2"===opts.provider){var retryCount=0;attributes["data-callback"]=callbackName,attributes.onerror=function(){if(retryCount<3)return removeScript(scriptSrc),loadScript(scriptSrc,attributes),void retryCount++;removeScript(scriptSrc),setValue("BYPASS_CAPTCHA")},window[callbackName]=function(arkose){window.arkose=arkose,callback(arkose)}}else window[callbackName]=function(){delete window[callbackName],callback()},"friendly_captcha"===opts.provider&&(attributes.onload=window[callbackName]);loadScript(scriptSrc,attributes)}var captcha={render:function(auth0Client,flow,element,options,callback){function load(done){function challengeCallback(err,challenge){return err?(element.innerHTML=options.templates.error(err),done(err)):challenge.required?(element.style.display="","auth0"===challenge.provider?function(element,options,challenge,load){element.innerHTML=options.templates[challenge.provider](challenge),element.querySelector(".captcha-reload").addEventListener("click",(function(e){e.preventDefault(),load()}))}(element,options,challenge,load):"recaptcha_v2"!==challenge.provider&&"recaptcha_enterprise"!==challenge.provider&&"hcaptcha"!==challenge.provider&&"friendly_captcha"!==challenge.provider&&"arkose"!==challenge.provider&&"auth0_v2"!==challenge.provider||function(element,options,challenge){var captchaClass,widgetId=element.hasAttribute("data-wid")&&element.getAttribute("data-wid");function setValue(value){element.querySelector('input[name="captcha"]').value=value||""}if("friendly_captcha"===challenge.provider&&window.auth0FCInstance)return setValue(),void window.auth0FCInstance.reset();if("arkose"===challenge.provider&&globalForCaptchaProvider(challenge.provider))return setValue(),void globalForCaptchaProvider(challenge.provider).reset();if(widgetId)return setValue(),void globalForCaptchaProvider(challenge.provider).reset(widgetId);switch(element.innerHTML=options.templates[challenge.provider](challenge),challenge.provider){case"recaptcha_enterprise":case"recaptcha_v2":captchaClass=".recaptcha";break;case"hcaptcha":captchaClass=".hcaptcha";break;case"friendly_captcha":captchaClass=".friendly-captcha";break;case"arkose":captchaClass=".arkose";break;case"auth0_v2":captchaClass=".auth0_v2"}var captchaDiv=element.querySelector(captchaClass);injectCaptchaScript(0,{lang:options.lang,provider:challenge.provider,clientSubdomain:challenge.clientSubdomain,siteKey:challenge.siteKey},(function(arkose){var global=globalForCaptchaProvider(challenge.provider);if("arkose"===challenge.provider){var retryCount=0;arkose.setConfig({onCompleted:function(response){setValue(response.token),captchaSolved()},onError:function(){retryCount<3?(setValue(),arkose.reset(),setTimeout((function(){arkose.run()}),500),retryCount++):setValue("BYPASS_CAPTCHA")}})}else if("friendly_captcha"===challenge.provider)window.auth0FCInstance=new global.WidgetInstance(captchaDiv,{sitekey:challenge.siteKey,language:options.lang,doneCallback:function(solution){setValue(solution)},errorCallback:function(){setValue()}});else{var renderParams={callback:setValue,"expired-callback":function(){setValue()},"error-callback":function(){setValue()},sitekey:challenge.siteKey};"auth0_v2"===challenge.provider&&(retryCount=0,renderParams.language=options.lang,renderParams.theme="light",renderParams.retry="never",renderParams["response-field"]=!1,renderParams["error-callback"]=function(){return retryCount<3?(setValue(),globalForCaptchaProvider(challenge.provider).reset(widgetId),retryCount++):setValue("BYPASS_CAPTCHA"),!0}),widgetId=global.render(captchaDiv,renderParams),element.setAttribute("data-wid",widgetId)}}),setValue)}(element,options,challenge),void("arkose"===challenge.provider?done(null,{triggerCaptcha:function(solvedCallback){globalForCaptchaProvider(challenge.provider).run(),captchaSolved=solvedCallback}}):done())):(element.style.display="none",void(element.innerHTML=""))}done=done||noop,flow===Flow.PASSWORDLESS?auth0Client.passwordless.getChallenge(challengeCallback):flow===Flow.PASSWORD_RESET?auth0Client.dbConnection.getPasswordResetChallenge(challengeCallback):auth0Client.getChallenge(challengeCallback)}return options=objectHelper.merge(defaults$2).with(options||{}),load(callback),{reload:load,getValue:function(){var captchaInput=element.querySelector('input[name="captcha"]');if(captchaInput)return captchaInput.value}}},Flow:Flow};function defaultClock(){return new Date}function WebAuth(options){assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},clientID:{type:"string",message:"clientID option is required"},responseType:{optional:!0,type:"string",message:"responseType is not valid"},responseMode:{optional:!0,type:"string",message:"responseMode is not valid"},redirectUri:{optional:!0,type:"string",message:"redirectUri is not valid"},scope:{optional:!0,type:"string",message:"scope is not valid"},audience:{optional:!0,type:"string",message:"audience is not valid"},popupOrigin:{optional:!0,type:"string",message:"popupOrigin is not valid"},leeway:{optional:!0,type:"number",message:"leeway is not valid"},plugins:{optional:!0,type:"array",message:"plugins is not valid"},maxAge:{optional:!0,type:"number",message:"maxAge is not valid"},stateExpiration:{optional:!0,type:"number",message:"stateExpiration is not valid"},legacySameSiteCookie:{optional:!0,type:"boolean",message:"legacySameSiteCookie option is not valid"},_disableDeprecationWarnings:{optional:!0,type:"boolean",message:"_disableDeprecationWarnings option is not valid"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"},_timesToRetryFailedRequests:{optional:!0,type:"number",message:"_timesToRetryFailedRequests option is not valid"}}),options.overrides&&assert.check(options.overrides,{type:"object",message:"overrides option is not valid"},{__tenant:{optional:!0,type:"string",message:"__tenant option is required"},__token_issuer:{optional:!0,type:"string",message:"__token_issuer option is required"},__jwks_uri:{optional:!0,type:"string",message:"__jwks_uri is required"}}),this.baseOptions=options,this.baseOptions.plugins=new PluginHandler(this,this.baseOptions.plugins||[]),this.baseOptions._sendTelemetry=!1!==this.baseOptions._sendTelemetry||this.baseOptions._sendTelemetry,this.baseOptions._timesToRetryFailedRequests=options._timesToRetryFailedRequests?parseInt(options._timesToRetryFailedRequests):0,this.baseOptions.tenant=this.baseOptions.overrides&&this.baseOptions.overrides.__tenant||this.baseOptions.domain.split(".")[0],this.baseOptions.token_issuer=this.baseOptions.overrides&&this.baseOptions.overrides.__token_issuer||"https://"+this.baseOptions.domain+"/",this.baseOptions.jwksURI=this.baseOptions.overrides&&this.baseOptions.overrides.__jwks_uri,!1!==options.legacySameSiteCookie&&(this.baseOptions.legacySameSiteCookie=!0),this.transactionManager=new TransactionManager(this.baseOptions),this.client=new Authentication(this.baseOptions),this.redirect=new Redirect(this,this.baseOptions),this.popup=new Popup(this,this.baseOptions),this.crossOriginAuthentication=new CrossOriginAuthentication(this,this.baseOptions),this.webMessageHandler=new WebMessageHandler(this),this._universalLogin=new HostedPages(this,this.baseOptions),this.ssodataStorage=new SSODataStorage(this.baseOptions)}function PasswordlessAuthentication(request,options){this.baseOptions=options,this.request=request}function DBConnection(request,options){this.baseOptions=options,this.request=request}function Authentication(auth0,options){2===arguments.length?this.auth0=auth0:options=auth0,assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},clientID:{type:"string",message:"clientID option is required"},responseType:{optional:!0,type:"string",message:"responseType is not valid"},responseMode:{optional:!0,type:"string",message:"responseMode is not valid"},redirectUri:{optional:!0,type:"string",message:"redirectUri is not valid"},scope:{optional:!0,type:"string",message:"scope is not valid"},audience:{optional:!0,type:"string",message:"audience is not valid"},_disableDeprecationWarnings:{optional:!0,type:"boolean",message:"_disableDeprecationWarnings option is not valid"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"}}),this.baseOptions=options,this.baseOptions._sendTelemetry=!1!==this.baseOptions._sendTelemetry||this.baseOptions._sendTelemetry,this.baseOptions.rootUrl=this.baseOptions.domain&&0===this.baseOptions.domain.toLowerCase().indexOf("http")?this.baseOptions.domain:"https://"+this.baseOptions.domain,this.request=new RequestBuilder(this.baseOptions),this.passwordless=new PasswordlessAuthentication(this.request,this.baseOptions),this.dbConnection=new DBConnection(this.request,this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings}),this.ssodataStorage=new SSODataStorage(this.baseOptions)}function Management(options){assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},token:{type:"string",message:"token option is required"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"}}),this.baseOptions=options,this.baseOptions.headers={Authorization:"Bearer "+this.baseOptions.token},this.request=new RequestBuilder(this.baseOptions),this.baseOptions.rootUrl=urlJoin("https://"+this.baseOptions.domain,"api","v2")}WebAuth.prototype.parseHash=function(options,cb){var parsedQs,err;cb||"function"!=typeof options?options=options||{}:(cb=options,options={});var hashStr=void 0===options.hash?windowHelper.getWindow().location.hash:options.hash;if(hashStr=hashStr.replace(/^#?\/?/,""),(parsedQs=lib.parse(hashStr)).hasOwnProperty("error"))return err=error.buildResponse(parsedQs.error,parsedQs.error_description),parsedQs.state&&(err.state=parsedQs.state),cb(err);if(!parsedQs.hasOwnProperty("access_token")&&!parsedQs.hasOwnProperty("id_token")&&!parsedQs.hasOwnProperty("refresh_token"))return cb(null,null);var responseTypes=(this.baseOptions.responseType||options.responseType||"").split(" ");return responseTypes.length>0&&-1!==responseTypes.indexOf("token")&&!parsedQs.hasOwnProperty("access_token")?cb(error.buildResponse("invalid_hash","response_type contains `token`, but the parsed hash does not contain an `access_token` property")):responseTypes.length>0&&-1!==responseTypes.indexOf("id_token")&&!parsedQs.hasOwnProperty("id_token")?cb(error.buildResponse("invalid_hash","response_type contains `id_token`, but the parsed hash does not contain an `id_token` property")):this.validateAuthenticationResponse(options,parsedQs,cb)},WebAuth.prototype.validateAuthenticationResponse=function(options,parsedHash,cb){var _this=this;options.__enableIdPInitiatedLogin=options.__enableIdPInitiatedLogin||options.__enableImpersonation;var state=parsedHash.state,transaction=this.transactionManager.getStoredTransaction(state),transactionState=options.state||transaction&&transaction.state||null,transactionStateMatchesState=transactionState===state;if(!(!state&&!transactionState&&options.__enableIdPInitiatedLogin)&&!transactionStateMatchesState)return cb({error:"invalid_token",errorDescription:"`state` does not match."});var transactionNonce=options.nonce||transaction&&transaction.nonce||null,transactionOrganization=transaction&&transaction.organization,appState=options.state||transaction&&transaction.appState||null,callback=function(err,payload){if(err)return cb(err);var sub;transaction&&transaction.lastUsedConnection&&(payload&&(sub=payload.sub),_this.ssodataStorage.set(transaction.lastUsedConnection,sub));return cb(null,function(qsParams,appState,token){return{accessToken:qsParams.access_token||null,idToken:qsParams.id_token||null,idTokenPayload:token||null,appState:appState||null,refreshToken:qsParams.refresh_token||null,state:qsParams.state||null,expiresIn:qsParams.expires_in?parseInt(qsParams.expires_in,10):null,tokenType:qsParams.token_type||null,scope:qsParams.scope||null}}(parsedHash,appState,payload))};return parsedHash.id_token?this.validateToken(parsedHash.id_token,transactionNonce,(function(validationError,payload){if(!validationError){if(transactionOrganization)if(0===transactionOrganization.indexOf("org_")){if(!payload.org_id)return callback(error.invalidToken("Organization Id (org_id) claim must be a string present in the ID token"));if(payload.org_id!==transactionOrganization)return callback(error.invalidToken('Organization Id (org_id) claim value mismatch in the ID token; expected "'+transactionOrganization+'", found "'+payload.org_id+'"'))}else{if(!payload.org_name)return callback(error.invalidToken("Organization Name (org_name) claim must be a string present in the ID token"));if(payload.org_name!==transactionOrganization.toLowerCase())return callback(error.invalidToken('Organization Name (org_name) claim value mismatch in the ID token; expected "'+transactionOrganization+'", found "'+payload.org_name+'"'))}return parsedHash.access_token&&payload.at_hash?(new I).validateAccessToken(parsedHash.access_token,"RS256",payload.at_hash,(function(err){return err?callback(error.invalidToken(err.message)):callback(null,payload)})):callback(null,payload)}if("invalid_token"!==validationError.error||validationError.errorDescription&&validationError.errorDescription.indexOf("Nonce (nonce) claim value mismatch in the ID token")>-1)return callback(validationError);var decodedToken=(new I).decode(parsedHash.id_token);if("HS256"!==decodedToken.header.alg)return callback(validationError);if((decodedToken.payload.nonce||null)!==transactionNonce)return callback({error:"invalid_token",errorDescription:'Nonce (nonce) claim value mismatch in the ID token; expected "'+transactionNonce+'", found "'+decodedToken.payload.nonce+'"'});if(!parsedHash.access_token){return callback({error:"invalid_token",description:"The id_token cannot be validated because it was signed with the HS256 algorithm and public clients (like a browser) can’t store secrets. Please read the associated doc for possible ways to fix this. Read more: https://auth0.com/docs/errors/libraries/auth0-js/invalid-token#parsing-an-hs256-signed-id-token-without-an-access-token"})}return _this.client.userInfo(parsedHash.access_token,(function(errUserInfo,profile){return errUserInfo?callback(errUserInfo):callback(null,profile)}))})):callback(null,null)},WebAuth.prototype.validateToken=function(token,nonce,cb){new I({issuer:this.baseOptions.token_issuer,jwksURI:this.baseOptions.jwksURI,audience:this.baseOptions.clientID,leeway:this.baseOptions.leeway||60,maxAge:this.baseOptions.maxAge,__clock:this.baseOptions.__clock||defaultClock}).verify(token,nonce,(function(err,payload){if(err)return cb(error.invalidToken(err.message));cb(null,payload)}))},WebAuth.prototype.renewAuth=function(options,cb){var usePostMessage=!!options.usePostMessage,postMessageDataType=options.postMessageDataType||!1,postMessageOrigin=options.postMessageOrigin||windowHelper.getWindow().origin,timeout=options.timeout,_this=this,params=objectHelper.merge(this.baseOptions,["clientID","redirectUri","responseType","scope","audience","_csrf","state","_intstate","nonce"]).with(options);params.responseType=params.responseType||"token",params.responseMode=params.responseMode||"fragment",params=this.transactionManager.process(params),assert.check(params,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),params.prompt="none",params=objectHelper.blacklist(params,["usePostMessage","tenant","postMessageDataType","postMessageOrigin"]),SilentAuthenticationHandler.create({authenticationUrl:this.client.buildAuthorizeUrl(params),postMessageDataType:postMessageDataType,postMessageOrigin:postMessageOrigin,timeout:timeout}).login(usePostMessage,(function(err,hash){if("object"==typeof hash)return cb(err,hash);_this.parseHash({hash:hash},cb)}))},WebAuth.prototype.checkSession=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(options);return"code"===params.responseType?cb({error:"error",error_description:"responseType can't be `code`"}):(options.nonce||(params=this.transactionManager.process(params)),params.redirectUri?(assert.check(params,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),params=objectHelper.blacklist(params,["usePostMessage","tenant","postMessageDataType"]),void this.webMessageHandler.run(params,wrapCallback(cb,{forceLegacyError:!0,ignoreCasing:!0}))):cb({error:"error",error_description:"redirectUri can't be empty"}))},WebAuth.prototype.changePassword=function(options,cb){return this.client.dbConnection.changePassword(options,cb)},WebAuth.prototype.passwordlessStart=function(options,cb){var authParams=objectHelper.merge(this.baseOptions,["responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(options.authParams);return options.authParams=this.transactionManager.process(authParams),this.client.passwordless.start(options,cb)},WebAuth.prototype.signup=function(options,cb){return this.client.dbConnection.signup(options,cb)},WebAuth.prototype.authorize=function(options){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce","organization","invitation"]).with(options);assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),(params=this.transactionManager.process(params)).scope=params.scope||"openid profile email",windowHelper.redirect(this.client.buildAuthorizeUrl(params))},WebAuth.prototype.signupAndAuthorize=function(options,cb){var _this=this;return this.client.dbConnection.signup(objectHelper.blacklist(options,["popupHandler"]),(function(err){if(err)return cb(err);options.realm=options.connection,options.username||(options.username=options.email),_this.client.login(options,cb)}))},WebAuth.prototype.login=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting","organization","invitation"]).with(options);params=this.transactionManager.process(params),windowHelper.getWindow().location.host===this.baseOptions.domain?(params.connection=params.realm,delete params.realm,this._universalLogin.login(params,cb)):this.crossOriginAuthentication.login(params,cb)},WebAuth.prototype.passwordlessLogin=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting"]).with(options);if(params=this.transactionManager.process(params),windowHelper.getWindow().location.host===this.baseOptions.domain)this.passwordlessVerify(params,cb);else{var crossOriginOptions=objectHelper.extend({credentialType:"http://auth0.com/oauth/grant-type/passwordless/otp",realm:params.connection,username:params.email||params.phoneNumber,otp:params.verificationCode},objectHelper.blacklist(params,["connection","email","phoneNumber","verificationCode"]));this.crossOriginAuthentication.login(crossOriginOptions,cb)}},WebAuth.prototype.crossOriginAuthenticationCallback=function(){this.crossOriginVerification()},WebAuth.prototype.crossOriginVerification=function(){this.crossOriginAuthentication.callback()},WebAuth.prototype.logout=function(options){windowHelper.redirect(this.client.buildLogoutUrl(options))},WebAuth.prototype.passwordlessVerify=function(options,cb){var _this=this,params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting"]).with(options);return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),params=this.transactionManager.process(params),this.client.passwordless.verify(params,(function(err){if(err)return cb(err);function doAuth(){windowHelper.redirect(_this.client.passwordless.buildVerifyUrl(params))}if("function"==typeof options.onRedirecting)return options.onRedirecting((function(){doAuth()}));doAuth()}))},WebAuth.prototype.renderCaptcha=function(element,options,callback){return captcha.render(this.client,captcha.Flow.DEFAULT,element,options,callback)},WebAuth.prototype.renderPasswordlessCaptcha=function(element,options,callback){return captcha.render(this.client,captcha.Flow.PASSWORDLESS,element,options,callback)},WebAuth.prototype.renderPasswordResetCaptcha=function(element,options,callback){return captcha.render(this.client,captcha.Flow.PASSWORD_RESET,element,options,callback)},PasswordlessAuthentication.prototype.buildVerifyUrl=function(options){var params,qString;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},verificationCode:{type:"string",message:"verificationCode option is required"},phoneNumber:{optional:!1,type:"string",message:"phoneNumber option is required",condition:function(o){return!o.email}},email:{optional:!1,type:"string",message:"email option is required",condition:function(o){return!o.phoneNumber}}}),params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","protocol","nonce"]).with(options),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params=objectHelper.toSnakeCase(params,["auth0Client"]),qString=lib.stringify(params),urlJoin(this.baseOptions.rootUrl,"passwordless","verify_redirect","?"+qString)},PasswordlessAuthentication.prototype.start=function(options,cb){var url,body;assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},send:{type:"string",message:"send option is required",values:["link","code"],value_message:"send is not valid ([link, code])"},phoneNumber:{optional:!0,type:"string",message:"phoneNumber option is required",condition:function(o){return"code"===o.send||!o.email}},email:{optional:!0,type:"string",message:"email option is required",condition:function(o){return"link"===o.send||!o.phoneNumber}},authParams:{optional:!0,type:"object",message:"authParams option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"passwordless","start");var xRequestLanguage=options.xRequestLanguage;delete options.xRequestLanguage,(body=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope"]).with(options)).scope&&(body.authParams=body.authParams||{},body.authParams.scope=body.authParams.scope||body.scope),body.redirectUri&&(body.authParams=body.authParams||{},body.authParams.redirect_uri=body.authParams.redirectUri||body.redirectUri),body.responseType&&(body.authParams=body.authParams||{},body.authParams.response_type=body.authParams.responseType||body.responseType),delete body.redirectUri,delete body.responseType,delete body.scope,body=objectHelper.toSnakeCase(body,["auth0Client","authParams"]);var postOptions=xRequestLanguage?{xRequestLanguage:xRequestLanguage}:void 0;return this.request.post(url,postOptions).send(body).end(wrapCallback(cb))},PasswordlessAuthentication.prototype.verify=function(options,cb){var url,cleanOption;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},verificationCode:{type:"string",message:"verificationCode option is required"},phoneNumber:{optional:!1,type:"string",message:"phoneNumber option is required",condition:function(o){return!o.email}},email:{optional:!1,type:"string",message:"email option is required",condition:function(o){return!o.phoneNumber}}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),cleanOption=objectHelper.pick(options,["connection","verificationCode","phoneNumber","email","auth0Client","clientID"]),cleanOption=objectHelper.toSnakeCase(cleanOption,["auth0Client"]),url=urlJoin(this.baseOptions.rootUrl,"passwordless","verify"),this.request.post(url).send(cleanOption).end(wrapCallback(cb))},PasswordlessAuthentication.prototype.getChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"passwordless","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},DBConnection.prototype.signup=function(options,cb){var url,body,metadata;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},email:{type:"string",message:"email option is required"},password:{type:"string",message:"password option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"dbconnections","signup"),metadata=(body=objectHelper.merge(this.baseOptions,["clientID","state"]).with(options)).user_metadata||body.userMetadata,body=objectHelper.blacklist(body,["scope","userMetadata","user_metadata"]),body=objectHelper.toSnakeCase(body,["auth0Client"]),metadata&&(body.user_metadata=metadata),this.request.post(url).send(body).end(wrapCallback(cb))},DBConnection.prototype.changePassword=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},email:{type:"string",message:"email option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"dbconnections","change_password"),body=objectHelper.merge(this.baseOptions,["clientID","state"]).with(options,["email","connection","captcha"]),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},DBConnection.prototype.getPasswordResetChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"dbconnections","change_password","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.buildAuthorizeUrl=function(options){var params,qString;return assert.check(options,{type:"object",message:"options parameter is not valid"}),params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience"]).with(options),assert.check(params,{type:"object",message:"options parameter is not valid"},{clientID:{type:"string",message:"clientID option is required"},redirectUri:{optional:!0,type:"string",message:"redirectUri option is required"},responseType:{type:"string",message:"responseType option is required"},nonce:{type:"string",message:"nonce option is required",condition:function(o){return-1===o.responseType.indexOf("code")&&-1!==o.responseType.indexOf("id_token")}},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params.connection_scope&&assert.isArray(params.connection_scope)&&(params.connection_scope=params.connection_scope.join(",")),params=objectHelper.blacklist(params,["username","popupOptions","domain","tenant","timeout","appState"]),params=objectHelper.toSnakeCase(params,["auth0Client"]),params=parametersWhitelist.oauthAuthorizeParams(this.warn,params),qString=lib.stringify(params),urlJoin(this.baseOptions.rootUrl,"authorize","?"+qString)},Authentication.prototype.buildLogoutUrl=function(options){var params,qString;return assert.check(options,{optional:!0,type:"object",message:"options parameter is not valid"}),params=objectHelper.merge(this.baseOptions,["clientID"]).with(options||{}),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params=objectHelper.toSnakeCase(params,["auth0Client","returnTo"]),qString=lib.stringify(objectHelper.blacklist(params,["federated"])),options&&void 0!==options.federated&&!1!==options.federated&&"false"!==options.federated&&(qString+="&federated"),urlJoin(this.baseOptions.rootUrl,"v2","logout","?"+qString)},Authentication.prototype.loginWithDefaultDirectory=function(options,cb){return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),options.grantType="password",this.oauthToken(options,cb)},Authentication.prototype.login=function(options,cb){return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},realm:{type:"string",message:"realm option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),options.grantType="http://auth0.com/oauth/grant-type/password-realm",this.oauthToken(options,cb)},Authentication.prototype.oauthToken=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"oauth","token"),body=objectHelper.merge(this.baseOptions,["clientID","scope","audience"]).with(options),assert.check(body,{type:"object",message:"options parameter is not valid"},{clientID:{type:"string",message:"clientID option is required"},grantType:{type:"string",message:"grantType option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),body=objectHelper.toSnakeCase(body,["auth0Client"]),body=parametersWhitelist.oauthTokenParams(this.warn,body),this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.loginWithResourceOwner=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},connection:{type:"string",message:"connection option is required"},scope:{optional:!0,type:"string",message:"scope option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"oauth","ro"),body=objectHelper.merge(this.baseOptions,["clientID","scope"]).with(options,["username","password","scope","connection","device"]),(body=objectHelper.toSnakeCase(body,["auth0Client"])).grant_type=body.grant_type||"password",this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.getSSOData=function(withActiveDirectories,cb){if(this.auth0||(this.auth0=new WebAuth(this.baseOptions)),windowHelper.getWindow().location.host===this.baseOptions.domain)return this.auth0._universalLogin.getSSOData(withActiveDirectories,cb);"function"==typeof withActiveDirectories&&(cb=withActiveDirectories),assert.check(cb,{type:"function",message:"cb parameter is not valid"});var clientId=this.baseOptions.clientID,ssodataInformation=this.ssodataStorage.get()||{};this.auth0.checkSession({responseType:"token id_token",scope:"openid profile email",connection:ssodataInformation.lastUsedConnection,timeout:5e3},(function(err,result){return err?"login_required"===err.error?cb(null,{sso:!1}):("consent_required"===err.error&&(err.error_description="Consent required. When using `getSSOData`, the user has to be authenticated with the following scope: `openid profile email`."),cb(err,{sso:!1})):ssodataInformation.lastUsedSub&&ssodataInformation.lastUsedSub!==result.idTokenPayload.sub?cb(err,{sso:!1}):cb(null,{lastUsedConnection:{name:ssodataInformation.lastUsedConnection},lastUsedUserID:result.idTokenPayload.sub,lastUsedUsername:result.idTokenPayload.email||result.idTokenPayload.name,lastUsedClientID:clientId,sessionClients:[clientId],sso:!0})}))},Authentication.prototype.userInfo=function(accessToken,cb){var url;return assert.check(accessToken,{type:"string",message:"accessToken parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"userinfo"),this.request.get(url).set("Authorization","Bearer "+accessToken).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.getChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"usernamepassword","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.delegation=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{grant_type:{type:"string",message:"grant_type option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"delegation"),body=objectHelper.merge(this.baseOptions,["clientID"]).with(options),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.getUserCountry=function(cb){var url;return assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"user","geoloc","country"),this.request.get(url).end(wrapCallback(cb))},Management.prototype.getUser=function(userId,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.get(url).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.patchUserMetadata=function(userId,userMetadata,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(userMetadata,{type:"object",message:"userMetadata parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.patch(url).send({user_metadata:userMetadata}).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.patchUserAttributes=function(userId,user,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(user,{type:"object",message:"user parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.patch(url).send(user).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.linkUser=function(userId,secondaryUserToken,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(secondaryUserToken,{type:"string",message:"secondaryUserToken parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId,"identities"),this.request.post(url).send({link_with:secondaryUserToken}).end(wrapCallback(cb,{ignoreCasing:!0}))};var index={Authentication:Authentication,Management:Management,WebAuth:WebAuth,version:version};export default index;export{Authentication,Management,WebAuth,version}; //# sourceMappingURL=auth0.min.esm.js.map diff --git a/dist/auth0.min.esm.js.map b/dist/auth0.min.esm.js.map index cdc2198a..7adb63d4 100644 --- a/dist/auth0.min.esm.js.map +++ b/dist/auth0.min.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"auth0.min.esm.js","sources":["../node_modules/url-join/lib/url-join.js","../node_modules/has-symbols/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-symbols/shams.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/index.js","../node_modules/component-emitter/index.js","../node_modules/fast-safe-stringify/index.js","../node_modules/superagent/lib/utils.js","../node_modules/superagent/lib/request-base.js","../node_modules/superagent/lib/response-base.js","../node_modules/superagent/lib/agent-base.js","../node_modules/base64-js/index.js","../node_modules/superagent/lib/client.js","../src/helper/base64_url.js","../src/version.js","../src/helper/assert.js","../src/helper/object-assign.js","../src/helper/object.js","../src/helper/request-builder.js","../src/helper/window.js","../src/helper/storage/dummy.js","../node_modules/js-cookie/src/js.cookie.js","../src/helper/storage/cookie.js","../src/helper/warn.js","../src/helper/storage/handler.js","../src/helper/storage.js","../src/helper/ssodata.js","../src/helper/error.js","../src/helper/response-handler.js","../src/helper/parameters-whitelist.js","../node_modules/idtoken-verifier/build/idtoken-verifier.esm.js","../src/helper/plugins.js","../src/helper/random.js","../src/web-auth/transaction-manager.js","../src/helper/times.js","../src/helper/iframe-handler.js","../src/web-auth/web-message-handler.js","../src/web-auth/cross-origin-authentication.js","../src/web-auth/redirect.js","../node_modules/winchan/winchan.js","../src/helper/url.js","../src/helper/popup-handler.js","../src/web-auth/popup.js","../src/web-auth/silent-authentication-handler.js","../src/web-auth/username-password.js","../src/web-auth/hosted-pages.js","../src/web-auth/captcha.js","../src/web-auth/index.js","../src/authentication/passwordless-authentication.js","../src/authentication/db-connection.js","../src/authentication/index.js","../src/management/index.js","../src/index.js"],"sourcesContent":["(function (name, context, definition) {\n if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n else if (typeof define === 'function' && define.amd) define(definition);\n else context[name] = definition();\n})('urljoin', this, function () {\n\n function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n }\n\n return function () {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n };\n\n});\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\ntry {\n\tnull.error; // eslint-disable-line no-unused-expressions\n} catch (e) {\n\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\tvar errorProto = getProto(getProto(e));\n\tINTRINSICS['%Error.prototype%'] = errorProto;\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\nexports.type = function (string_) {\n return string_.split(/ *; */).shift();\n};\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\n\nexports.params = function (value) {\n var object = {};\n\n var _iterator = _createForOfIteratorHelper(value.split(/ *; */)),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var string_ = _step.value;\n var parts = string_.split(/ *= */);\n var key = parts.shift();\n\n var _value = parts.shift();\n\n if (key && _value) object[key] = _value;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return object;\n};\n/**\n * Parse Link header fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\n\nexports.parseLinks = function (value) {\n var object = {};\n\n var _iterator2 = _createForOfIteratorHelper(value.split(/ *, */)),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var string_ = _step2.value;\n var parts = string_.split(/ *; */);\n var url = parts[0].slice(1, -1);\n var rel = parts[1].split(/ *= */)[1].slice(1, -1);\n object[rel] = url;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return object;\n};\n/**\n * Strip content related fields from `header`.\n *\n * @param {Object} header\n * @return {Object} header\n * @api private\n */\n\n\nexports.cleanHeader = function (header, changesOrigin) {\n delete header['content-type'];\n delete header['content-length'];\n delete header['transfer-encoding'];\n delete header.host; // secuirty\n\n if (changesOrigin) {\n delete header.authorization;\n delete header.cookie;\n }\n\n return header;\n};\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} object\n * @return {Boolean}\n * @api private\n */\n\n\nexports.isObject = function (object) {\n return object !== null && _typeof(object) === 'object';\n};\n/**\n * Object.hasOwn fallback/polyfill.\n *\n * @type {(object: object, property: string) => boolean} object\n * @api private\n */\n\n\nexports.hasOwn = Object.hasOwn || function (object, property) {\n if (object == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n return Object.prototype.hasOwnProperty.call(new Object(object), property);\n};\n\nexports.mixin = function (target, source) {\n for (var key in source) {\n if (exports.hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHBvcnRzIiwidHlwZSIsInN0cmluZ18iLCJzcGxpdCIsInNoaWZ0IiwicGFyYW1zIiwidmFsdWUiLCJvYmplY3QiLCJwYXJ0cyIsImtleSIsInBhcnNlTGlua3MiLCJ1cmwiLCJzbGljZSIsInJlbCIsImNsZWFuSGVhZGVyIiwiaGVhZGVyIiwiY2hhbmdlc09yaWdpbiIsImhvc3QiLCJhdXRob3JpemF0aW9uIiwiY29va2llIiwiaXNPYmplY3QiLCJoYXNPd24iLCJPYmplY3QiLCJwcm9wZXJ0eSIsIlR5cGVFcnJvciIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm1peGluIiwidGFyZ2V0Iiwic291cmNlIl0sInNvdXJjZXMiOlsiLi4vc3JjL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJuIHRoZSBtaW1lIHR5cGUgZm9yIHRoZSBnaXZlbiBgc3RyYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnR5cGUgPSAoc3RyaW5nXykgPT4gc3RyaW5nXy5zcGxpdCgvICo7ICovKS5zaGlmdCgpO1xuXG4vKipcbiAqIFJldHVybiBoZWFkZXIgZmllbGQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnBhcmFtcyA9ICh2YWx1ZSkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7fTtcbiAgZm9yIChjb25zdCBzdHJpbmdfIG9mIHZhbHVlLnNwbGl0KC8gKjsgKi8pKSB7XG4gICAgY29uc3QgcGFydHMgPSBzdHJpbmdfLnNwbGl0KC8gKj0gKi8pO1xuICAgIGNvbnN0IGtleSA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJ0cy5zaGlmdCgpO1xuXG4gICAgaWYgKGtleSAmJiB2YWx1ZSkgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG4vKipcbiAqIFBhcnNlIExpbmsgaGVhZGVyIGZpZWxkcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnBhcnNlTGlua3MgPSAodmFsdWUpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge307XG4gIGZvciAoY29uc3Qgc3RyaW5nXyBvZiB2YWx1ZS5zcGxpdCgvICosICovKSkge1xuICAgIGNvbnN0IHBhcnRzID0gc3RyaW5nXy5zcGxpdCgvICo7ICovKTtcbiAgICBjb25zdCB1cmwgPSBwYXJ0c1swXS5zbGljZSgxLCAtMSk7XG4gICAgY29uc3QgcmVsID0gcGFydHNbMV0uc3BsaXQoLyAqPSAqLylbMV0uc2xpY2UoMSwgLTEpO1xuICAgIG9iamVjdFtyZWxdID0gdXJsO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cbi8qKlxuICogU3RyaXAgY29udGVudCByZWxhdGVkIGZpZWxkcyBmcm9tIGBoZWFkZXJgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBoZWFkZXJcbiAqIEByZXR1cm4ge09iamVjdH0gaGVhZGVyXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLmNsZWFuSGVhZGVyID0gKGhlYWRlciwgY2hhbmdlc09yaWdpbikgPT4ge1xuICBkZWxldGUgaGVhZGVyWydjb250ZW50LXR5cGUnXTtcbiAgZGVsZXRlIGhlYWRlclsnY29udGVudC1sZW5ndGgnXTtcbiAgZGVsZXRlIGhlYWRlclsndHJhbnNmZXItZW5jb2RpbmcnXTtcbiAgZGVsZXRlIGhlYWRlci5ob3N0O1xuICAvLyBzZWN1aXJ0eVxuICBpZiAoY2hhbmdlc09yaWdpbikge1xuICAgIGRlbGV0ZSBoZWFkZXIuYXV0aG9yaXphdGlvbjtcbiAgICBkZWxldGUgaGVhZGVyLmNvb2tpZTtcbiAgfVxuXG4gIHJldHVybiBoZWFkZXI7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGBvYmpgIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cbmV4cG9ydHMuaXNPYmplY3QgPSAob2JqZWN0KSA9PiB7XG4gIHJldHVybiBvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCc7XG59O1xuXG4vKipcbiAqIE9iamVjdC5oYXNPd24gZmFsbGJhY2svcG9seWZpbGwuXG4gKlxuICogQHR5cGUgeyhvYmplY3Q6IG9iamVjdCwgcHJvcGVydHk6IHN0cmluZykgPT4gYm9vbGVhbn0gb2JqZWN0XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZXhwb3J0cy5oYXNPd24gPVxuICBPYmplY3QuaGFzT3duIHx8XG4gIGZ1bmN0aW9uIChvYmplY3QsIHByb3BlcnR5KSB7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ldyBPYmplY3Qob2JqZWN0KSwgcHJvcGVydHkpO1xuICB9O1xuXG5leHBvcnRzLm1peGluID0gKHRhcmdldCwgc291cmNlKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIGlmIChleHBvcnRzLmhhc093bihzb3VyY2UsIGtleSkpIHtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQUEsT0FBTyxDQUFDQyxJQUFSLEdBQWUsVUFBQ0MsT0FBRDtFQUFBLE9B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","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar semver = require('semver');\n/**\n * Module of mixed-in functions shared between node and client code\n */\n\n\nvar _require = require('./utils'),\n isObject = _require.isObject,\n hasOwn = _require.hasOwn;\n/**\n * Expose `RequestBase`.\n */\n\n\nmodule.exports = RequestBase;\n/**\n * Initialize a new `RequestBase`.\n *\n * @api public\n */\n\nfunction RequestBase() {}\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.clearTimeout = function () {\n clearTimeout(this._timer);\n clearTimeout(this._responseTimeoutTimer);\n clearTimeout(this._uploadTimeoutTimer);\n delete this._timer;\n delete this._responseTimeoutTimer;\n delete this._uploadTimeoutTimer;\n return this;\n};\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\n\nRequestBase.prototype.parse = function (fn) {\n this._parser = fn;\n return this;\n};\n/**\n * Set format of binary response body.\n * In browser valid formats are 'blob' and 'arraybuffer',\n * which return Blob and ArrayBuffer, respectively.\n *\n * In Node all values result in Buffer.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.responseType = function (value) {\n this._responseType = value;\n return this;\n};\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\n\nRequestBase.prototype.serialize = function (fn) {\n this._serializer = fn;\n return this;\n};\n/**\n * Set timeouts.\n *\n * - response timeout is time between sending request and receiving the first byte of the response. Includes DNS and connection time.\n * - deadline is the time from start of the request to receiving response body in full. If the deadline is too short large files may not load at all on slow connections.\n * - upload is the time since last bit of data was sent or received. This timeout works only if deadline timeout is off\n *\n * Value of 0 or false means no timeout.\n *\n * @param {Number|Object} ms or {response, deadline}\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.timeout = function (options) {\n if (!options || _typeof(options) !== 'object') {\n this._timeout = options;\n this._responseTimeout = 0;\n this._uploadTimeout = 0;\n return this;\n }\n\n for (var option in options) {\n if (hasOwn(options, option)) {\n switch (option) {\n case 'deadline':\n this._timeout = options.deadline;\n break;\n\n case 'response':\n this._responseTimeout = options.response;\n break;\n\n case 'upload':\n this._uploadTimeout = options.upload;\n break;\n\n default:\n console.warn('Unknown timeout option', option);\n }\n }\n }\n\n return this;\n};\n/**\n * Set number of retry attempts on error.\n *\n * Failed requests will be retried 'count' times if timeout or err.code >= 500.\n *\n * @param {Number} count\n * @param {Function} [fn]\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.retry = function (count, fn) {\n // Default to 1 if no count passed or true\n if (arguments.length === 0 || count === true) count = 1;\n if (count <= 0) count = 0;\n this._maxRetries = count;\n this._retries = 0;\n this._retryCallback = fn;\n return this;\n}; //\n// NOTE: we do not include ESOCKETTIMEDOUT because that is from `request` package\n// \n//\n// NOTE: we do not include EADDRINFO because it was removed from libuv in 2014\n// \n// \n//\n//\n// TODO: expose these as configurable defaults\n//\n\n\nvar ERROR_CODES = new Set(['ETIMEDOUT', 'ECONNRESET', 'EADDRINUSE', 'ECONNREFUSED', 'EPIPE', 'ENOTFOUND', 'ENETUNREACH', 'EAI_AGAIN']);\nvar STATUS_CODES = new Set([408, 413, 429, 500, 502, 503, 504, 521, 522, 524]); // TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n// const METHODS = new Set(['GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE']);\n\n/**\n * Determine if a request should be retried.\n * (Inspired by https://github.com/sindresorhus/got#retry)\n *\n * @param {Error} err an error\n * @param {Response} [res] response\n * @returns {Boolean} if segment should be retried\n */\n\nRequestBase.prototype._shouldRetry = function (error, res) {\n if (!this._maxRetries || this._retries++ >= this._maxRetries) {\n return false;\n }\n\n if (this._retryCallback) {\n try {\n var override = this._retryCallback(error, res);\n\n if (override === true) return true;\n if (override === false) return false; // undefined falls back to defaults\n } catch (err) {\n console.error(err);\n }\n } // TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n\n /*\n if (\n this.req &&\n this.req.method &&\n !METHODS.has(this.req.method.toUpperCase())\n )\n return false;\n */\n\n\n if (res && res.status && STATUS_CODES.has(res.status)) return true;\n\n if (error) {\n if (error.code && ERROR_CODES.has(error.code)) return true; // Superagent timeout\n\n if (error.timeout && error.code === 'ECONNABORTED') return true;\n if (error.crossDomain) return true;\n }\n\n return false;\n};\n/**\n * Retry request\n *\n * @return {Request} for chaining\n * @api private\n */\n\n\nRequestBase.prototype._retry = function () {\n this.clearTimeout(); // node\n\n if (this.req) {\n this.req = null;\n this.req = this.request();\n }\n\n this._aborted = false;\n this.timedout = false;\n this.timedoutError = null;\n return this._end();\n};\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} [reject]\n * @return {Request}\n */\n\n\nRequestBase.prototype.then = function (resolve, reject) {\n var _this = this;\n\n if (!this._fullfilledPromise) {\n var self = this;\n\n if (this._endCalled) {\n console.warn('Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises');\n }\n\n this._fullfilledPromise = new Promise(function (resolve, reject) {\n self.on('abort', function () {\n if (_this._maxRetries && _this._maxRetries > _this._retries) {\n return;\n }\n\n if (_this.timedout && _this.timedoutError) {\n reject(_this.timedoutError);\n return;\n }\n\n var error = new Error('Aborted');\n error.code = 'ABORTED';\n error.status = _this.status;\n error.method = _this.method;\n error.url = _this.url;\n reject(error);\n });\n self.end(function (error, res) {\n if (error) reject(error);else resolve(res);\n });\n });\n }\n\n return this._fullfilledPromise.then(resolve, reject);\n};\n\nRequestBase.prototype.catch = function (callback) {\n return this.then(undefined, callback);\n};\n/**\n * Allow for extension\n */\n\n\nRequestBase.prototype.use = function (fn) {\n fn(this);\n return this;\n};\n\nRequestBase.prototype.ok = function (callback) {\n if (typeof callback !== 'function') throw new Error('Callback required');\n this._okCallback = callback;\n return this;\n};\n\nRequestBase.prototype._isResponseOK = function (res) {\n if (!res) {\n return false;\n }\n\n if (this._okCallback) {\n return this._okCallback(res);\n }\n\n return res.status >= 200 && res.status < 300;\n};\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\n\nRequestBase.prototype.get = function (field) {\n return this._header[field.toLowerCase()];\n};\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\n\nRequestBase.prototype.getHeader = RequestBase.prototype.get;\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.set = function (field, value) {\n if (isObject(field)) {\n for (var key in field) {\n if (hasOwn(field, key)) this.set(key, field[key]);\n }\n\n return this;\n }\n\n this._header[field.toLowerCase()] = value;\n this.header[field] = value;\n return this;\n};\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field field name\n */\n\n\nRequestBase.prototype.unset = function (field) {\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n *\n * request.post('/upload')\n * .field({ foo: 'bar', baz: 'qux' })\n * .end(callback);\n * ```\n *\n * @param {String|Object} name name of field\n * @param {String|Blob|File|Buffer|fs.ReadStream} val value of field\n * @param {String} options extra options, e.g. 'blob'\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.field = function (name, value, options) {\n // name should be either a string or an object.\n if (name === null || undefined === name) {\n throw new Error('.field(name, val) name can not be empty');\n }\n\n if (this._data) {\n throw new Error(\".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()\");\n }\n\n if (isObject(name)) {\n for (var key in name) {\n if (hasOwn(name, key)) this.field(key, name[key]);\n }\n\n return this;\n }\n\n if (Array.isArray(value)) {\n for (var i in value) {\n if (hasOwn(value, i)) this.field(name, value[i]);\n }\n\n return this;\n } // val should be defined now\n\n\n if (value === null || undefined === value) {\n throw new Error('.field(name, val) val can not be empty');\n }\n\n if (typeof value === 'boolean') {\n value = String(value);\n } //fix https://github.com/visionmedia/superagent/issues/1680\n\n\n if (options) this._getFormData().append(name, value, options);else this._getFormData().append(name, value);\n return this;\n};\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request} request\n * @api public\n */\n\n\nRequestBase.prototype.abort = function () {\n if (this._aborted) {\n return this;\n }\n\n this._aborted = true;\n if (this.xhr) this.xhr.abort(); // browser\n\n if (this.req) {\n // Node v13 has major differences in `abort()`\n // https://github.com/nodejs/node/blob/v12.x/lib/internal/streams/end-of-stream.js\n // https://github.com/nodejs/node/blob/v13.x/lib/internal/streams/end-of-stream.js\n // https://github.com/nodejs/node/blob/v14.x/lib/internal/streams/end-of-stream.js\n // (if you run a diff across these you will see the differences)\n //\n // References:\n // \n // \n //\n // Thanks to @shadowgate15 and @niftylettuce\n if (semver.gte(process.version, 'v13.0.0') && semver.lt(process.version, 'v14.0.0')) {\n // Note that the reason this doesn't work is because in v13 as compared to v14\n // there is no `callback = nop` set in end-of-stream.js above\n throw new Error('Superagent does not work in v13 properly with abort() due to Node.js core changes');\n } else if (semver.gte(process.version, 'v14.0.0')) {\n // We have to manually set `destroyed` to `true` in order for this to work\n // (see core internals of end-of-stream.js above in v14 branch as compared to v12)\n this.req.destroyed = true;\n }\n\n this.req.abort(); // node\n }\n\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\nRequestBase.prototype._auth = function (user, pass, options, base64Encoder) {\n switch (options.type) {\n case 'basic':\n this.set('Authorization', \"Basic \".concat(base64Encoder(\"\".concat(user, \":\").concat(pass))));\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n\n case 'bearer':\n // usage would be .auth(accessToken, { type: 'bearer' })\n this.set('Authorization', \"Bearer \".concat(user));\n break;\n\n default:\n break;\n }\n\n return this;\n};\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\n\nRequestBase.prototype.withCredentials = function (on) {\n // This is browser-only functionality. Node side is no-op.\n if (on === undefined) on = true;\n this._withCredentials = on;\n return this;\n};\n/**\n * Set the max redirects to `n`. Does nothing in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.redirects = function (n) {\n this._maxRedirects = n;\n return this;\n};\n/**\n * Maximum size of buffered response body, in bytes. Counts uncompressed size.\n * Default 200MB.\n *\n * @param {Number} n number of bytes\n * @return {Request} for chaining\n */\n\n\nRequestBase.prototype.maxResponseSize = function (n) {\n if (typeof n !== 'number') {\n throw new TypeError('Invalid argument');\n }\n\n this._maxResponseSize = n;\n return this;\n};\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\n\nRequestBase.prototype.toJSON = function () {\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header\n };\n};\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n// eslint-disable-next-line complexity\n\n\nRequestBase.prototype.send = function (data) {\n var isObject_ = isObject(data);\n var type = this._header['content-type'];\n\n if (this._formData) {\n throw new Error(\".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()\");\n }\n\n if (isObject_ && !this._data) {\n if (Array.isArray(data)) {\n this._data = [];\n } else if (!this._isHost(data)) {\n this._data = {};\n }\n } else if (data && this._data && this._isHost(this._data)) {\n throw new Error(\"Can't merge these send calls\");\n } // merge\n\n\n if (isObject_ && isObject(this._data)) {\n for (var key in data) {\n if (hasOwn(data, key)) this._data[key] = data[key];\n }\n } else if (typeof data === 'string') {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if (type) type = type.toLowerCase().trim();\n\n if (type === 'application/x-www-form-urlencoded') {\n this._data = this._data ? \"\".concat(this._data, \"&\").concat(data) : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!isObject_ || this._isHost(data)) {\n return this;\n } // default to json\n\n\n if (!type) this.type('json');\n return this;\n};\n/**\n * Sort `querystring` by the sort function\n *\n *\n * Examples:\n *\n * // default order\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery()\n * .end(callback)\n *\n * // customized sort function\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery(function(a, b){\n * return a.length - b.length;\n * })\n * .end(callback)\n *\n *\n * @param {Function} sort\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.sortQuery = function (sort) {\n // _sort default to true but otherwise can be a function or boolean\n this._sort = typeof sort === 'undefined' ? true : sort;\n return this;\n};\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\n\n\nRequestBase.prototype._finalizeQueryString = function () {\n var query = this._query.join('&');\n\n if (query) {\n this.url += (this.url.includes('?') ? '&' : '?') + query;\n }\n\n this._query.length = 0; // Makes the call idempotent\n\n if (this._sort) {\n var index = this.url.indexOf('?');\n\n if (index >= 0) {\n var queryArray = this.url.slice(index + 1).split('&');\n\n if (typeof this._sort === 'function') {\n queryArray.sort(this._sort);\n } else {\n queryArray.sort();\n }\n\n this.url = this.url.slice(0, index) + '?' + queryArray.join('&');\n }\n }\n}; // For backwards compat only\n\n\nRequestBase.prototype._appendQueryString = function () {\n console.warn('Unsupported');\n};\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\n\nRequestBase.prototype._timeoutError = function (reason, timeout, errno) {\n if (this._aborted) {\n return;\n }\n\n var error = new Error(\"\".concat(reason + timeout, \"ms exceeded\"));\n error.timeout = timeout;\n error.code = 'ECONNABORTED';\n error.errno = errno;\n this.timedout = true;\n this.timedoutError = error;\n this.abort();\n this.callback(error);\n};\n\nRequestBase.prototype._setTimeouts = function () {\n var self = this; // deadline\n\n if (this._timeout && !this._timer) {\n this._timer = setTimeout(function () {\n self._timeoutError('Timeout of ', self._timeout, 'ETIME');\n }, this._timeout);\n } // response timeout\n\n\n if (this._responseTimeout && !this._responseTimeoutTimer) {\n this._responseTimeoutTimer = setTimeout(function () {\n self._timeoutError('Response timeout of ', self._responseTimeout, 'ETIMEDOUT');\n }, this._responseTimeout);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZW12ZXIiLCJyZXF1aXJlIiwiaXNPYmplY3QiLCJoYXNPd24iLCJtb2R1bGUiLCJleHBvcnRzIiwiUmVxdWVzdEJhc2UiLCJwcm90b3R5cGUiLCJjbGVhclRpbWVvdXQiLCJfdGltZXIiLCJfcmVzcG9uc2VUaW1lb3V0VGltZXIiLCJfdXBsb2FkVGltZW91dFRpbWVyIiwicGFyc2UiLCJmbiIsIl9wYXJzZXIiLCJyZXNwb25zZVR5cGUiLCJ2YWx1ZSIsIl9yZXNwb25zZVR5cGUiLCJzZXJpYWxpemUiLCJfc2VyaWFsaXplciIsInRpbWVvdXQiLCJvcHRpb25zIiwiX3RpbWVvdXQiLCJfcmVzcG9uc2VUaW1lb3V0IiwiX3VwbG9hZFRpbWVvdXQiLCJvcHRpb24iLCJkZWFkbGluZSIsInJlc3BvbnNlIiwidXBsb2FkIiwiY29uc29sZSIsIndhcm4iLCJyZXRyeSIsImNvdW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiX21heFJldHJpZXMiLCJfcmV0cmllcyIsIl9yZXRyeUNhbGxiYWNrIiwiRVJST1JfQ09ERVMiLCJTZXQiLCJTVEFUVVNfQ09ERVMiLCJfc2hvdWxkUmV0cnkiLCJlcnJvciIsInJlcyIsIm92ZXJyaWRlIiwiZXJyIiwic3RhdHVzIiwiaGFzIiwiY29kZSIsImNyb3NzRG9tYWluIiwiX3JldHJ5IiwicmVxIiwicmVxdWVzdCIsIl9hYm9ydGVkIiwidGltZWRvdXQiLCJ0aW1lZG91dEVycm9yIiwiX2VuZCIsInRoZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX2Z1bGxmaWxsZWRQcm9taXNlIiwic2VsZiIsIl9lbmRDYWxsZWQiLCJQcm9taXNlIiwib24iLCJFcnJvciIsIm1ldGhvZCIsInVybCIsImVuZCIsImNhdGNoIiwiY2FsbGJhY2siLCJ1bmRlZmluZWQiLCJ1c2UiLCJvayIsIl9va0NhbGxiYWNrIiwiX2lzUmVzcG9uc2VPSyIsImdldCIsImZpZWxkIiwiX2hlYWRlciIsInRvTG93ZXJDYXNlIiwiZ2V0SGVhZGVyIiwic2V0Iiwia2V5IiwiaGVhZGVyIiwidW5zZXQiLCJuYW1lIiwiX2RhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJpIiwiU3RyaW5nIiwiX2dldEZvcm1EYXRhIiwiYXBwZW5kIiwiYWJvcnQiLCJ4aHIiLCJndGUiLCJwcm9jZXNzIiwidmVyc2lvbiIsImx0IiwiZGVzdHJveWVkIiwiZW1pdCIsIl9hdXRoIiwidXNlciIsInBhc3MiLCJiYXNlNjRFbmNvZGVyIiwidHlwZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJ3aXRoQ3JlZGVudGlhbHMiLCJfd2l0aENyZWRlbnRpYWxzIiwicmVkaXJlY3RzIiwibiIsIl9tYXhSZWRpcmVjdHMiLCJtYXhSZXNwb25zZVNpemUiLCJUeXBlRXJyb3IiLCJfbWF4UmVzcG9uc2VTaXplIiwidG9KU09OIiwiZGF0YSIsImhlYWRlcnMiLCJzZW5kIiwiaXNPYmplY3RfIiwiX2Zvcm1EYXRhIiwiX2lzSG9zdCIsInRyaW0iLCJzb3J0UXVlcnkiLCJzb3J0IiwiX3NvcnQiLCJfZmluYWxpemVRdWVyeVN0cmluZyIsInF1ZXJ5IiwiX3F1ZXJ5Iiwiam9pbiIsImluY2x1ZGVzIiwiaW5kZXgiLCJpbmRleE9mIiwicXVlcnlBcnJheSIsInNsaWNlIiwic3BsaXQiLCJfYXBwZW5kUXVlcnlTdHJpbmciLCJfdGltZW91dEVycm9yIiwicmVhc29uIiwiZXJybm8iLCJfc2V0VGltZW91dHMiLCJzZXRUaW1lb3V0Il0sInNvdXJjZXMiOlsiLi4vc3JjL3JlcXVlc3QtYmFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZW12ZXIgPSByZXF1aXJlKCdzZW12ZXInKTtcblxuLyoqXG4gKiBNb2R1bGUgb2YgbWl4ZWQtaW4gZnVuY3Rpb25zIHNoYXJlZCBiZXR3ZWVuIG5vZGUgYW5kIGNsaWVudCBjb2RlXG4gKi9cbmNvbnN0IHsgaXNPYmplY3QsIGhhc093biB9ID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG4vKipcbiAqIEV4cG9zZSBgUmVxdWVzdEJhc2VgLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVxdWVzdEJhc2U7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVxdWVzdEJhc2VgLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUmVxdWVzdEJhc2UoKSB7IH1cblxuLyoqXG4gKiBDbGVhciBwcmV2aW91cyB0aW1lb3V0LlxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuY2xlYXJUaW1lb3V0ID0gZnVuY3Rpb24gKCkge1xuICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xuICBjbGVhclRpbWVvdXQodGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXIpO1xuICBjbGVhclRpbWVvdXQodGhpcy5fdXBsb2FkVGltZW91dFRpbWVyKTtcbiAgZGVsZXRlIHRoaXMuX3RpbWVyO1xuICBkZWxldGUgdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXI7XG4gIGRlbGV0ZSB0aGlzLl91cGxvYWRUaW1lb3V0VGltZXI7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBPdmVycmlkZSBkZWZhdWx0IHJlc3BvbnNlIGJvZHkgcGFyc2VyXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBjb252ZXJ0IGluY29taW5nIGRhdGEgaW50byByZXF1ZXN0LmJvZHlcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAoZm4pIHtcbiAgdGhpcy5fcGFyc2VyID0gZm47XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgZm9ybWF0IG9mIGJpbmFyeSByZXNwb25zZSBib2R5LlxuICogSW4gYnJvd3NlciB2YWxpZCBmb3JtYXRzIGFyZSAnYmxvYicgYW5kICdhcnJheWJ1ZmZlcicsXG4gKiB3aGljaCByZXR1cm4gQmxvYiBhbmQgQXJyYXlCdWZmZXIsIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBJbiBOb2RlIGFsbCB2YWx1ZXMgcmVzdWx0IGluIEJ1ZmZlci5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5yZXNwb25zZVR5cGUoJ2Jsb2InKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUucmVzcG9uc2VUeXBlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHRoaXMuX3Jlc3BvbnNlVHlwZSA9IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogT3ZlcnJpZGUgZGVmYXVsdCByZXF1ZXN0IGJvZHkgc2VyaWFsaXplclxuICpcbiAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgdG8gY29udmVydCBkYXRhIHNldCB2aWEgLnNlbmQgb3IgLmF0dGFjaCBpbnRvIHBheWxvYWQgdG8gc2VuZFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXJpYWxpemUgPSBmdW5jdGlvbiAoZm4pIHtcbiAgdGhpcy5fc2VyaWFsaXplciA9IGZuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRpbWVvdXRzLlxuICpcbiAqIC0gcmVzcG9uc2UgdGltZW91dCBpcyB0aW1lIGJldHdlZW4gc2VuZGluZyByZXF1ZXN0IGFuZCByZWNlaXZpbmcgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHJlc3BvbnNlLiBJbmNsdWRlcyBETlMgYW5kIGNvbm5lY3Rpb24gdGltZS5cbiAqIC0gZGVhZGxpbmUgaXMgdGhlIHRpbWUgZnJvbSBzdGFydCBvZiB0aGUgcmVxdWVzdCB0byByZWNlaXZpbmcgcmVzcG9uc2UgYm9keSBpbiBmdWxsLiBJZiB0aGUgZGVhZGxpbmUgaXMgdG9vIHNob3J0IGxhcmdlIGZpbGVzIG1heSBub3QgbG9hZCBhdCBhbGwgb24gc2xvdyBjb25uZWN0aW9ucy5cbiAqIC0gdXBsb2FkIGlzIHRoZSB0aW1lICBzaW5jZSBsYXN0IGJpdCBvZiBkYXRhIHdhcyBzZW50IG9yIHJlY2VpdmVkLiBUaGlzIHRpbWVvdXQgd29ya3Mgb25seSBpZiBkZWFkbGluZSB0aW1lb3V0IGlzIG9mZlxuICpcbiAqIFZhbHVlIG9mIDAgb3IgZmFsc2UgbWVhbnMgbm8gdGltZW91dC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcnxPYmplY3R9IG1zIG9yIHtyZXNwb25zZSwgZGVhZGxpbmV9XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRpbWVvdXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMgfHwgdHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhpcy5fdGltZW91dCA9IG9wdGlvbnM7XG4gICAgdGhpcy5fcmVzcG9uc2VUaW1lb3V0ID0gMDtcbiAgICB0aGlzLl91cGxvYWRUaW1lb3V0ID0gMDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZvciAoY29uc3Qgb3B0aW9uIGluIG9wdGlvbnMpIHtcbiAgICBpZiAoaGFzT3duKG9wdGlvbnMsIG9wdGlvbikpIHtcbiAgICAgIHN3aXRjaCAob3B0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2RlYWRsaW5lJzpcbiAgICAgICAgICB0aGlzLl90aW1lb3V0ID0gb3B0aW9ucy5kZWFkbGluZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmVzcG9uc2UnOlxuICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlVGltZW91dCA9IG9wdGlvbnMucmVzcG9uc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3VwbG9hZCc6XG4gICAgICAgICAgdGhpcy5fdXBsb2FkVGltZW91dCA9IG9wdGlvbnMudXBsb2FkO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybignVW5rbm93biB0aW1lb3V0IG9wdGlvbicsIG9wdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCBudW1iZXIgb2YgcmV0cnkgYXR0ZW1wdHMgb24gZXJyb3IuXG4gKlxuICogRmFpbGVkIHJlcXVlc3RzIHdpbGwgYmUgcmV0cmllZCAnY291bnQnIHRpbWVzIGlmIHRpbWVvdXQgb3IgZXJyLmNvZGUgPj0gNTAwLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb3VudFxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZXRyeSA9IGZ1bmN0aW9uIChjb3VudCwgZm4pIHtcbiAgLy8gRGVmYXVsdCB0byAxIGlmIG5vIGNvdW50IHBhc3NlZCBvciB0cnVlXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwIHx8IGNvdW50ID09PSB0cnVlKSBjb3VudCA9IDE7XG4gIGlmIChjb3VudCA8PSAwKSBjb3VudCA9IDA7XG4gIHRoaXMuX21heFJldHJpZXMgPSBjb3VudDtcbiAgdGhpcy5fcmV0cmllcyA9IDA7XG4gIHRoaXMuX3JldHJ5Q2FsbGJhY2sgPSBmbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vL1xuLy8gTk9URTogd2UgZG8gbm90IGluY2x1ZGUgRVNPQ0tFVFRJTUVET1VUIGJlY2F1c2UgdGhhdCBpcyBmcm9tIGByZXF1ZXN0YCBwYWNrYWdlXG4vLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9nb3QvcHVsbC81Mzc+XG4vL1xuLy8gTk9URTogd2UgZG8gbm90IGluY2x1ZGUgRUFERFJJTkZPIGJlY2F1c2UgaXQgd2FzIHJlbW92ZWQgZnJvbSBsaWJ1diBpbiAyMDE0XG4vLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2L2NvbW1pdC8wMmUxZWJkNDBiODA3YmU1YWY0NjM0M2VhODczMzMxYjJlZTRlOWMxPlxuLy8gICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9yZXF1ZXN0L3JlcXVlc3Qvc2VhcmNoP3E9RVNPQ0tFVFRJTUVET1VUJnVuc2NvcGVkX3E9RVNPQ0tFVFRJTUVET1VUPlxuLy9cbi8vXG4vLyBUT0RPOiBleHBvc2UgdGhlc2UgYXMgY29uZmlndXJhYmxlIGRlZmF1bHRzXG4vL1xuY29uc3QgRVJST1JfQ09ERVMgPSBuZXcgU2V0KFtcbiAgJ0VUSU1FRE9VVCcsXG4gICdFQ09OTlJFU0VUJyxcbiAgJ0VBRERSSU5VU0UnLFxuICAnRUNPTk5SRUZVU0VEJyxcbiAgJ0VQSVBFJyxcbiAgJ0VOT1RGT1VORCcsXG4gICdFTkVUVU5SRUFDSCcsXG4gICdFQUlfQUdBSU4nXG5dKTtcblxuY29uc3QgU1RBVFVTX0NPREVTID0gbmV3IFNldChbXG4gIDQwOCwgNDEzLCA0MjksIDUwMCwgNTAyLCA1MDMsIDUwNCwgNTIxLCA1MjIsIDUyNFxuXSk7XG5cbi8vIFRPRE86IHdlIHdvdWxkIG5lZWQgdG8gbWFrZSB0aGlzIGVhc2lseSBjb25maWd1cmFibGUgYmVmb3JlIGFkZGluZyBpdCBpbiAoZS5nLiBzb21lIG1pZ2h0IHdhbnQgdG8gYWRkIFBPU1QpXG4vLyBjb25zdCBNRVRIT0RTID0gbmV3IFNldChbJ0dFVCcsICdQVVQnLCAnSEVBRCcsICdERUxFVEUnLCAnT1BUSU9OUycsICdUUkFDRSddKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSByZXF1ZXN0IHNob3VsZCBiZSByZXRyaWVkLlxuICogKEluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvZ290I3JldHJ5KVxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVyciBhbiBlcnJvclxuICogQHBhcmFtIHtSZXNwb25zZX0gW3Jlc10gcmVzcG9uc2VcbiAqIEByZXR1cm5zIHtCb29sZWFufSBpZiBzZWdtZW50IHNob3VsZCBiZSByZXRyaWVkXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2hvdWxkUmV0cnkgPSBmdW5jdGlvbiAoZXJyb3IsIHJlcykge1xuICBpZiAoIXRoaXMuX21heFJldHJpZXMgfHwgdGhpcy5fcmV0cmllcysrID49IHRoaXMuX21heFJldHJpZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fcmV0cnlDYWxsYmFjaykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvdmVycmlkZSA9IHRoaXMuX3JldHJ5Q2FsbGJhY2soZXJyb3IsIHJlcyk7XG4gICAgICBpZiAob3ZlcnJpZGUgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKG92ZXJyaWRlID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgLy8gdW5kZWZpbmVkIGZhbGxzIGJhY2sgdG8gZGVmYXVsdHNcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiB3ZSB3b3VsZCBuZWVkIHRvIG1ha2UgdGhpcyBlYXNpbHkgY29uZmlndXJhYmxlIGJlZm9yZSBhZGRpbmcgaXQgaW4gKGUuZy4gc29tZSBtaWdodCB3YW50IHRvIGFkZCBQT1NUKVxuICAvKlxuICBpZiAoXG4gICAgdGhpcy5yZXEgJiZcbiAgICB0aGlzLnJlcS5tZXRob2QgJiZcbiAgICAhTUVUSE9EUy5oYXModGhpcy5yZXEubWV0aG9kLnRvVXBwZXJDYXNlKCkpXG4gIClcbiAgICByZXR1cm4gZmFsc2U7XG4gICovXG4gIGlmIChyZXMgJiYgcmVzLnN0YXR1cyAmJiBTVEFUVVNfQ09ERVMuaGFzKHJlcy5zdGF0dXMpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGVycm9yKSB7XG4gICAgaWYgKGVycm9yLmNvZGUgJiYgRVJST1JfQ09ERVMuaGFzKGVycm9yLmNvZGUpKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBTdXBlcmFnZW50IHRpbWVvdXRcbiAgICBpZiAoZXJyb3IudGltZW91dCAmJiBlcnJvci5jb2RlID09PSAnRUNPTk5BQk9SVEVEJykgcmV0dXJuIHRydWU7XG4gICAgaWYgKGVycm9yLmNyb3NzRG9tYWluKSByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0cnkgcmVxdWVzdFxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9yZXRyeSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jbGVhclRpbWVvdXQoKTtcblxuICAvLyBub2RlXG4gIGlmICh0aGlzLnJlcSkge1xuICAgIHRoaXMucmVxID0gbnVsbDtcbiAgICB0aGlzLnJlcSA9IHRoaXMucmVxdWVzdCgpO1xuICB9XG5cbiAgdGhpcy5fYWJvcnRlZCA9IGZhbHNlO1xuICB0aGlzLnRpbWVkb3V0ID0gZmFsc2U7XG4gIHRoaXMudGltZWRvdXRFcnJvciA9IG51bGw7XG5cbiAgcmV0dXJuIHRoaXMuX2VuZCgpO1xufTtcblxuLyoqXG4gKiBQcm9taXNlIHN1cHBvcnRcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVqZWN0XVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgaWYgKCF0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICh0aGlzLl9lbmRDYWxsZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1dhcm5pbmc6IHN1cGVyYWdlbnQgcmVxdWVzdCB3YXMgc2VudCB0d2ljZSwgYmVjYXVzZSBib3RoIC5lbmQoKSBhbmQgLnRoZW4oKSB3ZXJlIGNhbGxlZC4gTmV2ZXIgY2FsbCAuZW5kKCkgaWYgeW91IHVzZSBwcm9taXNlcydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fZnVsbGZpbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzZWxmLm9uKCdhYm9ydCcsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX21heFJldHJpZXMgJiYgdGhpcy5fbWF4UmV0cmllcyA+IHRoaXMuX3JldHJpZXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50aW1lZG91dCAmJiB0aGlzLnRpbWVkb3V0RXJyb3IpIHtcbiAgICAgICAgICByZWplY3QodGhpcy50aW1lZG91dEVycm9yKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignQWJvcnRlZCcpO1xuICAgICAgICBlcnJvci5jb2RlID0gJ0FCT1JURUQnO1xuICAgICAgICBlcnJvci5zdGF0dXMgPSB0aGlzLnN0YXR1cztcbiAgICAgICAgZXJyb3IubWV0aG9kID0gdGhpcy5tZXRob2Q7XG4gICAgICAgIGVycm9yLnVybCA9IHRoaXMudXJsO1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgICBzZWxmLmVuZCgoZXJyb3IsIHJlcykgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHJlamVjdChlcnJvcik7XG4gICAgICAgIGVsc2UgcmVzb2x2ZShyZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fZnVsbGZpbGxlZFByb21pc2UudGhlbihyZXNvbHZlLCByZWplY3QpO1xufTtcblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmNhdGNoID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEFsbG93IGZvciBleHRlbnNpb25cbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gKGZuKSB7XG4gIGZuKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5vayA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxiYWNrIHJlcXVpcmVkJyk7XG4gIHRoaXMuX29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2lzUmVzcG9uc2VPSyA9IGZ1bmN0aW9uIChyZXMpIHtcbiAgaWYgKCFyZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fb2tDYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLl9va0NhbGxiYWNrKHJlcyk7XG4gIH1cblxuICByZXR1cm4gcmVzLnN0YXR1cyA+PSAyMDAgJiYgcmVzLnN0YXR1cyA8IDMwMDtcbn07XG5cbi8qKlxuICogR2V0IHJlcXVlc3QgaGVhZGVyIGBmaWVsZGAuXG4gKiBDYXNlLWluc2Vuc2l0aXZlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIHJldHVybiB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG59O1xuXG4vKipcbiAqIEdldCBjYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBgZmllbGRgIHZhbHVlLlxuICogVGhpcyBpcyBhIGRlcHJlY2F0ZWQgaW50ZXJuYWwgQVBJLiBVc2UgYC5nZXQoZmllbGQpYCBpbnN0ZWFkLlxuICpcbiAqIChnZXRIZWFkZXIgaXMgbm8gbG9uZ2VyIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgc3VwZXJhZ2VudCBjb2RlIGJhc2UpXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqIEBkZXByZWNhdGVkXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmdldEhlYWRlciA9IFJlcXVlc3RCYXNlLnByb3RvdHlwZS5nZXQ7XG5cbi8qKlxuICogU2V0IGhlYWRlciBgZmllbGRgIHRvIGB2YWxgLCBvciBtdWx0aXBsZSBmaWVsZHMgd2l0aCBvbmUgb2JqZWN0LlxuICogQ2FzZS1pbnNlbnNpdGl2ZS5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuc2V0KCdYLUFQSS1LZXknLCAnZm9vYmFyJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoeyBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJywgJ1gtQVBJLUtleSc6ICdmb29iYXInIH0pXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoZmllbGQsIHZhbHVlKSB7XG4gIGlmIChpc09iamVjdChmaWVsZCkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZCkge1xuICAgICAgaWYgKGhhc093bihmaWVsZCwga2V5KSkgdGhpcy5zZXQoa2V5LCBmaWVsZFtrZXldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX2hlYWRlcltmaWVsZC50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlO1xuICB0aGlzLmhlYWRlcltmaWVsZF0gPSB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBoZWFkZXIgYGZpZWxkYC5cbiAqIENhc2UtaW5zZW5zaXRpdmUuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC51bnNldCgnVXNlci1BZ2VudCcpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkIGZpZWxkIG5hbWVcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIGRlbGV0ZSB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG4gIGRlbGV0ZSB0aGlzLmhlYWRlcltmaWVsZF07XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXcml0ZSB0aGUgZmllbGQgYG5hbWVgIGFuZCBgdmFsYCwgb3IgbXVsdGlwbGUgZmllbGRzIHdpdGggb25lIG9iamVjdFxuICogZm9yIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIHJlcXVlc3QgYm9kaWVzLlxuICpcbiAqIGBgYCBqc1xuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKCdmb28nLCAnYmFyJylcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKHsgZm9vOiAnYmFyJywgYmF6OiAncXV4JyB9KVxuICogICAuZW5kKGNhbGxiYWNrKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gbmFtZSBuYW1lIG9mIGZpZWxkXG4gKiBAcGFyYW0ge1N0cmluZ3xCbG9ifEZpbGV8QnVmZmVyfGZzLlJlYWRTdHJlYW19IHZhbCB2YWx1ZSBvZiBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbnMgZXh0cmEgb3B0aW9ucywgZS5nLiAnYmxvYidcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLmZpZWxkID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcHRpb25zKSB7XG4gIC8vIG5hbWUgc2hvdWxkIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvYmplY3QuXG4gIGlmIChuYW1lID09PSBudWxsIHx8IHVuZGVmaW5lZCA9PT0gbmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignLmZpZWxkKG5hbWUsIHZhbCkgbmFtZSBjYW4gbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICBpZiAodGhpcy5fZGF0YSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiLmZpZWxkKCkgY2FuJ3QgYmUgdXNlZCBpZiAuc2VuZCgpIGlzIHVzZWQuIFBsZWFzZSB1c2Ugb25seSAuc2VuZCgpIG9yIG9ubHkgLmZpZWxkKCkgJiAuYXR0YWNoKClcIlxuICAgICk7XG4gIH1cblxuICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBuYW1lKSB7XG4gICAgICBpZiAoaGFzT3duKG5hbWUsIGtleSkpIHRoaXMuZmllbGQoa2V5LCBuYW1lW2tleV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgZm9yIChjb25zdCBpIGluIHZhbHVlKSB7XG4gICAgICBpZiAoaGFzT3duKHZhbHVlLCBpKSkgdGhpcy5maWVsZChuYW1lLCB2YWx1ZVtpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB2YWwgc2hvdWxkIGJlIGRlZmluZWQgbm93XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB1bmRlZmluZWQgPT09IHZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCcuZmllbGQobmFtZSwgdmFsKSB2YWwgY2FuIG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgLy9maXggaHR0cHM6Ly9naXRodWIuY29tL3Zpc2lvbm1lZGlhL3N1cGVyYWdlbnQvaXNzdWVzLzE2ODBcbiAgaWYgKG9wdGlvbnMpIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKG5hbWUsIHZhbHVlLCBvcHRpb25zKTtcbiAgZWxzZSB0aGlzLl9nZXRGb3JtRGF0YSgpLmFwcGVuZChuYW1lLCB2YWx1ZSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEFib3J0IHRoZSByZXF1ZXN0LCBhbmQgY2xlYXIgcG90ZW50aWFsIHRpbWVvdXQuXG4gKlxuICogQHJldHVybiB7UmVxdWVzdH0gcmVxdWVzdFxuICogQGFwaSBwdWJsaWNcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLmFib3J0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5fYWJvcnRlZCA9IHRydWU7XG4gIGlmICh0aGlzLnhocikgdGhpcy54aHIuYWJvcnQoKTsgLy8gYnJvd3NlclxuICBpZiAodGhpcy5yZXEpIHtcbiAgICAvLyBOb2RlIHYxMyBoYXMgbWFqb3IgZGlmZmVyZW5jZXMgaW4gYGFib3J0KClgXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvdjEyLngvbGliL2ludGVybmFsL3N0cmVhbXMvZW5kLW9mLXN0cmVhbS5qc1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxMy54L2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanNcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi92MTQueC9saWIvaW50ZXJuYWwvc3RyZWFtcy9lbmQtb2Ytc3RyZWFtLmpzXG4gICAgLy8gKGlmIHlvdSBydW4gYSBkaWZmIGFjcm9zcyB0aGVzZSB5b3Ugd2lsbCBzZWUgdGhlIGRpZmZlcmVuY2VzKVxuICAgIC8vXG4gICAgLy8gUmVmZXJlbmNlczpcbiAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2lzc3Vlcy8zMTYzMD5cbiAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL3Zpc2lvbm1lZGlhL3N1cGVyYWdlbnQvcHVsbC8xMDg0L2NvbW1pdHMvZGMxODY3OWE3YzVjY2ZjNjA0NmQ4ODIwMTVlNTEyNjg4ODk3M2JjOD5cbiAgICAvL1xuICAgIC8vIFRoYW5rcyB0byBAc2hhZG93Z2F0ZTE1IGFuZCBAbmlmdHlsZXR0dWNlXG4gICAgaWYgKFxuICAgICAgc2VtdmVyLmd0ZShwcm9jZXNzLnZlcnNpb24sICd2MTMuMC4wJykgJiZcbiAgICAgIHNlbXZlci5sdChwcm9jZXNzLnZlcnNpb24sICd2MTQuMC4wJylcbiAgICApIHtcbiAgICAgIC8vIE5vdGUgdGhhdCB0aGUgcmVhc29uIHRoaXMgZG9lc24ndCB3b3JrIGlzIGJlY2F1c2UgaW4gdjEzIGFzIGNvbXBhcmVkIHRvIHYxNFxuICAgICAgLy8gdGhlcmUgaXMgbm8gYGNhbGxiYWNrID0gbm9wYCBzZXQgaW4gZW5kLW9mLXN0cmVhbS5qcyBhYm92ZVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnU3VwZXJhZ2VudCBkb2VzIG5vdCB3b3JrIGluIHYxMyBwcm9wZXJseSB3aXRoIGFib3J0KCkgZHVlIHRvIE5vZGUuanMgY29yZSBjaGFuZ2VzJ1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHNlbXZlci5ndGUocHJvY2Vzcy52ZXJzaW9uLCAndjE0LjAuMCcpKSB7XG4gICAgICAvLyBXZSBoYXZlIHRvIG1hbnVhbGx5IHNldCBgZGVzdHJveWVkYCB0byBgdHJ1ZWAgaW4gb3JkZXIgZm9yIHRoaXMgdG8gd29ya1xuICAgICAgLy8gKHNlZSBjb3JlIGludGVybmFscyBvZiBlbmQtb2Ytc3RyZWFtLmpzIGFib3ZlIGluIHYxNCBicmFuY2ggYXMgY29tcGFyZWQgdG8gdjEyKVxuICAgICAgdGhpcy5yZXEuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnJlcS5hYm9ydCgpOyAvLyBub2RlXG4gIH1cblxuICB0aGlzLmNsZWFyVGltZW91dCgpO1xuICB0aGlzLmVtaXQoJ2Fib3J0Jyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9hdXRoID0gZnVuY3Rpb24gKHVzZXIsIHBhc3MsIG9wdGlvbnMsIGJhc2U2NEVuY29kZXIpIHtcbiAgc3dpdGNoIChvcHRpb25zLnR5cGUpIHtcbiAgICBjYXNlICdiYXNpYyc6XG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsIGBCYXNpYyAke2Jhc2U2NEVuY29kZXIoYCR7dXNlcn06JHtwYXNzfWApfWApO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdhdXRvJzpcbiAgICAgIHRoaXMudXNlcm5hbWUgPSB1c2VyO1xuICAgICAgdGhpcy5wYXNzd29yZCA9IHBhc3M7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2JlYXJlcic6IC8vIHVzYWdlIHdvdWxkIGJlIC5hdXRoKGFjY2Vzc1Rva2VuLCB7IHR5cGU6ICdiZWFyZXInIH0pXG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsIGBCZWFyZXIgJHt1c2VyfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEVuYWJsZSB0cmFuc21pc3Npb24gb2YgY29va2llcyB3aXRoIHgtZG9tYWluIHJlcXVlc3RzLlxuICpcbiAqIE5vdGUgdGhhdCBmb3IgdGhpcyB0byB3b3JrIHRoZSBvcmlnaW4gbXVzdCBub3QgYmVcbiAqIHVzaW5nIFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXCIgd2l0aCBhIHdpbGRjYXJkLFxuICogYW5kIGFsc28gbXVzdCBzZXQgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1wiXG4gKiB0byBcInRydWVcIi5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS53aXRoQ3JlZGVudGlhbHMgPSBmdW5jdGlvbiAob24pIHtcbiAgLy8gVGhpcyBpcyBicm93c2VyLW9ubHkgZnVuY3Rpb25hbGl0eS4gTm9kZSBzaWRlIGlzIG5vLW9wLlxuICBpZiAob24gPT09IHVuZGVmaW5lZCkgb24gPSB0cnVlO1xuICB0aGlzLl93aXRoQ3JlZGVudGlhbHMgPSBvbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgbWF4IHJlZGlyZWN0cyB0byBgbmAuIERvZXMgbm90aGluZyBpbiBicm93c2VyIFhIUiBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gblxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZWRpcmVjdHMgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLl9tYXhSZWRpcmVjdHMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogTWF4aW11bSBzaXplIG9mIGJ1ZmZlcmVkIHJlc3BvbnNlIGJvZHksIGluIGJ5dGVzLiBDb3VudHMgdW5jb21wcmVzc2VkIHNpemUuXG4gKiBEZWZhdWx0IDIwME1CLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBuIG51bWJlciBvZiBieXRlc1xuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5tYXhSZXNwb25zZVNpemUgPSBmdW5jdGlvbiAobikge1xuICBpZiAodHlwZW9mIG4gIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBhcmd1bWVudCcpO1xuICB9XG5cbiAgdGhpcy5fbWF4UmVzcG9uc2VTaXplID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENvbnZlcnQgdG8gYSBwbGFpbiBqYXZhc2NyaXB0IG9iamVjdCAobm90IEpTT04gc3RyaW5nKSBvZiBzY2FsYXIgcHJvcGVydGllcy5cbiAqIE5vdGUgYXMgdGhpcyBtZXRob2QgaXMgZGVzaWduZWQgdG8gcmV0dXJuIGEgdXNlZnVsIG5vbi10aGlzIHZhbHVlLFxuICogaXQgY2Fubm90IGJlIGNoYWluZWQuXG4gKlxuICogQHJldHVybiB7T2JqZWN0fSBkZXNjcmliaW5nIG1ldGhvZCwgdXJsLCBhbmQgZGF0YSBvZiB0aGlzIHJlcXVlc3RcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHtcbiAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgIHVybDogdGhpcy51cmwsXG4gICAgZGF0YTogdGhpcy5fZGF0YSxcbiAgICBoZWFkZXJzOiB0aGlzLl9oZWFkZXJcbiAgfTtcbn07XG5cbi8qKlxuICogU2VuZCBgZGF0YWAgYXMgdGhlIHJlcXVlc3QgYm9keSwgZGVmYXVsdGluZyB0aGUgYC50eXBlKClgIHRvIFwianNvblwiIHdoZW5cbiAqIGFuIG9iamVjdCBpcyBnaXZlbi5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgICAvLyBtYW51YWwganNvblxuICogICAgICAgcmVxdWVzdC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgIC50eXBlKCdqc29uJylcbiAqICAgICAgICAgLnNlbmQoJ3tcIm5hbWVcIjpcInRqXCJ9JylcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBhdXRvIGpzb25cbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAuc2VuZCh7IG5hbWU6ICd0aicgfSlcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBtYW51YWwgeC13d3ctZm9ybS11cmxlbmNvZGVkXG4gKiAgICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAgLnR5cGUoJ2Zvcm0nKVxuICogICAgICAgICAuc2VuZCgnbmFtZT10aicpXG4gKiAgICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogICAgICAgLy8gYXV0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAudHlwZSgnZm9ybScpXG4gKiAgICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqICAgICAgIC8vIGRlZmF1bHRzIHRvIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxuICogICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAuc2VuZCgnbmFtZT10b2JpJylcbiAqICAgICAgICAuc2VuZCgnc3BlY2llcz1mZXJyZXQnKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBkYXRhXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZW5kID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgaXNPYmplY3RfID0gaXNPYmplY3QoZGF0YSk7XG4gIGxldCB0eXBlID0gdGhpcy5faGVhZGVyWydjb250ZW50LXR5cGUnXTtcblxuICBpZiAodGhpcy5fZm9ybURhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIi5zZW5kKCkgY2FuJ3QgYmUgdXNlZCBpZiAuYXR0YWNoKCkgb3IgLmZpZWxkKCkgaXMgdXNlZC4gUGxlYXNlIHVzZSBvbmx5IC5zZW5kKCkgb3Igb25seSAuZmllbGQoKSAmIC5hdHRhY2goKVwiXG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc09iamVjdF8gJiYgIXRoaXMuX2RhdGEpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgdGhpcy5fZGF0YSA9IFtdO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX2lzSG9zdChkYXRhKSkge1xuICAgICAgdGhpcy5fZGF0YSA9IHt9O1xuICAgIH1cbiAgfSBlbHNlIGlmIChkYXRhICYmIHRoaXMuX2RhdGEgJiYgdGhpcy5faXNIb3N0KHRoaXMuX2RhdGEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgbWVyZ2UgdGhlc2Ugc2VuZCBjYWxsc1wiKTtcbiAgfVxuXG4gIC8vIG1lcmdlXG4gIGlmIChpc09iamVjdF8gJiYgaXNPYmplY3QodGhpcy5fZGF0YSkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICBpZiAoaGFzT3duKGRhdGEsIGtleSkpIHRoaXMuX2RhdGFba2V5XSA9IGRhdGFba2V5XTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZGVmYXVsdCB0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAgICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnZm9ybScpO1xuICAgIHR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIGlmICh0eXBlKSB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBpZiAodHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLl9kYXRhID8gYCR7dGhpcy5fZGF0YX0mJHtkYXRhfWAgOiBkYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kYXRhID0gKHRoaXMuX2RhdGEgfHwgJycpICsgZGF0YTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gIH1cblxuICBpZiAoIWlzT2JqZWN0XyB8fCB0aGlzLl9pc0hvc3QoZGF0YSkpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGRlZmF1bHQgdG8ganNvblxuICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnanNvbicpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU29ydCBgcXVlcnlzdHJpbmdgIGJ5IHRoZSBzb3J0IGZ1bmN0aW9uXG4gKlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgIC8vIGRlZmF1bHQgb3JkZXJcbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KClcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBjdXN0b21pemVkIHNvcnQgZnVuY3Rpb25cbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KGZ1bmN0aW9uKGEsIGIpe1xuICogICAgICAgICAgIHJldHVybiBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICogICAgICAgICB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzb3J0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnNvcnRRdWVyeSA9IGZ1bmN0aW9uIChzb3J0KSB7XG4gIC8vIF9zb3J0IGRlZmF1bHQgdG8gdHJ1ZSBidXQgb3RoZXJ3aXNlIGNhbiBiZSBhIGZ1bmN0aW9uIG9yIGJvb2xlYW5cbiAgdGhpcy5fc29ydCA9IHR5cGVvZiBzb3J0ID09PSAndW5kZWZpbmVkJyA/IHRydWUgOiBzb3J0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ29tcG9zZSBxdWVyeXN0cmluZyB0byBhcHBlbmQgdG8gcmVxLnVybFxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2ZpbmFsaXplUXVlcnlTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHF1ZXJ5ID0gdGhpcy5fcXVlcnkuam9pbignJicpO1xuICBpZiAocXVlcnkpIHtcbiAgICB0aGlzLnVybCArPSAodGhpcy51cmwuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/JykgKyBxdWVyeTtcbiAgfVxuXG4gIHRoaXMuX3F1ZXJ5Lmxlbmd0aCA9IDA7IC8vIE1ha2VzIHRoZSBjYWxsIGlkZW1wb3RlbnRcblxuICBpZiAodGhpcy5fc29ydCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cmwuaW5kZXhPZignPycpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBxdWVyeUFycmF5ID0gdGhpcy51cmwuc2xpY2UoaW5kZXggKyAxKS5zcGxpdCgnJicpO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zb3J0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHF1ZXJ5QXJyYXkuc29ydCh0aGlzLl9zb3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXJ5QXJyYXkuc29ydCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnNsaWNlKDAsIGluZGV4KSArICc/JyArIHF1ZXJ5QXJyYXkuam9pbignJicpO1xuICAgIH1cbiAgfVxufTtcblxuLy8gRm9yIGJhY2t3YXJkcyBjb21wYXQgb25seVxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9hcHBlbmRRdWVyeVN0cmluZyA9ICgpID0+IHtcbiAgY29uc29sZS53YXJuKCdVbnN1cHBvcnRlZCcpO1xufTtcblxuLyoqXG4gKiBJbnZva2UgY2FsbGJhY2sgd2l0aCB0aW1lb3V0IGVycm9yLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fdGltZW91dEVycm9yID0gZnVuY3Rpb24gKHJlYXNvbiwgdGltZW91dCwgZXJybm8pIHtcbiAgaWYgKHRoaXMuX2Fib3J0ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgJHtyZWFzb24gKyB0aW1lb3V0fW1zIGV4Y2VlZGVkYCk7XG4gIGVycm9yLnRpbWVvdXQgPSB0aW1lb3V0O1xuICBlcnJvci5jb2RlID0gJ0VDT05OQUJPUlRFRCc7XG4gIGVycm9yLmVycm5vID0gZXJybm87XG4gIHRoaXMudGltZWRvdXQgPSB0cnVlO1xuICB0aGlzLnRpbWVkb3V0RXJyb3IgPSBlcnJvcjtcbiAgdGhpcy5hYm9ydCgpO1xuICB0aGlzLmNhbGxiYWNrKGVycm9yKTtcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2V0VGltZW91dHMgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gIC8vIGRlYWRsaW5lXG4gIGlmICh0aGlzLl90aW1lb3V0ICYmICF0aGlzLl90aW1lcikge1xuICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZWxmLl90aW1lb3V0RXJyb3IoJ1RpbWVvdXQgb2YgJywgc2VsZi5fdGltZW91dCwgJ0VUSU1FJyk7XG4gICAgfSwgdGhpcy5fdGltZW91dCk7XG4gIH1cblxuICAvLyByZXNwb25zZSB0aW1lb3V0XG4gIGlmICh0aGlzLl9yZXNwb25zZVRpbWVvdXQgJiYgIXRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyKSB7XG4gICAgdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNlbGYuX3RpbWVvdXRFcnJvcihcbiAgICAgICAgJ1Jlc3BvbnNlIHRpbWVvdXQgb2YgJyxcbiAgICAgICAgc2VsZi5fcmVzcG9uc2VUaW1lb3V0LFxuICAgICAgICAnRVRJTUVET1VUJ1xuICAgICAgKTtcbiAgICB9LCB0aGlzLl9yZXNwb25zZVRpbWVvdXQpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBTUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUF0QjtBQUVBO0FBQ0E7QUFDQTs7O0FBQ0EsZUFBNkJBLE9BQU8sQ0FBQyxTQUFELENBQXBDO0FBQUEsSUFBUUMsUUFBUixZQUFRQSxRQUFSO0FBQUEsSUFBa0JDLE1BQWxCLFlBQWtCQSxNQUFsQjtBQUVBO0FBQ0E7QUFDQTs7O0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkMsV0FBakI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVNBLFdBQVQsR0FBdUIsQ0FBRztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBQSxXQUFXLENBQUNDLFNBQVosQ0FBc0JDLFlBQXRCLEdBQXFDLFlBQVk7RUFDL0NBLFlBQVksQ0FBQyxLQUFLQyxNQUFOLENBQVo7RUFDQUQsWUFBWSxDQUFDLEtBQUtFLHFCQUFOLENBQVo7RUFDQUYsWUFBWSxDQUFDLEtBQUtHLG1CQUFOLENBQVo7RUFDQSxPQUFPLEtBQUtGLE1BQVo7RUFDQSxPQUFPLEtBQUtDLHFCQUFaO0VBQ0EsT0FBTyxLQUFLQyxtQkFBWjtFQUNBLE9BQU8sSUFBUDtBQUNELENBUkQ7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQUwsV0FBVyxDQUFDQyxTQUFaLENBQXNCSyxLQUF0QixHQUE4QixVQUFVQyxFQUFWLEVBQWM7RUFDMUMsS0FBS0MsT0FBTCxHQUFlRCxFQUFmO0VBQ0EsT0FBTyxJQUFQO0FBQ0QsQ0FIRDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBUCxXQUFXLENBQUNDLFNBQVosQ0FBc0JRLFlBQXRCLEdBQXFDLFVBQVVDLEtBQVYsRUFBaUI7RUFDcEQsS0FBS0MsYUFBTCxHQUFxQkQsS0FBckI7RUFDQSxPQUFPLElBQVA7QUFDRCxDQUhEO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUFWLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQlcsU0FBdEIsR0FBa0MsVUFBVUwsRUFBVixFQUFjO0VBQzlDLEtBQUtNLFdBQUwsR0FBbUJOLEVBQW5CO0VBQ0EsT0FBTyxJQUFQO0FBQ0QsQ0FIRDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQVAsV0FBVyxDQUFDQyxTQUFaLENBQXNCYSxPQUF0QixHQUFnQyxVQUFVQyxPQUFWLEVBQW1CO0VBQ2pELElBQUksQ0FBQ0EsT0FBRCxJQUFZLFFBQU9BLE9BQVAsTUFBbUIsUUFBbkMsRUFBNkM7SUFDM0MsS0FBS0MsUUFBTCxHQUFnQkQsT0FBaEI7SUFDQSxLQUFLRSxnQkFBTCxHQUF3QixDQUF4QjtJQUNBLEtBQUtDLGNBQUwsR0FBc0IsQ0FBdEI7SUFDQSxPQUFPLElBQVA7RUFDRDs7RUFFRCxLQUFLLElBQU1DLE1BQVgsSUFBcUJKLE9BQXJCLEVBQThCO0lBQzVCLElBQUlsQixNQUFNLENBQUNrQixPQUFELEVBQVVJLE1BQVYsQ0FBVixFQUE2QjtNQUMzQixRQUFRQSxNQUFSO1FBQ0UsS0FBSyxVQUFMO1VBQ0UsS0FBS0gsUUFBTCxHQUFnQkQsT0FBTyxDQUFDSyxRQUF4QjtVQUNBOztRQUNGLEtBQUssVUFBTDtVQUNFLEtBQUtILGdCQUFMLEdBQXdCRixPQUFPLENBQUNNLFFBQWhDO1VBQ0E7O1FBQ0YsS0FBSyxRQUFMO1VBQ0UsS0FBS0gsY0FBTCxHQUFzQkgsT0FBTyxDQUFDTyxNQUE5QjtVQUNBOztRQUNGO1VBQ0VDLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLHdCQUFiLEVBQXVDTCxNQUF2QztNQVhKO0lBYUQ7RUFDRjs7RUFFRCxPQUFPLElBQVA7QUFDRCxDQTNCRDtBQTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUFuQixXQUFXLENBQUNDLFNBQVosQ0FBc0J3QixLQUF0QixHQUE4QixVQUFVQyxLQUFWLEVBQWlCbkIsRUFBakIsRUFBcUI7RUFDakQ7RUFDQSxJQUFJb0IsU0FBUyxDQUFDQyxNQUFWLEtBQXFCLENBQXJCLElBQTBCRixLQUFLLEtBQUssSUFBeEMsRUFBOENBLEtBQUssR0FBRyxDQUFSO0VBQzlDLElBQUlBLEtBQUssSUFBSSxDQUFiLEVBQWdCQSxLQUFLLEdBQUcsQ0FBUjtFQUNoQixLQUFLRyxXQUFMLEdBQW1CSCxLQUFuQjtFQUNBLEtBQUtJLFFBQUwsR0FBZ0IsQ0FBaEI7RUFDQSxLQUFLQyxjQUFMLEdBQXNCeEIsRUFBdEI7RUFDQSxPQUFPLElBQVA7QUFDRCxDQVJELEMsQ0FVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFNeUIsV0FBVyxHQUFHLElBQUlDLEdBQUosQ0FBUSxDQUMxQixXQUQwQixFQUUxQixZQUYwQixFQUcxQixZQUgwQixFQUkxQixjQUowQixFQUsxQixPQUwwQixFQU0xQixXQU4wQixFQU8xQixhQVAwQixFQVExQixXQVIwQixDQUFSLENBQXBCO0FBV0EsSUFBTUMsWUFBWSxHQUFHLElBQUlELEdBQUosQ0FBUSxDQUMzQixHQUQyQixFQUN0QixHQURzQixFQUNqQixHQURpQixFQUNaLEdBRFksRUFDUCxHQURPLEVBQ0YsR0FERSxFQUNHLEdBREgsRUFDUSxHQURSLEVBQ2EsR0FEYixFQUNrQixHQURsQixDQUFSLENBQXJCLEMsQ0FJQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0FqQyxXQUFXLENBQUNDLFNBQVosQ0FBc0JrQyxZQUF0QixHQUFxQyxVQUFVQyxLQUFWLEVBQWlCQyxHQUFqQixFQUFzQjtFQUN6RCxJQUFJLENBQUMsS0FBS1IsV0FBTixJQUFxQixLQUFLQyxRQUFMLE1BQW1CLEtBQUtELFdBQWpELEVBQThEO0lBQzVELE9BQU8sS0FBUDtFQUNEOztFQUVELElBQUksS0FBS0UsY0FBVCxFQUF5QjtJQUN2QixJQUFJO01BQ0YsSUFBTU8sUUFBUSxHQUFHLEtBQUtQLGNBQUwsQ0FBb0JLLEtBQXBCLEVBQTJCQyxHQUEzQixDQUFqQjs7TUFDQSxJQUFJQyxRQUFRLEtBQUssSUFBakIsRUFBdUIsT0FBTyxJQUFQO01BQ3ZCLElBQUlBLFFBQVEsS0FBSyxLQUFqQixFQUF3QixPQUFPLEtBQVAsQ0FIdEIsQ0FJRjtJQUNELENBTEQsQ0FLRSxPQUFPQyxHQUFQLEVBQVk7TUFDWmhCLE9BQU8sQ0FBQ2EsS0FBUixDQUFjRyxHQUFkO0lBQ0Q7RUFDRixDQWR3RCxDQWdCekQ7O0VBQ0E7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0VBQ0UsSUFBSUYsR0FBRyxJQUFJQSxHQUFHLENBQUNHLE1BQVgsSUFBcUJOLFlBQVksQ0FBQ08sR0FBYixDQUFpQkosR0FBRyxDQUFDRyxNQUFyQixDQUF6QixFQUF1RCxPQUFPLElBQVA7O0VBQ3ZELElBQUlKLEtBQUosRUFBVztJQUNULElBQUlBLEtBQUssQ0FBQ00sSUFBTixJQUFjVixXQUFXLENBQUNTLEdBQVosQ0FBZ0JMLEtBQUssQ0FBQ00sSUFBdEIsQ0FBbEIsRUFBK0MsT0FBTyxJQUFQLENBRHRDLENBRVQ7O0lBQ0EsSUFBSU4sS0FBSyxDQUFDdEIsT0FBTixJQUFpQnNCLEtBQUssQ0FBQ00sSUFBTixLQUFlLGNBQXBDLEVBQW9ELE9BQU8sSUFBUDtJQUNwRCxJQUFJTixLQUFLLENBQUNPLFdBQVYsRUFBdUIsT0FBTyxJQUFQO0VBQ3hCOztFQUVELE9BQU8sS0FBUDtBQUNELENBbENEO0FBb0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEzQyxXQUFXLENBQUNDLFNBQVosQ0FBc0IyQyxNQUF0QixHQUErQixZQUFZO0VBQ3pDLEtBQUsxQyxZQUFMLEdBRHlDLENBR3pDOztFQUNBLElBQUksS0FBSzJDLEdBQVQsRUFBYztJQUNaLEtBQUtBLEdBQUwsR0FBVyxJQUFYO0lBQ0EsS0FBS0EsR0FBTCxHQUFXLEtBQUtDLE9BQUwsRUFBWDtFQUNEOztFQUVELEtBQUtDLFFBQUwsR0FBZ0IsS0FBaEI7RUFDQSxLQUFLQyxRQUFMLEdBQWdCLEtBQWhCO0VBQ0EsS0FBS0MsYUFBTCxHQUFxQixJQUFyQjtFQUVBLE9BQU8sS0FBS0MsSUFBTCxFQUFQO0FBQ0QsQ0FkRDtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUFsRCxXQUFXLENBQUNDLFNBQVosQ0FBc0JrRCxJQUF0QixHQUE2QixVQUFVQyxPQUFWLEVBQW1CQyxNQUFuQixFQUEyQjtFQUFBOztFQUN0RCxJQUFJLENBQUMsS0FBS0Msa0JBQVYsRUFBOEI7SUFDNUIsSUFBTUMsSUFBSSxHQUFHLElBQWI7O0lBQ0EsSUFBSSxLQUFLQyxVQUFULEVBQXFCO01BQ25CakMsT0FBTyxDQUFDQyxJQUFSLENBQ0UsZ0lBREY7SUFHRDs7SUFFRCxLQUFLOEIsa0JBQUwsR0FBMEIsSUFBSUcsT0FBSixDQUFZLFVBQUNMLE9BQUQsRUFBVUMsTUFBVixFQUFxQjtNQUN6REUsSUFBSSxDQUFDRyxFQUFMLENBQVEsT0FBUixFQUFpQixZQUFNO1FBQ3JCLElBQUksS0FBSSxDQUFDN0IsV0FBTCxJQUFvQixLQUFJLENBQUNBLFdBQUwsR0FBbUIsS0FBSSxDQUFDQyxRQUFoRCxFQUEwRDtVQUN4RDtRQUNEOztRQUVELElBQUksS0FBSSxDQUFDa0IsUUFBTCxJQUFpQixLQUFJLENBQUNDLGFBQTFCLEVBQXlDO1VBQ3ZDSSxNQUFNLENBQUMsS0FBSSxDQUFDSixhQUFOLENBQU47VUFDQTtRQUNEOztRQUVELElBQU1iLEtBQUssR0FBRyxJQUFJdUIsS0FBSixDQUFVLFNBQVYsQ0FBZDtRQUNBdkIsS0FBSyxDQUFDTSxJQUFOLEdBQWEsU0FBYjtRQUNBTixLQUFLLENBQUNJLE1BQU4sR0FBZSxLQUFJLENBQUNBLE1BQXBCO1FBQ0FKLEtBQUssQ0FBQ3dCLE1BQU4sR0FBZSxLQUFJLENBQUNBLE1BQXBCO1FBQ0F4QixLQUFLLENBQUN5QixHQUFOLEdBQVksS0FBSSxDQUFDQSxHQUFqQjtRQUNBUixNQUFNLENBQUNqQixLQUFELENBQU47TUFDRCxDQWhCRDtNQWlCQW1CLElBQUksQ0FBQ08sR0FBTCxDQUFTLFVBQUMxQixLQUFELEVBQVFDLEdBQVIsRUFBZ0I7UUFDdkIsSUFBSUQsS0FBSixFQUFXaUIsTUFBTSxDQUFDakIsS0FBRCxDQUFOLENBQVgsS0FDS2dCLE9BQU8sQ0FBQ2YsR0FBRCxDQUFQO01BQ04sQ0FIRDtJQUlELENBdEJ5QixDQUExQjtFQXVCRDs7RUFFRCxPQUFPLEtBQUtpQixrQkFBTCxDQUF3QkgsSUFBeEIsQ0FBNkJDLE9BQTdCLEVBQXNDQyxNQUF0QyxDQUFQO0FBQ0QsQ0FuQ0Q7O0FBcUNBckQsV0FBVyxDQUFDQyxTQUFaLENBQXNCOEQsS0FBdEIsR0FBOEIsVUFBVUMsUUFBVixFQUFvQjtFQUNoRCxPQUFPLEtBQUtiLElBQUwsQ0FBVWMsU0FBVixFQUFxQkQsUUFBckIsQ0FBUDtBQUNELENBRkQ7QUFJQTtBQUNBO0FBQ0E7OztBQUVBaEUsV0FBVyxDQUFDQyxTQUFaLENBQXNCaUUsR0FBdEIsR0FBNEIsVUFBVTNELEVBQVYsRUFBYztFQUN4Q0EsRUFBRSxDQUFDLElBQUQsQ0FBRjtFQUNBLE9BQU8sSUFBUDtBQUNELENBSEQ7O0FBS0FQLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQmtFLEVBQXRCLEdBQTJCLFVBQVVILFFBQVYsRUFBb0I7RUFDN0MsSUFBSSxPQUFPQSxRQUFQLEtBQW9CLFVBQXhCLEVBQW9DLE1BQU0sSUFBSUwsS0FBSixDQUFVLG1CQUFWLENBQU47RUFDcEMsS0FBS1MsV0FBTCxHQUFtQkosUUFBbkI7RUFDQSxPQUFPLElBQVA7QUFDRCxDQUpEOztBQU1BaEUsV0FBVyxDQUFDQyxTQUFaLENBQXNCb0UsYUFBdEIsR0FBc0MsVUFBVWhDLEdBQVYsRUFBZTtFQUNuRCxJQUFJLENBQUNBLEdBQUwsRUFBVTtJQUNSLE9BQU8sS0FBUDtFQUNEOztFQUVELElBQUksS0FBSytCLFdBQVQsRUFBc0I7SUFDcEIsT0FBTyxLQUFLQSxXQUFMLENBQWlCL0IsR0FBakIsQ0FBUDtFQUNEOztFQUVELE9BQU9BLEdBQUcsQ0FBQ0csTUFBSixJQUFjLEdBQWQsSUFBcUJILEdBQUcsQ0FBQ0csTUFBSixHQUFhLEdBQXpDO0FBQ0QsQ0FWRDtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBeEMsV0FBVyxDQUFDQyxTQUFaLENBQXNCcUUsR0FBdEIsR0FBNEIsVUFBVUMsS0FBVixFQUFpQjtFQUMzQyxPQUFPLEtBQUtDLE9BQUwsQ0FBYUQsS0FBSyxDQUFDRSxXQUFOLEVBQWIsQ0FBUDtBQUNELENBRkQ7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQXpFLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQnlFLFNBQXRCLEdBQWtDMUUsV0FBVyxDQUFDQyxTQUFaLENBQXNCcUUsR0FBeEQ7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBdEUsV0FBVyxDQUFDQyxTQUFaLENBQXNCMEUsR0FBdEIsR0FBNEIsVUFBVUosS0FBVixFQUFpQjdELEtBQWpCLEVBQXdCO0VBQ2xELElBQUlkLFFBQVEsQ0FBQzJFLEtBQUQsQ0FBWixFQUFxQjtJQUNuQixLQUFLLElBQU1LLEdBQVgsSUFBa0JMLEtBQWxCLEVBQXlCO01BQ3ZCLElBQUkxRSxNQUFNLENBQUMwRSxLQUFELEVBQVFLLEdBQVIsQ0FBVixFQUF3QixLQUFLRCxHQUFMLENBQVNDLEdBQVQsRUFBY0wsS0FBSyxDQUFDSyxHQUFELENBQW5CO0lBQ3pCOztJQUVELE9BQU8sSUFBUDtFQUNEOztFQUVELEtBQUtKLE9BQUwsQ0FBYUQsS0FBSyxDQUFDRSxXQUFOLEVBQWIsSUFBb0MvRCxLQUFwQztFQUNBLEtBQUttRSxNQUFMLENBQVlOLEtBQVosSUFBcUI3RCxLQUFyQjtFQUNBLE9BQU8sSUFBUDtBQUNELENBWkQ7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBVixXQUFXLENBQUNDLFNBQVosQ0FBc0I2RSxLQUF0QixHQUE4QixVQUFVUCxLQUFWLEVBQWlCO0VBQzdDLE9BQU8sS0FBS0MsT0FBTCxDQUFhRCxLQUFLLENBQUNFLFdBQU4sRUFBYixDQUFQO0VBQ0EsT0FBTyxLQUFLSSxNQUFMLENBQVlOLEtBQVosQ0FBUDtFQUNBLE9BQU8sSUFBUDtBQUNELENBSkQ7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQXZFLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQnNFLEtBQXRCLEdBQThCLFVBQVVRLElBQVYsRUFBZ0JyRSxLQUFoQixFQUF1QkssT0FBdkIsRUFBZ0M7RUFDNUQ7RUFDQSxJQUFJZ0UsSUFBSSxLQUFLLElBQVQsSUFBaUJkLFNBQVMsS0FBS2MsSUFBbkMsRUFBeUM7SUFDdkMsTUFBTSxJQUFJcEIsS0FBSixDQUFVLHlDQUFWLENBQU47RUFDRDs7RUFFRCxJQUFJLEtBQUtxQixLQUFULEVBQWdCO0lBQ2QsTUFBTSxJQUFJckIsS0FBSixDQUNKLGlHQURJLENBQU47RUFHRDs7RUFFRCxJQUFJL0QsUUFBUSxDQUFDbUYsSUFBRCxDQUFaLEVBQW9CO0lBQ2xCLEtBQUssSUFBTUgsR0FBWCxJQUFrQkcsSUFBbEIsRUFBd0I7TUFDdEIsSUFBSWxGLE1BQU0sQ0FBQ2tGLElBQUQsRUFBT0gsR0FBUCxDQUFWLEVBQXVCLEtBQUtMLEtBQUwsQ0FBV0ssR0FBWCxFQUFnQkcsSUFBSSxDQUFDSCxHQUFELENBQXBCO0lBQ3hCOztJQUVELE9BQU8sSUFBUDtFQUNEOztFQUVELElBQUlLLEtBQUssQ0FBQ0MsT0FBTixDQUFjeEUsS0FBZCxDQUFKLEVBQTBCO0lBQ3hCLEtBQUssSUFBTXlFLENBQVgsSUFBZ0J6RSxLQUFoQixFQUF1QjtNQUNyQixJQUFJYixNQUFNLENBQUNhLEtBQUQsRUFBUXlFLENBQVIsQ0FBVixFQUFzQixLQUFLWixLQUFMLENBQVdRLElBQVgsRUFBaUJyRSxLQUFLLENBQUN5RSxDQUFELENBQXRCO0lBQ3ZCOztJQUVELE9BQU8sSUFBUDtFQUNELENBMUIyRCxDQTRCNUQ7OztFQUNBLElBQUl6RSxLQUFLLEtBQUssSUFBVixJQUFrQnVELFNBQVMsS0FBS3ZELEtBQXBDLEVBQTJDO0lBQ3pDLE1BQU0sSUFBSWlELEtBQUosQ0FBVSx3Q0FBVixDQUFOO0VBQ0Q7O0VBRUQsSUFBSSxPQUFPakQsS0FBUCxLQUFpQixTQUFyQixFQUFnQztJQUM5QkEsS0FBSyxHQUFHMEUsTUFBTSxDQUFDMUUsS0FBRCxDQUFkO0VBQ0QsQ0FuQzJELENBcUM1RDs7O0VBQ0EsSUFBSUssT0FBSixFQUFhLEtBQUtzRSxZQUFMLEdBQW9CQyxNQUFwQixDQUEyQlAsSUFBM0IsRUFBaUNyRSxLQUFqQyxFQUF3Q0ssT0FBeEMsRUFBYixLQUNLLEtBQUtzRSxZQUFMLEdBQW9CQyxNQUFwQixDQUEyQlAsSUFBM0IsRUFBaUNyRSxLQUFqQztFQUVMLE9BQU8sSUFBUDtBQUNELENBMUNEO0FBNENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0FWLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQnNGLEtBQXRCLEdBQThCLFlBQVk7RUFDeEMsSUFBSSxLQUFLeEMsUUFBVCxFQUFtQjtJQUNqQixPQUFPLElBQVA7RUFDRDs7RUFFRCxLQUFLQSxRQUFMLEdBQWdCLElBQWhCO0VBQ0EsSUFBSSxLQUFLeUMsR0FBVCxFQUFjLEtBQUtBLEdBQUwsQ0FBU0QsS0FBVCxHQU4wQixDQU1SOztFQUNoQyxJQUFJLEtBQUsxQyxHQUFULEVBQWM7SUFDWjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFDRW5ELE1BQU0sQ0FBQytGLEdBQVAsQ0FBV0MsT0FBTyxDQUFDQyxPQUFuQixFQUE0QixTQUE1QixLQUNBakcsTUFBTSxDQUFDa0csRUFBUCxDQUFVRixPQUFPLENBQUNDLE9BQWxCLEVBQTJCLFNBQTNCLENBRkYsRUFHRTtNQUNBO01BQ0E7TUFDQSxNQUFNLElBQUloQyxLQUFKLENBQ0osbUZBREksQ0FBTjtJQUdELENBVEQsTUFTTyxJQUFJakUsTUFBTSxDQUFDK0YsR0FBUCxDQUFXQyxPQUFPLENBQUNDLE9BQW5CLEVBQTRCLFNBQTVCLENBQUosRUFBNEM7TUFDakQ7TUFDQTtNQUNBLEtBQUs5QyxHQUFMLENBQVNnRCxTQUFULEdBQXFCLElBQXJCO0lBQ0Q7O0lBRUQsS0FBS2hELEdBQUwsQ0FBUzBDLEtBQVQsR0EzQlksQ0EyQk07RUFDbkI7O0VBRUQsS0FBS3JGLFlBQUw7RUFDQSxLQUFLNEYsSUFBTCxDQUFVLE9BQVY7RUFDQSxPQUFPLElBQVA7QUFDRCxDQXhDRDs7QUEwQ0E5RixXQUFXLENBQUNDLFNBQVosQ0FBc0I4RixLQUF0QixHQUE4QixVQUFVQyxJQUFWLEVBQWdCQyxJQUFoQixFQUFzQmxGLE9BQXRCLEVBQStCbUYsYUFBL0IsRUFBOEM7RUFDMUUsUUFBUW5GLE9BQU8sQ0FBQ29GLElBQWhCO0lBQ0UsS0FBSyxPQUFMO01BQ0UsS0FBS3hCLEdBQUwsQ0FBUyxlQUFULGtCQUFtQ3VCLGFBQWEsV0FBSUYsSUFBSixjQUFZQyxJQUFaLEVBQWhEO01BQ0E7O0lBRUYsS0FBSyxNQUFMO01BQ0UsS0FBS0csUUFBTCxHQUFnQkosSUFBaEI7TUFDQSxLQUFLSyxRQUFMLEdBQWdCSixJQUFoQjtNQUNBOztJQUVGLEtBQUssUUFBTDtNQUFlO01BQ2IsS0FBS3RCLEdBQUwsQ0FBUyxlQUFULG1CQUFvQ3FCLElBQXBDO01BQ0E7O0lBQ0Y7TUFDRTtFQWRKOztFQWlCQSxPQUFPLElBQVA7QUFDRCxDQW5CRDtBQXFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUFoRyxXQUFXLENBQUNDLFNBQVosQ0FBc0JxRyxlQUF0QixHQUF3QyxVQUFVNUMsRUFBVixFQUFjO0VBQ3BEO0VBQ0EsSUFBSUEsRUFBRSxLQUFLTyxTQUFYLEVBQXNCUCxFQUFFLEdBQUcsSUFBTDtFQUN0QixLQUFLNkMsZ0JBQUwsR0FBd0I3QyxFQUF4QjtFQUNBLE9BQU8sSUFBUDtBQUNELENBTEQ7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUExRCxXQUFXLENBQUNDLFNBQVosQ0FBc0J1RyxTQUF0QixHQUFrQyxVQUFVQyxDQUFWLEVBQWE7RUFDN0MsS0FBS0MsYUFBTCxHQUFxQkQsQ0FBckI7RUFDQSxPQUFPLElBQVA7QUFDRCxDQUhEO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBekcsV0FBVyxDQUFDQyxTQUFaLENBQXNCMEcsZUFBdEIsR0FBd0MsVUFBVUYsQ0FBVixFQUFhO0VBQ25ELElBQUksT0FBT0EsQ0FBUCxLQUFhLFFBQWpCLEVBQTJCO0lBQ3pCLE1BQU0sSUFBSUcsU0FBSixDQUFjLGtCQUFkLENBQU47RUFDRDs7RUFFRCxLQUFLQyxnQkFBTCxHQUF3QkosQ0FBeEI7RUFDQSxPQUFPLElBQVA7QUFDRCxDQVBEO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUF6RyxXQUFXLENBQUNDLFNBQVosQ0FBc0I2RyxNQUF0QixHQUErQixZQUFZO0VBQ3pDLE9BQU87SUFDTGxELE1BQU0sRUFBRSxLQUFLQSxNQURSO0lBRUxDLEdBQUcsRUFBRSxLQUFLQSxHQUZMO0lBR0xrRCxJQUFJLEVBQUUsS0FBSy9CLEtBSE47SUFJTGdDLE9BQU8sRUFBRSxLQUFLeEM7RUFKVCxDQUFQO0FBTUQsQ0FQRDtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7QUFDQXhFLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQmdILElBQXRCLEdBQTZCLFVBQVVGLElBQVYsRUFBZ0I7RUFDM0MsSUFBTUcsU0FBUyxHQUFHdEgsUUFBUSxDQUFDbUgsSUFBRCxDQUExQjtFQUNBLElBQUlaLElBQUksR0FBRyxLQUFLM0IsT0FBTCxDQUFhLGNBQWIsQ0FBWDs7RUFFQSxJQUFJLEtBQUsyQyxTQUFULEVBQW9CO0lBQ2xCLE1BQU0sSUFBSXhELEtBQUosQ0FDSiw4R0FESSxDQUFOO0VBR0Q7O0VBRUQsSUFBSXVELFNBQVMsSUFBSSxDQUFDLEtBQUtsQyxLQUF2QixFQUE4QjtJQUM1QixJQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBYzZCLElBQWQsQ0FBSixFQUF5QjtNQUN2QixLQUFLL0IsS0FBTCxHQUFhLEVBQWI7SUFDRCxDQUZELE1BRU8sSUFBSSxDQUFDLEtBQUtvQyxPQUFMLENBQWFMLElBQWIsQ0FBTCxFQUF5QjtNQUM5QixLQUFLL0IsS0FBTCxHQUFhLEVBQWI7SUFDRDtFQUNGLENBTkQsTUFNTyxJQUFJK0IsSUFBSSxJQUFJLEtBQUsvQixLQUFiLElBQXNCLEtBQUtvQyxPQUFMLENBQWEsS0FBS3BDLEtBQWxCLENBQTFCLEVBQW9EO0lBQ3pELE1BQU0sSUFBSXJCLEtBQUosQ0FBVSw4QkFBVixDQUFOO0VBQ0QsQ0FsQjBDLENBb0IzQzs7O0VBQ0EsSUFBSXVELFNBQVMsSUFBSXRILFFBQVEsQ0FBQyxLQUFLb0YsS0FBTixDQUF6QixFQUF1QztJQUNyQyxLQUFLLElBQU1KLEdBQVgsSUFBa0JtQyxJQUFsQixFQUF3QjtNQUN0QixJQUFJbEgsTUFBTSxDQUFDa0gsSUFBRCxFQUFPbkMsR0FBUCxDQUFWLEVBQXVCLEtBQUtJLEtBQUwsQ0FBV0osR0FBWCxJQUFrQm1DLElBQUksQ0FBQ25DLEdBQUQsQ0FBdEI7SUFDeEI7RUFDRixDQUpELE1BSU8sSUFBSSxPQUFPbUMsSUFBUCxLQUFnQixRQUFwQixFQUE4QjtJQUNuQztJQUNBLElBQUksQ0FBQ1osSUFBTCxFQUFXLEtBQUtBLElBQUwsQ0FBVSxNQUFWO0lBQ1hBLElBQUksR0FBRyxLQUFLM0IsT0FBTCxDQUFhLGNBQWIsQ0FBUDtJQUNBLElBQUkyQixJQUFKLEVBQVVBLElBQUksR0FBR0EsSUFBSSxDQUFDMUIsV0FBTCxHQUFtQjRDLElBQW5CLEVBQVA7O0lBQ1YsSUFBSWxCLElBQUksS0FBSyxtQ0FBYixFQUFrRDtNQUNoRCxLQUFLbkIsS0FBTCxHQUFhLEtBQUtBLEtBQUwsYUFBZ0IsS0FBS0EsS0FBckIsY0FBOEIrQixJQUE5QixJQUF1Q0EsSUFBcEQ7SUFDRCxDQUZELE1BRU87TUFDTCxLQUFLL0IsS0FBTCxHQUFhLENBQUMsS0FBS0EsS0FBTCxJQUFjLEVBQWYsSUFBcUIrQixJQUFsQztJQUNEO0VBQ0YsQ0FWTSxNQVVBO0lBQ0wsS0FBSy9CLEtBQUwsR0FBYStCLElBQWI7RUFDRDs7RUFFRCxJQUFJLENBQUNHLFNBQUQsSUFBYyxLQUFLRSxPQUFMLENBQWFMLElBQWIsQ0FBbEIsRUFBc0M7SUFDcEMsT0FBTyxJQUFQO0VBQ0QsQ0F6QzBDLENBMkMzQzs7O0VBQ0EsSUFBSSxDQUFDWixJQUFMLEVBQVcsS0FBS0EsSUFBTCxDQUFVLE1BQVY7RUFDWCxPQUFPLElBQVA7QUFDRCxDQTlDRDtBQWdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBbkcsV0FBVyxDQUFDQyxTQUFaLENBQXNCcUgsU0FBdEIsR0FBa0MsVUFBVUMsSUFBVixFQUFnQjtFQUNoRDtFQUNBLEtBQUtDLEtBQUwsR0FBYSxPQUFPRCxJQUFQLEtBQWdCLFdBQWhCLEdBQThCLElBQTlCLEdBQXFDQSxJQUFsRDtFQUNBLE9BQU8sSUFBUDtBQUNELENBSkQ7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQXZILFdBQVcsQ0FBQ0MsU0FBWixDQUFzQndILG9CQUF0QixHQUE2QyxZQUFZO0VBQ3ZELElBQU1DLEtBQUssR0FBRyxLQUFLQyxNQUFMLENBQVlDLElBQVosQ0FBaUIsR0FBakIsQ0FBZDs7RUFDQSxJQUFJRixLQUFKLEVBQVc7SUFDVCxLQUFLN0QsR0FBTCxJQUFZLENBQUMsS0FBS0EsR0FBTCxDQUFTZ0UsUUFBVCxDQUFrQixHQUFsQixJQUF5QixHQUF6QixHQUErQixHQUFoQyxJQUF1Q0gsS0FBbkQ7RUFDRDs7RUFFRCxLQUFLQyxNQUFMLENBQVkvRixNQUFaLEdBQXFCLENBQXJCLENBTnVELENBTS9COztFQUV4QixJQUFJLEtBQUs0RixLQUFULEVBQWdCO0lBQ2QsSUFBTU0sS0FBSyxHQUFHLEtBQUtqRSxHQUFMLENBQVNrRSxPQUFULENBQWlCLEdBQWpCLENBQWQ7O0lBQ0EsSUFBSUQsS0FBSyxJQUFJLENBQWIsRUFBZ0I7TUFDZCxJQUFNRSxVQUFVLEdBQUcsS0FBS25FLEdBQUwsQ0FBU29FLEtBQVQsQ0FBZUgsS0FBSyxHQUFHLENBQXZCLEVBQTBCSSxLQUExQixDQUFnQyxHQUFoQyxDQUFuQjs7TUFDQSxJQUFJLE9BQU8sS0FBS1YsS0FBWixLQUFzQixVQUExQixFQUFzQztRQUNwQ1EsVUFBVSxDQUFDVCxJQUFYLENBQWdCLEtBQUtDLEtBQXJCO01BQ0QsQ0FGRCxNQUVPO1FBQ0xRLFVBQVUsQ0FBQ1QsSUFBWDtNQUNEOztNQUVELEtBQUsxRCxHQUFMLEdBQVcsS0FBS0EsR0FBTCxDQUFTb0UsS0FBVCxDQUFlLENBQWYsRUFBa0JILEtBQWxCLElBQTJCLEdBQTNCLEdBQWlDRSxVQUFVLENBQUNKLElBQVgsQ0FBZ0IsR0FBaEIsQ0FBNUM7SUFDRDtFQUNGO0FBQ0YsQ0FyQkQsQyxDQXVCQTs7O0FBQ0E1SCxXQUFXLENBQUNDLFNBQVosQ0FBc0JrSSxrQkFBdEIsR0FBMkMsWUFBTTtFQUMvQzVHLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLGFBQWI7QUFDRCxDQUZEO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUF4QixXQUFXLENBQUNDLFNBQVosQ0FBc0JtSSxhQUF0QixHQUFzQyxVQUFVQyxNQUFWLEVBQWtCdkgsT0FBbEIsRUFBMkJ3SCxLQUEzQixFQUFrQztFQUN0RSxJQUFJLEtBQUt2RixRQUFULEVBQW1CO0lBQ2pCO0VBQ0Q7O0VBRUQsSUFBTVgsS0FBSyxHQUFHLElBQUl1QixLQUFKLFdBQWEwRSxNQUFNLEdBQUd2SCxPQUF0QixpQkFBZDtFQUNBc0IsS0FBSyxDQUFDdEIsT0FBTixHQUFnQkEsT0FBaEI7RUFDQXNCLEtBQUssQ0FBQ00sSUFBTixHQUFhLGNBQWI7RUFDQU4sS0FBSyxDQUFDa0csS0FBTixHQUFjQSxLQUFkO0VBQ0EsS0FBS3RGLFFBQUwsR0FBZ0IsSUFBaEI7RUFDQSxLQUFLQyxhQUFMLEdBQXFCYixLQUFyQjtFQUNBLEtBQUttRCxLQUFMO0VBQ0EsS0FBS3ZCLFFBQUwsQ0FBYzVCLEtBQWQ7QUFDRCxDQWJEOztBQWVBcEMsV0FBVyxDQUFDQyxTQUFaLENBQXNCc0ksWUFBdEIsR0FBcUMsWUFBWTtFQUMvQyxJQUFNaEYsSUFBSSxHQUFHLElBQWIsQ0FEK0MsQ0FHL0M7O0VBQ0EsSUFBSSxLQUFLdkMsUUFBTCxJQUFpQixDQUFDLEtBQUtiLE1BQTNCLEVBQW1DO0lBQ2pDLEtBQUtBLE1BQUwsR0FBY3FJLFVBQVUsQ0FBQyxZQUFNO01BQzdCakYsSUFBSSxDQUFDNkUsYUFBTCxDQUFtQixhQUFuQixFQUFrQzdFLElBQUksQ0FBQ3ZDLFFBQXZDLEVBQWlELE9BQWpEO0lBQ0QsQ0FGdUIsRUFFckIsS0FBS0EsUUFGZ0IsQ0FBeEI7RUFHRCxDQVI4QyxDQVUvQzs7O0VBQ0EsSUFBSSxLQUFLQyxnQkFBTCxJQUF5QixDQUFDLEtBQUtiLHFCQUFuQyxFQUEwRDtJQUN4RCxLQUFLQSxxQkFBTCxHQUE2Qm9JLFVBQVUsQ0FBQyxZQUFNO01BQzVDakYsSUFBSSxDQUFDNkUsYUFBTCxDQUNFLHNCQURGLEVBRUU3RSxJQUFJLENBQUN0QyxnQkFGUCxFQUdFLFdBSEY7SUFLRCxDQU5zQyxFQU1wQyxLQUFLQSxnQkFOK0IsQ0FBdkM7RUFPRDtBQUNGLENBcEJEIn0=","\"use strict\";\n\n/**\n * Module dependencies.\n */\nvar utils = require('./utils');\n/**\n * Expose `ResponseBase`.\n */\n\n\nmodule.exports = ResponseBase;\n/**\n * Initialize a new `ResponseBase`.\n *\n * @api public\n */\n\nfunction ResponseBase() {}\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\n\nResponseBase.prototype.get = function (field) {\n return this.header[field.toLowerCase()];\n};\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\n\nResponseBase.prototype._setHeaderProperties = function (header) {\n // TODO: moar!\n // TODO: make this a util\n // content-type\n var ct = header['content-type'] || '';\n this.type = utils.type(ct); // params\n\n var parameters = utils.params(ct);\n\n for (var key in parameters) {\n if (Object.prototype.hasOwnProperty.call(parameters, key)) this[key] = parameters[key];\n }\n\n this.links = {}; // links\n\n try {\n if (header.link) {\n this.links = utils.parseLinks(header.link);\n }\n } catch (_unused) {// ignore\n }\n};\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\n\nResponseBase.prototype._setStatusProperties = function (status) {\n var type = Math.trunc(status / 100); // status / class\n\n this.statusCode = status;\n this.status = this.statusCode;\n this.statusType = type; // basics\n\n this.info = type === 1;\n this.ok = type === 2;\n this.redirect = type === 3;\n this.clientError = type === 4;\n this.serverError = type === 5;\n this.error = type === 4 || type === 5 ? this.toError() : false; // sugar\n\n this.created = status === 201;\n this.accepted = status === 202;\n this.noContent = status === 204;\n this.badRequest = status === 400;\n this.unauthorized = status === 401;\n this.notAcceptable = status === 406;\n this.forbidden = status === 403;\n this.notFound = status === 404;\n this.unprocessableEntity = status === 422;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1dGlscyIsInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIiwiUmVzcG9uc2VCYXNlIiwicHJvdG90eXBlIiwiZ2V0IiwiZmllbGQiLCJoZWFkZXIiLCJ0b0xvd2VyQ2FzZSIsIl9zZXRIZWFkZXJQcm9wZXJ0aWVzIiwiY3QiLCJ0eXBlIiwicGFyYW1ldGVycyIsInBhcmFtcyIsImtleSIsIk9iamVjdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImxpbmtzIiwibGluayIsInBhcnNlTGlua3MiLCJfc2V0U3RhdHVzUHJvcGVydGllcyIsInN0YXR1cyIsIk1hdGgiLCJ0cnVuYyIsInN0YXR1c0NvZGUiLCJzdGF0dXNUeXBlIiwiaW5mbyIsIm9rIiwicmVkaXJlY3QiLCJjbGllbnRFcnJvciIsInNlcnZlckVycm9yIiwiZXJyb3IiLCJ0b0Vycm9yIiwiY3JlYXRlZCIsImFjY2VwdGVkIiwibm9Db250ZW50IiwiYmFkUmVxdWVzdCIsInVuYXV0aG9yaXplZCIsIm5vdEFjY2VwdGFibGUiLCJmb3JiaWRkZW4iLCJub3RGb3VuZCIsInVucHJvY2Vzc2FibGVFbnRpdHkiXSwic291cmNlcyI6WyIuLi9zcmMvcmVzcG9uc2UtYmFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbi8qKlxuICogRXhwb3NlIGBSZXNwb25zZUJhc2VgLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVzcG9uc2VCYXNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJlc3BvbnNlQmFzZWAuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBSZXNwb25zZUJhc2UoKSB7fVxuXG4vKipcbiAqIEdldCBjYXNlLWluc2Vuc2l0aXZlIGBmaWVsZGAgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlc3BvbnNlQmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIHJldHVybiB0aGlzLmhlYWRlcltmaWVsZC50b0xvd2VyQ2FzZSgpXTtcbn07XG5cbi8qKlxuICogU2V0IGhlYWRlciByZWxhdGVkIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGAudHlwZWAgdGhlIGNvbnRlbnQgdHlwZSB3aXRob3V0IHBhcmFtc1xuICpcbiAqIEEgcmVzcG9uc2Ugb2YgXCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLThcIlxuICogd2lsbCBwcm92aWRlIHlvdSB3aXRoIGEgYC50eXBlYCBvZiBcInRleHQvcGxhaW5cIi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaGVhZGVyXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXNwb25zZUJhc2UucHJvdG90eXBlLl9zZXRIZWFkZXJQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGhlYWRlcikge1xuICAvLyBUT0RPOiBtb2FyIVxuICAvLyBUT0RPOiBtYWtlIHRoaXMgYSB1dGlsXG5cbiAgLy8gY29udGVudC10eXBlXG4gIGNvbnN0IGN0ID0gaGVhZGVyWydjb250ZW50LXR5cGUnXSB8fCAnJztcbiAgdGhpcy50eXBlID0gdXRpbHMudHlwZShjdCk7XG5cbiAgLy8gcGFyYW1zXG4gIGNvbnN0IHBhcmFtZXRlcnMgPSB1dGlscy5wYXJhbXMoY3QpO1xuICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbWV0ZXJzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJhbWV0ZXJzLCBrZXkpKVxuICAgICAgdGhpc1trZXldID0gcGFyYW1ldGVyc1trZXldO1xuICB9XG5cbiAgdGhpcy5saW5rcyA9IHt9O1xuXG4gIC8vIGxpbmtzXG4gIHRyeSB7XG4gICAgaWYgKGhlYWRlci5saW5rKSB7XG4gICAgICB0aGlzLmxpbmtzID0gdXRpbHMucGFyc2VMaW5rcyhoZWFkZXIubGluayk7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBpZ25vcmVcbiAgfVxufTtcblxuLyoqXG4gKiBTZXQgZmxhZ3Mgc3VjaCBhcyBgLm9rYCBiYXNlZCBvbiBgc3RhdHVzYC5cbiAqXG4gKiBGb3IgZXhhbXBsZSBhIDJ4eCByZXNwb25zZSB3aWxsIGdpdmUgeW91IGEgYC5va2Agb2YgX190cnVlX19cbiAqIHdoZXJlYXMgNXh4IHdpbGwgYmUgX19mYWxzZV9fIGFuZCBgLmVycm9yYCB3aWxsIGJlIF9fdHJ1ZV9fLiBUaGVcbiAqIGAuY2xpZW50RXJyb3JgIGFuZCBgLnNlcnZlckVycm9yYCBhcmUgYWxzbyBhdmFpbGFibGUgdG8gYmUgbW9yZVxuICogc3BlY2lmaWMsIGFuZCBgLnN0YXR1c1R5cGVgIGlzIHRoZSBjbGFzcyBvZiBlcnJvciByYW5naW5nIGZyb20gMS4uNVxuICogc29tZXRpbWVzIHVzZWZ1bCBmb3IgbWFwcGluZyByZXNwb25kIGNvbG9ycyBldGMuXG4gKlxuICogXCJzdWdhclwiIHByb3BlcnRpZXMgYXJlIGFsc28gZGVmaW5lZCBmb3IgY29tbW9uIGNhc2VzLiBDdXJyZW50bHkgcHJvdmlkaW5nOlxuICpcbiAqICAgLSAubm9Db250ZW50XG4gKiAgIC0gLmJhZFJlcXVlc3RcbiAqICAgLSAudW5hdXRob3JpemVkXG4gKiAgIC0gLm5vdEFjY2VwdGFibGVcbiAqICAgLSAubm90Rm91bmRcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gc3RhdHVzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXNwb25zZUJhc2UucHJvdG90eXBlLl9zZXRTdGF0dXNQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHN0YXR1cykge1xuICBjb25zdCB0eXBlID0gTWF0aC50cnVuYyhzdGF0dXMgLyAxMDApO1xuXG4gIC8vIHN0YXR1cyAvIGNsYXNzXG4gIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1cztcbiAgdGhpcy5zdGF0dXMgPSB0aGlzLnN0YXR1c0NvZGU7XG4gIHRoaXMuc3RhdHVzVHlwZSA9IHR5cGU7XG5cbiAgLy8gYmFzaWNzXG4gIHRoaXMuaW5mbyA9IHR5cGUgPT09IDE7XG4gIHRoaXMub2sgPSB0eXBlID09PSAyO1xuICB0aGlzLnJlZGlyZWN0ID0gdHlwZSA9PT0gMztcbiAgdGhpcy5jbGllbnRFcnJvciA9IHR5cGUgPT09IDQ7XG4gIHRoaXMuc2VydmVyRXJyb3IgPSB0eXBlID09PSA1O1xuICB0aGlzLmVycm9yID0gdHlwZSA9PT0gNCB8fCB0eXBlID09PSA1ID8gdGhpcy50b0Vycm9yKCkgOiBmYWxzZTtcblxuICAvLyBzdWdhclxuICB0aGlzLmNyZWF0ZWQgPSBzdGF0dXMgPT09IDIwMTtcbiAgdGhpcy5hY2NlcHRlZCA9IHN0YXR1cyA9PT0gMjAyO1xuICB0aGlzLm5vQ29udGVudCA9IHN0YXR1cyA9PT0gMjA0O1xuICB0aGlzLmJhZFJlcXVlc3QgPSBzdGF0dXMgPT09IDQwMDtcbiAgdGhpcy51bmF1dGhvcml6ZWQgPSBzdGF0dXMgPT09IDQwMTtcbiAgdGhpcy5ub3RBY2NlcHRhYmxlID0gc3RhdHVzID09PSA0MDY7XG4gIHRoaXMuZm9yYmlkZGVuID0gc3RhdHVzID09PSA0MDM7XG4gIHRoaXMubm90Rm91bmQgPSBzdGF0dXMgPT09IDQwNDtcbiAgdGhpcy51bnByb2Nlc3NhYmxlRW50aXR5ID0gc3RhdHVzID09PSA0MjI7XG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUVBLElBQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7QUFFQTtBQUNBO0FBQ0E7OztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLFlBQWpCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTQSxZQUFULEdBQXdCLENBQUU7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBQSxZQUFZLENBQUNDLFNBQWIsQ0FBdUJDLEdBQXZCLEdBQTZCLFVBQVVDLEtBQVYsRUFBaUI7RUFDNUMsT0FBTyxL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","\"use strict\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction Agent() {\n this._defaults = [];\n}\n\nvar _loop = function _loop() {\n var fn = _arr[_i];\n\n // Default setting for all requests from this agent\n Agent.prototype[fn] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this._defaults.push({\n fn: fn,\n args: args\n });\n\n return this;\n };\n};\n\nfor (var _i = 0, _arr = ['use', 'on', 'once', 'set', 'query', 'type', 'accept', 'auth', 'withCredentials', 'sortQuery', 'retry', 'ok', 'redirects', 'timeout', 'buffer', 'serialize', 'parse', 'ca', 'key', 'pfx', 'cert', 'disableTLSCerts']; _i < _arr.length; _i++) {\n _loop();\n}\n\nAgent.prototype._setDefaults = function (request) {\n var _iterator = _createForOfIteratorHelper(this._defaults),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var def = _step.value;\n request[def.fn].apply(request, _toConsumableArray(def.args));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n};\n\nmodule.exports = Agent;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBZ2VudCIsIl9kZWZhdWx0cyIsImZuIiwicHJvdG90eXBlIiwiYXJncyIsInB1c2giLCJfc2V0RGVmYXVsdHMiLCJyZXF1ZXN0IiwiZGVmIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hZ2VudC1iYXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIEFnZW50KCkge1xuICB0aGlzLl9kZWZhdWx0cyA9IFtdO1xufVxuXG5mb3IgKGNvbnN0IGZuIG9mIFtcbiAgJ3VzZScsXG4gICdvbicsXG4gICdvbmNlJyxcbiAgJ3NldCcsXG4gICdxdWVyeScsXG4gICd0eXBlJyxcbiAgJ2FjY2VwdCcsXG4gICdhdXRoJyxcbiAgJ3dpdGhDcmVkZW50aWFscycsXG4gICdzb3J0UXVlcnknLFxuICAncmV0cnknLFxuICAnb2snLFxuICAncmVkaXJlY3RzJyxcbiAgJ3RpbWVvdXQnLFxuICAnYnVmZmVyJyxcbiAgJ3NlcmlhbGl6ZScsXG4gICdwYXJzZScsXG4gICdjYScsXG4gICdrZXknLFxuICAncGZ4JyxcbiAgJ2NlcnQnLFxuICAnZGlzYWJsZVRMU0NlcnRzJ1xuXSkge1xuICAvLyBEZWZhdWx0IHNldHRpbmcgZm9yIGFsbCByZXF1ZXN0cyBmcm9tIHRoaXMgYWdlbnRcbiAgQWdlbnQucHJvdG90eXBlW2ZuXSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgdGhpcy5fZGVmYXVsdHMucHVzaCh7IGZuLCBhcmdzIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG5BZ2VudC5wcm90b3R5cGUuX3NldERlZmF1bHRzID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgZm9yIChjb25zdCBkZWYgb2YgdGhpcy5fZGVmYXVsdHMpIHtcbiAgICByZXF1ZXN0W2RlZi5mbl0oLi4uZGVmLmFyZ3MpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFnZW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsS0FBVCxHQUFpQjtFQUNmLEtBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDRDs7O0VBRUksSUFBTUMsRUFBRSxXQUFSOztFQXdCSDtFQUNBRixLQUFLLENBQUNHLFNBQU4sQ0FBZ0JELEVBQWhCLElBQXNCLFlBQW1CO0lBQUEsa0NBQU5FLElBQU07TUFBTkEsSUFBTTtJQUFBOztJQUN2QyxLQUFLSCxTQUFMLENBQWVJLElBQWYsQ0FBb0I7TUFBRUgsRUFBRSxFQUFGQSxFQUFGO01BQU1FLElBQUksRUFBSkE7SUFBTixDQUFwQjs7SUFDQSxPQUFPLElBQVA7RUFDRCxDQUhEOzs7QUF6QkYsd0JBQWlCLENBQ2YsS0FEZSxFQUVmLElBRmUsRUFHZixNQUhlLEVBSWYsS0FKZSxFQUtmLE9BTGUsRUFNZixNQU5lLEVBT2YsUUFQZSxFQVFmLE1BUmUsRUFTZixpQkFUZSxFQVVmLFdBVmUsRUFXZixPQVhlLEVBWWYsSUFaZSxFQWFmLFdBYmUsRUFjZixTQWRlLEVBZWYsUUFmZSxFQWdCZixXQWhCZSxFQWlCZixPQWpCZSxFQWtCZixJQWxCZSxFQW1CZixLQW5CZSxFQW9CZixLQXBCZSxFQXFCZixNQXJCZSxFQXNCZixpQkF0QmUsQ0FBakIsMEJBdUJHO0VBQUE7QUFNRjs7QUFFREosS0FBSyxDQUFDRyxTQUFOLENBQWdCRyxZQUFoQixHQUErQixVQUFVQyxPQUFWLEVBQW1CO0VBQUEsMkNBQzlCLEtBQUtOLFNBRHlCO0VBQUE7O0VBQUE7SUFDaEQsb0RBQWtDO01BQUEsSUFBdkJPLEdBQXVCO01BQ2hDRCxPQUFPLENBQUNDLEdBQUcsQ0FBQ04sRUFBTCxDQUFQLE9BQUFLLE9BQU8scUJBQVlDLEdBQUcsQ0FBQ0osSUFBaEIsRUFBUDtJQUNEO0VBSCtDO0lBQUE7RUFBQTtJQUFBO0VBQUE7QUFJakQsQ0FKRDs7QUFNQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCVixLQUFqQiJ9","'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","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Root reference for iframes.\n */\nvar root;\n\nif (typeof window !== 'undefined') {\n // Browser window\n root = window;\n} else if (typeof self === 'undefined') {\n // Other environments\n console.warn('Using browser-only version of superagent in non-browser environment');\n root = void 0;\n} else {\n // Web Worker\n root = self;\n}\n\nvar Emitter = require('component-emitter');\n\nvar safeStringify = require('fast-safe-stringify');\n\nvar qs = require('qs');\n\nvar RequestBase = require('./request-base');\n\nvar _require = require('./utils'),\n isObject = _require.isObject,\n mixin = _require.mixin,\n hasOwn = _require.hasOwn;\n\nvar ResponseBase = require('./response-base');\n\nvar Agent = require('./agent-base');\n/**\n * Noop.\n */\n\n\nfunction noop() {}\n/**\n * Expose `request`.\n */\n\n\nmodule.exports = function (method, url) {\n // callback\n if (typeof url === 'function') {\n return new exports.Request('GET', method).end(url);\n } // url first\n\n\n if (arguments.length === 1) {\n return new exports.Request('GET', method);\n }\n\n return new exports.Request(method, url);\n};\n\nexports = module.exports;\nvar request = exports;\nexports.Request = Request;\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest && (!root.location || root.location.protocol !== 'file:' || !root.ActiveXObject)) {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject('Microsoft.XMLHTTP');\n } catch (_unused) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.6.0');\n } catch (_unused2) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.3.0');\n } catch (_unused3) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP');\n } catch (_unused4) {\n /**/\n }\n\n throw new Error('Browser-only version of superagent could not find XHR');\n};\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\n\nvar trim = ''.trim ? function (s) {\n return s.trim();\n} : function (s) {\n return s.replace(/(^\\s*|\\s*$)/g, '');\n};\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(object) {\n if (!isObject(object)) return object;\n var pairs = [];\n\n for (var key in object) {\n if (hasOwn(object, key)) pushEncodedKeyValuePair(pairs, key, object[key]);\n }\n\n return pairs.join('&');\n}\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\n\nfunction pushEncodedKeyValuePair(pairs, key, value) {\n if (value === undefined) return;\n\n if (value === null) {\n pairs.push(encodeURI(key));\n return;\n }\n\n if (Array.isArray(value)) {\n var _iterator = _createForOfIteratorHelper(value),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var v = _step.value;\n pushEncodedKeyValuePair(pairs, key, v);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else if (isObject(value)) {\n for (var subkey in value) {\n if (hasOwn(value, subkey)) pushEncodedKeyValuePair(pairs, \"\".concat(key, \"[\").concat(subkey, \"]\"), value[subkey]);\n }\n } else {\n pairs.push(encodeURI(key) + '=' + encodeURIComponent(value));\n }\n}\n/**\n * Expose serialization method.\n */\n\n\nrequest.serializeObject = serialize;\n/**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(string_) {\n var object = {};\n var pairs = string_.split('&');\n var pair;\n var pos;\n\n for (var i = 0, length_ = pairs.length; i < length_; ++i) {\n pair = pairs[i];\n pos = pair.indexOf('=');\n\n if (pos === -1) {\n object[decodeURIComponent(pair)] = '';\n } else {\n object[decodeURIComponent(pair.slice(0, pos))] = decodeURIComponent(pair.slice(pos + 1));\n }\n }\n\n return object;\n}\n/**\n * Expose parser.\n */\n\n\nrequest.parseString = parseString;\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'text/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n form: 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\nrequest.serialize = {\n 'application/x-www-form-urlencoded': qs.stringify,\n 'application/json': safeStringify\n};\n/**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(string_) {\n var lines = string_.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var value;\n\n for (var i = 0, length_ = lines.length; i < length_; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n\n if (index === -1) {\n // could be empty line, just skip it\n continue;\n }\n\n field = line.slice(0, index).toLowerCase();\n value = trim(line.slice(index + 1));\n fields[field] = value;\n }\n\n return fields;\n}\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\n\nfunction isJSON(mime) {\n // should match /json or +json\n // but not /json-seq\n return /[/+]json($|[^-\\w])/i.test(mime);\n}\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\n\nfunction Response(request_) {\n this.req = request_;\n this.xhr = this.req.xhr; // responseText is accessible only if responseType is '' or 'text' and on older browsers\n\n this.text = this.req.method !== 'HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text') || typeof this.xhr.responseType === 'undefined' ? this.xhr.responseText : null;\n this.statusText = this.req.xhr.statusText;\n var status = this.xhr.status; // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n\n if (status === 1223) {\n status = 204;\n }\n\n this._setStatusProperties(status);\n\n this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n this.header = this.headers; // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n\n this._setHeaderProperties(this.header);\n\n if (this.text === null && request_._responseType) {\n this.body = this.xhr.response;\n } else {\n this.body = this.req.method === 'HEAD' ? null : this._parseBody(this.text ? this.text : this.xhr.response);\n }\n}\n\nmixin(Response.prototype, ResponseBase.prototype);\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function (string_) {\n var parse = request.parse[this.type];\n\n if (this.req._parser) {\n return this.req._parser(this, string_);\n }\n\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n\n return parse && string_ && (string_.length > 0 || string_ instanceof Object) ? parse(string_) : null;\n};\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\n\nResponse.prototype.toError = function () {\n var req = this.req;\n var method = req.method;\n var url = req.url;\n var message = \"cannot \".concat(method, \" \").concat(url, \" (\").concat(this.status, \")\");\n var error = new Error(message);\n error.status = this.status;\n error.method = method;\n error.url = url;\n return error;\n};\n/**\n * Expose `Response`.\n */\n\n\nrequest.Response = Response;\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n\n this._header = {}; // coerces header names to lowercase\n\n this.on('end', function () {\n var error = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch (err) {\n error = new Error('Parser is unable to parse the response');\n error.parse = true;\n error.original = err; // issue #675: return the raw response if the response parsing fails\n\n if (self.xhr) {\n // ie9 doesn't have 'response' property\n error.rawResponse = typeof self.xhr.responseType === 'undefined' ? self.xhr.responseText : self.xhr.response; // issue #876: return the http status code if the response parsing fails\n\n error.status = self.xhr.status ? self.xhr.status : null;\n error.statusCode = error.status; // backwards-compat only\n } else {\n error.rawResponse = null;\n error.status = null;\n }\n\n return self.callback(error);\n }\n\n self.emit('response', res);\n var new_error;\n\n try {\n if (!self._isResponseOK(res)) {\n new_error = new Error(res.statusText || res.text || 'Unsuccessful HTTP response');\n }\n } catch (err) {\n new_error = err; // ok() callback can throw\n } // #1000 don't catch errors from the callback to avoid double calling it\n\n\n if (new_error) {\n new_error.original = error;\n new_error.response = res;\n new_error.status = res.status;\n self.callback(new_error, res);\n } else {\n self.callback(null, res);\n }\n });\n}\n/**\n * Mixin `Emitter` and `RequestBase`.\n */\n// eslint-disable-next-line new-cap\n\n\nEmitter(Request.prototype);\nmixin(Request.prototype, RequestBase.prototype);\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function (type) {\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.accept = function (type) {\n this.set('Accept', request.types[type] || type);\n return this;\n};\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} [pass] optional in case of using 'bearer' as type\n * @param {Object} options with 'type' property 'auto', 'basic' or 'bearer' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.auth = function (user, pass, options) {\n if (arguments.length === 1) pass = '';\n\n if (_typeof(pass) === 'object' && pass !== null) {\n // pass is optional and can be replaced with options\n options = pass;\n pass = '';\n }\n\n if (!options) {\n options = {\n type: typeof btoa === 'function' ? 'basic' : 'auto'\n };\n }\n\n var encoder = options.encoder ? options.encoder : function (string) {\n if (typeof btoa === 'function') {\n return btoa(string);\n }\n\n throw new Error('Cannot use basic auth, btoa is not a function');\n };\n return this._auth(user, pass, options, encoder);\n};\n/**\n * Add query-string `val`.\n *\n * Examples:\n *\n * request.get('/shoes')\n * .query('size=10')\n * .query({ color: 'blue' })\n *\n * @param {Object|String} val\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.query = function (value) {\n if (typeof value !== 'string') value = serialize(value);\n if (value) this._query.push(value);\n return this;\n};\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `options` (or filename).\n *\n * ``` js\n * request.post('/upload')\n * .attach('content', new Blob(['hey!'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String|Object} options\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.attach = function (field, file, options) {\n if (file) {\n if (this._data) {\n throw new Error(\"superagent can't mix .send() and .attach()\");\n }\n\n this._getFormData().append(field, file, options || file.name);\n }\n\n return this;\n};\n\nRequest.prototype._getFormData = function () {\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n\n return this._formData;\n};\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\n\nRequest.prototype.callback = function (error, res) {\n if (this._shouldRetry(error, res)) {\n return this._retry();\n }\n\n var fn = this._callback;\n this.clearTimeout();\n\n if (error) {\n if (this._maxRetries) error.retries = this._retries - 1;\n this.emit('error', error);\n }\n\n fn(error, res);\n};\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\n\nRequest.prototype.crossDomainError = function () {\n var error = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n error.crossDomain = true;\n error.status = this.status;\n error.method = this.method;\n error.url = this.url;\n this.callback(error);\n}; // This only warns, because the request is still likely to work\n\n\nRequest.prototype.agent = function () {\n console.warn('This is not supported in browser version of superagent');\n return this;\n};\n\nRequest.prototype.ca = Request.prototype.agent;\nRequest.prototype.buffer = Request.prototype.ca; // This throws, because it can't send/receive data as expected\n\nRequest.prototype.write = function () {\n throw new Error('Streaming is not supported in browser version of superagent');\n};\n\nRequest.prototype.pipe = Request.prototype.write;\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * @param {Object} obj host object\n * @return {Boolean} is a host object\n * @api private\n */\n\nRequest.prototype._isHost = function (object) {\n // Native objects stringify to [object File], [object Blob], [object FormData], etc.\n return object && _typeof(object) === 'object' && !Array.isArray(object) && Object.prototype.toString.call(object) !== '[object Object]';\n};\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.end = function (fn) {\n if (this._endCalled) {\n console.warn('Warning: .end() was called twice. This is not supported in superagent');\n }\n\n this._endCalled = true; // store callback\n\n this._callback = fn || noop; // querystring\n\n this._finalizeQueryString();\n\n this._end();\n};\n\nRequest.prototype._setUploadTimeout = function () {\n var self = this; // upload timeout it's wokrs only if deadline timeout is off\n\n if (this._uploadTimeout && !this._uploadTimeoutTimer) {\n this._uploadTimeoutTimer = setTimeout(function () {\n self._timeoutError('Upload timeout of ', self._uploadTimeout, 'ETIMEDOUT');\n }, this._uploadTimeout);\n }\n}; // eslint-disable-next-line complexity\n\n\nRequest.prototype._end = function () {\n if (this._aborted) return this.callback(new Error('The request has been aborted even before .end() was called'));\n var self = this;\n this.xhr = request.getXHR();\n var xhr = this.xhr;\n var data = this._formData || this._data;\n\n this._setTimeouts(); // state change\n\n\n xhr.addEventListener('readystatechange', function () {\n var readyState = xhr.readyState;\n\n if (readyState >= 2 && self._responseTimeoutTimer) {\n clearTimeout(self._responseTimeoutTimer);\n }\n\n if (readyState !== 4) {\n return;\n } // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n\n\n var status;\n\n try {\n status = xhr.status;\n } catch (_unused5) {\n status = 0;\n }\n\n if (!status) {\n if (self.timedout || self._aborted) return;\n return self.crossDomainError();\n }\n\n self.emit('end');\n }); // progress\n\n var handleProgress = function handleProgress(direction, e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n\n if (e.percent === 100) {\n clearTimeout(self._uploadTimeoutTimer);\n }\n }\n\n e.direction = direction;\n self.emit('progress', e);\n };\n\n if (this.hasListeners('progress')) {\n try {\n xhr.addEventListener('progress', handleProgress.bind(null, 'download'));\n\n if (xhr.upload) {\n xhr.upload.addEventListener('progress', handleProgress.bind(null, 'upload'));\n }\n } catch (_unused6) {// Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n }\n\n if (xhr.upload) {\n this._setUploadTimeout();\n } // initiate request\n\n\n try {\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n } catch (err) {\n // see #1149\n return this.callback(err);\n } // CORS\n\n\n if (this._withCredentials) xhr.withCredentials = true; // body\n\n if (!this._formData && this.method !== 'GET' && this.method !== 'HEAD' && typeof data !== 'string' && !this._isHost(data)) {\n // serialize stuff\n var contentType = this._header['content-type'];\n\n var _serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : ''];\n\n if (!_serialize && isJSON(contentType)) {\n _serialize = request.serialize['application/json'];\n }\n\n if (_serialize) data = _serialize(data);\n } // set header fields\n\n\n for (var field in this.header) {\n if (this.header[field] === null) continue;\n if (hasOwn(this.header, field)) xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n } // send stuff\n\n\n this.emit('request', this); // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n\n xhr.send(typeof data === 'undefined' ? null : data);\n};\n\nrequest.agent = function () {\n return new Agent();\n};\n\nvar _loop = function _loop() {\n var method = _arr[_i];\n\n Agent.prototype[method.toLowerCase()] = function (url, fn) {\n var request_ = new request.Request(method, url);\n\n this._setDefaults(request_);\n\n if (fn) {\n request_.end(fn);\n }\n\n return request_;\n };\n};\n\nfor (var _i = 0, _arr = ['GET', 'POST', 'OPTIONS', 'PATCH', 'PUT', 'DELETE']; _i < _arr.length; _i++) {\n _loop();\n}\n\nAgent.prototype.del = Agent.prototype.delete;\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = function (url, data, fn) {\n var request_ = request('GET', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.query(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.head = function (url, data, fn) {\n var request_ = request('HEAD', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.query(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.options = function (url, data, fn) {\n var request_ = request('OPTIONS', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * DELETE `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nfunction del(url, data, fn) {\n var request_ = request('DELETE', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n}\n\nrequest.del = del;\nrequest.delete = del;\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function (url, data, fn) {\n var request_ = request('PATCH', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.post = function (url, data, fn) {\n var request_ = request('POST', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.put = function (url, data, fn) {\n var request_ = request('PUT', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb290Iiwid2luZG93Iiwic2VsZiIsImNvbnNvbGUiLCJ3YXJuIiwiRW1pdHRlciIsInJlcXVpcmUiLCJzYWZlU3RyaW5naWZ5IiwicXMiLCJSZXF1ZXN0QmFzZSIsImlzT2JqZWN0IiwibWl4aW4iLCJoYXNPd24iLCJSZXNwb25zZUJhc2UiLCJBZ2VudCIsIm5vb3AiLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0aG9kIiwidXJsIiwiUmVxdWVzdCIsImVuZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInJlcXVlc3QiLCJnZXRYSFIiLCJYTUxIdHRwUmVxdWVzdCIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJBY3RpdmVYT2JqZWN0IiwiRXJyb3IiLCJ0cmltIiwicyIsInJlcGxhY2UiLCJzZXJpYWxpemUiLCJvYmplY3QiLCJwYWlycyIsImtleSIsInB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyIiwiam9pbiIsInZhbHVlIiwidW5kZWZpbmVkIiwicHVzaCIsImVuY29kZVVSSSIsIkFycmF5IiwiaXNBcnJheSIsInYiLCJzdWJrZXkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemVPYmplY3QiLCJwYXJzZVN0cmluZyIsInN0cmluZ18iLCJzcGxpdCIsInBhaXIiLCJwb3MiLCJpIiwibGVuZ3RoXyIsImluZGV4T2YiLCJkZWNvZGVVUklDb21wb25lbnQiLCJzbGljZSIsInR5cGVzIiwiaHRtbCIsImpzb24iLCJ4bWwiLCJ1cmxlbmNvZGVkIiwiZm9ybSIsInN0cmluZ2lmeSIsInBhcnNlIiwiSlNPTiIsInBhcnNlSGVhZGVyIiwibGluZXMiLCJmaWVsZHMiLCJpbmRleCIsImxpbmUiLCJmaWVsZCIsInRvTG93ZXJDYXNlIiwiaXNKU09OIiwibWltZSIsInRlc3QiLCJSZXNwb25zZSIsInJlcXVlc3RfIiwicmVxIiwieGhyIiwidGV4dCIsInJlc3BvbnNlVHlwZSIsInJlc3BvbnNlVGV4dCIsInN0YXR1c1RleHQiLCJzdGF0dXMiLCJfc2V0U3RhdHVzUHJvcGVydGllcyIsImhlYWRlcnMiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJoZWFkZXIiLCJnZXRSZXNwb25zZUhlYWRlciIsIl9zZXRIZWFkZXJQcm9wZXJ0aWVzIiwiX3Jlc3BvbnNlVHlwZSIsImJvZHkiLCJyZXNwb25zZSIsIl9wYXJzZUJvZHkiLCJwcm90b3R5cGUiLCJ0eXBlIiwiX3BhcnNlciIsIk9iamVjdCIsInRvRXJyb3IiLCJtZXNzYWdlIiwiZXJyb3IiLCJfcXVlcnkiLCJfaGVhZGVyIiwib24iLCJyZXMiLCJlcnIiLCJvcmlnaW5hbCIsInJhd1Jlc3BvbnNlIiwic3RhdHVzQ29kZSIsImNhbGxiYWNrIiwiZW1pdCIsIm5ld19lcnJvciIsIl9pc1Jlc3BvbnNlT0siLCJzZXQiLCJhY2NlcHQiLCJhdXRoIiwidXNlciIsInBhc3MiLCJvcHRpb25zIiwiYnRvYSIsImVuY29kZXIiLCJzdHJpbmciLCJfYXV0aCIsInF1ZXJ5IiwiYXR0YWNoIiwiZmlsZSIsIl9kYXRhIiwiX2dldEZvcm1EYXRhIiwiYXBwZW5kIiwibmFtZSIsIl9mb3JtRGF0YSIsIkZvcm1EYXRhIiwiX3Nob3VsZFJldHJ5IiwiX3JldHJ5IiwiZm4iLCJfY2FsbGJhY2siLCJjbGVhclRpbWVvdXQiLCJfbWF4UmV0cmllcyIsInJldHJpZXMiLCJfcmV0cmllcyIsImNyb3NzRG9tYWluRXJyb3IiLCJjcm9zc0RvbWFpbiIsImFnZW50IiwiY2EiLCJidWZmZXIiLCJ3cml0ZSIsInBpcGUiLCJfaXNIb3N0IiwidG9TdHJpbmciLCJjYWxsIiwiX2VuZENhbGxlZCIsIl9maW5hbGl6ZVF1ZXJ5U3RyaW5nIiwiX2VuZCIsIl9zZXRVcGxvYWRUaW1lb3V0IiwiX3VwbG9hZFRpbWVvdXQiLCJfdXBsb2FkVGltZW91dFRpbWVyIiwic2V0VGltZW91dCIsIl90aW1lb3V0RXJyb3IiLCJfYWJvcnRlZCIsImRhdGEiLCJfc2V0VGltZW91dHMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVhZHlTdGF0ZSIsIl9yZXNwb25zZVRpbWVvdXRUaW1lciIsInRpbWVkb3V0IiwiaGFuZGxlUHJvZ3Jlc3MiLCJkaXJlY3Rpb24iLCJlIiwidG90YWwiLCJwZXJjZW50IiwibG9hZGVkIiwiaGFzTGlzdGVuZXJzIiwiYmluZCIsInVwbG9hZCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJvcGVuIiwiX3dpdGhDcmVkZW50aWFscyIsIndpdGhDcmVkZW50aWFscyIsImNvbnRlbnRUeXBlIiwiX3NlcmlhbGl6ZXIiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsIl9zZXREZWZhdWx0cyIsImRlbCIsImRlbGV0ZSIsImdldCIsImhlYWQiLCJwYXRjaCIsInBvc3QiLCJwdXQiXSwic291cmNlcyI6WyIuLi9zcmMvY2xpZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUm9vdCByZWZlcmVuY2UgZm9yIGlmcmFtZXMuXG4gKi9cblxubGV0IHJvb3Q7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gQnJvd3NlciB3aW5kb3dcbiAgcm9vdCA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIHNlbGYgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIE90aGVyIGVudmlyb25tZW50c1xuICBjb25zb2xlLndhcm4oXG4gICAgJ1VzaW5nIGJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQnXG4gICk7XG4gIHJvb3QgPSB0aGlzO1xufSBlbHNlIHtcbiAgLy8gV2ViIFdvcmtlclxuICByb290ID0gc2VsZjtcbn1cblxuY29uc3QgRW1pdHRlciA9IHJlcXVpcmUoJ2NvbXBvbmVudC1lbWl0dGVyJyk7XG5jb25zdCBzYWZlU3RyaW5naWZ5ID0gcmVxdWlyZSgnZmFzdC1zYWZlLXN0cmluZ2lmeScpO1xuY29uc3QgcXMgPSByZXF1aXJlKCdxcycpO1xuY29uc3QgUmVxdWVzdEJhc2UgPSByZXF1aXJlKCcuL3JlcXVlc3QtYmFzZScpO1xuY29uc3QgeyBpc09iamVjdCwgbWl4aW4sIGhhc093biB9ID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3QgUmVzcG9uc2VCYXNlID0gcmVxdWlyZSgnLi9yZXNwb25zZS1iYXNlJyk7XG5jb25zdCBBZ2VudCA9IHJlcXVpcmUoJy4vYWdlbnQtYmFzZScpO1xuXG4vKipcbiAqIE5vb3AuXG4gKi9cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbi8qKlxuICogRXhwb3NlIGByZXF1ZXN0YC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtZXRob2QsIHVybCkge1xuICAvLyBjYWxsYmFja1xuICBpZiAodHlwZW9mIHVybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBuZXcgZXhwb3J0cy5SZXF1ZXN0KCdHRVQnLCBtZXRob2QpLmVuZCh1cmwpO1xuICB9XG5cbiAgLy8gdXJsIGZpcnN0XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIG5ldyBleHBvcnRzLlJlcXVlc3QoJ0dFVCcsIG1ldGhvZCk7XG4gIH1cblxuICByZXR1cm4gbmV3IGV4cG9ydHMuUmVxdWVzdChtZXRob2QsIHVybCk7XG59O1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHM7XG5cbmNvbnN0IHJlcXVlc3QgPSBleHBvcnRzO1xuXG5leHBvcnRzLlJlcXVlc3QgPSBSZXF1ZXN0O1xuXG4vKipcbiAqIERldGVybWluZSBYSFIuXG4gKi9cblxucmVxdWVzdC5nZXRYSFIgPSAoKSA9PiB7XG4gIGlmIChcbiAgICByb290LlhNTEh0dHBSZXF1ZXN0ICYmXG4gICAgKCFyb290LmxvY2F0aW9uIHx8XG4gICAgICByb290LmxvY2F0aW9uLnByb3RvY29sICE9PSAnZmlsZTonIHx8XG4gICAgICAhcm9vdC5BY3RpdmVYT2JqZWN0KVxuICApIHtcbiAgICByZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTWljcm9zb2Z0LlhNTEhUVFAnKTtcbiAgfSBjYXRjaCB7XG4gICAgLyoqL1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQLjYuMCcpO1xuICB9IGNhdGNoIHtcbiAgICAvKiovXG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTXN4bWwyLlhNTEhUVFAuMy4wJyk7XG4gIH0gY2F0Y2gge1xuICAgIC8qKi9cbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNc3htbDIuWE1MSFRUUCcpO1xuICB9IGNhdGNoIHtcbiAgICAvKiovXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0Jyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgY291bGQgbm90IGZpbmQgWEhSJyk7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYWRkZWQgdG8gc3VwcG9ydCBJRS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuY29uc3QgdHJpbSA9ICcnLnRyaW0gPyAocykgPT4gcy50cmltKCkgOiAocykgPT4gcy5yZXBsYWNlKC8oXlxccyp8XFxzKiQpL2csICcnKTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGdpdmVuIGBvYmpgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZShvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSByZXR1cm4gb2JqZWN0O1xuICBjb25zdCBwYWlycyA9IFtdO1xuICBmb3IgKGNvbnN0IGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoaGFzT3duKG9iamVjdCwga2V5KSkgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGtleSwgb2JqZWN0W2tleV0pO1xuICB9XG5cbiAgcmV0dXJuIHBhaXJzLmpvaW4oJyYnKTtcbn1cblxuLyoqXG4gKiBIZWxwcyAnc2VyaWFsaXplJyB3aXRoIHNlcmlhbGl6aW5nIGFycmF5cy5cbiAqIE11dGF0ZXMgdGhlIHBhaXJzIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzXG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5XG4gKiBAcGFyYW0ge01peGVkfSB2YWxcbiAqL1xuXG5mdW5jdGlvbiBwdXNoRW5jb2RlZEtleVZhbHVlUGFpcihwYWlycywga2V5LCB2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICBwYWlycy5wdXNoKGVuY29kZVVSSShrZXkpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWUpIHtcbiAgICAgIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIHYpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICBmb3IgKGNvbnN0IHN1YmtleSBpbiB2YWx1ZSkge1xuICAgICAgaWYgKGhhc093bih2YWx1ZSwgc3Via2V5KSlcbiAgICAgICAgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGAke2tleX1bJHtzdWJrZXl9XWAsIHZhbHVlW3N1YmtleV0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwYWlycy5wdXNoKGVuY29kZVVSSShrZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHBvc2Ugc2VyaWFsaXphdGlvbiBtZXRob2QuXG4gKi9cblxucmVxdWVzdC5zZXJpYWxpemVPYmplY3QgPSBzZXJpYWxpemU7XG5cbi8qKlxuICogUGFyc2UgdGhlIGdpdmVuIHgtd3d3LWZvcm0tdXJsZW5jb2RlZCBgc3RyYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZVN0cmluZyhzdHJpbmdfKSB7XG4gIGNvbnN0IG9iamVjdCA9IHt9O1xuICBjb25zdCBwYWlycyA9IHN0cmluZ18uc3BsaXQoJyYnKTtcbiAgbGV0IHBhaXI7XG4gIGxldCBwb3M7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aF8gPSBwYWlycy5sZW5ndGg7IGkgPCBsZW5ndGhfOyArK2kpIHtcbiAgICBwYWlyID0gcGFpcnNbaV07XG4gICAgcG9zID0gcGFpci5pbmRleE9mKCc9Jyk7XG4gICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgIG9iamVjdFtkZWNvZGVVUklDb21wb25lbnQocGFpcildID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9iamVjdFtkZWNvZGVVUklDb21wb25lbnQocGFpci5zbGljZSgwLCBwb3MpKV0gPSBkZWNvZGVVUklDb21wb25lbnQoXG4gICAgICAgIHBhaXIuc2xpY2UocG9zICsgMSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuLyoqXG4gKiBFeHBvc2UgcGFyc2VyLlxuICovXG5cbnJlcXVlc3QucGFyc2VTdHJpbmcgPSBwYXJzZVN0cmluZztcblxuLyoqXG4gKiBEZWZhdWx0IE1JTUUgdHlwZSBtYXAuXG4gKlxuICogICAgIHN1cGVyYWdlbnQudHlwZXMueG1sID0gJ2FwcGxpY2F0aW9uL3htbCc7XG4gKlxuICovXG5cbnJlcXVlc3QudHlwZXMgPSB7XG4gIGh0bWw6ICd0ZXh0L2h0bWwnLFxuICBqc29uOiAnYXBwbGljYXRpb24vanNvbicsXG4gIHhtbDogJ3RleHQveG1sJyxcbiAgdXJsZW5jb2RlZDogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gIGZvcm06ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAnZm9ybS1kYXRhJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBzZXJpYWxpemF0aW9uIG1hcC5cbiAqXG4gKiAgICAgc3VwZXJhZ2VudC5zZXJpYWxpemVbJ2FwcGxpY2F0aW9uL3htbCddID0gZnVuY3Rpb24ob2JqKXtcbiAqICAgICAgIHJldHVybiAnZ2VuZXJhdGVkIHhtbCBoZXJlJztcbiAqICAgICB9O1xuICpcbiAqL1xuXG5yZXF1ZXN0LnNlcmlhbGl6ZSA9IHtcbiAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc6IHFzLnN0cmluZ2lmeSxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nOiBzYWZlU3RyaW5naWZ5XG59O1xuXG4vKipcbiAqIERlZmF1bHQgcGFyc2Vycy5cbiAqXG4gKiAgICAgc3VwZXJhZ2VudC5wYXJzZVsnYXBwbGljYXRpb24veG1sJ10gPSBmdW5jdGlvbihzdHIpe1xuICogICAgICAgcmV0dXJuIHsgb2JqZWN0IHBhcnNlZCBmcm9tIHN0ciB9O1xuICogICAgIH07XG4gKlxuICovXG5cbnJlcXVlc3QucGFyc2UgPSB7XG4gICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOiBwYXJzZVN0cmluZyxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nOiBKU09OLnBhcnNlXG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBoZWFkZXIgYHN0cmAgaW50b1xuICogYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG1hcHBlZCBmaWVsZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXIoc3RyaW5nXykge1xuICBjb25zdCBsaW5lcyA9IHN0cmluZ18uc3BsaXQoL1xccj9cXG4vKTtcbiAgY29uc3QgZmllbGRzID0ge307XG4gIGxldCBpbmRleDtcbiAgbGV0IGxpbmU7XG4gIGxldCBmaWVsZDtcbiAgbGV0IHZhbHVlO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW5ndGhfID0gbGluZXMubGVuZ3RoOyBpIDwgbGVuZ3RoXzsgKytpKSB7XG4gICAgbGluZSA9IGxpbmVzW2ldO1xuICAgIGluZGV4ID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgLy8gY291bGQgYmUgZW1wdHkgbGluZSwganVzdCBza2lwIGl0XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmaWVsZCA9IGxpbmUuc2xpY2UoMCwgaW5kZXgpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsdWUgPSB0cmltKGxpbmUuc2xpY2UoaW5kZXggKyAxKSk7XG4gICAgZmllbGRzW2ZpZWxkXSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkcztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBgbWltZWAgaXMganNvbiBvciBoYXMgK2pzb24gc3RydWN0dXJlZCBzeW50YXggc3VmZml4LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBtaW1lXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gaXNKU09OKG1pbWUpIHtcbiAgLy8gc2hvdWxkIG1hdGNoIC9qc29uIG9yICtqc29uXG4gIC8vIGJ1dCBub3QgL2pzb24tc2VxXG4gIHJldHVybiAvWy8rXWpzb24oJHxbXi1cXHddKS9pLnRlc3QobWltZSk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVzcG9uc2VgIHdpdGggdGhlIGdpdmVuIGB4aHJgLlxuICpcbiAqICAtIHNldCBmbGFncyAoLm9rLCAuZXJyb3IsIGV0YylcbiAqICAtIHBhcnNlIGhlYWRlclxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICBBbGlhc2luZyBgc3VwZXJhZ2VudGAgYXMgYHJlcXVlc3RgIGlzIG5pY2U6XG4gKlxuICogICAgICByZXF1ZXN0ID0gc3VwZXJhZ2VudDtcbiAqXG4gKiAgV2UgY2FuIHVzZSB0aGUgcHJvbWlzZS1saWtlIEFQSSwgb3IgcGFzcyBjYWxsYmFja3M6XG4gKlxuICogICAgICByZXF1ZXN0LmdldCgnLycpLmVuZChmdW5jdGlvbihyZXMpe30pO1xuICogICAgICByZXF1ZXN0LmdldCgnLycsIGZ1bmN0aW9uKHJlcyl7fSk7XG4gKlxuICogIFNlbmRpbmcgZGF0YSBjYW4gYmUgY2hhaW5lZDpcbiAqXG4gKiAgICAgIHJlcXVlc3RcbiAqICAgICAgICAucG9zdCgnL3VzZXInKVxuICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiAgT3IgcGFzc2VkIHRvIGAuc2VuZCgpYDpcbiAqXG4gKiAgICAgIHJlcXVlc3RcbiAqICAgICAgICAucG9zdCgnL3VzZXInKVxuICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqICBPciBwYXNzZWQgdG8gYC5wb3N0KClgOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiBPciBmdXJ0aGVyIHJlZHVjZWQgdG8gYSBzaW5nbGUgY2FsbCBmb3Igc2ltcGxlIGNhc2VzOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqIEBwYXJhbSB7WE1MSFRUUFJlcXVlc3R9IHhoclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIFJlc3BvbnNlKHJlcXVlc3RfKSB7XG4gIHRoaXMucmVxID0gcmVxdWVzdF87XG4gIHRoaXMueGhyID0gdGhpcy5yZXEueGhyO1xuICAvLyByZXNwb25zZVRleHQgaXMgYWNjZXNzaWJsZSBvbmx5IGlmIHJlc3BvbnNlVHlwZSBpcyAnJyBvciAndGV4dCcgYW5kIG9uIG9sZGVyIGJyb3dzZXJzXG4gIHRoaXMudGV4dCA9XG4gICAgKHRoaXMucmVxLm1ldGhvZCAhPT0gJ0hFQUQnICYmXG4gICAgICAodGhpcy54aHIucmVzcG9uc2VUeXBlID09PSAnJyB8fCB0aGlzLnhoci5yZXNwb25zZVR5cGUgPT09ICd0ZXh0JykpIHx8XG4gICAgdHlwZW9mIHRoaXMueGhyLnJlc3BvbnNlVHlwZSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgID8gdGhpcy54aHIucmVzcG9uc2VUZXh0XG4gICAgICA6IG51bGw7XG4gIHRoaXMuc3RhdHVzVGV4dCA9IHRoaXMucmVxLnhoci5zdGF0dXNUZXh0O1xuICBsZXQgeyBzdGF0dXMgfSA9IHRoaXMueGhyO1xuICAvLyBoYW5kbGUgSUU5IGJ1ZzogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDA0Njk3Mi9tc2llLXJldHVybnMtc3RhdHVzLWNvZGUtb2YtMTIyMy1mb3ItYWpheC1yZXF1ZXN0XG4gIGlmIChzdGF0dXMgPT09IDEyMjMpIHtcbiAgICBzdGF0dXMgPSAyMDQ7XG4gIH1cblxuICB0aGlzLl9zZXRTdGF0dXNQcm9wZXJ0aWVzKHN0YXR1cyk7XG4gIHRoaXMuaGVhZGVycyA9IHBhcnNlSGVhZGVyKHRoaXMueGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTtcbiAgdGhpcy5oZWFkZXIgPSB0aGlzLmhlYWRlcnM7XG4gIC8vIGdldEFsbFJlc3BvbnNlSGVhZGVycyBzb21ldGltZXMgZmFsc2VseSByZXR1cm5zIFwiXCIgZm9yIENPUlMgcmVxdWVzdHMsIGJ1dFxuICAvLyBnZXRSZXNwb25zZUhlYWRlciBzdGlsbCB3b3Jrcy4gc28gd2UgZ2V0IGNvbnRlbnQtdHlwZSBldmVuIGlmIGdldHRpbmdcbiAgLy8gb3RoZXIgaGVhZGVycyBmYWlscy5cbiAgdGhpcy5oZWFkZXJbJ2NvbnRlbnQtdHlwZSddID0gdGhpcy54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ2NvbnRlbnQtdHlwZScpO1xuICB0aGlzLl9zZXRIZWFkZXJQcm9wZXJ0aWVzKHRoaXMuaGVhZGVyKTtcblxuICBpZiAodGhpcy50ZXh0ID09PSBudWxsICYmIHJlcXVlc3RfLl9yZXNwb25zZVR5cGUpIHtcbiAgICB0aGlzLmJvZHkgPSB0aGlzLnhoci5yZXNwb25zZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmJvZHkgPVxuICAgICAgdGhpcy5yZXEubWV0aG9kID09PSAnSEVBRCdcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogdGhpcy5fcGFyc2VCb2R5KHRoaXMudGV4dCA/IHRoaXMudGV4dCA6IHRoaXMueGhyLnJlc3BvbnNlKTtcbiAgfVxufVxuXG5taXhpbihSZXNwb25zZS5wcm90b3R5cGUsIFJlc3BvbnNlQmFzZS5wcm90b3R5cGUpO1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBib2R5IGBzdHJgLlxuICpcbiAqIFVzZWQgZm9yIGF1dG8tcGFyc2luZyBvZiBib2RpZXMuIFBhcnNlcnNcbiAqIGFyZSBkZWZpbmVkIG9uIHRoZSBgc3VwZXJhZ2VudC5wYXJzZWAgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge01peGVkfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVzcG9uc2UucHJvdG90eXBlLl9wYXJzZUJvZHkgPSBmdW5jdGlvbiAoc3RyaW5nXykge1xuICBsZXQgcGFyc2UgPSByZXF1ZXN0LnBhcnNlW3RoaXMudHlwZV07XG4gIGlmICh0aGlzLnJlcS5fcGFyc2VyKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxLl9wYXJzZXIodGhpcywgc3RyaW5nXyk7XG4gIH1cblxuICBpZiAoIXBhcnNlICYmIGlzSlNPTih0aGlzLnR5cGUpKSB7XG4gICAgcGFyc2UgPSByZXF1ZXN0LnBhcnNlWydhcHBsaWNhdGlvbi9qc29uJ107XG4gIH1cblxuICByZXR1cm4gcGFyc2UgJiYgc3RyaW5nXyAmJiAoc3RyaW5nXy5sZW5ndGggPiAwIHx8IHN0cmluZ18gaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgPyBwYXJzZShzdHJpbmdfKVxuICAgIDogbnVsbDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGFuIGBFcnJvcmAgcmVwcmVzZW50YXRpdmUgb2YgdGhpcyByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJuIHtFcnJvcn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVzcG9uc2UucHJvdG90eXBlLnRvRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHsgcmVxIH0gPSB0aGlzO1xuICBjb25zdCB7IG1ldGhvZCB9ID0gcmVxO1xuICBjb25zdCB7IHVybCB9ID0gcmVxO1xuXG4gIGNvbnN0IG1lc3NhZ2UgPSBgY2Fubm90ICR7bWV0aG9kfSAke3VybH0gKCR7dGhpcy5zdGF0dXN9KWA7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICBlcnJvci5zdGF0dXMgPSB0aGlzLnN0YXR1cztcbiAgZXJyb3IubWV0aG9kID0gbWV0aG9kO1xuICBlcnJvci51cmwgPSB1cmw7XG5cbiAgcmV0dXJuIGVycm9yO1xufTtcblxuLyoqXG4gKiBFeHBvc2UgYFJlc3BvbnNlYC5cbiAqL1xuXG5yZXF1ZXN0LlJlc3BvbnNlID0gUmVzcG9uc2U7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVxdWVzdGAgd2l0aCB0aGUgZ2l2ZW4gYG1ldGhvZGAgYW5kIGB1cmxgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBtZXRob2RcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUmVxdWVzdChtZXRob2QsIHVybCkge1xuICBjb25zdCBzZWxmID0gdGhpcztcbiAgdGhpcy5fcXVlcnkgPSB0aGlzLl9xdWVyeSB8fCBbXTtcbiAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gIHRoaXMudXJsID0gdXJsO1xuICB0aGlzLmhlYWRlciA9IHt9OyAvLyBwcmVzZXJ2ZXMgaGVhZGVyIG5hbWUgY2FzZVxuICB0aGlzLl9oZWFkZXIgPSB7fTsgLy8gY29lcmNlcyBoZWFkZXIgbmFtZXMgdG8gbG93ZXJjYXNlXG4gIHRoaXMub24oJ2VuZCcsICgpID0+IHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGxldCByZXMgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlcyA9IG5ldyBSZXNwb25zZShzZWxmKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKCdQYXJzZXIgaXMgdW5hYmxlIHRvIHBhcnNlIHRoZSByZXNwb25zZScpO1xuICAgICAgZXJyb3IucGFyc2UgPSB0cnVlO1xuICAgICAgZXJyb3Iub3JpZ2luYWwgPSBlcnI7XG4gICAgICAvLyBpc3N1ZSAjNjc1OiByZXR1cm4gdGhlIHJhdyByZXNwb25zZSBpZiB0aGUgcmVzcG9uc2UgcGFyc2luZyBmYWlsc1xuICAgICAgaWYgKHNlbGYueGhyKSB7XG4gICAgICAgIC8vIGllOSBkb2Vzbid0IGhhdmUgJ3Jlc3BvbnNlJyBwcm9wZXJ0eVxuICAgICAgICBlcnJvci5yYXdSZXNwb25zZSA9XG4gICAgICAgICAgdHlwZW9mIHNlbGYueGhyLnJlc3BvbnNlVHlwZSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gc2VsZi54aHIucmVzcG9uc2VUZXh0XG4gICAgICAgICAgICA6IHNlbGYueGhyLnJlc3BvbnNlO1xuICAgICAgICAvLyBpc3N1ZSAjODc2OiByZXR1cm4gdGhlIGh0dHAgc3RhdHVzIGNvZGUgaWYgdGhlIHJlc3BvbnNlIHBhcnNpbmcgZmFpbHNcbiAgICAgICAgZXJyb3Iuc3RhdHVzID0gc2VsZi54aHIuc3RhdHVzID8gc2VsZi54aHIuc3RhdHVzIDogbnVsbDtcbiAgICAgICAgZXJyb3Iuc3RhdHVzQ29kZSA9IGVycm9yLnN0YXR1czsgLy8gYmFja3dhcmRzLWNvbXBhdCBvbmx5XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvci5yYXdSZXNwb25zZSA9IG51bGw7XG4gICAgICAgIGVycm9yLnN0YXR1cyA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxmLmNhbGxiYWNrKGVycm9yKTtcbiAgICB9XG5cbiAgICBzZWxmLmVtaXQoJ3Jlc3BvbnNlJywgcmVzKTtcblxuICAgIGxldCBuZXdfZXJyb3I7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2VsZi5faXNSZXNwb25zZU9LKHJlcykpIHtcbiAgICAgICAgbmV3X2Vycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgIHJlcy5zdGF0dXNUZXh0IHx8IHJlcy50ZXh0IHx8ICdVbnN1Y2Nlc3NmdWwgSFRUUCByZXNwb25zZSdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIG5ld19lcnJvciA9IGVycjsgLy8gb2soKSBjYWxsYmFjayBjYW4gdGhyb3dcbiAgICB9XG5cbiAgICAvLyAjMTAwMCBkb24ndCBjYXRjaCBlcnJvcnMgZnJvbSB0aGUgY2FsbGJhY2sgdG8gYXZvaWQgZG91YmxlIGNhbGxpbmcgaXRcbiAgICBpZiAobmV3X2Vycm9yKSB7XG4gICAgICBuZXdfZXJyb3Iub3JpZ2luYWwgPSBlcnJvcjtcbiAgICAgIG5ld19lcnJvci5yZXNwb25zZSA9IHJlcztcbiAgICAgIG5ld19lcnJvci5zdGF0dXMgPSByZXMuc3RhdHVzO1xuICAgICAgc2VsZi5jYWxsYmFjayhuZXdfZXJyb3IsIHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYuY2FsbGJhY2sobnVsbCwgcmVzKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIE1peGluIGBFbWl0dGVyYCBhbmQgYFJlcXVlc3RCYXNlYC5cbiAqL1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuRW1pdHRlcihSZXF1ZXN0LnByb3RvdHlwZSk7XG5cbm1peGluKFJlcXVlc3QucHJvdG90eXBlLCBSZXF1ZXN0QmFzZS5wcm90b3R5cGUpO1xuXG4vKipcbiAqIFNldCBDb250ZW50LVR5cGUgdG8gYHR5cGVgLCBtYXBwaW5nIHZhbHVlcyBmcm9tIGByZXF1ZXN0LnR5cGVzYC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHN1cGVyYWdlbnQudHlwZXMueG1sID0gJ2FwcGxpY2F0aW9uL3htbCc7XG4gKlxuICogICAgICByZXF1ZXN0LnBvc3QoJy8nKVxuICogICAgICAgIC50eXBlKCd4bWwnKVxuICogICAgICAgIC5zZW5kKHhtbHN0cmluZylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiAgICAgIHJlcXVlc3QucG9zdCgnLycpXG4gKiAgICAgICAgLnR5cGUoJ2FwcGxpY2F0aW9uL3htbCcpXG4gKiAgICAgICAgLnNlbmQoeG1sc3RyaW5nKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUudHlwZSA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHRoaXMuc2V0KCdDb250ZW50LVR5cGUnLCByZXF1ZXN0LnR5cGVzW3R5cGVdIHx8IHR5cGUpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IEFjY2VwdCB0byBgdHlwZWAsIG1hcHBpbmcgdmFsdWVzIGZyb20gYHJlcXVlc3QudHlwZXNgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgc3VwZXJhZ2VudC50eXBlcy5qc29uID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICpcbiAqICAgICAgcmVxdWVzdC5nZXQoJy9hZ2VudCcpXG4gKiAgICAgICAgLmFjY2VwdCgnanNvbicpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogICAgICByZXF1ZXN0LmdldCgnL2FnZW50JylcbiAqICAgICAgICAuYWNjZXB0KCdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWNjZXB0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgdGhpcy5zZXQoJ0FjY2VwdCcsIHJlcXVlc3QudHlwZXNbdHlwZV0gfHwgdHlwZSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgQXV0aG9yaXphdGlvbiBmaWVsZCB2YWx1ZSB3aXRoIGB1c2VyYCBhbmQgYHBhc3NgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1c2VyXG4gKiBAcGFyYW0ge1N0cmluZ30gW3Bhc3NdIG9wdGlvbmFsIGluIGNhc2Ugb2YgdXNpbmcgJ2JlYXJlcicgYXMgdHlwZVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgd2l0aCAndHlwZScgcHJvcGVydHkgJ2F1dG8nLCAnYmFzaWMnIG9yICdiZWFyZXInIChkZWZhdWx0ICdiYXNpYycpXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYXV0aCA9IGZ1bmN0aW9uICh1c2VyLCBwYXNzLCBvcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSBwYXNzID0gJyc7XG4gIGlmICh0eXBlb2YgcGFzcyA9PT0gJ29iamVjdCcgJiYgcGFzcyAhPT0gbnVsbCkge1xuICAgIC8vIHBhc3MgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZXBsYWNlZCB3aXRoIG9wdGlvbnNcbiAgICBvcHRpb25zID0gcGFzcztcbiAgICBwYXNzID0gJyc7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgdHlwZTogdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicgPyAnYmFzaWMnIDogJ2F1dG8nXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGVuY29kZXIgPSBvcHRpb25zLmVuY29kZXJcbiAgICA/IG9wdGlvbnMuZW5jb2RlclxuICAgIDogKHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gYnRvYShzdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIGJhc2ljIGF1dGgsIGJ0b2EgaXMgbm90IGEgZnVuY3Rpb24nKTtcbiAgICAgIH07XG5cbiAgcmV0dXJuIHRoaXMuX2F1dGgodXNlciwgcGFzcywgb3B0aW9ucywgZW5jb2Rlcik7XG59O1xuXG4vKipcbiAqIEFkZCBxdWVyeS1zdHJpbmcgYHZhbGAuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICByZXF1ZXN0LmdldCgnL3Nob2VzJylcbiAqICAgICAucXVlcnkoJ3NpemU9MTAnKVxuICogICAgIC5xdWVyeSh7IGNvbG9yOiAnYmx1ZScgfSlcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB2YWx1ZSA9IHNlcmlhbGl6ZSh2YWx1ZSk7XG4gIGlmICh2YWx1ZSkgdGhpcy5fcXVlcnkucHVzaCh2YWx1ZSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBRdWV1ZSB0aGUgZ2l2ZW4gYGZpbGVgIGFzIGFuIGF0dGFjaG1lbnQgdG8gdGhlIHNwZWNpZmllZCBgZmllbGRgLFxuICogd2l0aCBvcHRpb25hbCBgb3B0aW9uc2AgKG9yIGZpbGVuYW1lKS5cbiAqXG4gKiBgYGAganNcbiAqIHJlcXVlc3QucG9zdCgnL3VwbG9hZCcpXG4gKiAgIC5hdHRhY2goJ2NvbnRlbnQnLCBuZXcgQmxvYihbJzxhIGlkPVwiYVwiPjxiIGlkPVwiYlwiPmhleSE8L2I+PC9hPiddLCB7IHR5cGU6IFwidGV4dC9odG1sXCJ9KSlcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZmllbGRcbiAqIEBwYXJhbSB7QmxvYnxGaWxlfSBmaWxlXG4gKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbiAoZmllbGQsIGZpbGUsIG9wdGlvbnMpIHtcbiAgaWYgKGZpbGUpIHtcbiAgICBpZiAodGhpcy5fZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3VwZXJhZ2VudCBjYW4ndCBtaXggLnNlbmQoKSBhbmQgLmF0dGFjaCgpXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKGZpZWxkLCBmaWxlLCBvcHRpb25zIHx8IGZpbGUubmFtZSk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3QucHJvdG90eXBlLl9nZXRGb3JtRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLl9mb3JtRGF0YSkge1xuICAgIHRoaXMuX2Zvcm1EYXRhID0gbmV3IHJvb3QuRm9ybURhdGEoKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9mb3JtRGF0YTtcbn07XG5cbi8qKlxuICogSW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIGBlcnJgIGFuZCBgcmVzYFxuICogYW5kIGhhbmRsZSBhcml0eSBjaGVjay5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEBwYXJhbSB7UmVzcG9uc2V9IHJlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuY2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyb3IsIHJlcykge1xuICBpZiAodGhpcy5fc2hvdWxkUmV0cnkoZXJyb3IsIHJlcykpIHtcbiAgICByZXR1cm4gdGhpcy5fcmV0cnkoKTtcbiAgfVxuXG4gIGNvbnN0IGZuID0gdGhpcy5fY2FsbGJhY2s7XG4gIHRoaXMuY2xlYXJUaW1lb3V0KCk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgaWYgKHRoaXMuX21heFJldHJpZXMpIGVycm9yLnJldHJpZXMgPSB0aGlzLl9yZXRyaWVzIC0gMTtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICB9XG5cbiAgZm4oZXJyb3IsIHJlcyk7XG59O1xuXG4vKipcbiAqIEludm9rZSBjYWxsYmFjayB3aXRoIHgtZG9tYWluIGVycm9yLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmNyb3NzRG9tYWluRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICdSZXF1ZXN0IGhhcyBiZWVuIHRlcm1pbmF0ZWRcXG5Qb3NzaWJsZSBjYXVzZXM6IHRoZSBuZXR3b3JrIGlzIG9mZmxpbmUsIE9yaWdpbiBpcyBub3QgYWxsb3dlZCBieSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4sIHRoZSBwYWdlIGlzIGJlaW5nIHVubG9hZGVkLCBldGMuJ1xuICApO1xuICBlcnJvci5jcm9zc0RvbWFpbiA9IHRydWU7XG5cbiAgZXJyb3Iuc3RhdHVzID0gdGhpcy5zdGF0dXM7XG4gIGVycm9yLm1ldGhvZCA9IHRoaXMubWV0aG9kO1xuICBlcnJvci51cmwgPSB0aGlzLnVybDtcblxuICB0aGlzLmNhbGxiYWNrKGVycm9yKTtcbn07XG5cbi8vIFRoaXMgb25seSB3YXJucywgYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBzdGlsbCBsaWtlbHkgdG8gd29ya1xuUmVxdWVzdC5wcm90b3R5cGUuYWdlbnQgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnNvbGUud2FybignVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGluIGJyb3dzZXIgdmVyc2lvbiBvZiBzdXBlcmFnZW50Jyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUmVxdWVzdC5wcm90b3R5cGUuY2EgPSBSZXF1ZXN0LnByb3RvdHlwZS5hZ2VudDtcblJlcXVlc3QucHJvdG90eXBlLmJ1ZmZlciA9IFJlcXVlc3QucHJvdG90eXBlLmNhO1xuXG4vLyBUaGlzIHRocm93cywgYmVjYXVzZSBpdCBjYW4ndCBzZW5kL3JlY2VpdmUgZGF0YSBhcyBleHBlY3RlZFxuUmVxdWVzdC5wcm90b3R5cGUud3JpdGUgPSAoKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnU3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYnJvd3NlciB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQnXG4gICk7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5waXBlID0gUmVxdWVzdC5wcm90b3R5cGUud3JpdGU7XG5cbi8qKlxuICogQ2hlY2sgaWYgYG9iamAgaXMgYSBob3N0IG9iamVjdCxcbiAqIHdlIGRvbid0IHdhbnQgdG8gc2VyaWFsaXplIHRoZXNlIDopXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBob3N0IG9iamVjdFxuICogQHJldHVybiB7Qm9vbGVhbn0gaXMgYSBob3N0IG9iamVjdFxuICogQGFwaSBwcml2YXRlXG4gKi9cblJlcXVlc3QucHJvdG90eXBlLl9pc0hvc3QgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gIC8vIE5hdGl2ZSBvYmplY3RzIHN0cmluZ2lmeSB0byBbb2JqZWN0IEZpbGVdLCBbb2JqZWN0IEJsb2JdLCBbb2JqZWN0IEZvcm1EYXRhXSwgZXRjLlxuICByZXR1cm4gKFxuICAgIG9iamVjdCAmJlxuICAgIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG4gICAgIUFycmF5LmlzQXJyYXkob2JqZWN0KSAmJlxuICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpICE9PSAnW29iamVjdCBPYmplY3RdJ1xuICApO1xufTtcblxuLyoqXG4gKiBJbml0aWF0ZSByZXF1ZXN0LCBpbnZva2luZyBjYWxsYmFjayBgZm4ocmVzKWBcbiAqIHdpdGggYW4gaW5zdGFuY2VvZiBgUmVzcG9uc2VgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGZuKSB7XG4gIGlmICh0aGlzLl9lbmRDYWxsZWQpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICAnV2FybmluZzogLmVuZCgpIHdhcyBjYWxsZWQgdHdpY2UuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCBpbiBzdXBlcmFnZW50J1xuICAgICk7XG4gIH1cblxuICB0aGlzLl9lbmRDYWxsZWQgPSB0cnVlO1xuXG4gIC8vIHN0b3JlIGNhbGxiYWNrXG4gIHRoaXMuX2NhbGxiYWNrID0gZm4gfHwgbm9vcDtcblxuICAvLyBxdWVyeXN0cmluZ1xuICB0aGlzLl9maW5hbGl6ZVF1ZXJ5U3RyaW5nKCk7XG5cbiAgdGhpcy5fZW5kKCk7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5fc2V0VXBsb2FkVGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgLy8gdXBsb2FkIHRpbWVvdXQgaXQncyB3b2tycyBvbmx5IGlmIGRlYWRsaW5lIHRpbWVvdXQgaXMgb2ZmXG4gIGlmICh0aGlzLl91cGxvYWRUaW1lb3V0ICYmICF0aGlzLl91cGxvYWRUaW1lb3V0VGltZXIpIHtcbiAgICB0aGlzLl91cGxvYWRUaW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNlbGYuX3RpbWVvdXRFcnJvcihcbiAgICAgICAgJ1VwbG9hZCB0aW1lb3V0IG9mICcsXG4gICAgICAgIHNlbGYuX3VwbG9hZFRpbWVvdXQsXG4gICAgICAgICdFVElNRURPVVQnXG4gICAgICApO1xuICAgIH0sIHRoaXMuX3VwbG9hZFRpbWVvdXQpO1xuICB9XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuUmVxdWVzdC5wcm90b3R5cGUuX2VuZCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuX2Fib3J0ZWQpXG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2soXG4gICAgICBuZXcgRXJyb3IoJ1RoZSByZXF1ZXN0IGhhcyBiZWVuIGFib3J0ZWQgZXZlbiBiZWZvcmUgLmVuZCgpIHdhcyBjYWxsZWQnKVxuICAgICk7XG5cbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gIHRoaXMueGhyID0gcmVxdWVzdC5nZXRYSFIoKTtcbiAgY29uc3QgeyB4aHIgfSA9IHRoaXM7XG4gIGxldCBkYXRhID0gdGhpcy5fZm9ybURhdGEgfHwgdGhpcy5fZGF0YTtcblxuICB0aGlzLl9zZXRUaW1lb3V0cygpO1xuXG4gIC8vIHN0YXRlIGNoYW5nZVxuICB4aHIuYWRkRXZlbnRMaXN0ZW5lcigncmVhZHlzdGF0ZWNoYW5nZScsICgpID0+IHtcbiAgICBjb25zdCB7IHJlYWR5U3RhdGUgfSA9IHhocjtcbiAgICBpZiAocmVhZHlTdGF0ZSA+PSAyICYmIHNlbGYuX3Jlc3BvbnNlVGltZW91dFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQoc2VsZi5fcmVzcG9uc2VUaW1lb3V0VGltZXIpO1xuICAgIH1cblxuICAgIGlmIChyZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSW4gSUU5LCByZWFkcyB0byBhbnkgcHJvcGVydHkgKGUuZy4gc3RhdHVzKSBvZmYgb2YgYW4gYWJvcnRlZCBYSFIgd2lsbFxuICAgIC8vIHJlc3VsdCBpbiB0aGUgZXJyb3IgXCJDb3VsZCBub3QgY29tcGxldGUgdGhlIG9wZXJhdGlvbiBkdWUgdG8gZXJyb3IgYzAwYzAyM2ZcIlxuICAgIGxldCBzdGF0dXM7XG4gICAgdHJ5IHtcbiAgICAgIHN0YXR1cyA9IHhoci5zdGF0dXM7XG4gICAgfSBjYXRjaCB7XG4gICAgICBzdGF0dXMgPSAwO1xuICAgIH1cblxuICAgIGlmICghc3RhdHVzKSB7XG4gICAgICBpZiAoc2VsZi50aW1lZG91dCB8fCBzZWxmLl9hYm9ydGVkKSByZXR1cm47XG4gICAgICByZXR1cm4gc2VsZi5jcm9zc0RvbWFpbkVycm9yKCk7XG4gICAgfVxuXG4gICAgc2VsZi5lbWl0KCdlbmQnKTtcbiAgfSk7XG5cbiAgLy8gcHJvZ3Jlc3NcbiAgY29uc3QgaGFuZGxlUHJvZ3Jlc3MgPSAoZGlyZWN0aW9uLCBlKSA9PiB7XG4gICAgaWYgKGUudG90YWwgPiAwKSB7XG4gICAgICBlLnBlcmNlbnQgPSAoZS5sb2FkZWQgLyBlLnRvdGFsKSAqIDEwMDtcblxuICAgICAgaWYgKGUucGVyY2VudCA9PT0gMTAwKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChzZWxmLl91cGxvYWRUaW1lb3V0VGltZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGUuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgIHNlbGYuZW1pdCgncHJvZ3Jlc3MnLCBlKTtcbiAgfTtcblxuICBpZiAodGhpcy5oYXNMaXN0ZW5lcnMoJ3Byb2dyZXNzJykpIHtcbiAgICB0cnkge1xuICAgICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgaGFuZGxlUHJvZ3Jlc3MuYmluZChudWxsLCAnZG93bmxvYWQnKSk7XG4gICAgICBpZiAoeGhyLnVwbG9hZCkge1xuICAgICAgICB4aHIudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICBoYW5kbGVQcm9ncmVzcy5iaW5kKG51bGwsICd1cGxvYWQnKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQWNjZXNzaW5nIHhoci51cGxvYWQgZmFpbHMgaW4gSUUgZnJvbSBhIHdlYiB3b3JrZXIsIHNvIGp1c3QgcHJldGVuZCBpdCBkb2Vzbid0IGV4aXN0LlxuICAgICAgLy8gUmVwb3J0ZWQgaGVyZTpcbiAgICAgIC8vIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvODM3MjQ1L3htbGh0dHByZXF1ZXN0LXVwbG9hZC10aHJvd3MtaW52YWxpZC1hcmd1bWVudC13aGVuLXVzZWQtZnJvbS13ZWItd29ya2VyLWNvbnRleHRcbiAgICB9XG4gIH1cblxuICBpZiAoeGhyLnVwbG9hZCkge1xuICAgIHRoaXMuX3NldFVwbG9hZFRpbWVvdXQoKTtcbiAgfVxuXG4gIC8vIGluaXRpYXRlIHJlcXVlc3RcbiAgdHJ5IHtcbiAgICBpZiAodGhpcy51c2VybmFtZSAmJiB0aGlzLnBhc3N3b3JkKSB7XG4gICAgICB4aHIub3Blbih0aGlzLm1ldGhvZCwgdGhpcy51cmwsIHRydWUsIHRoaXMudXNlcm5hbWUsIHRoaXMucGFzc3dvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB4aHIub3Blbih0aGlzLm1ldGhvZCwgdGhpcy51cmwsIHRydWUpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gc2VlICMxMTQ5XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2soZXJyKTtcbiAgfVxuXG4gIC8vIENPUlNcbiAgaWYgKHRoaXMuX3dpdGhDcmVkZW50aWFscykgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG5cbiAgLy8gYm9keVxuICBpZiAoXG4gICAgIXRoaXMuX2Zvcm1EYXRhICYmXG4gICAgdGhpcy5tZXRob2QgIT09ICdHRVQnICYmXG4gICAgdGhpcy5tZXRob2QgIT09ICdIRUFEJyAmJlxuICAgIHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJyAmJlxuICAgICF0aGlzLl9pc0hvc3QoZGF0YSlcbiAgKSB7XG4gICAgLy8gc2VyaWFsaXplIHN0dWZmXG4gICAgY29uc3QgY29udGVudFR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIGxldCBzZXJpYWxpemUgPVxuICAgICAgdGhpcy5fc2VyaWFsaXplciB8fFxuICAgICAgcmVxdWVzdC5zZXJpYWxpemVbY29udGVudFR5cGUgPyBjb250ZW50VHlwZS5zcGxpdCgnOycpWzBdIDogJyddO1xuICAgIGlmICghc2VyaWFsaXplICYmIGlzSlNPTihjb250ZW50VHlwZSkpIHtcbiAgICAgIHNlcmlhbGl6ZSA9IHJlcXVlc3Quc2VyaWFsaXplWydhcHBsaWNhdGlvbi9qc29uJ107XG4gICAgfVxuXG4gICAgaWYgKHNlcmlhbGl6ZSkgZGF0YSA9IHNlcmlhbGl6ZShkYXRhKTtcbiAgfVxuXG4gIC8vIHNldCBoZWFkZXIgZmllbGRzXG4gIGZvciAoY29uc3QgZmllbGQgaW4gdGhpcy5oZWFkZXIpIHtcbiAgICBpZiAodGhpcy5oZWFkZXJbZmllbGRdID09PSBudWxsKSBjb250aW51ZTtcblxuICAgIGlmIChoYXNPd24odGhpcy5oZWFkZXIsIGZpZWxkKSlcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGZpZWxkLCB0aGlzLmhlYWRlcltmaWVsZF0pO1xuICB9XG5cbiAgaWYgKHRoaXMuX3Jlc3BvbnNlVHlwZSkge1xuICAgIHhoci5yZXNwb25zZVR5cGUgPSB0aGlzLl9yZXNwb25zZVR5cGU7XG4gIH1cblxuICAvLyBzZW5kIHN0dWZmXG4gIHRoaXMuZW1pdCgncmVxdWVzdCcsIHRoaXMpO1xuXG4gIC8vIElFMTEgeGhyLnNlbmQodW5kZWZpbmVkKSBzZW5kcyAndW5kZWZpbmVkJyBzdHJpbmcgYXMgUE9TVCBwYXlsb2FkIChpbnN0ZWFkIG9mIG5vdGhpbmcpXG4gIC8vIFdlIG5lZWQgbnVsbCBoZXJlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gIHhoci5zZW5kKHR5cGVvZiBkYXRhID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiBkYXRhKTtcbn07XG5cbnJlcXVlc3QuYWdlbnQgPSAoKSA9PiBuZXcgQWdlbnQoKTtcblxuZm9yIChjb25zdCBtZXRob2Qgb2YgWydHRVQnLCAnUE9TVCcsICdPUFRJT05TJywgJ1BBVENIJywgJ1BVVCcsICdERUxFVEUnXSkge1xuICBBZ2VudC5wcm90b3R5cGVbbWV0aG9kLnRvTG93ZXJDYXNlKCldID0gZnVuY3Rpb24gKHVybCwgZm4pIHtcbiAgICBjb25zdCByZXF1ZXN0XyA9IG5ldyByZXF1ZXN0LlJlcXVlc3QobWV0aG9kLCB1cmwpO1xuICAgIHRoaXMuX3NldERlZmF1bHRzKHJlcXVlc3RfKTtcbiAgICBpZiAoZm4pIHtcbiAgICAgIHJlcXVlc3RfLmVuZChmbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3RfO1xuICB9O1xufVxuXG5BZ2VudC5wcm90b3R5cGUuZGVsID0gQWdlbnQucHJvdG90eXBlLmRlbGV0ZTtcblxuLyoqXG4gKiBHRVQgYHVybGAgd2l0aCBvcHRpb25hbCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LmdldCA9ICh1cmwsIGRhdGEsIGZuKSA9PiB7XG4gIGNvbnN0IHJlcXVlc3RfID0gcmVxdWVzdCgnR0VUJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcXVlc3RfLnF1ZXJ5KGRhdGEpO1xuICBpZiAoZm4pIHJlcXVlc3RfLmVuZChmbik7XG4gIHJldHVybiByZXF1ZXN0Xztcbn07XG5cbi8qKlxuICogSEVBRCBgdXJsYCB3aXRoIG9wdGlvbmFsIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfEZ1bmN0aW9ufSBbZGF0YV0gb3IgZm5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QuaGVhZCA9ICh1cmwsIGRhdGEsIGZuKSA9PiB7XG4gIGNvbnN0IHJlcXVlc3RfID0gcmVxdWVzdCgnSEVBRCcsIHVybCk7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gZGF0YTtcbiAgICBkYXRhID0gbnVsbDtcbiAgfVxuXG4gIGlmIChkYXRhKSByZXF1ZXN0Xy5xdWVyeShkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIE9QVElPTlMgcXVlcnkgdG8gYHVybGAgd2l0aCBvcHRpb25hbCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0Lm9wdGlvbnMgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ09QVElPTlMnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIERFTEVURSBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR9IFtkYXRhXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVsKHVybCwgZGF0YSwgZm4pIHtcbiAgY29uc3QgcmVxdWVzdF8gPSByZXF1ZXN0KCdERUxFVEUnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59XG5cbnJlcXVlc3QuZGVsID0gZGVsO1xucmVxdWVzdC5kZWxldGUgPSBkZWw7XG5cbi8qKlxuICogUEFUQ0ggYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfSBbZGF0YV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QucGF0Y2ggPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BBVENIJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcXVlc3RfLnNlbmQoZGF0YSk7XG4gIGlmIChmbikgcmVxdWVzdF8uZW5kKGZuKTtcbiAgcmV0dXJuIHJlcXVlc3RfO1xufTtcblxuLyoqXG4gKiBQT1NUIGB1cmxgIHdpdGggb3B0aW9uYWwgYGRhdGFgIGFuZCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZH0gW2RhdGFdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LnBvc3QgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BPU1QnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIFBVVCBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5wdXQgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BVVCcsIHVybCk7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gZGF0YTtcbiAgICBkYXRhID0gbnVsbDtcbiAgfVxuXG4gIGlmIChkYXRhKSByZXF1ZXN0Xy5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcXVlc3RfLmVuZChmbik7XG4gIHJldHVybiByZXF1ZXN0Xztcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxJQUFKOztBQUNBLElBQUksT0FBT0MsTUFBUCxLQUFrQixXQUF0QixFQUFtQztFQUNqQztFQUNBRCxJQUFJLEdBQUdDLE1BQVA7QUFDRCxDQUhELE1BR08sSUFBSSxPQUFPQyxJQUFQLEtBQWdCLFdBQXBCLEVBQWlDO0VBQ3RDO0VB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","import base64 from 'base64-js';\n\nfunction padding(str) {\n var mod = str.length % 4;\n var pad = 4 - mod;\n\n if (mod === 0) {\n return str;\n }\n\n return str + new Array(1 + pad).join('=');\n}\n\nfunction stringToByteArray(str) {\n var arr = new Array(str.length);\n for (var a = 0; a < str.length; a++) {\n arr[a] = str.charCodeAt(a);\n }\n return arr;\n}\n\nfunction byteArrayToString(array) {\n var result = '';\n for (var i = 0; i < array.length; i++) {\n result += String.fromCharCode(array[i]);\n }\n return result;\n}\n\nfunction encode(str) {\n return base64\n .fromByteArray(stringToByteArray(str))\n .replace(/\\+/g, '-') // Convert '+' to '-'\n .replace(/\\//g, '_'); // Convert '/' to '_'\n}\n\nfunction decode(str) {\n str = padding(str)\n .replace(/-/g, '+') // Convert '-' to '+'\n .replace(/_/g, '/'); // Convert '_' to '/'\n\n return byteArrayToString(base64.toByteArray(str));\n}\n\nexport default {\n encode: encode,\n decode: decode\n};\n","module.exports = { raw: '9.25.0' };\n","var toString = Object.prototype.toString;\n\nfunction attribute(o, attr, type, text) {\n type = type === 'array' ? 'object' : type;\n if (o && typeof o[attr] !== type) {\n throw new Error(text);\n }\n}\n\nfunction variable(o, type, text) {\n if (typeof o !== type) {\n throw new Error(text);\n }\n}\n\nfunction value(o, values, text) {\n if (values.indexOf(o) === -1) {\n throw new Error(text);\n }\n}\n\nfunction check(o, config, attributes) {\n if (!config.optional || o) {\n variable(o, config.type, config.message);\n }\n if (config.type === 'object' && attributes) {\n var keys = Object.keys(attributes);\n\n for (var index = 0; index < keys.length; index++) {\n var a = keys[index];\n if (!attributes[a].optional || o[a]) {\n if (!attributes[a].condition || attributes[a].condition(o)) {\n attribute(o, a, attributes[a].type, attributes[a].message);\n if (attributes[a].values) {\n value(o[a], attributes[a].values, attributes[a].value_message);\n }\n }\n }\n }\n }\n}\n\n/**\n * Wrap `Array.isArray` Polyfill for IE9\n * source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\n *\n * @param {Array} array\n * @private\n */\nfunction isArray(array) {\n if (this.supportsIsArray()) {\n return Array.isArray(array);\n }\n\n return toString.call(array) === '[object Array]';\n}\n\nfunction supportsIsArray() {\n return Array.isArray != null;\n}\n\nexport default {\n check: check,\n attribute: attribute,\n variable: variable,\n value: value,\n isArray: isArray,\n supportsIsArray: supportsIsArray\n};\n","/* eslint-disable no-continue */\n\nfunction get() {\n if (!Object.assign) {\n return objectAssignPolyfill;\n }\n\n return Object.assign;\n}\n\nfunction objectAssignPolyfill(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (\n var nextIndex = 0, len = keysArray.length;\n nextIndex < len;\n nextIndex++\n ) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nexport default {\n get: get,\n objectAssignPolyfill: objectAssignPolyfill\n};\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\n\nimport assert from './assert';\nimport objectAssign from './object-assign';\n\nfunction pick(object, keys) {\n return keys.reduce(function(prev, key) {\n if (object[key]) {\n prev[key] = object[key];\n }\n return prev;\n }, {});\n}\n\nfunction getKeysNotIn(obj, allowedKeys) {\n var notAllowed = [];\n for (var key in obj) {\n if (allowedKeys.indexOf(key) === -1) {\n notAllowed.push(key);\n }\n }\n return notAllowed;\n}\n\nfunction objectValues(obj) {\n var values = [];\n for (var key in obj) {\n values.push(obj[key]);\n }\n return values;\n}\n\nfunction extend() {\n var params = objectValues(arguments);\n params.unshift({});\n return objectAssign.get().apply(undefined, params);\n}\n\nfunction merge(object, keys) {\n return {\n base: keys ? pick(object, keys) : object,\n with: function(object2, keys2) {\n object2 = keys2 ? pick(object2, keys2) : object2;\n return extend(this.base, object2);\n }\n };\n}\n\nfunction blacklist(object, blacklistedKeys) {\n return Object.keys(object).reduce(function(p, key) {\n if (blacklistedKeys.indexOf(key) === -1) {\n p[key] = object[key];\n }\n return p;\n }, {});\n}\n\nfunction camelToSnake(str) {\n var newKey = '';\n var index = 0;\n var code;\n var wasPrevNumber = true;\n var wasPrevUppercase = true;\n\n while (index < str.length) {\n code = str.charCodeAt(index);\n if (\n (!wasPrevUppercase && code >= 65 && code <= 90) ||\n (!wasPrevNumber && code >= 48 && code <= 57)\n ) {\n newKey += '_';\n newKey += str[index].toLowerCase();\n } else {\n newKey += str[index].toLowerCase();\n }\n wasPrevNumber = code >= 48 && code <= 57;\n wasPrevUppercase = code >= 65 && code <= 90;\n index++;\n }\n\n return newKey;\n}\n\nfunction snakeToCamel(str) {\n var parts = str.split('_');\n return parts.reduce(function(p, c) {\n return p + c.charAt(0).toUpperCase() + c.slice(1);\n }, parts.shift());\n}\n\nfunction toSnakeCase(object, exceptions) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n exceptions = exceptions || [];\n\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? camelToSnake(key) : key;\n p[newKey] = toSnakeCase(object[key]);\n return p;\n }, {});\n}\n\nfunction toCamelCase(object, exceptions, options) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n\n exceptions = exceptions || [];\n options = options || {};\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? snakeToCamel(key) : key;\n\n p[newKey] = toCamelCase(object[newKey] || object[key], [], options);\n\n if (options.keepOriginal) {\n p[key] = toCamelCase(object[key], [], options);\n }\n return p;\n }, {});\n}\n\nfunction getLocationFromUrl(href) {\n var match = href.match(\n /^(https?:|file:|chrome-extension:)\\/\\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\\?[^#]*|)(#.*|)$/\n );\n return (\n match && {\n href: href,\n protocol: match[1],\n host: match[2],\n hostname: match[3],\n port: match[4],\n pathname: match[5],\n search: match[6],\n hash: match[7]\n }\n );\n}\n\nfunction getOriginFromUrl(url) {\n if (!url) {\n return undefined;\n }\n var parsed = getLocationFromUrl(url);\n if (!parsed) {\n return null;\n }\n var origin = parsed.protocol + '//' + parsed.hostname;\n if (parsed.port) {\n origin += ':' + parsed.port;\n }\n return origin;\n}\n\nfunction trim(options, key) {\n var trimmed = extend(options);\n if (options[key]) {\n trimmed[key] = options[key].trim();\n }\n return trimmed;\n}\n\nfunction trimMultiple(options, keys) {\n return keys.reduce(trim, options);\n}\n\nfunction trimUserDetails(options) {\n return trimMultiple(options, ['username', 'email', 'phoneNumber']);\n}\n\n/**\n * Updates the value of a property on the given object, using a deep path selector.\n * @param {object} obj The object to set the property value on\n * @param {string|array} path The path to the property that should have its value updated. e.g. 'prop1.prop2.prop3' or ['prop1', 'prop2', 'prop3']\n * @param {any} value The value to set\n * @ignore\n */\nfunction updatePropertyOn(obj, path, value) {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n\n var next = path[0];\n\n if (obj.hasOwnProperty(next)) {\n if (path.length === 1) {\n obj[next] = value;\n } else {\n updatePropertyOn(obj[next], path.slice(1), value);\n }\n }\n}\n\nexport default {\n toSnakeCase: toSnakeCase,\n toCamelCase: toCamelCase,\n blacklist: blacklist,\n merge: merge,\n pick: pick,\n getKeysNotIn: getKeysNotIn,\n extend: extend,\n getOriginFromUrl: getOriginFromUrl,\n getLocationFromUrl: getLocationFromUrl,\n trimUserDetails: trimUserDetails,\n updatePropertyOn: updatePropertyOn\n};\n","/* eslint-disable no-param-reassign */\nimport request from 'superagent';\nimport base64Url from './base64_url';\nimport version from '../version';\nimport objectHelper from './object';\n\n// ------------------------------------------------ RequestWrapper\n\nfunction RequestWrapper(req) {\n this.request = req;\n this.method = req.method;\n this.url = req.url;\n this.body = req._data;\n this.headers = req._header;\n}\n\nRequestWrapper.prototype.abort = function() {\n this.request.abort();\n};\n\nRequestWrapper.prototype.getMethod = function() {\n return this.method;\n};\n\nRequestWrapper.prototype.getBody = function() {\n return this.body;\n};\n\nRequestWrapper.prototype.getUrl = function() {\n return this.url;\n};\n\nRequestWrapper.prototype.getHeaders = function() {\n return this.headers;\n};\n\n// ------------------------------------------------ RequestObj\n\nfunction RequestObj(req) {\n this.request = req;\n}\n\nRequestObj.prototype.set = function(key, value) {\n this.request = this.request.set(key, value);\n return this;\n};\n\nRequestObj.prototype.send = function(body) {\n this.request = this.request.send(objectHelper.trimUserDetails(body));\n return this;\n};\n\nRequestObj.prototype.withCredentials = function() {\n this.request = this.request.withCredentials();\n return this;\n};\n\nRequestObj.prototype.end = function(cb) {\n this.request.end(cb);\n return new RequestWrapper(this.request);\n};\n\n// ------------------------------------------------ RequestBuilder\n\nfunction RequestBuilder(options) {\n this._sendTelemetry =\n options._sendTelemetry === false ? options._sendTelemetry : true;\n this._telemetryInfo = options._telemetryInfo || null;\n this._timesToRetryFailedRequests = options._timesToRetryFailedRequests;\n this.headers = options.headers || {};\n this._universalLoginPage = options.universalLoginPage;\n}\n\nRequestBuilder.prototype.setCommonConfiguration = function(\n ongoingRequest,\n options\n) {\n options = options || {};\n\n if (this._timesToRetryFailedRequests > 0) {\n ongoingRequest = ongoingRequest.retry(this._timesToRetryFailedRequests);\n }\n\n if (options.noHeaders) {\n return ongoingRequest;\n }\n\n var headers = this.headers;\n ongoingRequest = ongoingRequest.set('Content-Type', 'application/json');\n\n if (options.xRequestLanguage) {\n ongoingRequest = ongoingRequest.set(\n 'X-Request-Language',\n options.xRequestLanguage\n );\n }\n\n var keys = Object.keys(this.headers);\n\n for (var a = 0; a < keys.length; a++) {\n ongoingRequest = ongoingRequest.set(keys[a], headers[keys[a]]);\n }\n\n if (this._sendTelemetry) {\n ongoingRequest = ongoingRequest.set(\n 'Auth0-Client',\n this.getTelemetryData()\n );\n }\n\n return ongoingRequest;\n};\n\nRequestBuilder.prototype.getTelemetryData = function() {\n var telemetryName = this._universalLoginPage ? 'auth0.js-ulp' : 'auth0.js';\n var clientInfo = { name: telemetryName, version: version.raw };\n if (this._telemetryInfo) {\n clientInfo = objectHelper.extend({}, this._telemetryInfo);\n clientInfo.env = objectHelper.extend({}, this._telemetryInfo.env);\n clientInfo.env[telemetryName] = version.raw;\n }\n var jsonClientInfo = JSON.stringify(clientInfo);\n return base64Url.encode(jsonClientInfo);\n};\n\nRequestBuilder.prototype.get = function(url, options) {\n return new RequestObj(this.setCommonConfiguration(request.get(url), options));\n};\n\nRequestBuilder.prototype.post = function(url, options) {\n return new RequestObj(\n this.setCommonConfiguration(request.post(url), options)\n );\n};\n\nRequestBuilder.prototype.patch = function(url, options) {\n return new RequestObj(\n this.setCommonConfiguration(request.patch(url), options)\n );\n};\n\nexport default RequestBuilder;\n","import objectHelper from './object';\n\nfunction redirect(url) {\n getWindow().location = url;\n}\n\nfunction getDocument() {\n return getWindow().document;\n}\n\nfunction getWindow() {\n return window;\n}\n\nfunction getOrigin() {\n var location = getWindow().location;\n var origin = location.origin;\n\n if (!origin) {\n origin = objectHelper.getOriginFromUrl(location.href);\n }\n\n return origin;\n}\n\nexport default {\n redirect: redirect,\n getDocument: getDocument,\n getWindow: getWindow,\n getOrigin: getOrigin\n};\n","function DummyStorage() {}\n\nDummyStorage.prototype.getItem = function() {\n return null;\n};\n\nDummyStorage.prototype.removeItem = function() {};\n\nDummyStorage.prototype.setItem = function() {};\n\nexport default DummyStorage;\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","import Cookie from 'js-cookie';\nimport objectHelper from '../object';\nimport windowHandler from '../window';\n\nfunction buildCompatCookieKey(key) {\n return '_' + key + '_compat';\n}\n\nfunction CookieStorage(options) {\n this._options = options || {};\n}\n\nCookieStorage.prototype.getItem = function (key) {\n var cookie = Cookie.get(key);\n\n return cookie || Cookie.get(buildCompatCookieKey(key));\n};\n\nCookieStorage.prototype.removeItem = function (key) {\n var params = {};\n if (this._options.cookieDomain) {\n params.domain = this._options.cookieDomain;\n }\n Cookie.remove(key, params);\n Cookie.remove(buildCompatCookieKey(key), params);\n};\n\nCookieStorage.prototype.setItem = function (key, value, options) {\n var params = objectHelper.extend(\n {\n expires: 1 // 1 day\n },\n options\n );\n\n if (windowHandler.getWindow().location.protocol === 'https:') {\n params.secure = true;\n params.sameSite = 'none';\n\n if (this._options.legacySameSiteCookie) {\n // Save a compatibility cookie without sameSite='none' for browsers that don't support it.\n var legacyOptions = objectHelper.blacklist(params, ['sameSite']);\n Cookie.set(buildCompatCookieKey(key), value, legacyOptions);\n }\n }\n\n if (this._options.cookieDomain) {\n params.domain = this._options.cookieDomain;\n }\n\n Cookie.set(key, value, params);\n};\n\nexport default CookieStorage;\n","/* eslint-disable no-console */\n\nfunction Warn(options) {\n this.disableWarnings = options.disableWarnings;\n}\n\nWarn.prototype.warning = function(message) {\n if (this.disableWarnings) {\n return;\n }\n\n console.warn(message);\n};\n\nexport default Warn;\n","import windowHandler from '../window';\nimport DummyStorage from './dummy';\nimport CookieStorage from './cookie';\nimport Warn from '../warn';\n\nfunction StorageHandler(options) {\n this.warn = new Warn({});\n this.storage = new CookieStorage(options);\n\n if (options.__tryLocalStorageFirst !== true) {\n return;\n }\n\n try {\n // some browsers throw an error when trying to access localStorage\n // when localStorage is disabled.\n var localStorage = windowHandler.getWindow().localStorage;\n if (localStorage) {\n this.storage = localStorage;\n }\n } catch (e) {\n this.warn.warning(e);\n this.warn.warning(\"Can't use localStorage. Using CookieStorage instead.\");\n }\n}\n\nStorageHandler.prototype.failover = function () {\n if (this.storage instanceof DummyStorage) {\n this.warn.warning('DummyStorage: ignore failover');\n return;\n } else if (this.storage instanceof CookieStorage) {\n this.warn.warning('CookieStorage: failing over DummyStorage');\n this.storage = new DummyStorage();\n } else {\n this.warn.warning('LocalStorage: failing over CookieStorage');\n this.storage = new CookieStorage();\n }\n};\n\nStorageHandler.prototype.getItem = function (key) {\n try {\n return this.storage.getItem(key);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.getItem(key);\n }\n};\n\nStorageHandler.prototype.removeItem = function (key) {\n try {\n return this.storage.removeItem(key);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.removeItem(key);\n }\n};\n\nStorageHandler.prototype.setItem = function (key, value, options) {\n try {\n return this.storage.setItem(key, value, options);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.setItem(key, value, options);\n }\n};\n\nexport default StorageHandler;\n","import StorageHandler from './storage/handler';\n\nfunction Storage(options) {\n this.handler = new StorageHandler(options);\n}\n\nStorage.prototype.getItem = function(key) {\n var value = this.handler.getItem(key);\n try {\n return JSON.parse(value);\n } catch (_) {\n return value;\n }\n};\nStorage.prototype.removeItem = function(key) {\n return this.handler.removeItem(key);\n};\nStorage.prototype.setItem = function(key, value, options) {\n var json = JSON.stringify(value);\n return this.handler.setItem(key, json, options);\n};\n\nexport default Storage;\n","import Storage from './storage';\n\nfunction SSODataStorage(options) {\n this.storage = new Storage(options);\n}\n\nSSODataStorage.prototype.set = function(connection, sub) {\n var ssodata = {\n lastUsedConnection: connection,\n lastUsedSub: sub\n };\n this.storage.setItem('auth0.ssodata', JSON.stringify(ssodata));\n};\nSSODataStorage.prototype.get = function() {\n var ssodata = this.storage.getItem('auth0.ssodata');\n if (!ssodata) {\n return;\n }\n return JSON.parse(ssodata);\n};\n\nexport default SSODataStorage;\n","function buildResponse(error, description) {\n return {\n error: error,\n errorDescription: description\n };\n}\n\nfunction invalidToken(description) {\n return buildResponse('invalid_token', description);\n}\n\nexport default {\n buildResponse: buildResponse,\n invalidToken: invalidToken\n};\n","import error from './error';\nimport objectHelper from './object';\n\nfunction wrapCallback(cb, options) {\n options = options || {};\n options.ignoreCasing = options.ignoreCasing ? options.ignoreCasing : false;\n\n return function(err, data) {\n var errObj;\n\n if (!err && !data) {\n return cb(error.buildResponse('generic_error', 'Something went wrong'));\n }\n\n if (!err && data.err) {\n err = data.err;\n data = null;\n }\n\n if (!err && data.error) {\n err = data;\n data = null;\n }\n\n if (err) {\n errObj = {\n original: err\n };\n\n objectHelper.updatePropertyOn(\n errObj,\n 'original.response.req._data.password',\n '*****'\n );\n\n if (err.response && err.response.statusCode) {\n errObj.statusCode = err.response.statusCode;\n }\n\n if (err.response && err.response.statusText) {\n errObj.statusText = err.response.statusText;\n }\n\n if (err.response && err.response.body) {\n err = err.response.body;\n }\n\n if (err.err) {\n err = err.err;\n }\n\n errObj.code =\n err.code || err.error || err.error_code || err.status || null;\n\n errObj.description =\n err.errorDescription ||\n err.error_description ||\n err.description ||\n err.error ||\n err.details ||\n err.err ||\n null;\n\n if (options.forceLegacyError) {\n errObj.error = errObj.code;\n errObj.error_description = errObj.description;\n }\n\n if (err.error_codes && err.error_details) {\n errObj.errorDetails = {\n codes: err.error_codes,\n details: err.error_details\n };\n }\n\n if (err.name) {\n errObj.name = err.name;\n }\n\n if (err.policy) {\n errObj.policy = err.policy;\n }\n\n return cb(errObj);\n }\n\n if (\n data.type &&\n (data.type === 'text/html' || data.type === 'text/plain')\n ) {\n return cb(null, data.text);\n }\n\n if (options.ignoreCasing) {\n return cb(null, data.body || data);\n }\n\n return cb(\n null,\n objectHelper.toCamelCase(data.body || data, [], {\n keepOriginal: options.keepOriginalCasing\n })\n );\n };\n}\n\nexport default wrapCallback;\n","// For future reference:,\n// The only parameters that should be allowed are parameters\n// defined by the specification, or existing parameters that we\n// need for compatibility\n\nimport objectHelper from './object';\n\nvar tokenParams = [\n // auth0\n 'realm',\n 'audience',\n 'otp',\n // oauth2\n 'client_id',\n 'client_secret',\n 'redirect_uri',\n 'scope',\n 'code',\n 'grant_type',\n 'username',\n 'password',\n 'refresh_token',\n 'assertion',\n 'client_assertion',\n 'client_assertion_type',\n 'code_verifier'\n];\n\nvar authorizeParams = [\n // auth0\n 'connection',\n 'connection_scope',\n 'auth0Client',\n 'owp',\n 'device',\n 'realm',\n 'organization',\n 'invitation',\n\n 'protocol',\n '_csrf',\n '_intstate',\n 'login_ticket',\n\n // oauth2\n 'client_id',\n 'response_type',\n 'response_mode',\n 'redirect_uri',\n 'audience',\n 'scope',\n 'state',\n 'nonce',\n 'display',\n 'prompt',\n 'screen_hint',\n 'max_age',\n 'ui_locales',\n 'claims_locales',\n 'id_token_hint',\n 'login_hint',\n 'acr_values',\n 'claims',\n 'registration',\n 'request',\n 'request_uri',\n 'code_challenge',\n 'code_challenge_method',\n\n // ADDITIONAL_PARAMETERS:\n // https://auth0.com/docs/api/authentication?javascript#social\n 'access_type',\n 'display'\n];\n\nfunction oauthAuthorizeParams(warn, params) {\n var notAllowed = objectHelper.getKeysNotIn(params, authorizeParams);\n\n if (notAllowed.length > 0) {\n warn.warning(\n 'Following parameters are not allowed on the `/authorize` endpoint: [' +\n notAllowed.join(',') +\n ']'\n );\n }\n\n return params;\n}\n\nfunction oauthTokenParams(warn, params) {\n return objectHelper.pick(params, tokenParams);\n}\n\nexport default {\n oauthTokenParams: oauthTokenParams,\n oauthAuthorizeParams: oauthAuthorizeParams\n};\n","var t=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r=e(function(e,r){e.exports=function(){function e(t){return\"function\"==typeof t}var r=Array.isArray?Array.isArray:function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},i=0,n=void 0,o=void 0,s=function(t,e){l[i]=t,l[i+1]=e,2===(i+=2)&&(o?o(d):w())},h=\"undefined\"!=typeof window?window:void 0,u=h||{},a=u.MutationObserver||u.WebKitMutationObserver,f=\"undefined\"==typeof self&&\"undefined\"!=typeof process&&\"[object process]\"==={}.toString.call(process),c=\"undefined\"!=typeof Uint8ClampedArray&&\"undefined\"!=typeof importScripts&&\"undefined\"!=typeof MessageChannel;function p(){var t=setTimeout;return function(){return t(d,1)}}var l=new Array(1e3);function d(){for(var t=0;t>>2]|=(r[o>>>2]>>>24-o%4*8&255)<<24-(i+o)%4*8;else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join(\"\")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new f.init(r,e/2)}},l=c.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255));return i.join(\"\")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new f.init(r,e)}},d=c.Utf8={stringify:function(t){try{return decodeURIComponent(escape(l.stringify(t)))}catch(t){throw new Error(\"Malformed UTF-8 data\")}},parse:function(t){return l.parse(unescape(encodeURIComponent(t)))}},m=u.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new f.init,this._nDataBytes=0},_append:function(t){\"string\"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,h=o/(4*s),u=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*s,a=e.min(4*u,o);if(u){for(var c=0;c>>7)^(d<<14|d>>>18)^d>>>3)+a[l-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+a[l-16]}var v=i&n^i&o^n&o,y=p+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&f^~h&c)+u[l]+a[l];p=c,c=f,f=h,h=s+y|0,s=o,o=n,n=i,i=y+(((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+v)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+h|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+p|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(f),e.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)}),s=e(function(t,e){var r,i;t.exports=(i=(r=n).lib.WordArray,r.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,h=0;h<4&&o+.75*h>>6*(3-h)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join(\"\")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=(h|u)<<24-o%4*8,o++}return i.create(n,o)}(t,e,n)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"},r.enc.Base64)}),h=e(function(t,e){t.exports=n.enc.Hex}),u=e(function(e,r){(function(){var t;function r(t,e,r){null!=t&&(\"number\"==typeof t?this.fromNumber(t,e,r):this.fromString(t,null==e&&\"string\"!=typeof t?256:e))}function i(){return new r(null)}var n=\"undefined\"!=typeof navigator;n&&\"Microsoft Internet Explorer\"==navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(var s=32767&e,h=e>>15;--o>=0;){var u=32767&this[t],a=this[t++]>>15,f=h*u+a*s;n=((u=s*u+((32767&f)<<15)+r[i]+(1073741823&n))>>>30)+(f>>>15)+h*a+(n>>>30),r[i++]=1073741823&u}return n},t=30):n&&\"Netscape\"!=navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(;--o>=0;){var s=e*this[t++]+r[i]+n;n=Math.floor(s/67108864),r[i++]=67108863&s}return n},t=26):(r.prototype.am=function(t,e,r,i,n,o){for(var s=16383&e,h=e>>14;--o>=0;){var u=16383&this[t],a=this[t++]>>14,f=h*u+a*s;n=((u=s*u+((16383&f)<<14)+r[i]+n)>>28)+(f>>14)+h*a,r[i++]=268435455&u}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function p(t){this.m=t}function l(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function w(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function T(){}function b(t){return t}function _(t){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}p.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},p.prototype.revert=function(t){return t},p.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},p.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},p.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},l.prototype.convert=function(t){var e=i();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(r.ZERO)>0&&this.m.subTo(e,e),e},l.prototype.revert=function(t){var e=i();return t.copyTo(e),this.reduce(e),e},l.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,i,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},l.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},l.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},r.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},r.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},r.prototype.fromString=function(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else{if(4!=e)return void this.fromRadix(t,e);i=2}this.t=0,this.s=0;for(var n=t.length,o=!1,s=0;--n>=0;){var h=8==i?255&t[n]:a(t,n);h<0?\"-\"==t.charAt(n)&&(o=!0):(o=!1,0==s?this[this.t++]=h:s+i>this.DB?(this[this.t-1]|=(h&(1<>this.DB-s):this[this.t-1]|=h<=this.DB&&(s-=this.DB))}8==i&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},r.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},r.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>n|h,h=(this[r]&o)<=0;--r)e[r]=0;e[s]=h,e.t=this.t+s+1,e.s=this.s,e.clamp()},r.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var i=t%this.DB,n=this.DB-i,o=(1<>i;for(var s=r+1;s>i;i>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i-=t.s}e.s=i<0?-1:0,i<-1?e[r++]=this.DV+i:i>0&&(e[r++]=i),e.t=r,e.clamp()},r.prototype.multiplyTo=function(t,e){var i=this.abs(),n=t.abs(),o=i.t;for(e.t=o+n.t;--o>=0;)e[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},r.prototype.divRemTo=function(t,e,n){var o=t.abs();if(!(o.t<=0)){var s=this.abs();if(s.t0?(o.lShiftTo(f,h),s.lShiftTo(f,n)):(o.copyTo(h),s.copyTo(n));var p=h.t,l=h[p-1];if(0!=l){var d=l*(1<1?h[p-2]>>this.F2:0),m=this.FV/d,v=(1<=0&&(n[n.t++]=1,n.subTo(T,n)),r.ONE.dlShiftTo(p,T),T.subTo(h,h);h.t=0;){var b=n[--g]==l?this.DM:Math.floor(n[g]*m+(n[g-1]+y)*v);if((n[g]+=h.am(0,b,n,w,0,p))0&&n.rShiftTo(f,n),u<0&&r.ZERO.subTo(n,n)}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(t,e){if(t>4294967295||t<1)return r.ONE;var n=i(),o=i(),s=e.convert(this),h=c(t)-1;for(s.copyTo(n);--h>=0;)if(e.sqrTo(n,o),(t&1<0)e.mulTo(o,s,n);else{var u=n;n=o,o=u}return e.revert(n)},r.prototype.toString=function(t){if(this.s<0)return\"-\"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,i=(1<0)for(h>h)>0&&(n=!0,o=u(r));s>=0;)h>(h+=this.DB-e)):(r=this[s]>>(h-=e)&i,h<=0&&(h+=this.DB,--s)),r>0&&(n=!0),n&&(o+=u(r));return n?o:\"0\"},r.prototype.negate=function(){var t=i();return r.ZERO.subTo(this,t),t},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+c(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(t){var e=i();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(r.ZERO)>0&&t.subTo(e,e),e},r.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new p(e):new l(e),this.exp(t,r)},r.ZERO=f(0),r.ONE=f(1),T.prototype.convert=b,T.prototype.revert=b,T.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},T.prototype.sqrTo=function(t,e){t.squareTo(e)},_.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=i();return t.copyTo(e),this.reduce(e),e},_.prototype.revert=function(t){return t},_.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},_.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},_.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var S,A,D,B=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],x=(1<<26)/B[B.length-1];function E(){var t;t=(new Date).getTime(),A[D++]^=255&t,A[D++]^=t>>8&255,A[D++]^=t>>16&255,A[D++]^=t>>24&255,D>=j&&(D-=j)}if(r.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},r.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return\"0\";var e=this.chunkSize(t),r=Math.pow(t,e),n=f(r),o=i(),s=i(),h=\"\";for(this.divRemTo(n,o,s);o.signum()>0;)h=(r+s.intValue()).toString(t).substr(1)+h,o.divRemTo(n,o,s);return s.intValue().toString(t)+h},r.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var i=this.chunkSize(e),n=Math.pow(e,i),o=!1,s=0,h=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(h,0),s=0,h=0))}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(h,0)),o&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(t,e,i){if(\"number\"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(r.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(r.ONE.shiftLeft(t-1),this);else{var n=new Array,o=7&t;n.length=1+(t>>3),e.nextBytes(n),o>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i+=t.s}e.s=i<0?-1:0,i>0?e[r++]=i:i<-1&&(e[r++]=this.DV+i),e.t=r,e.clamp()},r.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},r.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},r.prototype.multiplyLowerTo=function(t,e,r){var i,n=Math.min(this.t+t.t,e);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(e-this.t,0);i0)if(0==e)r=this[0]%t;else for(var i=this.t-1;i>=0;--i)r=(e*r+this[i])%t;return r},r.prototype.millerRabin=function(t){var e=this.subtract(r.ONE),n=e.getLowestSetBit();if(n<=0)return!1;var o=e.shiftRight(n);(t=t+1>>1)>B.length&&(t=B.length);for(var s=i(),h=0;h>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,i=this.DB-t*this.DB%8,n=0;if(t-- >0)for(i>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<=0;)i<8?(r=(this[t]&(1<>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,i<=0&&(i+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(e[n++]=r);return e},r.prototype.equals=function(t){return 0==this.compareTo(t)},r.prototype.min=function(t){return this.compareTo(t)<0?this:t},r.prototype.max=function(t){return this.compareTo(t)>0?this:t},r.prototype.and=function(t){var e=i();return this.bitwiseTo(t,d,e),e},r.prototype.or=function(t){var e=i();return this.bitwiseTo(t,m,e),e},r.prototype.xor=function(t){var e=i();return this.bitwiseTo(t,v,e),e},r.prototype.andNot=function(t){var e=i();return this.bitwiseTo(t,y,e),e},r.prototype.not=function(){for(var t=i(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var m=i();for(n.sqrTo(h[1],m);u<=d;)h[u]=i(),n.mulTo(m,h[u-2],h[u]),u+=2}var v,y,g=t.t-1,w=!0,T=i();for(o=c(t[g])-1;g>=0;){for(o>=a?v=t[g]>>o-a&d:(v=(t[g]&(1<0&&(v|=t[g-1]>>this.DB+o-a)),u=r;0==(1&v);)v>>=1,--u;if((o-=u)<0&&(o+=this.DB,--g),w)h[v].copyTo(s),w=!1;else{for(;u>1;)n.sqrTo(s,T),n.sqrTo(T,s),u-=2;u>0?n.sqrTo(s,T):(y=s,s=T,T=y),n.mulTo(T,h[v],s)}for(;g>=0&&0==(t[g]&1<=0?(i.subTo(n,i),e&&o.subTo(h,o),s.subTo(u,s)):(n.subTo(i,n),e&&h.subTo(o,h),u.subTo(s,u))}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(t)>=0?u.subtract(t):u.signum()<0?(u.addTo(t,u),u.signum()<0?u.add(t):u):u},r.prototype.pow=function(t){return this.exp(t,new T)},r.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var i=e;e=r,r=i}var n=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(n0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},r.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=B[B.length-1]){for(e=0;e>>8,A[D++]=255&k;D=0,E()}function C(){if(null==S){for(E(),(S=new O).init(A),D=0;D0&&e.length>0))throw new Error(\"Invalid key data\");this.n=new u.BigInteger(t,16),this.e=parseInt(e,16)}c.prototype.verify=function(t,e){e=e.replace(/[^0-9a-f]|[\\s\\n]]/gi,\"\");var r=new u.BigInteger(e,16);if(r.bitLength()>this.n.bitLength())throw new Error(\"Signature does not match with the key modulus.\");var i=function(t){for(var e in a){var r=a[e],i=r.length;if(t.substring(0,i)===r)return{alg:e,hash:t.substring(i)}}return[]}(r.modPowInt(this.e,this.n).toString(16).replace(/^1f+00/,\"\"));if(0===i.length)return!1;if(!f.hasOwnProperty(i.alg))throw new Error(\"Hashing algorithm is not supported.\");var n=f[i.alg](t).toString();return i.hash===n};for(var p=[],l=[],d=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,m=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",v=0,y=m.length;v0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}(t),n=i[0],o=i[1],s=new d(function(t,e,r){return 3*(e+r)/4-r}(0,n,o)),h=0,u=o>0?n-4:n;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;return 2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,s[h++]=255&e),1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e),s};function w(t){var e=t.length%4;return 0===e?t:t+new Array(4-e+1).join(\"=\")}function T(t){return t=w(t).replace(/\\-/g,\"+\").replace(/_/g,\"/\"),decodeURIComponent(function(t){for(var e=\"\",r=0;r1){var r=t.shift();t[0]=r+t[0]}t[0]=t[0].match(/^file:\\/\\/\\//)?t[0].replace(/^([^/:]+):\\/*/,\"$1:///\"):t[0].replace(/^([^/:]+):\\/*/,\"$1://\");for(var i=0;i0&&(n=n.replace(/^[\\/]+/,\"\")),n=n.replace(/[\\/]+$/,i0?\"?\":\"\")+s.join(\"&\")}return function(){return t(\"object\"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():r.urljoin=i()});function S(t,e){return e=e||{},new Promise(function(r,i){var n=new XMLHttpRequest,o=[],s=[],h={},u=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:u,headers:{keys:function(){return o},entries:function(){return s},get:function(t){return h[t.toLowerCase()]},has:function(t){return t.toLowerCase()in h}}}};for(var a in n.open(e.method||\"get\",t,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(t,e,r){o.push(e=e.toLowerCase()),s.push([e,r]),h[e]=h[e]?h[e]+\",\"+r:r}),r(u())},n.onerror=i,n.withCredentials=\"include\"==e.credentials,e.headers)n.setRequestHeader(a,e.headers[a]);n.send(e.body||null)})}function A(t){if(t.ok)return t.json();var e=new Error(t.statusText);return e.response=t,Promise.reject(e)}function D(t){this.name=\"ConfigurationError\",this.message=t||\"\"}function B(t){this.name=\"TokenValidationError\",this.message=t||\"\"}D.prototype=Error.prototype,B.prototype=Error.prototype;var x=function(){function t(){}var e=t.prototype;return e.get=function(){return null},e.has=function(){return null},e.set=function(){return null},t}();r.polyfill();var E=\"RS256\",k=function(t){return\"number\"==typeof t},I=function(){return new Date};function M(t){var e=t||{};if(this.jwksCache=e.jwksCache||new x,this.expectedAlg=e.expectedAlg||\"RS256\",this.issuer=e.issuer,this.audience=e.audience,this.leeway=0===e.leeway?0:e.leeway||60,this.jwksURI=e.jwksURI,this.maxAge=e.maxAge,this.__clock=\"function\"==typeof e.__clock?e.__clock:I,this.leeway<0||this.leeway>300)throw new D(\"The leeway should be positive and lower than five minutes.\");if(E!==this.expectedAlg)throw new D('Signature algorithm of \"'+this.expectedAlg+'\" is not supported. Expected the ID token to be signed with \"'+E+'\".')}M.prototype.verify=function(t,e,r){if(!r&&e&&\"function\"==typeof e&&(r=e,e=void 0),!t)return r(new B(\"ID token is required but missing\"),null);var i=this.decode(t);if(i instanceof Error)return r(new B(\"ID token could not be decoded\"),null);var n=i.encoded.header+\".\"+i.encoded.payload,o=b(i.encoded.signature),s=i.header.alg,h=i.header.kid,u=i.payload.aud,a=i.payload.sub,f=i.payload.iss,c=i.payload.exp,p=i.payload.nbf,l=i.payload.iat,d=i.payload.azp,m=i.payload.auth_time,v=i.payload.nonce,y=this.__clock(),g=this;if(g.expectedAlg!==s)return r(new B('Signature algorithm of \"'+s+'\" is not supported. Expected the ID token to be signed with \"'+E+'\".'),null);this.getRsaVerifier(f,h,function(t,s){if(t)return r(t,null);if(!s.verify(n,o))return r(new B(\"Invalid ID token signature.\"),null);if(!f||\"string\"!=typeof f)return r(new B(\"Issuer (iss) claim must be a string present in the ID token\"),null);if(g.issuer!==f)return r(new B('Issuer (iss) claim mismatch in the ID token, expected \"'+g.issuer+'\", found \"'+f+'\"'),null);if(!a||\"string\"!=typeof a)return r(new B(\"Subject (sub) claim must be a string present in the ID token\"),null);if(!u||\"string\"!=typeof u&&!Array.isArray(u))return r(new B(\"Audience (aud) claim must be a string or array of strings present in the ID token\"),null);if(Array.isArray(u)&&!u.includes(g.audience))return r(new B('Audience (aud) claim mismatch in the ID token; expected \"'+g.audience+'\" but was not one of \"'+u.join(\", \")+'\"'),null);if(\"string\"==typeof u&&g.audience!==u)return r(new B('Audience (aud) claim mismatch in the ID token; expected \"'+g.audience+'\" but found \"'+u+'\"'),null);if(e){if(!v||\"string\"!=typeof v)return r(new B(\"Nonce (nonce) claim must be a string present in the ID token\"),null);if(v!==e)return r(new B('Nonce (nonce) claim value mismatch in the ID token; expected \"'+e+'\", found \"'+v+'\"'),null)}if(Array.isArray(u)&&u.length>1){if(!d||\"string\"!=typeof d)return r(new B(\"Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values\"),null);if(d!==g.audience)return r(new B('Authorized Party (azp) claim mismatch in the ID token; expected \"'+g.audience+'\", found \"'+d+'\"'),null)}if(!c||!k(c))return r(new B(\"Expiration Time (exp) claim must be a number present in the ID token\"),null);if(!l||!k(l))return r(new B(\"Issued At (iat) claim must be a number present in the ID token\"),null);var h=c+g.leeway,w=new Date(0);if(w.setUTCSeconds(h),y>w)return r(new B('Expiration Time (exp) claim error in the ID token; current time \"'+y+'\" is after expiration time \"'+w+'\"'),null);if(p&&k(p)){var T=p-g.leeway,b=new Date(0);if(b.setUTCSeconds(T),yS)return r(new B('Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time \"'+y+'\" is after last auth time at \"'+S+'\"'),null)}return r(null,i.payload)})},M.prototype.getRsaVerifier=function(t,e,r){var i=this,n=t+e;Promise.resolve(this.jwksCache.has(n)).then(function(r){return r?i.jwksCache.get(n):(o={jwksURI:i.jwksURI,iss:t,kid:e},(\"undefined\"==typeof fetch?S:fetch)(o.jwksURI||_(o.iss,\".well-known\",\"jwks.json\")).then(A).then(function(t){var e,r,i,n=null;for(e=0;e 11\n else if (ua.indexOf(\"Trident\") > -1) {\n var re = new RegExp(\"rv:([0-9]{2,2}[\\.0-9]{0,})\");\n if (re.exec(ua) !== null) {\n rv = parseFloat(RegExp.$1);\n }\n }\n\n return rv >= 8;\n }\n\n // checking Mobile Firefox (Fennec)\n function isFennec() {\n try {\n // We must check for both XUL and Java versions of Fennec. Both have\n // distinct UA strings.\n var userAgent = navigator.userAgent;\n return (userAgent.indexOf('Fennec/') != -1) || // XUL\n (userAgent.indexOf('Firefox/') != -1 && userAgent.indexOf('Android') != -1); // Java\n } catch(e) {}\n return false;\n }\n\n // feature checking to see if this platform is supported at all\n function isSupported() {\n return (typeof window !== 'undefined' && window.JSON && window.JSON.stringify &&\n window.JSON.parse && window.postMessage);\n }\n\n // given a URL, extract the origin. Taken from: https://github.com/firebase/firebase-simple-login/blob/d2cb95b9f812d8488bdbfba51c3a7c153ba1a074/js/src/simple-login/transports/WinChan.js#L25-L30\n function extractOrigin(url) {\n if (!/^https?:\\/\\//.test(url)) url = window.location.href;\n var m = /^(https?:\\/\\/[\\-_a-zA-Z\\.0-9:]+)/.exec(url);\n if (m) return m[1];\n return url;\n }\n\n // find the relay iframe in the opener\n function findRelay() {\n var loc = window.location;\n var frames = window.opener.frames;\n for (var i = frames.length - 1; i >= 0; i--) {\n try {\n if (frames[i].location.protocol === window.location.protocol &&\n frames[i].location.host === window.location.host &&\n frames[i].name === RELAY_FRAME_NAME)\n {\n return frames[i];\n }\n } catch(e) { }\n }\n return;\n }\n\n var isIE = isInternetExplorer();\n\n if (isSupported()) {\n /* General flow:\n * 0. user clicks\n * (IE SPECIFIC) 1. caller adds relay iframe (served from trusted domain) to DOM\n * 2. caller opens window (with content from trusted domain)\n * 3. window on opening adds a listener to 'message'\n * (IE SPECIFIC) 4. window on opening finds iframe\n * 5. window checks if iframe is \"loaded\" - has a 'doPost' function yet\n * (IE SPECIFIC5) 5a. if iframe.doPost exists, window uses it to send ready event to caller\n * (IE SPECIFIC5) 5b. if iframe.doPost doesn't exist, window waits for frame ready\n * (IE SPECIFIC5) 5bi. once ready, window calls iframe.doPost to send ready event\n * 6. caller upon reciept of 'ready', sends args\n */\n return {\n open: function(opts, cb) {\n if (!cb) throw \"missing required callback argument\";\n\n // test required options\n var err;\n if (!opts.url) err = \"missing required 'url' parameter\";\n if (!opts.relay_url) err = \"missing required 'relay_url' parameter\";\n if (err) setTimeout(function() { cb(err); }, 0);\n\n // supply default options\n if (!opts.window_name) opts.window_name = null;\n if (!opts.window_features || isFennec()) opts.window_features = undefined;\n\n // opts.params may be undefined\n\n var iframe;\n\n // sanity check, are url and relay_url the same origin?\n var origin = opts.origin || extractOrigin(opts.url);\n if (origin !== extractOrigin(opts.relay_url)) {\n return setTimeout(function() {\n cb('invalid arguments: origin of url and relay_url must match');\n }, 0);\n }\n\n var messageTarget;\n\n if (isIE) {\n // first we need to add a \"relay\" iframe to the document that's served\n // from the target domain. We can postmessage into a iframe, but not a\n // window\n iframe = document.createElement(\"iframe\");\n // iframe.setAttribute('name', framename);\n iframe.setAttribute('src', opts.relay_url);\n iframe.style.display = \"none\";\n iframe.setAttribute('name', RELAY_FRAME_NAME);\n document.body.appendChild(iframe);\n messageTarget = iframe.contentWindow;\n }\n\n var w = opts.popup || window.open(opts.url, opts.window_name, opts.window_features);\n if (opts.popup) {\n w.location.href = opts.url;\n }\n\n if (!messageTarget) messageTarget = w;\n\n // lets listen in case the window blows up before telling us\n var closeInterval = setInterval(function() {\n if (w && w.closed) {\n cleanup();\n if (cb) {\n cb('User closed the popup window');\n cb = null;\n }\n }\n }, 500);\n\n var req = JSON.stringify({a: 'request', d: opts.params});\n\n // cleanup on unload\n function cleanup() {\n if (iframe) document.body.removeChild(iframe);\n iframe = undefined;\n if (closeInterval) closeInterval = clearInterval(closeInterval);\n removeListener(window, 'message', onMessage);\n removeListener(window, 'unload', cleanup);\n if (w) {\n try {\n w.close();\n } catch (securityViolation) {\n // This happens in Opera 12 sometimes\n // see https://github.com/mozilla/browserid/issues/1844\n messageTarget.postMessage(CLOSE_CMD, origin);\n }\n }\n w = messageTarget = undefined;\n }\n\n addListener(window, 'unload', cleanup);\n\n function onMessage(e) {\n if (e.origin !== origin) { return; }\n try {\n var d = JSON.parse(e.data);\n } catch(err) {\n if (cb) {\n return cb(err);\n } else {\n throw err;\n }\n }\n\n if (d.a === 'ready') {\n messageTarget.postMessage(req, origin);\n } else if (d.a === 'error') {\n cleanup();\n if (cb) {\n cb(d.d);\n cb = null;\n }\n } else if (d.a === 'response') {\n cleanup();\n if (cb) {\n cb(null, d.d);\n cb = null;\n }\n }\n }\n\n addListener(window, 'message', onMessage);\n\n return {\n originalPopup: w,\n close: cleanup,\n focus: function() {\n if (w) {\n try {\n w.focus();\n } catch (e) {\n // IE7 blows up here, do nothing\n }\n }\n }\n };\n },\n onOpen: function(cb) {\n var o = \"*\";\n var msgTarget = isIE ? findRelay() : window.opener;\n if (!msgTarget) throw \"can't find relay frame\";\n function doPost(msg) {\n msg = JSON.stringify(msg);\n if (isIE) msgTarget.doPost(msg, o);\n else msgTarget.postMessage(msg, o);\n }\n\n function onMessage(e) {\n // only one message gets through, but let's make sure it's actually\n // the message we're looking for (other code may be using\n // postmessage) - we do this by ensuring the payload can\n // be parsed, and it's got an 'a' (action) value of 'request'.\n var d;\n try {\n d = JSON.parse(e.data);\n } catch(err) { }\n if (!d || d.a !== 'request') return;\n removeListener(window, 'message', onMessage);\n o = e.origin;\n if (cb) {\n // this setTimeout is critically important for IE8 -\n // in ie8 sometimes addListener for 'message' can synchronously\n // cause your callback to be invoked. awesome.\n setTimeout(function() {\n cb(o, d.d, function(r) {\n cb = undefined;\n doPost({a: 'response', d: r});\n });\n }, 0);\n }\n }\n\n function onDie(e) {\n if (e.data === CLOSE_CMD) {\n try { window.close(); } catch (o_O) {}\n }\n }\n addListener(isIE ? msgTarget : window, 'message', onMessage);\n addListener(isIE ? msgTarget : window, 'message', onDie);\n\n // we cannot post to our parent that we're ready before the iframe\n // is loaded. (IE specific possible failure)\n try {\n doPost({a: \"ready\"});\n } catch(e) {\n // this code should never be exectued outside IE\n addListener(msgTarget, 'load', function(e) {\n doPost({a: \"ready\"});\n });\n }\n\n // if window is unloaded and the client hasn't called cb, it's an error\n var onUnload = function() {\n try {\n // IE8 doesn't like this...\n removeListener(isIE ? msgTarget : window, 'message', onDie);\n } catch (ohWell) { }\n if (cb) doPost({ a: 'error', d: 'client closed window' });\n cb = undefined;\n // explicitly close the window, in case the client is trying to reload or nav\n try { window.close(); } catch (e) { }\n };\n addListener(window, 'unload', onUnload);\n return {\n detach: function() {\n removeListener(window, 'unload', onUnload);\n }\n };\n }\n };\n } else {\n return {\n open: function(url, winopts, arg, cb) {\n setTimeout(function() { cb(\"unsupported browser\"); }, 0);\n },\n onOpen: function(cb) {\n setTimeout(function() { cb(\"unsupported browser\"); }, 0);\n }\n };\n }\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = WinChan;\n}\n","// given a URL, extract the origin. Taken from: https://github.com/firebase/firebase-simple-login/blob/d2cb95b9f812d8488bdbfba51c3a7c153ba1a074/js/src/simple-login/transports/WinChan.js#L25-L30\nfunction extractOrigin(url) {\n if (!/^https?:\\/\\//.test(url)) url = window.location.href;\n var m = /^(https?:\\/\\/[-_a-zA-Z.0-9:]+)/.exec(url);\n if (m) return m[1];\n return url;\n}\n\nexport default {\n extractOrigin: extractOrigin\n};\n","/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\nimport WinChan from 'winchan';\n\nimport windowHandler from './window';\nimport objectHelper from './object';\nimport qs from 'qs';\n\nfunction PopupHandler() {\n this._current_popup = null;\n}\n\nPopupHandler.prototype.calculatePosition = function(options) {\n var width = options.width || 500;\n var height = options.height || 600;\n var _window = windowHandler.getWindow();\n\n var screenX =\n typeof _window.screenX !== 'undefined'\n ? _window.screenX\n : _window.screenLeft;\n var screenY =\n typeof _window.screenY !== 'undefined'\n ? _window.screenY\n : _window.screenTop;\n\n var outerWidth =\n typeof _window.outerWidth !== 'undefined'\n ? _window.outerWidth\n : _window.document.body.clientWidth;\n\n var outerHeight =\n typeof _window.outerHeight !== 'undefined'\n ? _window.outerHeight\n : _window.document.body.clientHeight;\n\n var left = options.left || screenX + (outerWidth - width) / 2;\n var top = options.top || screenY + (outerHeight - height) / 2;\n\n return { width: width, height: height, left: left, top: top };\n};\n\nPopupHandler.prototype.preload = function(options) {\n var _this = this;\n var _window = windowHandler.getWindow();\n var popupPosition = this.calculatePosition(options.popupOptions || {});\n var popupOptions = objectHelper\n .merge(popupPosition)\n .with(options.popupOptions);\n var url = options.url || 'about:blank';\n var windowFeatures = qs.stringify(popupOptions, {\n encode: false,\n delimiter: ','\n });\n\n if (this._current_popup && !this._current_popup.closed) {\n return this._current_popup;\n }\n\n this._current_popup = _window.open(url, 'auth0_signup_popup', windowFeatures);\n\n this._current_popup.kill = function() {\n this.close();\n _this._current_popup = null;\n };\n\n return this._current_popup;\n};\n\nPopupHandler.prototype.load = function(url, relayUrl, options, cb) {\n var _this = this;\n var popupPosition = this.calculatePosition(options.popupOptions || {});\n var popupOptions = objectHelper\n .merge(popupPosition)\n .with(options.popupOptions);\n\n var winchanOptions = objectHelper\n .merge({\n url: url,\n relay_url: relayUrl,\n window_features: qs.stringify(popupOptions, {\n delimiter: ',',\n encode: false\n }),\n popup: this._current_popup\n })\n .with(options);\n\n var popup = WinChan.open(winchanOptions, function(err, data) {\n // Ignores messages sent by browser extensions.\n if (err && err.name === 'SyntaxError') {\n return;\n }\n _this._current_popup = null;\n return cb(err, data);\n });\n\n popup.focus();\n\n return popup;\n};\n\nexport default PopupHandler;\n","import urljoin from 'url-join';\nimport WinChan from 'winchan';\n\nimport urlHelper from '../helper/url';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\nimport PopupHandler from '../helper/popup-handler';\nimport objectHelper from '../helper/object';\nimport windowHelper from '../helper/window';\nimport Warn from '../helper/warn';\nimport TransactionManager from './transaction-manager';\nimport CrossOriginAuthentication from './cross-origin-authentication';\n\n/**\n * @class\n * @classdesc This class cannot be instantiated directly. Instead, use WebAuth.popup\n * @hideconstructor\n */\nfunction Popup(webAuth, options) {\n this.baseOptions = options;\n this.baseOptions.popupOrigin = options.popupOrigin;\n this.client = webAuth.client;\n this.webAuth = webAuth;\n\n this.transactionManager = new TransactionManager(this.baseOptions);\n this.crossOriginAuthentication = new CrossOriginAuthentication(\n webAuth,\n this.baseOptions\n );\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n}\n\n/**\n * Returns a new instance of the popup handler\n *\n * @method buildPopupHandler\n * @private\n */\nPopup.prototype.buildPopupHandler = function() {\n var pluginHandler = this.baseOptions.plugins.get('popup.getPopupHandler');\n\n if (pluginHandler) {\n return pluginHandler.getPopupHandler();\n }\n\n return new PopupHandler();\n};\n\n/**\n * Initializes the popup window and returns the instance to be used later in order to avoid being blocked by the browser.\n *\n * @method preload\n * @param {Object} options receives the window height and width and any other window feature to be sent to window.open\n * @memberof Popup.prototype\n */\nPopup.prototype.preload = function(options) {\n options = options || {};\n\n var popup = this.buildPopupHandler();\n\n popup.preload(options);\n return popup;\n};\n\n/**\n * Internal use.\n *\n * @method getPopupHandler\n * @private\n */\nPopup.prototype.getPopupHandler = function(options, preload) {\n if (options.popupHandler) {\n return options.popupHandler;\n }\n\n if (preload) {\n return this.preload(options);\n }\n\n return this.buildPopupHandler();\n};\n\n/**\n * Handles the popup logic for the callback page.\n *\n * @method callback\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @see {@link parseHash}\n * @memberof Popup.prototype\n */\nPopup.prototype.callback = function(options) {\n var _this = this;\n var theWindow = windowHelper.getWindow();\n options = options || {};\n var originUrl =\n options.popupOrigin ||\n this.baseOptions.popupOrigin ||\n windowHelper.getOrigin();\n\n /*\n in IE 11, there's a bug that makes window.opener return undefined.\n The callback page will still call `popup.callback()` which will run this method\n in the relay page. WinChan expects the relay page to have a global `doPost` function,\n which will be called with the response.\n\n IE11 Bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/110920/\n */\n if (!theWindow.opener) {\n theWindow.doPost = function(msg) {\n if (theWindow.parent) {\n theWindow.parent.postMessage(msg, originUrl);\n }\n };\n return;\n }\n\n WinChan.onOpen(function(popupOrigin, r, cb) {\n if (popupOrigin !== originUrl) {\n return cb({\n error: 'origin_mismatch',\n error_description:\n \"The popup's origin (\" +\n popupOrigin +\n ') should match the `popupOrigin` parameter (' +\n originUrl +\n ').'\n });\n }\n _this.webAuth.parseHash(options || {}, function(err, data) {\n return cb(err || data);\n });\n });\n};\n\n/**\n * Shows inside a new window the hosted login page (`/authorize`) in order to start a new authN/authZ transaction and post its result using `postMessage`.\n *\n * @method authorize\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.organization] the Id of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Boolean} [options.owp] determines if Auth0 should render the relay page or not and the caller is responsible of handling the response.\n * @param {authorizeCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof Popup.prototype\n */\nPopup.prototype.authorize = function(options, cb) {\n var popup;\n var url;\n var relayUrl;\n var popOpts = {};\n\n var pluginHandler = this.baseOptions.plugins.get('popup.authorize');\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'scope',\n 'domain',\n 'audience',\n 'tenant',\n 'responseType',\n 'redirectUri',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'organization',\n 'invitation'\n ])\n .with(objectHelper.blacklist(options, ['popupHandler']));\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n // the relay page should not be necessary as long it happens in the same domain\n // (a redirectUri shoul be provided). It is necessary when using OWP\n relayUrl = urljoin(this.baseOptions.rootUrl, 'relay.html');\n\n // if a owp is enabled, it should use the owp flag\n if (options.owp) {\n // used by server to render the relay page instead of sending the chunk in the\n // url to the callback\n params.owp = true;\n } else {\n popOpts.origin = urlHelper.extractOrigin(params.redirectUri);\n relayUrl = params.redirectUri;\n }\n\n if (options.popupOptions) {\n popOpts.popupOptions = objectHelper.pick(options.popupOptions, [\n 'width',\n 'height',\n 'top',\n 'left'\n ]);\n }\n\n if (pluginHandler) {\n params = pluginHandler.processParams(params);\n }\n\n params = this.transactionManager.process(params);\n params.scope = params.scope || 'openid profile email';\n delete params.domain;\n\n url = this.client.buildAuthorizeUrl(params);\n\n popup = this.getPopupHandler(options);\n\n return popup.load(\n url,\n relayUrl,\n popOpts,\n responseHandler(cb, { keepOriginalCasing: true })\n );\n};\n\n/**\n * Performs authentication with username/email and password with a database connection inside a new window\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link login}.\n *\n * @method loginWithCredentials\n * @param {Object} options\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used. It can be any of the values `code` and `token`\n * @param {String} [options.responseMode] how the AuthN response is encoded and redirected back to the client. Supported values are `query` and `fragment`. The `query` value is only supported when `responseType` is `code`.\n * @param {String} [options.scope] scopes to be requested during AuthN. e.g. `openid email`\n * @param {credentialsCallback} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.loginWithCredentials = function (options, cb) {\n options.realm = options.realm || options.connection;\n options.popup = true;\n options = objectHelper\n .merge(this.baseOptions, [\n 'redirectUri',\n 'responseType',\n 'state',\n 'nonce',\n 'timeout'\n ])\n .with(objectHelper.blacklist(options, ['popupHandler', 'connection']));\n\n options = this.transactionManager.process(options);\n this.crossOriginAuthentication.login(options, cb);\n};\n\n/**\n * Verifies the passwordless TOTP and redirects to finish the passwordless transaction\n *\n * @method passwordlessVerify\n * @param {Object} options\n * @param {String} options.type `sms` or `email`\n * @param {String} options.phoneNumber only if type = sms\n * @param {String} options.email only if type = email\n * @param {String} options.connection the connection name\n * @param {String} options.verificationCode the TOTP code\n * @param {Function} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.passwordlessVerify = function(options, cb) {\n var _this = this;\n return this.client.passwordless.verify(\n objectHelper.blacklist(options, ['popupHandler']),\n function(err) {\n if (err) {\n return cb(err);\n }\n\n options.username = options.phoneNumber || options.email;\n options.password = options.verificationCode;\n\n delete options.email;\n delete options.phoneNumber;\n delete options.verificationCode;\n delete options.type;\n\n _this.client.loginWithResourceOwner(options, cb);\n }\n );\n};\n\n/**\n * Signs up a new user and automatically logs the user in after the signup.\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link signupAndAuthorize}.\n *\n * @method signupAndLogin\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {credentialsCallback} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.signupAndLogin = function(options, cb) {\n var _this = this;\n\n return this.client.dbConnection.signup(options, function(err) {\n if (err) {\n return cb(err);\n }\n _this.loginWithCredentials(options, cb);\n });\n};\n\nexport default Popup;\n","import IframeHandler from '../helper/iframe-handler';\nimport windowHelper from '../helper/window';\n\nfunction SilentAuthenticationHandler(options) {\n this.authenticationUrl = options.authenticationUrl;\n this.timeout = options.timeout || 60 * 1000;\n this.handler = null;\n this.postMessageDataType = options.postMessageDataType || false;\n\n // prefer origin from options, fallback to origin from browser, and some browsers (for example MS Edge) don't support origin; fallback to construct origin manually\n this.postMessageOrigin =\n options.postMessageOrigin ||\n windowHelper.getWindow().location.origin ||\n windowHelper.getWindow().location.protocol +\n '//' +\n windowHelper.getWindow().location.hostname +\n (windowHelper.getWindow().location.port\n ? ':' + windowHelper.getWindow().location.port\n : '');\n}\n\nSilentAuthenticationHandler.create = function(options) {\n return new SilentAuthenticationHandler(options);\n};\n\nSilentAuthenticationHandler.prototype.login = function(\n usePostMessage,\n callback\n) {\n this.handler = new IframeHandler({\n auth0: this.auth0,\n url: this.authenticationUrl,\n eventListenerType: usePostMessage ? 'message' : 'load',\n callback: this.getCallbackHandler(callback, usePostMessage),\n timeout: this.timeout,\n eventValidator: this.getEventValidator(),\n timeoutCallback: function() {\n callback(\n null,\n '#error=timeout&error_description=Timeout+during+authentication+renew.'\n );\n },\n usePostMessage: usePostMessage || false\n });\n\n this.handler.init();\n};\n\nSilentAuthenticationHandler.prototype.getEventValidator = function() {\n var _this = this;\n return {\n isValid: function(eventData) {\n switch (eventData.event.type) {\n case 'message':\n // Message must come from the expected origin and iframe window.\n if (\n eventData.event.origin !== _this.postMessageOrigin ||\n eventData.event.source !== _this.handler.iframe.contentWindow\n ) {\n return false;\n }\n\n // Default behaviour, return all message events from the iframe.\n if (_this.postMessageDataType === false) {\n return true;\n }\n\n return (\n eventData.event.data.type &&\n eventData.event.data.type === _this.postMessageDataType\n );\n\n case 'load':\n if (\n eventData.sourceObject.contentWindow.location.protocol === 'about:'\n ) {\n // Chrome is automatically loading the about:blank page, we ignore this.\n return false;\n }\n // Fall through to default\n default:\n return true;\n }\n }\n };\n};\n\nSilentAuthenticationHandler.prototype.getCallbackHandler = function(\n callback,\n usePostMessage\n) {\n return function(eventData) {\n var callbackValue;\n if (!usePostMessage) {\n callbackValue = eventData.sourceObject.contentWindow.location.hash;\n } else if (\n typeof eventData.event.data === 'object' &&\n eventData.event.data.hash\n ) {\n callbackValue = eventData.event.data.hash;\n } else {\n callbackValue = eventData.event.data;\n }\n callback(null, callbackValue);\n };\n};\n\nexport default SilentAuthenticationHandler;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport RequestBuilder from '../helper/request-builder';\nimport responseHandler from '../helper/response-handler';\nimport windowHelper from '../helper/window';\nimport TransactionManager from './transaction-manager';\n\nfunction UsernamePassword(options) {\n this.baseOptions = options;\n this.request = new RequestBuilder(options);\n this.transactionManager = new TransactionManager(this.baseOptions);\n}\n\nUsernamePassword.prototype.login = function(options, cb) {\n var url;\n var body;\n\n url = urljoin(this.baseOptions.rootUrl, 'usernamepassword', 'login');\n\n options.username = options.username || options.email; // eslint-disable-line\n\n options = objectHelper.blacklist(options, ['email', 'onRedirecting']); // eslint-disable-line\n\n body = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'tenant',\n 'responseType',\n 'responseMode',\n 'scope',\n 'audience'\n ])\n .with(options);\n body = this.transactionManager.process(body);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\nUsernamePassword.prototype.callback = function(formHtml) {\n var div;\n var form;\n var _document = windowHelper.getDocument();\n\n div = _document.createElement('div');\n div.innerHTML = formHtml;\n form = _document.body.appendChild(div).children[0];\n\n form.submit();\n};\n\nexport default UsernamePassword;\n","import urljoin from 'url-join';\nimport qs from 'qs';\n\nimport UsernamePassword from './username-password';\nimport RequestBuilder from '../helper/request-builder';\nimport responseHandler from '../helper/response-handler';\nimport objectHelper from '../helper/object';\nimport windowHelper from '../helper/window';\nimport Warn from '../helper/warn';\nimport assert from '../helper/assert';\n\nfunction HostedPages(client, options) {\n this.baseOptions = options;\n this.client = client;\n this.baseOptions.universalLoginPage = true;\n this.request = new RequestBuilder(this.baseOptions);\n\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n}\n\n/**\n * @callback credentialsCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the AuthN request\n * @param {String} result.accessToken token that can be used with {@link userinfo}\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @ignore\n */\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n * @ignore\n */\n\n/**\n * Performs authentication with username/email and password with a database connection\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link login}.\n *\n * @method login\n * @param {Object} options\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used. It can be any of the values `code` and `token`\n * @param {String} [options.responseMode] how the AuthN response is encoded and redirected back to the client. Supported values are `query` and `fragment`\n * @param {String} [options.scope] scopes to be requested during AuthN. e.g. `openid email`\n * @param {onRedirectingCallback} [options.onRedirecting] Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {credentialsCallback} cb\n * @ignore\n */\nHostedPages.prototype.login = function(options, cb) {\n if (windowHelper.getWindow().location.host !== this.baseOptions.domain) {\n throw new Error(\n 'This method is meant to be used only inside the Universal Login Page.'\n );\n }\n\n var usernamePassword;\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'tenant',\n 'responseType',\n 'responseMode',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n usernamePassword = new UsernamePassword(this.baseOptions);\n\n return usernamePassword.login(params, function(err, data) {\n if (err) {\n return cb(err);\n }\n\n function doAuth() {\n usernamePassword.callback(data);\n }\n\n if (typeof options.onRedirecting === 'function') {\n return options.onRedirecting(function() {\n doAuth();\n });\n }\n\n doAuth();\n });\n};\n\n/**\n * Signs up a new user and automatically logs the user in after the signup.\n *\n * @method signupAndLogin\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {credentialsCallback} cb\n * @ignore\n */\nHostedPages.prototype.signupAndLogin = function(options, cb) {\n var _this = this;\n return _this.client.client.dbConnection.signup(options, function(err) {\n if (err) {\n return cb(err);\n }\n return _this.login(options, cb);\n });\n};\n\nHostedPages.prototype.getSSOData = function(withActiveDirectories, cb) {\n var url;\n var params = '';\n\n if (typeof withActiveDirectories === 'function') {\n cb = withActiveDirectories;\n withActiveDirectories = false;\n }\n\n assert.check(withActiveDirectories, {\n type: 'boolean',\n message: 'withActiveDirectories parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (withActiveDirectories) {\n params =\n '?' +\n qs.stringify({\n ldaps: 1,\n client_id: this.baseOptions.clientID\n });\n }\n\n url = urljoin(this.baseOptions.rootUrl, 'user', 'ssodata', params);\n\n return this.request\n .get(url, { noHeaders: true })\n .withCredentials()\n .end(responseHandler(cb));\n};\n\nexport default HostedPages;\n","// eslint-disable-next-line no-unused-vars\nimport Authentication from '../authentication';\nimport object from '../helper/object';\n\nvar noop = function () {};\nvar captchaSolved = noop;\n\nvar RECAPTCHA_V2_PROVIDER = 'recaptcha_v2';\nvar RECAPTCHA_ENTERPRISE_PROVIDER = 'recaptcha_enterprise';\nvar HCAPTCHA_PROVIDER = 'hcaptcha';\nvar FRIENDLY_CAPTCHA_PROVIDER = 'friendly_captcha';\nvar ARKOSE_PROVIDER = 'arkose';\nvar AUTH0_PROVIDER = 'auth0';\nvar AUTH0_V2_CAPTCHA_PROVIDER = 'auth0_v2';\nvar MAX_RETRY = 3;\n\nvar defaults = {\n lang: 'en',\n templates: {\n auth0: function (challenge) {\n var message =\n challenge.type === 'code'\n ? 'Enter the code shown above'\n : 'Solve the formula shown above';\n return (\n '
\\n' +\n ' \\n' +\n ' \\n' +\n '
\\n' +\n ''\n );\n },\n recaptcha_v2: function () {\n return '
';\n },\n recaptcha_enterprise: function () {\n return '
';\n },\n hcaptcha: function () {\n return '
';\n },\n friendly_captcha: function () {\n return '
';\n },\n arkose: function () {\n return '
';\n },\n auth0_v2: function () {\n return '
';\n },\n error: function () {\n return '
Error getting the bot detection challenge. Please contact the system administrator.
';\n }\n }\n};\n\nfunction handleAuth0Provider(element, options, challenge, load) {\n element.innerHTML = options.templates[challenge.provider](challenge);\n element\n .querySelector('.captcha-reload')\n .addEventListener('click', function (e) {\n e.preventDefault();\n load();\n });\n}\n\nfunction globalForCaptchaProvider(provider) {\n switch (provider) {\n case RECAPTCHA_V2_PROVIDER:\n return window.grecaptcha;\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n return window.grecaptcha.enterprise;\n case HCAPTCHA_PROVIDER:\n return window.hcaptcha;\n case FRIENDLY_CAPTCHA_PROVIDER:\n return window.friendlyChallenge;\n case ARKOSE_PROVIDER:\n return window.arkose;\n case AUTH0_V2_CAPTCHA_PROVIDER:\n return window.turnstile;\n /* istanbul ignore next */\n default:\n throw new Error('Unknown captcha provider');\n }\n}\n\nfunction scriptForCaptchaProvider(\n provider,\n lang,\n callback,\n clientSubdomain,\n siteKey\n) {\n switch (provider) {\n case RECAPTCHA_V2_PROVIDER:\n return (\n 'https://www.recaptcha.net/recaptcha/api.js?hl=' +\n lang +\n '&onload=' +\n callback\n );\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n return (\n 'https://www.recaptcha.net/recaptcha/enterprise.js?render=explicit&hl=' +\n lang +\n '&onload=' +\n callback\n );\n case HCAPTCHA_PROVIDER:\n return (\n 'https://js.hcaptcha.com/1/api.js?hl=' + lang + '&onload=' + callback\n );\n case FRIENDLY_CAPTCHA_PROVIDER:\n return 'https://cdn.jsdelivr.net/npm/friendly-challenge@0.9.12/widget.min.js';\n case ARKOSE_PROVIDER:\n return (\n 'https://' +\n clientSubdomain +\n '.arkoselabs.com/v2/' +\n siteKey +\n '/api.js'\n );\n case AUTH0_V2_CAPTCHA_PROVIDER:\n return (\n 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload=' +\n callback\n );\n /* istanbul ignore next */\n default:\n throw new Error('Unknown captcha provider');\n }\n}\n\nfunction loadScript(url, attributes) {\n var script = window.document.createElement('script');\n for (var attr in attributes) {\n if (attr.startsWith('data-')) {\n script.dataset[attr.replace('data-', '')] = attributes[attr];\n } else {\n script[attr] = attributes[attr];\n }\n }\n script.src = url;\n window.document.body.appendChild(script);\n}\n\nfunction removeScript(url) {\n var scripts = window.document.querySelectorAll('script[src=\"' + url + '\"]');\n scripts.forEach(function (script) {\n script.remove();\n });\n}\n\nfunction injectCaptchaScript(element, opts, callback, setValue) {\n var callbackName =\n opts.provider + 'Callback_' + Math.floor(Math.random() * 1000001);\n var attributes = {\n async: true,\n defer: true\n };\n var scriptSrc = scriptForCaptchaProvider(\n opts.provider,\n opts.lang,\n callbackName,\n opts.clientSubdomain,\n opts.siteKey\n );\n if (\n opts.provider === ARKOSE_PROVIDER ||\n opts.provider === AUTH0_V2_CAPTCHA_PROVIDER\n ) {\n var retryCount = 0;\n attributes['data-callback'] = callbackName;\n attributes['onerror'] = function () {\n if (retryCount < MAX_RETRY) {\n removeScript(scriptSrc);\n loadScript(scriptSrc, attributes);\n retryCount++;\n return;\n }\n removeScript(scriptSrc);\n // Optimzation to tell auth0 to fail open if Arkose/auth0_v2 is configured to fail open\n setValue('BYPASS_CAPTCHA');\n };\n window[callbackName] = function (arkose) {\n window.arkose = arkose;\n callback(arkose);\n };\n } else {\n window[callbackName] = function () {\n delete window[callbackName];\n callback();\n };\n if (opts.provider === FRIENDLY_CAPTCHA_PROVIDER) {\n attributes['onload'] = window[callbackName];\n }\n }\n loadScript(scriptSrc, attributes);\n}\n\nfunction handleCaptchaProvider(element, options, challenge) {\n var widgetId =\n element.hasAttribute('data-wid') && element.getAttribute('data-wid');\n\n function setValue(value) {\n var input = element.querySelector('input[name=\"captcha\"]');\n input.value = value || '';\n }\n\n if (\n challenge.provider === FRIENDLY_CAPTCHA_PROVIDER &&\n window.auth0FCInstance\n ) {\n setValue();\n window.auth0FCInstance.reset();\n return;\n } else if (\n challenge.provider === ARKOSE_PROVIDER &&\n globalForCaptchaProvider(challenge.provider)\n ) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset();\n return;\n } else if (widgetId) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset(widgetId);\n return;\n }\n\n element.innerHTML = options.templates[challenge.provider](challenge);\n\n var captchaClass;\n switch (challenge.provider) {\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n captchaClass = '.recaptcha';\n break;\n case RECAPTCHA_V2_PROVIDER:\n captchaClass = '.recaptcha';\n break;\n case HCAPTCHA_PROVIDER:\n captchaClass = '.hcaptcha';\n break;\n case FRIENDLY_CAPTCHA_PROVIDER:\n captchaClass = '.friendly-captcha';\n break;\n case ARKOSE_PROVIDER:\n captchaClass = '.arkose';\n break;\n case AUTH0_V2_CAPTCHA_PROVIDER:\n captchaClass = '.auth0_v2';\n break;\n }\n var captchaDiv = element.querySelector(captchaClass);\n\n injectCaptchaScript(\n element,\n {\n lang: options.lang,\n provider: challenge.provider,\n clientSubdomain: challenge.clientSubdomain,\n siteKey: challenge.siteKey\n },\n function (arkose) {\n var global = globalForCaptchaProvider(challenge.provider);\n if (challenge.provider === ARKOSE_PROVIDER) {\n var retryCount = 0;\n arkose.setConfig({\n onCompleted: function (response) {\n setValue(response.token);\n captchaSolved();\n },\n onError: function () {\n if (retryCount < MAX_RETRY) {\n setValue();\n arkose.reset();\n // To ensure reset is successful, we need to set a timeout here\n setTimeout(function () {\n arkose.run();\n }, 500);\n retryCount++;\n } else {\n // Optimzation to tell auth0 to fail open if Arkose is configured to fail open\n setValue('BYPASS_CAPTCHA');\n }\n }\n });\n } else if (challenge.provider === FRIENDLY_CAPTCHA_PROVIDER) {\n window.auth0FCInstance = new global.WidgetInstance(captchaDiv, {\n sitekey: challenge.siteKey,\n language: options.lang,\n doneCallback: function (solution) {\n setValue(solution);\n },\n errorCallback: function () {\n setValue();\n }\n });\n } else {\n var renderParams = {\n callback: setValue,\n 'expired-callback': function () {\n setValue();\n },\n 'error-callback': function () {\n setValue();\n },\n sitekey: challenge.siteKey\n };\n\n if (challenge.provider === AUTH0_V2_CAPTCHA_PROVIDER) {\n retryCount = 0;\n renderParams.language = options.lang;\n renderParams.theme = 'light';\n renderParams.retry = 'never';\n renderParams['response-field'] = false;\n renderParams['error-callback'] = function () {\n if (retryCount < MAX_RETRY) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset(widgetId);\n retryCount++;\n } else {\n setValue('BYPASS_CAPTCHA');\n }\n return true;\n };\n }\n widgetId = global.render(captchaDiv, renderParams);\n element.setAttribute('data-wid', widgetId);\n }\n },\n setValue\n );\n}\n\n/**\n *\n * Renders the captcha challenge in the provided element.\n *\n * @param {Authentication} auth0Client The challenge response from the authentication server\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for recaptcha\n * @param {Function} [callback] An optional callback called after captcha is loaded\n * @ignore\n */\nfunction render(auth0Client, element, options, callback) {\n options = object.merge(defaults).with(options || {});\n function load(done) {\n done = done || noop;\n auth0Client.getChallenge(function (err, challenge) {\n if (err) {\n element.innerHTML = options.templates.error(err);\n return done(err);\n }\n if (!challenge.required) {\n element.style.display = 'none';\n element.innerHTML = '';\n return;\n }\n element.style.display = '';\n if (challenge.provider === AUTH0_PROVIDER) {\n handleAuth0Provider(element, options, challenge, load);\n } else if (\n challenge.provider === RECAPTCHA_V2_PROVIDER ||\n challenge.provider === RECAPTCHA_ENTERPRISE_PROVIDER ||\n challenge.provider === HCAPTCHA_PROVIDER ||\n challenge.provider === FRIENDLY_CAPTCHA_PROVIDER ||\n challenge.provider === ARKOSE_PROVIDER ||\n challenge.provider === AUTH0_V2_CAPTCHA_PROVIDER\n ) {\n handleCaptchaProvider(element, options, challenge);\n }\n if (challenge.provider === ARKOSE_PROVIDER) {\n done(null, {\n triggerCaptcha: function (solvedCallback) {\n globalForCaptchaProvider(challenge.provider).run();\n captchaSolved = solvedCallback;\n }\n });\n } else {\n done();\n }\n });\n }\n\n function getValue() {\n var captchaInput = element.querySelector('input[name=\"captcha\"]');\n if (!captchaInput) {\n return;\n }\n return captchaInput.value;\n }\n\n load(callback);\n\n return {\n reload: load,\n getValue: getValue\n };\n}\n\n/**\n *\n * Renders the passwordless captcha challenge in the provided element.\n *\n * @param {Authentication} auth0Client The challenge response from the authentication server\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for recaptcha\n * @param {Function} [callback] An optional callback called after captcha is loaded\n * @ignore\n */\nfunction renderPasswordless(auth0Client, element, options, callback) {\n options = object.merge(defaults).with(options || {});\n function load(done) {\n done = done || noop;\n auth0Client.passwordless.getChallenge(function (err, challenge) {\n if (err) {\n element.innerHTML = options.templates.error(err);\n return done(err);\n }\n if (!challenge.required) {\n element.style.display = 'none';\n element.innerHTML = '';\n return;\n }\n element.style.display = '';\n if (challenge.provider === AUTH0_PROVIDER) {\n handleAuth0Provider(element, options, challenge, load);\n } else if (\n challenge.provider === RECAPTCHA_V2_PROVIDER ||\n challenge.provider === RECAPTCHA_ENTERPRISE_PROVIDER ||\n challenge.provider === HCAPTCHA_PROVIDER ||\n challenge.provider === FRIENDLY_CAPTCHA_PROVIDER ||\n challenge.provider === ARKOSE_PROVIDER ||\n challenge.provider === AUTH0_V2_CAPTCHA_PROVIDER\n ) {\n handleCaptchaProvider(element, options, challenge);\n }\n if (challenge.provider === ARKOSE_PROVIDER) {\n done(null, {\n triggerCaptcha: function (solvedCallback) {\n globalForCaptchaProvider(challenge.provider).run();\n captchaSolved = solvedCallback;\n }\n });\n } else {\n done();\n }\n });\n }\n\n function getValue() {\n var captchaInput = element.querySelector('input[name=\"captcha\"]');\n if (!captchaInput) {\n return;\n }\n return captchaInput.value;\n }\n\n load(callback);\n\n return {\n reload: load,\n getValue: getValue\n };\n}\n\nexport default { render: render, renderPasswordless: renderPasswordless };\n","import IdTokenVerifier from 'idtoken-verifier';\nimport qs from 'qs';\n\nimport assert from '../helper/assert';\nimport error from '../helper/error';\nimport PluginHandler from '../helper/plugins';\nimport windowHelper from '../helper/window';\nimport objectHelper from '../helper/object';\nimport SSODataStorage from '../helper/ssodata';\nimport responseHandler from '../helper/response-handler';\nimport TransactionManager from './transaction-manager';\nimport Authentication from '../authentication';\nimport Redirect from './redirect';\nimport Popup from './popup';\nimport SilentAuthenticationHandler from './silent-authentication-handler';\nimport CrossOriginAuthentication from './cross-origin-authentication';\nimport WebMessageHandler from './web-message-handler';\nimport HostedPages from './hosted-pages';\nimport captcha from './captcha';\n\nfunction defaultClock() {\n return new Date();\n}\n\n/**\n * Handles all the browser's AuthN/AuthZ flows\n * @constructor\n * @param {Object} options\n * @param {String} options.domain your Auth0 domain\n * @param {String} options.clientID the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {Number} [options.leeway] number of seconds to account for clock skew when validating time-based claims in ID tokens. Defaults to 60 seconds.\n * @param {Number} [options.maxAge] maximum elapsed time in seconds since the last time the user was actively authenticated by the authorization server.\n * @param {Number} [options.stateExpiration] number of minutes for the stored state to be kept. Defaults to 30 minutes.\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Array} [options.plugins]\n * @param {Boolean} [options.legacySameSiteCookie] set this to `false` to disable the legacy compatibility cookie that is created for older browsers that don't support the SameSite attribute (defaults to `true`)\n * @param {String} [options.cookieDomain] The domain the cookie is accessible from. If not set, the cookie is scoped to the current domain, including the subdomain. To keep a user logged in across multiple subdomains set this to your top-level domain and prefixed with a `.` (eg: `.example.com`).\n * @param {Number} [options._timesToRetryFailedRequests] Number of times to retry a failed request, according to {@link https://github.com/visionmedia/superagent/blob/master/lib/request-base.js}\n * @see {@link https://auth0.com/docs/api/authentication}\n */\nfunction WebAuth(options) {\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n clientID: { type: 'string', message: 'clientID option is required' },\n responseType: {\n optional: true,\n type: 'string',\n message: 'responseType is not valid'\n },\n responseMode: {\n optional: true,\n type: 'string',\n message: 'responseMode is not valid'\n },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri is not valid'\n },\n scope: { optional: true, type: 'string', message: 'scope is not valid' },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience is not valid'\n },\n popupOrigin: {\n optional: true,\n type: 'string',\n message: 'popupOrigin is not valid'\n },\n leeway: {\n optional: true,\n type: 'number',\n message: 'leeway is not valid'\n },\n plugins: {\n optional: true,\n type: 'array',\n message: 'plugins is not valid'\n },\n maxAge: {\n optional: true,\n type: 'number',\n message: 'maxAge is not valid'\n },\n stateExpiration: {\n optional: true,\n type: 'number',\n message: 'stateExpiration is not valid'\n },\n legacySameSiteCookie: {\n optional: true,\n type: 'boolean',\n message: 'legacySameSiteCookie option is not valid'\n },\n _disableDeprecationWarnings: {\n optional: true,\n type: 'boolean',\n message: '_disableDeprecationWarnings option is not valid'\n },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n },\n _timesToRetryFailedRequests: {\n optional: true,\n type: 'number',\n message: '_timesToRetryFailedRequests option is not valid'\n }\n }\n );\n\n if (options.overrides) {\n assert.check(\n options.overrides,\n { type: 'object', message: 'overrides option is not valid' },\n {\n __tenant: {\n optional: true,\n type: 'string',\n message: '__tenant option is required'\n },\n __token_issuer: {\n optional: true,\n type: 'string',\n message: '__token_issuer option is required'\n },\n __jwks_uri: {\n optional: true,\n type: 'string',\n message: '__jwks_uri is required'\n }\n }\n );\n }\n /* eslint-enable */\n\n this.baseOptions = options;\n this.baseOptions.plugins = new PluginHandler(\n this,\n this.baseOptions.plugins || []\n );\n\n this.baseOptions._sendTelemetry =\n this.baseOptions._sendTelemetry === false\n ? this.baseOptions._sendTelemetry\n : true;\n\n this.baseOptions._timesToRetryFailedRequests =\n options._timesToRetryFailedRequests\n ? parseInt(options._timesToRetryFailedRequests)\n : 0;\n\n this.baseOptions.tenant =\n (this.baseOptions.overrides && this.baseOptions.overrides.__tenant) ||\n this.baseOptions.domain.split('.')[0];\n\n this.baseOptions.token_issuer =\n (this.baseOptions.overrides && this.baseOptions.overrides.__token_issuer) ||\n 'https://' + this.baseOptions.domain + '/';\n\n this.baseOptions.jwksURI =\n this.baseOptions.overrides && this.baseOptions.overrides.__jwks_uri;\n\n if (options.legacySameSiteCookie !== false) {\n this.baseOptions.legacySameSiteCookie = true;\n }\n\n this.transactionManager = new TransactionManager(this.baseOptions);\n\n this.client = new Authentication(this.baseOptions);\n\n /** @member {Redirect} */\n this.redirect = new Redirect(this, this.baseOptions);\n\n /** @member {Popup} */\n this.popup = new Popup(this, this.baseOptions);\n\n this.crossOriginAuthentication = new CrossOriginAuthentication(\n this,\n this.baseOptions\n );\n\n this.webMessageHandler = new WebMessageHandler(this);\n this._universalLogin = new HostedPages(this, this.baseOptions);\n this.ssodataStorage = new SSODataStorage(this.baseOptions);\n}\n\n/**\n * Parse the url hash and extract the Auth response from a Auth flow started with {@link authorize}\n *\n * Only validates id_tokens signed by Auth0 using the RS256 algorithm using the public key exposed\n * by the `/.well-known/jwks.json` endpoint of your account.\n * Tokens signed with the HS256 algorithm cannot be properly validated.\n * Instead, a call to {@link userInfo} will be made with the parsed `access_token`.\n * If the {@link userInfo} call fails, the {@link userInfo} error will be passed to the callback.\n * Tokens signed with other algorithms will not be accepted.\n *\n * @example\n * auth0.parseHash({ hash: window.location.hash }, function(err, authResult) {\n * if (err) {\n * return console.log(err);\n * }\n\n * // The contents of authResult depend on which authentication parameters were used.\n * // It can include the following:\n * // authResult.accessToken - access token for the API specified by `audience`\n * // authResult.expiresIn - string with the access token's expiration time in seconds\n * // authResult.idToken - ID token JWT containing user profile information\n\n * auth0.client.userInfo(authResult.accessToken, function(err, user) {\n * // Now you have the user's information\n * });\n *});\n * @method parseHash\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `token`, `id_token`. For this specific method, we'll only use this value to check if the hash contains the tokens requested in the responseType.\n * @param {authorizeCallback} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.parseHash = function (options, cb) {\n var parsedQs;\n var err;\n\n if (!cb && typeof options === 'function') {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n\n var hashStr =\n options.hash === undefined\n ? windowHelper.getWindow().location.hash\n : options.hash;\n hashStr = hashStr.replace(/^#?\\/?/, '');\n\n parsedQs = qs.parse(hashStr);\n\n if (parsedQs.hasOwnProperty('error')) {\n err = error.buildResponse(parsedQs.error, parsedQs.error_description);\n\n if (parsedQs.state) {\n err.state = parsedQs.state;\n }\n\n return cb(err);\n }\n\n if (\n !parsedQs.hasOwnProperty('access_token') &&\n !parsedQs.hasOwnProperty('id_token') &&\n !parsedQs.hasOwnProperty('refresh_token')\n ) {\n return cb(null, null);\n }\n var responseTypes = (\n this.baseOptions.responseType ||\n options.responseType ||\n ''\n ).split(' ');\n if (\n responseTypes.length > 0 &&\n responseTypes.indexOf('token') !== -1 &&\n !parsedQs.hasOwnProperty('access_token')\n ) {\n return cb(\n error.buildResponse(\n 'invalid_hash',\n 'response_type contains `token`, but the parsed hash does not contain an `access_token` property'\n )\n );\n }\n if (\n responseTypes.length > 0 &&\n responseTypes.indexOf('id_token') !== -1 &&\n !parsedQs.hasOwnProperty('id_token')\n ) {\n return cb(\n error.buildResponse(\n 'invalid_hash',\n 'response_type contains `id_token`, but the parsed hash does not contain an `id_token` property'\n )\n );\n }\n return this.validateAuthenticationResponse(options, parsedQs, cb);\n};\n\n/**\n * Validates an Auth response from a Auth flow started with {@link authorize}\n *\n * Only validates id_tokens signed by Auth0 using the RS256 algorithm using the public key exposed\n * by the `/.well-known/jwks.json` endpoint of your account.\n * Tokens signed with the HS256 algorithm cannot be properly validated.\n * Instead, a call to {@link userInfo} will be made with the parsed `access_token`.\n * If the {@link userInfo} call fails, the {@link userInfo} error will be passed to the callback.\n * Tokens signed with other algorithms will not be accepted.\n *\n * @method validateAuthenticationResponse\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @param {Object} parsedHash an object that represents the parsed hash\n * @param {authorizeCallback} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.validateAuthenticationResponse = function (\n options,\n parsedHash,\n cb\n) {\n var _this = this;\n\n options.__enableIdPInitiatedLogin =\n options.__enableIdPInitiatedLogin || options.__enableImpersonation;\n\n var state = parsedHash.state;\n var transaction = this.transactionManager.getStoredTransaction(state);\n\n var transactionState =\n options.state || (transaction && transaction.state) || null;\n\n var transactionStateMatchesState = transactionState === state;\n\n var shouldBypassStateChecking =\n !state && !transactionState && options.__enableIdPInitiatedLogin;\n\n if (!shouldBypassStateChecking && !transactionStateMatchesState) {\n return cb({\n error: 'invalid_token',\n errorDescription: '`state` does not match.'\n });\n }\n\n var transactionNonce =\n options.nonce || (transaction && transaction.nonce) || null;\n\n var transactionOrganization = transaction && transaction.organization;\n var appState = options.state || (transaction && transaction.appState) || null;\n\n var callback = function (err, payload) {\n if (err) {\n return cb(err);\n }\n\n if (transaction && transaction.lastUsedConnection) {\n var sub;\n\n if (payload) {\n sub = payload.sub;\n }\n\n _this.ssodataStorage.set(transaction.lastUsedConnection, sub);\n }\n\n return cb(null, buildParseHashResponse(parsedHash, appState, payload));\n };\n\n if (!parsedHash.id_token) {\n return callback(null, null);\n }\n\n return this.validateToken(\n parsedHash.id_token,\n transactionNonce,\n function (validationError, payload) {\n if (!validationError) {\n // Verify the organization\n if (transactionOrganization) {\n if (transactionOrganization.indexOf('org_') === 0) {\n if (!payload.org_id) {\n return callback(\n error.invalidToken(\n 'Organization Id (org_id) claim must be a string present in the ID token'\n )\n );\n }\n\n if (payload.org_id !== transactionOrganization) {\n return callback(\n error.invalidToken(\n 'Organization Id (org_id) claim value mismatch in the ID token; expected \"' +\n transactionOrganization +\n '\", found \"' +\n payload.org_id +\n '\"'\n )\n );\n }\n } else {\n if (!payload.org_name) {\n return callback(\n error.invalidToken(\n 'Organization Name (org_name) claim must be a string present in the ID token'\n )\n );\n }\n\n if (payload.org_name !== transactionOrganization.toLowerCase()) {\n return callback(\n error.invalidToken(\n 'Organization Name (org_name) claim value mismatch in the ID token; expected \"' +\n transactionOrganization +\n '\", found \"' +\n payload.org_name +\n '\"'\n )\n );\n }\n }\n }\n\n if (!parsedHash.access_token) {\n return callback(null, payload);\n }\n\n // id_token's generated by non-oidc applications don't have at_hash\n if (!payload.at_hash) {\n return callback(null, payload);\n }\n\n // here we're absolutely sure that the id_token's alg is RS256\n // and that the id_token is valid, so we can check the access_token\n return new IdTokenVerifier().validateAccessToken(\n parsedHash.access_token,\n 'RS256',\n payload.at_hash,\n function (err) {\n if (err) {\n return callback(error.invalidToken(err.message));\n }\n return callback(null, payload);\n }\n );\n }\n\n if (\n validationError.error !== 'invalid_token' ||\n (validationError.errorDescription &&\n validationError.errorDescription.indexOf(\n 'Nonce (nonce) claim value mismatch in the ID token'\n ) > -1)\n ) {\n return callback(validationError);\n }\n\n // if it's an invalid_token error, decode the token\n var decodedToken = new IdTokenVerifier().decode(parsedHash.id_token);\n\n // if the alg is not HS256, return the raw error\n if (decodedToken.header.alg !== 'HS256') {\n return callback(validationError);\n }\n\n if ((decodedToken.payload.nonce || null) !== transactionNonce) {\n return callback({\n error: 'invalid_token',\n errorDescription:\n 'Nonce (nonce) claim value mismatch in the ID token; expected \"' +\n transactionNonce +\n '\", found \"' +\n decodedToken.payload.nonce +\n '\"'\n });\n }\n\n if (!parsedHash.access_token) {\n var noAccessTokenError = {\n error: 'invalid_token',\n description:\n 'The id_token cannot be validated because it was signed with the HS256 algorithm and public clients (like a browser) can’t store secrets. Please read the associated doc for possible ways to fix this. Read more: https://auth0.com/docs/errors/libraries/auth0-js/invalid-token#parsing-an-hs256-signed-id-token-without-an-access-token'\n };\n return callback(noAccessTokenError);\n }\n\n // if the alg is HS256, use the /userinfo endpoint to build the payload\n return _this.client.userInfo(\n parsedHash.access_token,\n function (errUserInfo, profile) {\n // if the /userinfo request fails, use the validationError instead\n if (errUserInfo) {\n return callback(errUserInfo);\n }\n return callback(null, profile);\n }\n );\n }\n );\n};\n\nfunction buildParseHashResponse(qsParams, appState, token) {\n return {\n accessToken: qsParams.access_token || null,\n idToken: qsParams.id_token || null,\n idTokenPayload: token || null,\n appState: appState || null,\n refreshToken: qsParams.refresh_token || null,\n state: qsParams.state || null,\n expiresIn: qsParams.expires_in ? parseInt(qsParams.expires_in, 10) : null,\n tokenType: qsParams.token_type || null,\n scope: qsParams.scope || null\n };\n}\n\n/**\n * @callback validateTokenCallback\n * @param {Error} [err] error returned by while validating the token\n * @param {Object} [payload] claims stored in the token\n */\n\n/**\n * Decodes the a JWT and verifies its nonce value\n *\n * @method validateToken\n * @private\n * @param {String} token\n * @param {String} nonce\n * @param {validateTokenCallback} cb\n */\nWebAuth.prototype.validateToken = function (token, nonce, cb) {\n var verifier = new IdTokenVerifier({\n issuer: this.baseOptions.token_issuer,\n jwksURI: this.baseOptions.jwksURI,\n audience: this.baseOptions.clientID,\n leeway: this.baseOptions.leeway || 60,\n maxAge: this.baseOptions.maxAge,\n __clock: this.baseOptions.__clock || defaultClock\n });\n\n verifier.verify(token, nonce, function (err, payload) {\n if (err) {\n return cb(error.invalidToken(err.message));\n }\n\n cb(null, payload);\n });\n};\n\n/**\n * Executes a silent authentication transaction under the hood in order to fetch a new tokens for the current session.\n * This method requires that all Auth is performed with {@link authorize}\n * Watch out! If you're not using the hosted login page to do social logins, you have to use your own [social connection keys](https://manage.auth0.com/#/connections/social). If you use Auth0's dev keys, you'll always get `login_required` as an error when calling this method.\n *\n * @method renewAuth\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.postMessageDataType] identifier data type to look for in postMessage event data, where events are initiated from silent callback urls, before accepting a message event is the event expected. A value of false means any postMessage event will trigger a callback.\n * @param {String} [options.postMessageOrigin] origin of redirectUri to expect postMessage response from. Defaults to the origin of the receiving window. Only used if usePostMessage is truthy.\n * @param {String} [options.timeout] value in milliseconds used to timeout when the `/authorize` call is failing as part of the silent authentication with postmessage enabled due to a configuration.\n * @param {Boolean} [options.usePostMessage] use postMessage to comunicate between the silent callback and the SPA. When false the SDK will attempt to parse the url hash should ignore the url hash and no extra behaviour is needed\n * @param {authorizeCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renewAuth = function (options, cb) {\n var handler;\n var usePostMessage = !!options.usePostMessage;\n var postMessageDataType = options.postMessageDataType || false;\n var postMessageOrigin =\n options.postMessageOrigin || windowHelper.getWindow().origin;\n var timeout = options.timeout;\n var _this = this;\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'responseType',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n params.responseType = params.responseType || 'token';\n params.responseMode = params.responseMode || 'fragment';\n params = this.transactionManager.process(params);\n\n assert.check(params, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n params.prompt = 'none';\n\n params = objectHelper.blacklist(params, [\n 'usePostMessage',\n 'tenant',\n 'postMessageDataType',\n 'postMessageOrigin'\n ]);\n\n handler = SilentAuthenticationHandler.create({\n authenticationUrl: this.client.buildAuthorizeUrl(params),\n postMessageDataType: postMessageDataType,\n postMessageOrigin: postMessageOrigin,\n timeout: timeout\n });\n\n handler.login(usePostMessage, function (err, hash) {\n if (typeof hash === 'object') {\n // hash was already parsed, so we just return it.\n // it's here to be backwards compatible and should be removed in the next major version.\n return cb(err, hash);\n }\n _this.parseHash({ hash: hash }, cb);\n });\n};\n\n/**\n * Renews an existing session on Auth0's servers using `response_mode=web_message`\n *\n * Allows you to acquire a new token from Auth0 for a user who already\n * has an SSO session established against Auth0 for your domain. \n * If the user is not authenticated, the authentication result will be empty \n * and you'll receive an error like this: `{error: 'login_required'}`.\n * The method accepts any valid OAuth2 parameters that would normally be sent to `/authorize`.\n * \n * Everything happens inside an iframe, so it will not reload your application or redirect away from it.\n * \n * **Important:** If you're not using the hosted login page to do social logins, \n * you have to use your own [social connection keys](https://manage.auth0.com/#/connections/social). \n * If you use Auth0's dev keys, you'll always get `login_required` as an error when calling `checkSession`.\n *\n * **Important:** Because there is no redirect in this method, `responseType: 'code'` is not supported and will throw an error.\n\n * Remember to add the URL where the authorization request originates from to the Allowed Web Origins list of your Auth0 Application in the [Dashboard](https://manage.auth0.com/) under your Applications's **Settings**.\n * @example\n * auth0.checkSession({\n * audience: 'https://mystore.com/api/v2',\n * scope: 'read:order write:order'\n * },\n * function(err, authResult) {\n * // Authentication tokens or error\n * });\n * \n * @method checkSession\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.timeout] value in milliseconds used to timeout when the `/authorize` call is failing as part of the silent authentication with postmessage enabled due to a configuration.\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {checkSessionCallback} cb\n * @see {@link https://auth0.com/docs/libraries/auth0js/v9#using-checksession-to-acquire-new-tokens}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.checkSession = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n if (params.responseType === 'code') {\n return cb({\n error: 'error',\n error_description: \"responseType can't be `code`\"\n });\n }\n\n if (!options.nonce) {\n params = this.transactionManager.process(params);\n }\n\n if (!params.redirectUri) {\n return cb({\n error: 'error',\n error_description: \"redirectUri can't be empty\"\n });\n }\n\n assert.check(params, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n params = objectHelper.blacklist(params, [\n 'usePostMessage',\n 'tenant',\n 'postMessageDataType'\n ]);\n this.webMessageHandler.run(\n params,\n responseHandler(cb, { forceLegacyError: true, ignoreCasing: true })\n );\n};\n\n/**\n * Request an email with instruction to change a user's password\n *\n * @method changePassword\n * @param {Object} options\n * @param {String} options.email address where the user will receive the change password email. It should match the user's email in Auth0\n * @param {String} options.connection name of the connection where the user was created\n * @param {changePasswordCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#change-password}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.changePassword = function (options, cb) {\n return this.client.dbConnection.changePassword(options, cb);\n};\n\n/**\n * Starts a passwordless authentication transaction.\n *\n * @method passwordlessStart\n * @param {Object} options\n * @param {String} options.send what will be sent via email which could be `link` or `code`. For SMS `code` is the only one valid\n * @param {String} [options.phoneNumber] phone number where to send the `code`. This parameter is mutually exclusive with `email`\n * @param {String} [options.email] email where to send the `code` or `link`. This parameter is mutually exclusive with `phoneNumber`\n * @param {String} [options.captcha] the attempted solution for the captcha, if one was presented\n * @param {String} options.connection name of the passwordless connection\n * @param {Object} [options.authParams] additional Auth parameters when using `link`\n * @param {Object} [options.xRequestLanguage] value for the X-Request-Language header. If not set, the language is detected using the client browser.\n * @param {Function} cb\n * @see {@link https://auth0.com/docs/api/authentication#passwordless}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessStart = function (options, cb) {\n var authParams = objectHelper\n .merge(this.baseOptions, [\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options.authParams);\n\n options.authParams = this.transactionManager.process(authParams);\n return this.client.passwordless.start(options, cb);\n};\n\n/**\n * Creates a new user in a Auth0 Database connection\n *\n * @method signup\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {String} [options.given_name] The user's given name(s).\n * @param {String} [options.family_name] The user's family name(s).\n * @param {String} [options.name] The user's full name.\n * @param {String} [options.nickname] The user's nickname.\n * @param {String} [options.picture] A URI pointing to the user's picture.\n * @param {signUpCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.signup = function (options, cb) {\n return this.client.dbConnection.signup(options, cb);\n};\n\n/**\n * Redirects to the hosted login page (`/authorize`) in order to start a new authN/authZ transaction.\n * After that, you'll have to use the {@link parseHash} function at the specified `redirectUri`.\n *\n * @example\n * auth0.authorize({\n * audience: 'https://mystore.com/api/v2',\n * scope: 'read:order write:order',\n * responseType: 'token',\n * redirectUri: 'https://example.com/auth/callback'\n *});\n * @method authorize\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`. Defaults to `openid profile email`.\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Object} [options.appState] any values that you want back on the authentication response\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.authorize = function (options) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'organization',\n 'invitation'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n params = this.transactionManager.process(params);\n params.scope = params.scope || 'openid profile email';\n\n windowHelper.redirect(this.client.buildAuthorizeUrl(params));\n};\n\n/**\n * Signs up a new user, automatically logs the user in after the signup and returns the user token.\n * The login will be done using /oauth/token with password-realm grant type.\n *\n * @method signupAndAuthorize\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {tokenCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @see {@link https://auth0.com/docs/api-auth/grant/password}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.signupAndAuthorize = function (options, cb) {\n var _this = this;\n\n return this.client.dbConnection.signup(\n objectHelper.blacklist(options, ['popupHandler']),\n function (err) {\n if (err) {\n return cb(err);\n }\n options.realm = options.connection;\n if (!options.username) {\n options.username = options.email;\n }\n _this.client.login(options, cb);\n }\n );\n};\n\n/**\n * @callback crossOriginLoginCallback\n * @param {Error} [err] Authentication error returned by Auth0 with the reason why the request failed\n */\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Logs the user in with username and password using the correct flow based on where it's called from:\n * - If you're calling this method from the Universal Login Page, it will use the usernamepassword/login endpoint\n * - If you're calling this method outside the Universal Login Page, it will use the cross origin authentication (/co/authenticate) flow\n * You can use either `username` or `email` to identify the user, but `username` will take precedence over `email`.\n * After the redirect to `redirectUri`, use {@link parseHash} to retrieve the authentication data.\n * **Notice that when using the cross origin authentication flow, some browsers might not be able to successfully authenticate if 3rd party cookies are disabled. [See here for more information.]{@link https://auth0.com/docs/cross-origin-authentication}.**\n *\n * @method login\n * @see Requires [`Implicit` grant]{@link https://auth0.com/docs/api-auth/grant/implicit}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} [options.username] Username (mutually exclusive with email)\n * @param {String} [options.email] Email (mutually exclusive with username)\n * @param {String} [options.password] Password\n * @param {String} [options.realm] Realm used to authenticate the user, it can be a realm name or a database connection name\n * @param {String} [options.captcha] the attempted solution for the captcha, if one was presented\n * @param {onRedirectingCallback} [options.onRedirecting] Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.login = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting',\n 'organization',\n 'invitation'\n ])\n .with(options);\n\n params = this.transactionManager.process(params);\n\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n\n if (isHostedLoginPage) {\n params.connection = params.realm;\n delete params.realm;\n this._universalLogin.login(params, cb);\n } else {\n this.crossOriginAuthentication.login(params, cb);\n }\n};\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Logs in the user by verifying the verification code (OTP) using the cross origin authentication (/co/authenticate) flow. You can use either `phoneNumber` or `email` to identify the user.\n * This only works when 3rd party cookies are enabled in the browser. After the /co/authenticate call, you'll have to use the {@link parseHash} function at the `redirectUri` specified in the constructor.\n *\n * @method passwordlessLogin\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} options.phoneNumber Phone Number (mutually exclusive with email)\n * @param {String} options.email Email (mutually exclusive with username)\n * @param {String} options.verificationCode Verification Code (OTP)\n * @param {String} options.connection Passwordless connection to use. It can either be 'sms' or 'email'.\n * @param {onRedirectingCallback} options.onRedirecting Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessLogin = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting'\n ])\n .with(options);\n\n params = this.transactionManager.process(params);\n\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n\n if (isHostedLoginPage) {\n this.passwordlessVerify(params, cb);\n } else {\n var crossOriginOptions = objectHelper.extend(\n {\n credentialType: 'http://auth0.com/oauth/grant-type/passwordless/otp',\n realm: params.connection,\n username: params.email || params.phoneNumber,\n otp: params.verificationCode\n },\n objectHelper.blacklist(params, [\n 'connection',\n 'email',\n 'phoneNumber',\n 'verificationCode'\n ])\n );\n\n this.crossOriginAuthentication.login(crossOriginOptions, cb);\n }\n};\n\n/**\n * Runs the callback code for the cross origin authentication call. This method is meant to be called by the cross origin authentication callback url.\n *\n * @method crossOriginAuthenticationCallback\n * @deprecated Use {@link crossOriginVerification} instead.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.crossOriginAuthenticationCallback = function () {\n this.crossOriginVerification();\n};\n\n/**\n * Runs the callback code for the cross origin authentication call. This method is meant to be called by the cross origin authentication callback url.\n *\n * @method crossOriginVerification\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.crossOriginVerification = function () {\n this.crossOriginAuthentication.callback();\n};\n\n/**\n * Redirects to the auth0 logout endpoint\n *\n * If you want to navigate the user to a specific URL after the logout, set that URL at the returnTo parameter. The URL should be included in any the appropriate Allowed Logout URLs list:\n *\n * - If the client_id parameter is included, the returnTo URL must be listed in the Allowed Logout URLs set at the Auth0 Application level (see Setting Allowed Logout URLs at the App Level).\n * - If the client_id parameter is NOT included, the returnTo URL must be listed in the Allowed Logout URLs set at the account level (see Setting Allowed Logout URLs at the Account Level).\n *\n * @method logout\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.returnTo] URL to be redirected after the logout\n * @param {Boolean} [options.federated] tells Auth0 if it should logout the user also from the IdP.\n * @see {@link https://auth0.com/docs/api/authentication#logout}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.logout = function (options) {\n windowHelper.redirect(this.client.buildLogoutUrl(options));\n};\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Verifies the passwordless TOTP and redirects to finish the passwordless transaction\n *\n * @method passwordlessVerify\n * @param {Object} options\n * @param {String} options.type `sms` or `email`\n * @param {String} options.phoneNumber only if type = sms\n * @param {String} options.email only if type = email\n * @param {String} options.connection the connection name\n * @param {String} options.verificationCode the TOTP code\n * @param {String} options.clientID the client ID\n * @param {onRedirectingCallback} options.onRedirecting Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {Function} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessVerify = function (options, cb) {\n var _this = this;\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n params = this.transactionManager.process(params);\n\n return this.client.passwordless.verify(params, function (err) {\n if (err) {\n return cb(err);\n }\n\n function doAuth() {\n windowHelper.redirect(_this.client.passwordless.buildVerifyUrl(params));\n }\n\n if (typeof options.onRedirecting === 'function') {\n return options.onRedirecting(function () {\n doAuth();\n });\n }\n\n doAuth();\n });\n};\n\n/**\n * @callback captchaLoadedCallback\n * @param {Error} [error] Error returned if request to get captcha challenge fails\n * @param {Object} [payload] An object containing a callback to trigger the captcha (only if Arkose is the provider)\n * @param {Function} [payload.triggerCaptcha] Triggers the captcha with the first parameter as a callback to be fired after it's solved\n */\n\n/**\n *\n * Renders the captcha challenge in the provided element.\n * This function can only be used in the context of a Classic Universal Login Page.\n *\n * @method renderCaptcha\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for the captcha provider\n * @param {captchaLoadedCallback} [callback] An optional callback called after captcha is loaded\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renderCaptcha = function (element, options, callback) {\n return captcha.render(this.client, element, options, callback);\n};\n\n/**\n *\n * Renders the passwordless captcha challenge in the provided element.\n * This function can only be used in the context of a Classic Universal Login Page.\n *\n * @method renderPasswordlessCaptcha\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for the captcha provider\n * @param {captchaLoadedCallback} [callback] An optional callback called after captcha is loaded\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renderPasswordlessCaptcha = function (\n element,\n options,\n callback\n) {\n return captcha.renderPasswordless(this.client, element, options, callback);\n};\n\nexport default WebAuth;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport qs from 'qs';\nimport responseHandler from '../helper/response-handler';\n\nfunction PasswordlessAuthentication(request, options) {\n this.baseOptions = options;\n this.request = request;\n}\n\nPasswordlessAuthentication.prototype.buildVerifyUrl = function(options) {\n var params;\n var qString;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n verificationCode: {\n type: 'string',\n message: 'verificationCode option is required'\n },\n phoneNumber: {\n optional: false,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return !o.email;\n }\n },\n email: {\n optional: false,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return !o.phoneNumber;\n }\n }\n }\n );\n /* eslint-enable */\n\n params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'protocol',\n 'nonce'\n ])\n .with(options);\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n params = objectHelper.toSnakeCase(params, ['auth0Client']);\n\n qString = qs.stringify(params);\n\n return urljoin(\n this.baseOptions.rootUrl,\n 'passwordless',\n 'verify_redirect',\n '?' + qString\n );\n};\n\nPasswordlessAuthentication.prototype.start = function(options, cb) {\n var url;\n var body;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n send: {\n type: 'string',\n message: 'send option is required',\n values: ['link', 'code'],\n value_message: 'send is not valid ([link, code])'\n },\n phoneNumber: {\n optional: true,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return o.send === 'code' || !o.email;\n }\n },\n email: {\n optional: true,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return o.send === 'link' || !o.phoneNumber;\n }\n },\n authParams: {\n optional: true,\n type: 'object',\n message: 'authParams option is required'\n }\n }\n );\n /* eslint-enable */\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'start');\n\n var xRequestLanguage = options.xRequestLanguage;\n delete options.xRequestLanguage;\n\n body = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope'\n ])\n .with(options);\n\n if (body.scope) {\n body.authParams = body.authParams || {};\n body.authParams.scope = body.authParams.scope || body.scope;\n }\n\n if (body.redirectUri) {\n body.authParams = body.authParams || {};\n body.authParams.redirect_uri =\n body.authParams.redirectUri || body.redirectUri;\n }\n\n if (body.responseType) {\n body.authParams = body.authParams || {};\n body.authParams.response_type =\n body.authParams.responseType || body.responseType;\n }\n\n delete body.redirectUri;\n delete body.responseType;\n delete body.scope;\n\n body = objectHelper.toSnakeCase(body, ['auth0Client', 'authParams']);\n\n var postOptions = xRequestLanguage\n ? { xRequestLanguage: xRequestLanguage }\n : undefined;\n\n return this.request\n .post(url, postOptions)\n .send(body)\n .end(responseHandler(cb));\n};\n\nPasswordlessAuthentication.prototype.verify = function(options, cb) {\n var url;\n var cleanOption;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n verificationCode: {\n type: 'string',\n message: 'verificationCode option is required'\n },\n phoneNumber: {\n optional: false,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return !o.email;\n }\n },\n email: {\n optional: false,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return !o.phoneNumber;\n }\n }\n }\n );\n /* eslint-enable */\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n cleanOption = objectHelper.pick(options, [\n 'connection',\n 'verificationCode',\n 'phoneNumber',\n 'email',\n 'auth0Client',\n 'clientID'\n ]);\n cleanOption = objectHelper.toSnakeCase(cleanOption, ['auth0Client']);\n\n url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'verify');\n\n return this.request\n .post(url)\n .send(cleanOption)\n .end(responseHandler(cb));\n};\n\n/**\n * Makes a call to the `/passwordless/challenge` endpoint\n * and returns the challenge (captcha) if necessary.\n *\n * @method getChallenge\n * @param {callback} cb\n * @memberof PasswordlessAuthentication.prototype\n */\nPasswordlessAuthentication.prototype.getChallenge = function(cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default PasswordlessAuthentication;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\n\nfunction DBConnection(request, options) {\n this.baseOptions = options;\n this.request = request;\n}\n\n/**\n * @callback signUpCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the signup failed\n * @param {Object} [result] result of the signup request\n * @param {Object} result.email user's email\n * @param {Object} result.emailVerified if the user's email was verified\n * @ignore\n */\n\n/**\n * Creates a new user in a Auth0 Database connection\n *\n * @method signup\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} [options.username] user desired username. Required if you use a database connection and you have enabled `Requires Username`\n * @param {String} [options.given_name] The user's given name(s).\n * @param {String} [options.family_name] The user's family name(s).\n * @param {String} [options.name] The user's full name.\n * @param {String} [options.nickname] The user's nickname.\n * @param {String} [options.picture] A URI pointing to the user's picture.\n * @param {String} options.connection name of the connection where the user will be created\n * @param {Object} [options.user_metadata] additional signup attributes used for creating the user. Will be stored in `user_metadata`\n * @param {signUpCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @ignore\n */\nDBConnection.prototype.signup = function (options, cb) {\n var url;\n var body;\n var metadata;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n email: { type: 'string', message: 'email option is required' },\n password: { type: 'string', message: 'password option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'signup');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'state'])\n .with(options);\n\n metadata = body.user_metadata || body.userMetadata;\n\n body = objectHelper.blacklist(body, [\n 'scope',\n 'userMetadata',\n 'user_metadata'\n ]);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n if (metadata) {\n body.user_metadata = metadata;\n }\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * @callback changePasswordCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the request failed\n * @ignore\n */\n\n/**\n * Request an email with instruction to change a user's password\n *\n * @method changePassword\n * @param {Object} options\n * @param {String} options.email address where the user will receive the change password email. It should match the user's email in Auth0\n * @param {String} options.connection name of the connection where the user was created\n * @param {changePasswordCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#change-password}\n * @ignore\n */\nDBConnection.prototype.changePassword = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n email: { type: 'string', message: 'email option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'change_password');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'state'])\n .with(options, ['email', 'connection', 'captcha']);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\nDBConnection.prototype.getChallenge = function (cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default DBConnection;\n","import urljoin from 'url-join';\nimport qs from 'qs';\n\nimport RequestBuilder from '../helper/request-builder';\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport SSODataStorage from '../helper/ssodata';\nimport windowHelper from '../helper/window';\nimport responseHandler from '../helper/response-handler';\nimport parametersWhitelist from '../helper/parameters-whitelist';\nimport Warn from '../helper/warn';\nimport WebAuth from '../web-auth/index';\nimport PasswordlessAuthentication from './passwordless-authentication';\nimport DBConnection from './db-connection';\n\n/**\n * Creates a new Auth0 Authentication API client\n * @constructor\n * @param {Object} options\n * @param {String} options.domain your Auth0 domain\n * @param {String} options.clientID the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.cookieDomain] The domain the cookie is accessible from. If not set, the cookie is scoped to the current domain, including the subdomain. To keep a user logged in across multiple subdomains set this to your top-level domain and prefixed with a `.` (eg: `.example.com`).\n * @see {@link https://auth0.com/docs/api/authentication}\n */\nfunction Authentication(auth0, options) {\n // If we have two arguments, the first one is a WebAuth instance, so we assign that\n // if not, it's an options object and then we should use that as options instead\n // this is here because we don't want to break people coming from v8\n if (arguments.length === 2) {\n this.auth0 = auth0;\n } else {\n options = auth0;\n }\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n clientID: { type: 'string', message: 'clientID option is required' },\n responseType: {\n optional: true,\n type: 'string',\n message: 'responseType is not valid'\n },\n responseMode: {\n optional: true,\n type: 'string',\n message: 'responseMode is not valid'\n },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri is not valid'\n },\n scope: { optional: true, type: 'string', message: 'scope is not valid' },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience is not valid'\n },\n _disableDeprecationWarnings: {\n optional: true,\n type: 'boolean',\n message: '_disableDeprecationWarnings option is not valid'\n },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n }\n }\n );\n /* eslint-enable */\n\n this.baseOptions = options;\n this.baseOptions._sendTelemetry =\n this.baseOptions._sendTelemetry === false\n ? this.baseOptions._sendTelemetry\n : true;\n\n this.baseOptions.rootUrl =\n this.baseOptions.domain &&\n this.baseOptions.domain.toLowerCase().indexOf('http') === 0\n ? this.baseOptions.domain\n : 'https://' + this.baseOptions.domain;\n\n this.request = new RequestBuilder(this.baseOptions);\n\n this.passwordless = new PasswordlessAuthentication(\n this.request,\n this.baseOptions\n );\n this.dbConnection = new DBConnection(this.request, this.baseOptions);\n\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n this.ssodataStorage = new SSODataStorage(this.baseOptions);\n}\n\n/**\n * Builds and returns the `/authorize` url in order to initialize a new authN/authZ transaction\n *\n * @method buildAuthorizeUrl\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @see {@link https://auth0.com/docs/api/authentication#social}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.buildAuthorizeUrl = function (options) {\n var params;\n var qString;\n\n assert.check(options, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n\n params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience'\n ])\n .with(options);\n\n /* eslint-disable */\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n clientID: { type: 'string', message: 'clientID option is required' },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri option is required'\n },\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n },\n nonce: {\n type: 'string',\n message: 'nonce option is required',\n condition: function (o) {\n return (\n o.responseType.indexOf('code') === -1 &&\n o.responseType.indexOf('id_token') !== -1\n );\n }\n },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n /* eslint-enable */\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n if (params.connection_scope && assert.isArray(params.connection_scope)) {\n params.connection_scope = params.connection_scope.join(',');\n }\n\n params = objectHelper.blacklist(params, [\n 'username',\n 'popupOptions',\n 'domain',\n 'tenant',\n 'timeout',\n 'appState'\n ]);\n params = objectHelper.toSnakeCase(params, ['auth0Client']);\n params = parametersWhitelist.oauthAuthorizeParams(this.warn, params);\n\n qString = qs.stringify(params);\n\n return urljoin(this.baseOptions.rootUrl, 'authorize', '?' + qString);\n};\n\n/**\n * Builds and returns the Logout url in order to initialize a new authN/authZ transaction\n *\n * If you want to navigate the user to a specific URL after the logout, set that URL at the returnTo parameter. The URL should be included in any the appropriate Allowed Logout URLs list:\n *\n * - If the client_id parameter is included, the returnTo URL must be listed in the Allowed Logout URLs set at the Auth0 Application level (see Setting Allowed Logout URLs at the App Level).\n * - If the client_id parameter is NOT included, the returnTo URL must be listed in the Allowed Logout URLs set at the account level (see Setting Allowed Logout URLs at the Account Level).\n * @method buildLogoutUrl\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.returnTo] URL to be redirected after the logout\n * @param {Boolean} [options.federated] tells Auth0 if it should logout the user also from the IdP.\n * @see {@link https://auth0.com/docs/api/authentication#logout}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.buildLogoutUrl = function (options) {\n var params;\n var qString;\n\n assert.check(options, {\n optional: true,\n type: 'object',\n message: 'options parameter is not valid'\n });\n\n params = objectHelper\n .merge(this.baseOptions, ['clientID'])\n .with(options || {});\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n params = objectHelper.toSnakeCase(params, ['auth0Client', 'returnTo']);\n\n qString = qs.stringify(objectHelper.blacklist(params, ['federated']));\n if (\n options &&\n options.federated !== undefined &&\n options.federated !== false &&\n options.federated !== 'false'\n ) {\n qString += '&federated';\n }\n\n return urljoin(this.baseOptions.rootUrl, 'v2', 'logout', '?' + qString);\n};\n\n/**\n * @callback authorizeCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the Auth request. If there is no token available, this value will be null.\n * @param {String} [result.accessToken] token that allows access to the specified resource server (identified by the audience parameter or by default Auth0's /userinfo endpoint)\n * @param {Number} [result.expiresIn] number of seconds until the access token expires\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @param {Object} [result.appState] values that you receive back on the authentication response\n * @memberof Authentication.prototype\n */\n\n/**\n * @callback tokenCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the Auth request\n * @param {String} result.accessToken token that allows access to the specified resource server (identified by the audience parameter or by default Auth0's /userinfo endpoint)\n * @param {Number} result.expiresIn number of seconds until the access token expires\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `oauth/token` endpoint with `password` grant type to login to the default directory.\n *\n * @method loginWithDefaultDirectory\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {tokenCallback} cb function called with the result of the request\n * @see Requires [`password` grant]{@link https://auth0.com/docs/api-auth/grant/password}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.loginWithDefaultDirectory = function (options, cb) {\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n options.grantType = 'password';\n\n return this.oauthToken(options, cb);\n};\n\n/**\n * Makes a call to the `oauth/token` endpoint with `password-realm` grant type\n *\n * @method login\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} options.realm the HRD domain or the connection name where the user belongs to. e.g. `Username-Password-Authentication`\n * @param {tokenCallback} cb function called with the result of the request\n * @see Requires [`http://auth0.com/oauth/grant-type/password-realm` grant]{@link https://auth0.com/docs/api-auth/grant/password#realm-support}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.login = function (options, cb) {\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n realm: { type: 'string', message: 'realm option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n options.grantType = 'http://auth0.com/oauth/grant-type/password-realm';\n\n return this.oauthToken(options, cb);\n};\n\n/**\n * Makes a call to the `oauth/token` endpoint\n *\n * @method oauthToken\n * @private\n */\nAuthentication.prototype.oauthToken = function (options, cb) {\n var url;\n var body;\n\n assert.check(options, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'oauth', 'token');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'scope', 'audience'])\n .with(options);\n\n assert.check(\n body,\n { type: 'object', message: 'options parameter is not valid' },\n {\n clientID: { type: 'string', message: 'clientID option is required' },\n grantType: { type: 'string', message: 'grantType option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n body = parametersWhitelist.oauthTokenParams(this.warn, body);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Performs authentication calling `/oauth/ro` endpoint with username\n * and password for a given connection name.\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link login} or {@link loginWithDefaultDirectory}.\n *\n * @method loginWithResourceOwner\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {Object} options.connection the connection name where the user belongs to. e.g. `Username-Password-Authentication`\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.device] name of the device/browser where the Auth was requested\n * @param {tokenCallback} cb function called with the result of the request\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.loginWithResourceOwner = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n connection: { type: 'string', message: 'connection option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'oauth', 'ro');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'scope'])\n .with(options, ['username', 'password', 'scope', 'connection', 'device']);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n body.grant_type = body.grant_type || 'password';\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Uses {@link checkSession} and localStorage to return data from the last successful authentication request.\n *\n * @method getSSOData\n * @param {Boolean} withActiveDirectories this parameter is not used anymore. It's here to be backward compatible\n * @param {Function} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getSSOData = function (withActiveDirectories, cb) {\n /* istanbul ignore if */\n if (!this.auth0) {\n this.auth0 = new WebAuth(this.baseOptions);\n }\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n if (isHostedLoginPage) {\n return this.auth0._universalLogin.getSSOData(withActiveDirectories, cb);\n }\n if (typeof withActiveDirectories === 'function') {\n cb = withActiveDirectories;\n }\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n var clientId = this.baseOptions.clientID;\n var ssodataInformation = this.ssodataStorage.get() || {};\n\n this.auth0.checkSession(\n {\n responseType: 'token id_token',\n scope: 'openid profile email',\n connection: ssodataInformation.lastUsedConnection,\n timeout: 5000\n },\n function (err, result) {\n if (err) {\n if (err.error === 'login_required') {\n return cb(null, { sso: false });\n }\n if (err.error === 'consent_required') {\n err.error_description =\n 'Consent required. When using `getSSOData`, the user has to be authenticated with the following scope: `openid profile email`.';\n }\n return cb(err, { sso: false });\n }\n if (\n ssodataInformation.lastUsedSub &&\n ssodataInformation.lastUsedSub !== result.idTokenPayload.sub\n ) {\n return cb(err, { sso: false });\n }\n return cb(null, {\n lastUsedConnection: {\n name: ssodataInformation.lastUsedConnection\n },\n lastUsedUserID: result.idTokenPayload.sub,\n lastUsedUsername:\n result.idTokenPayload.email || result.idTokenPayload.name,\n lastUsedClientID: clientId,\n sessionClients: [clientId],\n sso: true\n });\n }\n );\n};\n\n/**\n * @callback userInfoCallback\n * @param {Error} [err] error returned by Auth0\n * @param {Object} [userInfo] user information\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `/userinfo` endpoint and returns the user profile\n *\n * @method userInfo\n * @param {String} accessToken token issued to a user after Auth\n * @param {userInfoCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#get-user-info}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.userInfo = function (accessToken, cb) {\n var url;\n\n assert.check(accessToken, {\n type: 'string',\n message: 'accessToken parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'userinfo');\n\n return this.request\n .get(url)\n .set('Authorization', 'Bearer ' + accessToken)\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Makes a call to the `/usernamepassword/challenge` endpoint\n * and returns the challenge (captcha) if necessary.\n *\n * @method getChallenge\n * @param {callback} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getChallenge = function (cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'usernamepassword', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * @callback delegationCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the delegation failed\n * @param {Object} [result] result of the delegation request. The payload depends on what ai type was used\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `/delegation` endpoint with either an `id_token` or `refresh_token`\n *\n * @method delegation\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.grantType grant type used for delegation. The only valid value is `urn:ietf:params:oauth:grant-type:jwt-bearer`\n * @param {String} [options.idToken] valid token of the user issued after Auth. If no `refresh_token` is provided this parameter is required\n * @param {String} [options.refreshToken] valid refresh token of the user issued after Auth. If no `id_token` is provided this parameter is required\n * @param {String} [options.target] the target ClientID of the delegation\n * @param {String} [options.scope] either `openid` or `openid profile email`\n * @param {String} [options.apiType] the api to be called\n * @param {delegationCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#delegation}\n * @see Requires [http://auth0.com/oauth/grant-type/password-realm]{@link https://auth0.com/docs/api-auth/grant/password#realm-support}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.delegation = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n grant_type: { type: 'string', message: 'grant_type option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'delegation');\n\n body = objectHelper.merge(this.baseOptions, ['clientID']).with(options);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Fetches the user country based on the ip.\n *\n * @method getUserCountry\n * @private\n * @param {Function} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getUserCountry = function (cb) {\n var url;\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'user', 'geoloc', 'country');\n\n return this.request.get(url).end(responseHandler(cb));\n};\n\nexport default Authentication;\n","import urljoin from 'url-join';\n\nimport RequestBuilder from '../helper/request-builder';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\n\n/**\n * Auth0 Management API Client (methods allowed to be called from the browser only)\n * @constructor\n * @param {Object} options\n * @param {Object} options.domain your Auth0 acount domain\n * @param {Object} options.token a valid API token\n */\nfunction Management(options) {\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n token: { type: 'string', message: 'token option is required' },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n }\n }\n );\n /* eslint-enable */\n\n this.baseOptions = options;\n\n this.baseOptions.headers = {\n Authorization: 'Bearer ' + this.baseOptions.token\n };\n\n this.request = new RequestBuilder(this.baseOptions);\n this.baseOptions.rootUrl = urljoin(\n 'https://' + this.baseOptions.domain,\n 'api',\n 'v2'\n );\n}\n\n/**\n * @callback userCallback\n * @param {Error} [err] failure reason for the failed request to Management API\n * @param {Object} [result] user profile\n * @memberof Management.prototype\n */\n\n/**\n * Returns the user profile\n *\n * @method getUser\n * @param {String} userId identifier of the user to retrieve\n * @param {userCallback} cb\n * @see https://auth0.com/docs/api/management/v2#!/Users/get_users_by_id\n * @memberof Management.prototype\n */\nManagement.prototype.getUser = function(userId, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request.get(url).end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Updates the user metdata. It will patch the user metdata with the attributes sent.\n *\n *\n * @method patchUserMetadata\n * @param {String} userId\n * @param {Object} userMetadata\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id}\n * @memberof Management.prototype\n */\nManagement.prototype.patchUserMetadata = function(userId, userMetadata, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(userMetadata, {\n type: 'object',\n message: 'userMetadata parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request\n .patch(url)\n .send({ user_metadata: userMetadata })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Updates the user attributes. It will patch the user attributes that the server allows it.\n *\n * @method patchUserAttributes\n * @param {String} userId\n * @param {Object} user\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id}\n * @memberof Management.prototype\n */\nManagement.prototype.patchUserAttributes = function(userId, user, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(user, {\n type: 'object',\n message: 'user parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request\n .patch(url)\n .send(user)\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Link two users\n *\n * @method linkUser\n * @param {String} userId\n * @param {String} secondaryUserToken\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/post_identities}\n * @memberof Management.prototype\n */\nManagement.prototype.linkUser = function(userId, secondaryUserToken, cb) {\n var url;\n /* eslint-disable */\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(secondaryUserToken, {\n type: 'string',\n message: 'secondaryUserToken parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n /* eslint-enable */\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId, 'identities');\n\n return this.request\n .post(url)\n .send({ link_with: secondaryUserToken })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default Management;\n","import Authentication from './authentication';\nimport Management from './management';\nimport WebAuth from './web-auth';\nimport version from './version';\n\nexport { Authentication, Management, WebAuth, version };\n\nexport default {\n Authentication: Authentication,\n Management: Management,\n WebAuth: WebAuth,\n version: version\n};\n"],"names":["context","definition","this","normalize","strArray","resultArray","length","TypeError","match","first","shift","replace","i","component","push","str","join","parts","split","arguments","slice","call","module","exports","origSymbol","Symbol","ERROR_MESSAGE","Array","prototype","toStr","Object","toString","Function","bind","that","target","bound","args","binder","result","apply","concat","boundLength","Math","max","boundArgs","Empty","hasOwnProperty","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","e","$gOPD","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","calleeThrows","get","gOPDthrows","hasSymbols","getOwnPropertySymbols","iterator","obj","sym","symObj","keys","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","value","enumerable","hasSymbolSham","getProto","getPrototypeOf","x","__proto__","needsEval","TypedArray","Uint8Array","undefined","INTRINSICS","%AggregateError%","AggregateError","%Array%","%ArrayBuffer%","ArrayBuffer","%ArrayIteratorPrototype%","%AsyncFromSyncIteratorPrototype%","%AsyncFunction%","%AsyncGenerator%","%AsyncGeneratorFunction%","%AsyncIteratorPrototype%","%Atomics%","Atomics","%BigInt%","BigInt","%BigInt64Array%","BigInt64Array","%BigUint64Array%","BigUint64Array","%Boolean%","Boolean","%DataView%","DataView","%Date%","Date","%decodeURI%","decodeURI","%decodeURIComponent%","decodeURIComponent","%encodeURI%","encodeURI","%encodeURIComponent%","encodeURIComponent","%Error%","Error","%eval%","eval","%EvalError%","EvalError","%Float32Array%","Float32Array","%Float64Array%","Float64Array","%FinalizationRegistry%","FinalizationRegistry","%Function%","%GeneratorFunction%","%Int8Array%","Int8Array","%Int16Array%","Int16Array","%Int32Array%","Int32Array","%isFinite%","isFinite","%isNaN%","isNaN","%IteratorPrototype%","%JSON%","JSON","%Map%","Map","%MapIteratorPrototype%","%Math%","%Number%","Number","%Object%","%parseFloat%","parseFloat","%parseInt%","parseInt","%Promise%","Promise","%Proxy%","Proxy","%RangeError%","RangeError","%ReferenceError%","ReferenceError","%Reflect%","Reflect","%RegExp%","RegExp","%Set%","Set","%SetIteratorPrototype%","%SharedArrayBuffer%","SharedArrayBuffer","%String%","String","%StringIteratorPrototype%","%Symbol%","%SyntaxError%","%ThrowTypeError%","%TypedArray%","%TypeError%","%Uint8Array%","%Uint8ClampedArray%","Uint8ClampedArray","%Uint16Array%","Uint16Array","%Uint32Array%","Uint32Array","%URIError%","URIError","%WeakMap%","WeakMap","%WeakRef%","WeakRef","%WeakSet%","WeakSet","error","errorProto","LEGACY_ALIASES","%ArrayBufferPrototype%","%ArrayPrototype%","%ArrayProto_entries%","%ArrayProto_forEach%","%ArrayProto_keys%","%ArrayProto_values%","%AsyncFunctionPrototype%","%AsyncGeneratorPrototype%","%BooleanPrototype%","%DataViewPrototype%","%DatePrototype%","%ErrorPrototype%","%EvalErrorPrototype%","%Float32ArrayPrototype%","%Float64ArrayPrototype%","%FunctionPrototype%","%Generator%","%GeneratorPrototype%","%Int8ArrayPrototype%","%Int16ArrayPrototype%","%Int32ArrayPrototype%","%JSONParse%","%JSONStringify%","%MapPrototype%","%NumberPrototype%","%ObjectPrototype%","%ObjProto_toString%","%ObjProto_valueOf%","%PromisePrototype%","%PromiseProto_then%","%Promise_all%","%Promise_reject%","%Promise_resolve%","%RangeErrorPrototype%","%ReferenceErrorPrototype%","%RegExpPrototype%","%SetPrototype%","%SharedArrayBufferPrototype%","%StringPrototype%","%SymbolPrototype%","%SyntaxErrorPrototype%","%TypedArrayPrototype%","%TypeErrorPrototype%","%Uint8ArrayPrototype%","%Uint8ClampedArrayPrototype%","%Uint16ArrayPrototype%","%Uint32ArrayPrototype%","%URIErrorPrototype%","%WeakMapPrototype%","%WeakSetPrototype%","$concat","$spliceApply","splice","$replace","$strSlice","$exec","exec","rePropName","reEscapeChar","stringToPath","string","last","number","quote","subString","getBaseIntrinsic","name","allowMissing","alias","intrinsicName","hasOwn","doEval","fn","gen","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","desc","$apply","GetIntrinsic","$call","$reflectApply","$defineProperty","$max","originalFunction","func","configurable","applyBind","$indexOf","callBind","hasMap","mapSizeDescriptor","mapSize","mapForEach","forEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","has","weakSetHas","weakRefDeref","deref","booleanValueOf","valueOf","objectToString","functionToString","$match","$slice","$toUpperCase","toUpperCase","$toLowerCase","toLowerCase","$test","test","$join","$arrSlice","$floor","floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","inspectCustom","utilInspect","custom","inspectSymbol","isSymbol","inspect_","options","depth","seen","opts","quoteStyle","maxStringLength","customInspect","indent","numericSeparator","inspectString","remaining","trailer","wrapQuotes","lowbyte","bigIntStr","maxDepth","isArray","baseIndent","base","prev","getIndent","indexOf","inspect","from","noIndent","newOpts","isRegExp","f","m","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","isElement","s","attrs","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","key","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","isPlainObject","constructor","protoTag","stringTag","tag","defaultStyle","quoteChar","l","c","n","charCodeAt","8","9","10","12","13","type","size","entries","lineJoiner","isArr","symMap","k","j","$WeakMap","$Map","$weakMapGet","callBound","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","list","curr","next","$wm","$m","$o","channel","assert","objects","node","listGet","listHas","set","listSet","percentTwenties","Format","default","formatters","RFC1738","RFC3986","hexTable","array","arrayToObject","source","plainObjects","create","assign","reduce","acc","combine","a","b","compact","queue","o","prop","refs","item","val","pop","compacted","compactQueue","decode","decoder","charset","strWithoutPlus","unescape","encode","defaultEncoder","kind","format","escape","$0","out","formats","charAt","isBuffer","maybeMap","mapped","merge","allowPrototypes","mergeTarget","targetItem","arrayPrefixGenerators","brackets","prefix","comma","indices","repeat","pushToArray","arr","valueOrArray","toISO","toISOString","defaultFormat","defaults","addQueryPrefix","allowDots","charsetSentinel","delimiter","encoder","utils","encodeValuesOnly","formatter","serializeDate","date","skipNulls","strictNullHandling","sentinel","stringify","object","generateArrayPrefix","commaRoundTrip","filter","sort","sideChannel","tmpSc","step","findFlag","pos","v","isNonNullishPrimitive","keyValue","valuesArray","valuesJoined","objKeys","values","adjustedPrefix","keyPrefix","valueSideChannel","getSideChannel","allowSparse","arrayLimit","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","fromCharCode","parseArrayValue","parseKeys","givenKey","valuesParsed","child","segment","parent","index","chain","leaf","root","cleanRoot","0","parseObject","parse","normalizeParseOptions","tempObj","cleanStr","limit","skipIndex","bracketEqualsPos","encodedVal","parseValues","newObj","normalizeStringifyOptions","arrayFormat","joined","Emitter","mixin","on","addEventListener","event","_callbacks","once","off","removeListener","removeAllListeners","removeEventListener","cb","callbacks","emit","len","listeners","hasListeners","stable","deterministicStringify","stableStringify","replacerStack","defaultOptions","depthLimit","MAX_SAFE_INTEGER","edgesLimit","replacer","spacer","res","decirc","edgeIndex","stack","setReplace","replaceGetterValues","_","defineProperty","propertyDescriptor","compareFunction","tmp","deterministicDecirc","toJSON","_typeof","_createForOfIteratorHelper","allowArrayLike","it","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","done","_e","err","normalCompletion","didErr","_e2","return","arr2","string_","_step","_iterator","_value","_step2","_iterator2","url","header","changesOrigin","host","authorization","cookie","property","isObject","_require","RequestBase","clearTimeout","_timer","_responseTimeoutTimer","_uploadTimeoutTimer","_parser","responseType","_responseType","serialize","_serializer","timeout","_timeout","_responseTimeout","_uploadTimeout","option","deadline","response","upload","console","warn","retry","count","_maxRetries","_retries","_retryCallback","ERROR_CODES","STATUS_CODES","_shouldRetry","override","status","code","crossDomain","_retry","req","request","_aborted","timedout","timedoutError","_end","then","resolve","reject","_this","_fullfilledPromise","self","_endCalled","method","end","catch","callback","use","ok","_okCallback","_isResponseOK","field","_header","getHeader","unset","_data","_getFormData","append","abort","xhr","semver","gte","process","version","lt","destroyed","_auth","user","pass","base64Encoder","username","password","withCredentials","_withCredentials","redirects","_maxRedirects","maxResponseSize","_maxResponseSize","data","headers","send","isObject_","_formData","_isHost","trim","sortQuery","_sort","_finalizeQueryString","query","_query","includes","queryArray","_appendQueryString","_timeoutError","reason","errno","_setTimeouts","setTimeout","ResponseBase","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","Agent","_defaults","_setHeaderProperties","ct","parameters","params","links","link","parseLinks","_unused","_setStatusProperties","trunc","statusCode","statusType","info","redirect","clientError","serverError","toError","created","accepted","noContent","badRequest","unauthorized","notAcceptable","forbidden","notFound","unprocessableEntity","_loop","_arr","_i","_len","_key","_setDefaults","def","window","noop","Request","getXHR","XMLHttpRequest","location","protocol","ActiveXObject","_unused2","_unused3","_unused4","pairs","pushEncodedKeyValuePair","subkey","parseString","pair","length_","isJSON","mime","Response","request_","text","responseText","statusText","line","lines","fields","parseHeader","getAllResponseHeaders","getResponseHeader","body","_parseBody","new_error","original","rawResponse","serializeObject","types","html","json","xml","urlencoded","form","form-data","application/x-www-form-urlencoded","qs","application/json","safeStringify","message","accept","auth","btoa","attach","file","FormData","_callback","retries","crossDomainError","agent","ca","buffer","write","pipe","_setUploadTimeout","readyState","_unused5","handleProgress","direction","total","percent","loaded","_unused6","open","contentType","_serialize","setRequestHeader","del","delete","head","patch","post","put","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","start","output","base64","fromByteArray","stringToByteArray","mod","padding","byteArrayToString","toByteArray","raw","attribute","attr","variable","check","config","optional","condition","value_message","supportsIsArray","objectAssignPolyfill","to","nextSource","keysArray","nextIndex","nextKey","pick","objectValues","extend","unshift","objectAssign","getLocationFromUrl","href","hostname","port","pathname","search","hash","trimmed","toSnakeCase","exceptions","p","newKey","wasPrevNumber","wasPrevUppercase","camelToSnake","toCamelCase","keepOriginal","blacklist","blacklistedKeys","with","object2","keys2","getKeysNotIn","allowedKeys","notAllowed","getOriginFromUrl","parsed","origin","trimUserDetails","trimMultiple","updatePropertyOn","path","RequestWrapper","RequestObj","RequestBuilder","_sendTelemetry","_telemetryInfo","_timesToRetryFailedRequests","_universalLoginPage","universalLoginPage","getWindow","getMethod","getBody","getUrl","getHeaders","objectHelper","setCommonConfiguration","ongoingRequest","noHeaders","xRequestLanguage","getTelemetryData","telemetryName","clientInfo","env","jsonClientInfo","base64Url","getDocument","document","getOrigin","DummyStorage","getItem","removeItem","setItem","factory","init","converter","api","expires","toUTCString","stringifiedAttributes","attributeName","jar","cookies","read","getJSON","remove","withConverter","buildCompatCookieKey","CookieStorage","_options","Warn","disableWarnings","StorageHandler","storage","__tryLocalStorageFirst","localStorage","windowHandler","warning","Storage","handler","SSODataStorage","buildResponse","description","errorDescription","Cookie","cookieDomain","domain","secure","sameSite","legacySameSiteCookie","legacyOptions","failover","connection","sub","ssodata","lastUsedConnection","lastUsedSub","invalidToken","wrapCallback","ignoreCasing","errObj","error_code","error_description","details","forceLegacyError","error_codes","error_details","errorDetails","codes","policy","keepOriginalCasing","tokenParams","authorizeParams","oauthTokenParams","oauthAuthorizeParams","t","globalThis","global","r","d","w","h","u","MutationObserver","WebKitMutationObserver","importScripts","MessageChannel","y","g","T","S","_state","C","_result","I","B","nextTick","createTextNode","observe","characterData","port1","onmessage","port2","postMessage","require","runOnLoop","runOnContext","random","substring","A","D","E","_onerror","M","_subscribers","R","_instanceConstructor","promise","_remaining","_enumerate","_eachEntry","_settledAt","N","_willSettleAt","finally","all","race","_setScheduler","_setAsap","_asap","polyfill","cast","crypto","msCrypto","getRandomValues","randomBytes","readInt32LE","lib","Base","mixIn","$super","clone","WordArray","words","sigBytes","clamp","ceil","enc","Hex","substr","Latin1","Utf8","BufferedBlockAlgorithm","reset","_nDataBytes","_append","_process","blockSize","_minBufferSize","min","_doProcessBlock","Hasher","cfg","_doReset","update","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","sqrt","pow","SHA256","_hash","HmacSHA256","Base64","_map","_reverseMap","fromNumber","fromString","navigator","appName","am","DB","DM","DV","FV","F1","F2","fromInt","mp","invDigit","mpl","mph","um","mt2","r2","q3","ONE","dlShiftTo","mu","divide","convert","compareTo","revert","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","abs","ZERO","subTo","copyTo","drShiftTo","fromRadix","lShiftTo","rShiftTo","isEven","exp","negate","toRadix","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","getTime","chunkSize","LN2","log","signum","intValue","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","subtract","getLowestSetBit","shiftRight","modPow","byteValue","shortValue","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","add","multiply","remainder","divideAndRemainder","modInverse","gcd","square","Barrett","appVersion","BigInteger","SecureRandom","sha1","sha224","sha256","sha384","sha512","md2","md5","ripemd160","verify","alg","map","urljoin","responseURL","blob","Blob","onload","onerror","credentials","jwksCache","expectedAlg","issuer","audience","leeway","jwksURI","maxAge","__clock","PluginHandler","webAuth","plugins","pluginName","setWebAuth","encoded","payload","signature","kid","aud","iss","nbf","iat","azp","auth_time","nonce","getRsaVerifier","setUTCSeconds","fetch","modulus","validateAccessToken","+","/","=","extensibilityPoint","supports","randomString","bytes","cryptoObj","windowHelper","TransactionManager","transaction","namespace","keyLength","stateExpiration","IframeHandler","timeoutCallback","eventListenerType","iframe","timeoutHandle","_destroyTimeout","transientMessageEventListener","proxyEventListener","eventValidator","isValid","WebMessageHandler","baseOptions","CrossOriginAuthentication","webMessageHandler","createKey","coId","Redirect","auth0","crossOriginAuthentication","_disableDeprecationWarnings","realm","responseTypeIncludesIdToken","generateTransaction","appState","state","organization","generateNonce","transactionPayload","getStoredTransaction","transactionData","clearTransaction","_window","createElement","style","display","eventListener","eventSourceObject","appendChild","src","timeoutHandler","eventData","sourceObject","destroy","parentNode","removeChild","run","responseMode","prompt","currentOrigin","redirectUriOrigin","redirectUri","authorizeUrl","runWebMessageFlow","client","buildAuthorizeUrl","parsedHash","validateAuthenticationResponse","transactionManager","login","rootUrl","email","authenticateBody","client_id","clientID","otp","credentialType","credential_type","errorObject","responseHandler","doAuth","popupMode","popup","authorizeOptions","loginTicket","login_ticket","co_id","co_verifier","authorize","onRedirecting","targetOrigin","getFragment","theWindow","evt","id","verifier","tryGetVerifier","loginWithCredentials","signupAndLogin","dbConnection","signup","WinChan","addListener","attachEvent","detachEvent","extractOrigin","isIE","rv","ua","userAgent","$1","isInternetExplorer","relay_url","window_name","window_features","isFennec","messageTarget","setAttribute","contentWindow","closeInterval","setInterval","closed","cleanup","clearInterval","onMessage","close","securityViolation","originalPopup","focus","onOpen","msgTarget","frames","opener","findRelay","doPost","msg","onDie","o_O","onUnload","ohWell","detach","winopts","arg","PopupHandler","_current_popup","Popup","popupOrigin","SilentAuthenticationHandler","authenticationUrl","postMessageDataType","postMessageOrigin","UsernamePassword","HostedPages","calculatePosition","width","height","screenX","screenLeft","screenY","screenTop","outerWidth","clientWidth","outerHeight","clientHeight","left","top","preload","popupPosition","popupOptions","windowFeatures","kill","load","relayUrl","winchanOptions","buildPopupHandler","pluginHandler","getPopupHandler","popupHandler","originUrl","parseHash","popOpts","owp","urlHelper","processParams","scope","passwordlessVerify","passwordless","phoneNumber","verificationCode","loginWithResourceOwner","usePostMessage","getCallbackHandler","getEventValidator","callbackValue","formHtml","div","_document","innerHTML","children","submit","usernamePassword","getSSOData","withActiveDirectories","ldaps","captchaSolved","lang","templates","challenge","image","recaptcha_v2","recaptcha_enterprise","hcaptcha","friendly_captcha","arkose","auth0_v2","handleAuth0Provider","element","provider","querySelector","preventDefault","globalForCaptchaProvider","grecaptcha","enterprise","friendlyChallenge","turnstile","loadScript","script","startsWith","dataset","removeScript","querySelectorAll","injectCaptchaScript","setValue","callbackName","async","defer","scriptSrc","clientSubdomain","siteKey","scriptForCaptchaProvider","retryCount","handleCaptchaProvider","captchaClass","widgetId","hasAttribute","auth0FCInstance","captchaDiv","setConfig","onCompleted","token","onError","WidgetInstance","sitekey","language","doneCallback","solution","errorCallback","renderParams","expired-callback","error-callback","theme","render","auth0Client","getChallenge","required","triggerCaptcha","solvedCallback","reload","getValue","captchaInput","renderPasswordless","defaultClock","WebAuth","overrides","__tenant","__token_issuer","__jwks_uri","tenant","token_issuer","Authentication","_universalLogin","ssodataStorage","PasswordlessAuthentication","DBConnection","Management","Authorization","parsedQs","hashStr","responseTypes","__enableIdPInitiatedLogin","__enableImpersonation","transactionState","transactionStateMatchesState","transactionNonce","transactionOrganization","qsParams","accessToken","access_token","idToken","id_token","idTokenPayload","refreshToken","refresh_token","expiresIn","expires_in","tokenType","token_type","buildParseHashResponse","validateToken","validationError","org_id","org_name","at_hash","IdTokenVerifier","decodedToken","userInfo","errUserInfo","profile","renewAuth","checkSession","changePassword","passwordlessStart","authParams","signupAndAuthorize","passwordlessLogin","crossOriginOptions","crossOriginAuthenticationCallback","crossOriginVerification","logout","buildLogoutUrl","buildVerifyUrl","renderCaptcha","captcha","renderPasswordlessCaptcha","qString","redirect_uri","response_type","postOptions","cleanOption","metadata","user_metadata","userMetadata","connection_scope","parametersWhitelist","federated","loginWithDefaultDirectory","grantType","oauthToken","grant_type","clientId","ssodataInformation","sso","lastUsedUserID","lastUsedUsername","lastUsedClientID","sessionClients","delegation","getUserCountry","getUser","userId","patchUserMetadata","patchUserAttributes","linkUser","secondaryUserToken","link_with"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"auth0.min.esm.js","sources":["../node_modules/url-join/lib/url-join.js","../node_modules/has-symbols/index.js","../node_modules/has-proto/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-symbols/shams.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/index.js","../node_modules/component-emitter/index.js","../node_modules/fast-safe-stringify/index.js","../node_modules/superagent/lib/utils.js","../node_modules/superagent/lib/request-base.js","../node_modules/superagent/lib/response-base.js","../node_modules/superagent/lib/agent-base.js","../node_modules/base64-js/index.js","../node_modules/superagent/lib/client.js","../src/helper/base64_url.js","../src/version.js","../src/helper/assert.js","../src/helper/object-assign.js","../src/helper/object.js","../src/helper/request-builder.js","../src/helper/window.js","../src/helper/storage/dummy.js","../node_modules/js-cookie/src/js.cookie.js","../src/helper/storage/cookie.js","../src/helper/warn.js","../src/helper/storage/handler.js","../src/helper/storage.js","../src/helper/ssodata.js","../src/helper/error.js","../src/helper/response-handler.js","../src/helper/parameters-whitelist.js","../node_modules/idtoken-verifier/build/idtoken-verifier.esm.js","../src/helper/plugins.js","../src/helper/random.js","../src/web-auth/transaction-manager.js","../src/helper/times.js","../src/helper/iframe-handler.js","../src/web-auth/web-message-handler.js","../src/web-auth/cross-origin-authentication.js","../src/web-auth/redirect.js","../node_modules/winchan/winchan.js","../src/helper/url.js","../src/helper/popup-handler.js","../src/web-auth/popup.js","../src/web-auth/silent-authentication-handler.js","../src/web-auth/username-password.js","../src/web-auth/hosted-pages.js","../src/web-auth/captcha.js","../src/web-auth/index.js","../src/authentication/passwordless-authentication.js","../src/authentication/db-connection.js","../src/authentication/index.js","../src/management/index.js","../src/index.js"],"sourcesContent":["(function (name, context, definition) {\n if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n else if (typeof define === 'function' && define.amd) define(definition);\n else context[name] = definition();\n})('urljoin', this, function () {\n\n function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n }\n\n return function () {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n };\n\n});\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\nexports.type = function (string_) {\n return string_.split(/ *; */).shift();\n};\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\n\nexports.params = function (value) {\n var object = {};\n\n var _iterator = _createForOfIteratorHelper(value.split(/ *; */)),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var string_ = _step.value;\n var parts = string_.split(/ *= */);\n var key = parts.shift();\n\n var _value = parts.shift();\n\n if (key && _value) object[key] = _value;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return object;\n};\n/**\n * Parse Link header fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\n\nexports.parseLinks = function (value) {\n var object = {};\n\n var _iterator2 = _createForOfIteratorHelper(value.split(/ *, */)),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var string_ = _step2.value;\n var parts = string_.split(/ *; */);\n var url = parts[0].slice(1, -1);\n var rel = parts[1].split(/ *= */)[1].slice(1, -1);\n object[rel] = url;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return object;\n};\n/**\n * Strip content related fields from `header`.\n *\n * @param {Object} header\n * @return {Object} header\n * @api private\n */\n\n\nexports.cleanHeader = function (header, changesOrigin) {\n delete header['content-type'];\n delete header['content-length'];\n delete header['transfer-encoding'];\n delete header.host; // secuirty\n\n if (changesOrigin) {\n delete header.authorization;\n delete header.cookie;\n }\n\n return header;\n};\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} object\n * @return {Boolean}\n * @api private\n */\n\n\nexports.isObject = function (object) {\n return object !== null && _typeof(object) === 'object';\n};\n/**\n * Object.hasOwn fallback/polyfill.\n *\n * @type {(object: object, property: string) => boolean} object\n * @api private\n */\n\n\nexports.hasOwn = Object.hasOwn || function (object, property) {\n if (object == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n return Object.prototype.hasOwnProperty.call(new Object(object), property);\n};\n\nexports.mixin = function (target, source) {\n for (var key in source) {\n if (exports.hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHBvcnRzIiwidHlwZSIsInN0cmluZ18iLCJzcGxpdCIsInNoaWZ0IiwicGFyYW1zIiwidmFsdWUiLCJvYmplY3QiLCJwYXJ0cyIsImtleSIsInBhcnNlTGlua3MiLCJ1cmwiLCJzbGljZSIsInJlbCIsImNsZWFuSGVhZGVyIiwiaGVhZGVyIiwiY2hhbmdlc09yaWdpbiIsImhvc3QiLCJhdXRob3JpemF0aW9uIiwiY29va2llIiwiaXNPYmplY3QiLCJoYXNPd24iLCJPYmplY3QiLCJwcm9wZXJ0eSIsIlR5cGVFcnJvciIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm1peGluIiwidGFyZ2V0Iiwic291cmNlIl0sInNvdXJjZXMiOlsiLi4vc3JjL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJuIHRoZSBtaW1lIHR5cGUgZm9yIHRoZSBnaXZlbiBgc3RyYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnR5cGUgPSAoc3RyaW5nXykgPT4gc3RyaW5nXy5zcGxpdCgvICo7ICovKS5zaGlmdCgpO1xuXG4vKipcbiAqIFJldHVybiBoZWFkZXIgZmllbGQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnBhcmFtcyA9ICh2YWx1ZSkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7fTtcbiAgZm9yIChjb25zdCBzdHJpbmdfIG9mIHZhbHVlLnNwbGl0KC8gKjsgKi8pKSB7XG4gICAgY29uc3QgcGFydHMgPSBzdHJpbmdfLnNwbGl0KC8gKj0gKi8pO1xuICAgIGNvbnN0IGtleSA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJ0cy5zaGlmdCgpO1xuXG4gICAgaWYgKGtleSAmJiB2YWx1ZSkgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG4vKipcbiAqIFBhcnNlIExpbmsgaGVhZGVyIGZpZWxkcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnBhcnNlTGlua3MgPSAodmFsdWUpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge307XG4gIGZvciAoY29uc3Qgc3RyaW5nXyBvZiB2YWx1ZS5zcGxpdCgvICosICovKSkge1xuICAgIGNvbnN0IHBhcnRzID0gc3RyaW5nXy5zcGxpdCgvICo7ICovKTtcbiAgICBjb25zdCB1cmwgPSBwYXJ0c1swXS5zbGljZSgxLCAtMSk7XG4gICAgY29uc3QgcmVsID0gcGFydHNbMV0uc3BsaXQoLyAqPSAqLylbMV0uc2xpY2UoMSwgLTEpO1xuICAgIG9iamVjdFtyZWxdID0gdXJsO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cbi8qKlxuICogU3RyaXAgY29udGVudCByZWxhdGVkIGZpZWxkcyBmcm9tIGBoZWFkZXJgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBoZWFkZXJcbiAqIEByZXR1cm4ge09iamVjdH0gaGVhZGVyXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLmNsZWFuSGVhZGVyID0gKGhlYWRlciwgY2hhbmdlc09yaWdpbikgPT4ge1xuICBkZWxldGUgaGVhZGVyWydjb250ZW50LXR5cGUnXTtcbiAgZGVsZXRlIGhlYWRlclsnY29udGVudC1sZW5ndGgnXTtcbiAgZGVsZXRlIGhlYWRlclsndHJhbnNmZXItZW5jb2RpbmcnXTtcbiAgZGVsZXRlIGhlYWRlci5ob3N0O1xuICAvLyBzZWN1aXJ0eVxuICBpZiAoY2hhbmdlc09yaWdpbikge1xuICAgIGRlbGV0ZSBoZWFkZXIuYXV0aG9yaXphdGlvbjtcbiAgICBkZWxldGUgaGVhZGVyLmNvb2tpZTtcbiAgfVxuXG4gIHJldHVybiBoZWFkZXI7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGBvYmpgIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cbmV4cG9ydHMuaXNPYmplY3QgPSAob2JqZWN0KSA9PiB7XG4gIHJldHVybiBvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCc7XG59O1xuXG4vKipcbiAqIE9iamVjdC5oYXNPd24gZmFsbGJhY2svcG9seWZpbGwuXG4gKlxuICogQHR5cGUgeyhvYmplY3Q6IG9iamVjdCwgcHJvcGVydHk6IHN0cmluZykgPT4gYm9vbGVhbn0gb2JqZWN0XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZXhwb3J0cy5oYXNPd24gPVxuICBPYmplY3QuaGFzT3duIHx8XG4gIGZ1bmN0aW9uIChvYmplY3QsIHByb3BlcnR5KSB7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ldyBPYmplY3Qob2JqZWN0KSwgcHJvcGVydHkpO1xuICB9O1xuXG5leHBvcnRzLm1peGluID0gKHRhcmdldCwgc291cmNlKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIGlmIChleHBvcnRzLmhhc093bihzb3VyY2UsIGtleSkpIHtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQUEsT0FBTyxDQUFDQyxJQUFSLEdBQWUsVUFBQ0MsT0FBRDtFQUFBLE9B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","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar semver = require('semver');\n/**\n * Module of mixed-in functions shared between node and client code\n */\n\n\nvar _require = require('./utils'),\n isObject = _require.isObject,\n hasOwn = _require.hasOwn;\n/**\n * Expose `RequestBase`.\n */\n\n\nmodule.exports = RequestBase;\n/**\n * Initialize a new `RequestBase`.\n *\n * @api public\n */\n\nfunction RequestBase() {}\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.clearTimeout = function () {\n clearTimeout(this._timer);\n clearTimeout(this._responseTimeoutTimer);\n clearTimeout(this._uploadTimeoutTimer);\n delete this._timer;\n delete this._responseTimeoutTimer;\n delete this._uploadTimeoutTimer;\n return this;\n};\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\n\nRequestBase.prototype.parse = function (fn) {\n this._parser = fn;\n return this;\n};\n/**\n * Set format of binary response body.\n * In browser valid formats are 'blob' and 'arraybuffer',\n * which return Blob and ArrayBuffer, respectively.\n *\n * In Node all values result in Buffer.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.responseType = function (value) {\n this._responseType = value;\n return this;\n};\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\n\nRequestBase.prototype.serialize = function (fn) {\n this._serializer = fn;\n return this;\n};\n/**\n * Set timeouts.\n *\n * - response timeout is time between sending request and receiving the first byte of the response. Includes DNS and connection time.\n * - deadline is the time from start of the request to receiving response body in full. If the deadline is too short large files may not load at all on slow connections.\n * - upload is the time since last bit of data was sent or received. This timeout works only if deadline timeout is off\n *\n * Value of 0 or false means no timeout.\n *\n * @param {Number|Object} ms or {response, deadline}\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.timeout = function (options) {\n if (!options || _typeof(options) !== 'object') {\n this._timeout = options;\n this._responseTimeout = 0;\n this._uploadTimeout = 0;\n return this;\n }\n\n for (var option in options) {\n if (hasOwn(options, option)) {\n switch (option) {\n case 'deadline':\n this._timeout = options.deadline;\n break;\n\n case 'response':\n this._responseTimeout = options.response;\n break;\n\n case 'upload':\n this._uploadTimeout = options.upload;\n break;\n\n default:\n console.warn('Unknown timeout option', option);\n }\n }\n }\n\n return this;\n};\n/**\n * Set number of retry attempts on error.\n *\n * Failed requests will be retried 'count' times if timeout or err.code >= 500.\n *\n * @param {Number} count\n * @param {Function} [fn]\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.retry = function (count, fn) {\n // Default to 1 if no count passed or true\n if (arguments.length === 0 || count === true) count = 1;\n if (count <= 0) count = 0;\n this._maxRetries = count;\n this._retries = 0;\n this._retryCallback = fn;\n return this;\n}; //\n// NOTE: we do not include ESOCKETTIMEDOUT because that is from `request` package\n// \n//\n// NOTE: we do not include EADDRINFO because it was removed from libuv in 2014\n// \n// \n//\n//\n// TODO: expose these as configurable defaults\n//\n\n\nvar ERROR_CODES = new Set(['ETIMEDOUT', 'ECONNRESET', 'EADDRINUSE', 'ECONNREFUSED', 'EPIPE', 'ENOTFOUND', 'ENETUNREACH', 'EAI_AGAIN']);\nvar STATUS_CODES = new Set([408, 413, 429, 500, 502, 503, 504, 521, 522, 524]); // TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n// const METHODS = new Set(['GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE']);\n\n/**\n * Determine if a request should be retried.\n * (Inspired by https://github.com/sindresorhus/got#retry)\n *\n * @param {Error} err an error\n * @param {Response} [res] response\n * @returns {Boolean} if segment should be retried\n */\n\nRequestBase.prototype._shouldRetry = function (error, res) {\n if (!this._maxRetries || this._retries++ >= this._maxRetries) {\n return false;\n }\n\n if (this._retryCallback) {\n try {\n var override = this._retryCallback(error, res);\n\n if (override === true) return true;\n if (override === false) return false; // undefined falls back to defaults\n } catch (err) {\n console.error(err);\n }\n } // TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n\n /*\n if (\n this.req &&\n this.req.method &&\n !METHODS.has(this.req.method.toUpperCase())\n )\n return false;\n */\n\n\n if (res && res.status && STATUS_CODES.has(res.status)) return true;\n\n if (error) {\n if (error.code && ERROR_CODES.has(error.code)) return true; // Superagent timeout\n\n if (error.timeout && error.code === 'ECONNABORTED') return true;\n if (error.crossDomain) return true;\n }\n\n return false;\n};\n/**\n * Retry request\n *\n * @return {Request} for chaining\n * @api private\n */\n\n\nRequestBase.prototype._retry = function () {\n this.clearTimeout(); // node\n\n if (this.req) {\n this.req = null;\n this.req = this.request();\n }\n\n this._aborted = false;\n this.timedout = false;\n this.timedoutError = null;\n return this._end();\n};\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} [reject]\n * @return {Request}\n */\n\n\nRequestBase.prototype.then = function (resolve, reject) {\n var _this = this;\n\n if (!this._fullfilledPromise) {\n var self = this;\n\n if (this._endCalled) {\n console.warn('Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises');\n }\n\n this._fullfilledPromise = new Promise(function (resolve, reject) {\n self.on('abort', function () {\n if (_this._maxRetries && _this._maxRetries > _this._retries) {\n return;\n }\n\n if (_this.timedout && _this.timedoutError) {\n reject(_this.timedoutError);\n return;\n }\n\n var error = new Error('Aborted');\n error.code = 'ABORTED';\n error.status = _this.status;\n error.method = _this.method;\n error.url = _this.url;\n reject(error);\n });\n self.end(function (error, res) {\n if (error) reject(error);else resolve(res);\n });\n });\n }\n\n return this._fullfilledPromise.then(resolve, reject);\n};\n\nRequestBase.prototype.catch = function (callback) {\n return this.then(undefined, callback);\n};\n/**\n * Allow for extension\n */\n\n\nRequestBase.prototype.use = function (fn) {\n fn(this);\n return this;\n};\n\nRequestBase.prototype.ok = function (callback) {\n if (typeof callback !== 'function') throw new Error('Callback required');\n this._okCallback = callback;\n return this;\n};\n\nRequestBase.prototype._isResponseOK = function (res) {\n if (!res) {\n return false;\n }\n\n if (this._okCallback) {\n return this._okCallback(res);\n }\n\n return res.status >= 200 && res.status < 300;\n};\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\n\nRequestBase.prototype.get = function (field) {\n return this._header[field.toLowerCase()];\n};\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\n\nRequestBase.prototype.getHeader = RequestBase.prototype.get;\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.set = function (field, value) {\n if (isObject(field)) {\n for (var key in field) {\n if (hasOwn(field, key)) this.set(key, field[key]);\n }\n\n return this;\n }\n\n this._header[field.toLowerCase()] = value;\n this.header[field] = value;\n return this;\n};\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field field name\n */\n\n\nRequestBase.prototype.unset = function (field) {\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n *\n * request.post('/upload')\n * .field({ foo: 'bar', baz: 'qux' })\n * .end(callback);\n * ```\n *\n * @param {String|Object} name name of field\n * @param {String|Blob|File|Buffer|fs.ReadStream} val value of field\n * @param {String} options extra options, e.g. 'blob'\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.field = function (name, value, options) {\n // name should be either a string or an object.\n if (name === null || undefined === name) {\n throw new Error('.field(name, val) name can not be empty');\n }\n\n if (this._data) {\n throw new Error(\".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()\");\n }\n\n if (isObject(name)) {\n for (var key in name) {\n if (hasOwn(name, key)) this.field(key, name[key]);\n }\n\n return this;\n }\n\n if (Array.isArray(value)) {\n for (var i in value) {\n if (hasOwn(value, i)) this.field(name, value[i]);\n }\n\n return this;\n } // val should be defined now\n\n\n if (value === null || undefined === value) {\n throw new Error('.field(name, val) val can not be empty');\n }\n\n if (typeof value === 'boolean') {\n value = String(value);\n } //fix https://github.com/visionmedia/superagent/issues/1680\n\n\n if (options) this._getFormData().append(name, value, options);else this._getFormData().append(name, value);\n return this;\n};\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request} request\n * @api public\n */\n\n\nRequestBase.prototype.abort = function () {\n if (this._aborted) {\n return this;\n }\n\n this._aborted = true;\n if (this.xhr) this.xhr.abort(); // browser\n\n if (this.req) {\n // Node v13 has major differences in `abort()`\n // https://github.com/nodejs/node/blob/v12.x/lib/internal/streams/end-of-stream.js\n // https://github.com/nodejs/node/blob/v13.x/lib/internal/streams/end-of-stream.js\n // https://github.com/nodejs/node/blob/v14.x/lib/internal/streams/end-of-stream.js\n // (if you run a diff across these you will see the differences)\n //\n // References:\n // \n // \n //\n // Thanks to @shadowgate15 and @niftylettuce\n if (semver.gte(process.version, 'v13.0.0') && semver.lt(process.version, 'v14.0.0')) {\n // Note that the reason this doesn't work is because in v13 as compared to v14\n // there is no `callback = nop` set in end-of-stream.js above\n throw new Error('Superagent does not work in v13 properly with abort() due to Node.js core changes');\n } else if (semver.gte(process.version, 'v14.0.0')) {\n // We have to manually set `destroyed` to `true` in order for this to work\n // (see core internals of end-of-stream.js above in v14 branch as compared to v12)\n this.req.destroyed = true;\n }\n\n this.req.abort(); // node\n }\n\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\nRequestBase.prototype._auth = function (user, pass, options, base64Encoder) {\n switch (options.type) {\n case 'basic':\n this.set('Authorization', \"Basic \".concat(base64Encoder(\"\".concat(user, \":\").concat(pass))));\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n\n case 'bearer':\n // usage would be .auth(accessToken, { type: 'bearer' })\n this.set('Authorization', \"Bearer \".concat(user));\n break;\n\n default:\n break;\n }\n\n return this;\n};\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\n\nRequestBase.prototype.withCredentials = function (on) {\n // This is browser-only functionality. Node side is no-op.\n if (on === undefined) on = true;\n this._withCredentials = on;\n return this;\n};\n/**\n * Set the max redirects to `n`. Does nothing in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.redirects = function (n) {\n this._maxRedirects = n;\n return this;\n};\n/**\n * Maximum size of buffered response body, in bytes. Counts uncompressed size.\n * Default 200MB.\n *\n * @param {Number} n number of bytes\n * @return {Request} for chaining\n */\n\n\nRequestBase.prototype.maxResponseSize = function (n) {\n if (typeof n !== 'number') {\n throw new TypeError('Invalid argument');\n }\n\n this._maxResponseSize = n;\n return this;\n};\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\n\nRequestBase.prototype.toJSON = function () {\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header\n };\n};\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n// eslint-disable-next-line complexity\n\n\nRequestBase.prototype.send = function (data) {\n var isObject_ = isObject(data);\n var type = this._header['content-type'];\n\n if (this._formData) {\n throw new Error(\".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()\");\n }\n\n if (isObject_ && !this._data) {\n if (Array.isArray(data)) {\n this._data = [];\n } else if (!this._isHost(data)) {\n this._data = {};\n }\n } else if (data && this._data && this._isHost(this._data)) {\n throw new Error(\"Can't merge these send calls\");\n } // merge\n\n\n if (isObject_ && isObject(this._data)) {\n for (var key in data) {\n if (hasOwn(data, key)) this._data[key] = data[key];\n }\n } else if (typeof data === 'string') {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if (type) type = type.toLowerCase().trim();\n\n if (type === 'application/x-www-form-urlencoded') {\n this._data = this._data ? \"\".concat(this._data, \"&\").concat(data) : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!isObject_ || this._isHost(data)) {\n return this;\n } // default to json\n\n\n if (!type) this.type('json');\n return this;\n};\n/**\n * Sort `querystring` by the sort function\n *\n *\n * Examples:\n *\n * // default order\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery()\n * .end(callback)\n *\n * // customized sort function\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery(function(a, b){\n * return a.length - b.length;\n * })\n * .end(callback)\n *\n *\n * @param {Function} sort\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.sortQuery = function (sort) {\n // _sort default to true but otherwise can be a function or boolean\n this._sort = typeof sort === 'undefined' ? true : sort;\n return this;\n};\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\n\n\nRequestBase.prototype._finalizeQueryString = function () {\n var query = this._query.join('&');\n\n if (query) {\n this.url += (this.url.includes('?') ? '&' : '?') + query;\n }\n\n this._query.length = 0; // Makes the call idempotent\n\n if (this._sort) {\n var index = this.url.indexOf('?');\n\n if (index >= 0) {\n var queryArray = this.url.slice(index + 1).split('&');\n\n if (typeof this._sort === 'function') {\n queryArray.sort(this._sort);\n } else {\n queryArray.sort();\n }\n\n this.url = this.url.slice(0, index) + '?' + queryArray.join('&');\n }\n }\n}; // For backwards compat only\n\n\nRequestBase.prototype._appendQueryString = function () {\n console.warn('Unsupported');\n};\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\n\nRequestBase.prototype._timeoutError = function (reason, timeout, errno) {\n if (this._aborted) {\n return;\n }\n\n var error = new Error(\"\".concat(reason + timeout, \"ms exceeded\"));\n error.timeout = timeout;\n error.code = 'ECONNABORTED';\n error.errno = errno;\n this.timedout = true;\n this.timedoutError = error;\n this.abort();\n this.callback(error);\n};\n\nRequestBase.prototype._setTimeouts = function () {\n var self = this; // deadline\n\n if (this._timeout && !this._timer) {\n this._timer = setTimeout(function () {\n self._timeoutError('Timeout of ', self._timeout, 'ETIME');\n }, this._timeout);\n } // response timeout\n\n\n if (this._responseTimeout && !this._responseTimeoutTimer) {\n this._responseTimeoutTimer = setTimeout(function () {\n self._timeoutError('Response timeout of ', self._responseTimeout, 'ETIMEDOUT');\n }, this._responseTimeout);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZW12ZXIiLCJyZXF1aXJlIiwiaXNPYmplY3QiLCJoYXNPd24iLCJtb2R1bGUiLCJleHBvcnRzIiwiUmVxdWVzdEJhc2UiLCJwcm90b3R5cGUiLCJjbGVhclRpbWVvdXQiLCJfdGltZXIiLCJfcmVzcG9uc2VUaW1lb3V0VGltZXIiLCJfdXBsb2FkVGltZW91dFRpbWVyIiwicGFyc2UiLCJmbiIsIl9wYXJzZXIiLCJyZXNwb25zZVR5cGUiLCJ2YWx1ZSIsIl9yZXNwb25zZVR5cGUiLCJzZXJpYWxpemUiLCJfc2VyaWFsaXplciIsInRpbWVvdXQiLCJvcHRpb25zIiwiX3RpbWVvdXQiLCJfcmVzcG9uc2VUaW1lb3V0IiwiX3VwbG9hZFRpbWVvdXQiLCJvcHRpb24iLCJkZWFkbGluZSIsInJlc3BvbnNlIiwidXBsb2FkIiwiY29uc29sZSIsIndhcm4iLCJyZXRyeSIsImNvdW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiX21heFJldHJpZXMiLCJfcmV0cmllcyIsIl9yZXRyeUNhbGxiYWNrIiwiRVJST1JfQ09ERVMiLCJTZXQiLCJTVEFUVVNfQ09ERVMiLCJfc2hvdWxkUmV0cnkiLCJlcnJvciIsInJlcyIsIm92ZXJyaWRlIiwiZXJyIiwic3RhdHVzIiwiaGFzIiwiY29kZSIsImNyb3NzRG9tYWluIiwiX3JldHJ5IiwicmVxIiwicmVxdWVzdCIsIl9hYm9ydGVkIiwidGltZWRvdXQiLCJ0aW1lZG91dEVycm9yIiwiX2VuZCIsInRoZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX2Z1bGxmaWxsZWRQcm9taXNlIiwic2VsZiIsIl9lbmRDYWxsZWQiLCJQcm9taXNlIiwib24iLCJFcnJvciIsIm1ldGhvZCIsInVybCIsImVuZCIsImNhdGNoIiwiY2FsbGJhY2siLCJ1bmRlZmluZWQiLCJ1c2UiLCJvayIsIl9va0NhbGxiYWNrIiwiX2lzUmVzcG9uc2VPSyIsImdldCIsImZpZWxkIiwiX2hlYWRlciIsInRvTG93ZXJDYXNlIiwiZ2V0SGVhZGVyIiwic2V0Iiwia2V5IiwiaGVhZGVyIiwidW5zZXQiLCJuYW1lIiwiX2RhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJpIiwiU3RyaW5nIiwiX2dldEZvcm1EYXRhIiwiYXBwZW5kIiwiYWJvcnQiLCJ4aHIiLCJndGUiLCJwcm9jZXNzIiwidmVyc2lvbiIsImx0IiwiZGVzdHJveWVkIiwiZW1pdCIsIl9hdXRoIiwidXNlciIsInBhc3MiLCJiYXNlNjRFbmNvZGVyIiwidHlwZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJ3aXRoQ3JlZGVudGlhbHMiLCJfd2l0aENyZWRlbnRpYWxzIiwicmVkaXJlY3RzIiwibiIsIl9tYXhSZWRpcmVjdHMiLCJtYXhSZXNwb25zZVNpemUiLCJUeXBlRXJyb3IiLCJfbWF4UmVzcG9uc2VTaXplIiwidG9KU09OIiwiZGF0YSIsImhlYWRlcnMiLCJzZW5kIiwiaXNPYmplY3RfIiwiX2Zvcm1EYXRhIiwiX2lzSG9zdCIsInRyaW0iLCJzb3J0UXVlcnkiLCJzb3J0IiwiX3NvcnQiLCJfZmluYWxpemVRdWVyeVN0cmluZyIsInF1ZXJ5IiwiX3F1ZXJ5Iiwiam9pbiIsImluY2x1ZGVzIiwiaW5kZXgiLCJpbmRleE9mIiwicXVlcnlBcnJheSIsInNsaWNlIiwic3BsaXQiLCJfYXBwZW5kUXVlcnlTdHJpbmciLCJfdGltZW91dEVycm9yIiwicmVhc29uIiwiZXJybm8iLCJfc2V0VGltZW91dHMiLCJzZXRUaW1lb3V0Il0sInNvdXJjZXMiOlsiLi4vc3JjL3JlcXVlc3QtYmFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZW12ZXIgPSByZXF1aXJlKCdzZW12ZXInKTtcblxuLyoqXG4gKiBNb2R1bGUgb2YgbWl4ZWQtaW4gZnVuY3Rpb25zIHNoYXJlZCBiZXR3ZWVuIG5vZGUgYW5kIGNsaWVudCBjb2RlXG4gKi9cbmNvbnN0IHsgaXNPYmplY3QsIGhhc093biB9ID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG4vKipcbiAqIEV4cG9zZSBgUmVxdWVzdEJhc2VgLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVxdWVzdEJhc2U7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVxdWVzdEJhc2VgLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUmVxdWVzdEJhc2UoKSB7IH1cblxuLyoqXG4gKiBDbGVhciBwcmV2aW91cyB0aW1lb3V0LlxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuY2xlYXJUaW1lb3V0ID0gZnVuY3Rpb24gKCkge1xuICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xuICBjbGVhclRpbWVvdXQodGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXIpO1xuICBjbGVhclRpbWVvdXQodGhpcy5fdXBsb2FkVGltZW91dFRpbWVyKTtcbiAgZGVsZXRlIHRoaXMuX3RpbWVyO1xuICBkZWxldGUgdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXI7XG4gIGRlbGV0ZSB0aGlzLl91cGxvYWRUaW1lb3V0VGltZXI7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBPdmVycmlkZSBkZWZhdWx0IHJlc3BvbnNlIGJvZHkgcGFyc2VyXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBjb252ZXJ0IGluY29taW5nIGRhdGEgaW50byByZXF1ZXN0LmJvZHlcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAoZm4pIHtcbiAgdGhpcy5fcGFyc2VyID0gZm47XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgZm9ybWF0IG9mIGJpbmFyeSByZXNwb25zZSBib2R5LlxuICogSW4gYnJvd3NlciB2YWxpZCBmb3JtYXRzIGFyZSAnYmxvYicgYW5kICdhcnJheWJ1ZmZlcicsXG4gKiB3aGljaCByZXR1cm4gQmxvYiBhbmQgQXJyYXlCdWZmZXIsIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBJbiBOb2RlIGFsbCB2YWx1ZXMgcmVzdWx0IGluIEJ1ZmZlci5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5yZXNwb25zZVR5cGUoJ2Jsb2InKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUucmVzcG9uc2VUeXBlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHRoaXMuX3Jlc3BvbnNlVHlwZSA9IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogT3ZlcnJpZGUgZGVmYXVsdCByZXF1ZXN0IGJvZHkgc2VyaWFsaXplclxuICpcbiAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgdG8gY29udmVydCBkYXRhIHNldCB2aWEgLnNlbmQgb3IgLmF0dGFjaCBpbnRvIHBheWxvYWQgdG8gc2VuZFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXJpYWxpemUgPSBmdW5jdGlvbiAoZm4pIHtcbiAgdGhpcy5fc2VyaWFsaXplciA9IGZuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRpbWVvdXRzLlxuICpcbiAqIC0gcmVzcG9uc2UgdGltZW91dCBpcyB0aW1lIGJldHdlZW4gc2VuZGluZyByZXF1ZXN0IGFuZCByZWNlaXZpbmcgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHJlc3BvbnNlLiBJbmNsdWRlcyBETlMgYW5kIGNvbm5lY3Rpb24gdGltZS5cbiAqIC0gZGVhZGxpbmUgaXMgdGhlIHRpbWUgZnJvbSBzdGFydCBvZiB0aGUgcmVxdWVzdCB0byByZWNlaXZpbmcgcmVzcG9uc2UgYm9keSBpbiBmdWxsLiBJZiB0aGUgZGVhZGxpbmUgaXMgdG9vIHNob3J0IGxhcmdlIGZpbGVzIG1heSBub3QgbG9hZCBhdCBhbGwgb24gc2xvdyBjb25uZWN0aW9ucy5cbiAqIC0gdXBsb2FkIGlzIHRoZSB0aW1lICBzaW5jZSBsYXN0IGJpdCBvZiBkYXRhIHdhcyBzZW50IG9yIHJlY2VpdmVkLiBUaGlzIHRpbWVvdXQgd29ya3Mgb25seSBpZiBkZWFkbGluZSB0aW1lb3V0IGlzIG9mZlxuICpcbiAqIFZhbHVlIG9mIDAgb3IgZmFsc2UgbWVhbnMgbm8gdGltZW91dC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcnxPYmplY3R9IG1zIG9yIHtyZXNwb25zZSwgZGVhZGxpbmV9XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRpbWVvdXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMgfHwgdHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhpcy5fdGltZW91dCA9IG9wdGlvbnM7XG4gICAgdGhpcy5fcmVzcG9uc2VUaW1lb3V0ID0gMDtcbiAgICB0aGlzLl91cGxvYWRUaW1lb3V0ID0gMDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZvciAoY29uc3Qgb3B0aW9uIGluIG9wdGlvbnMpIHtcbiAgICBpZiAoaGFzT3duKG9wdGlvbnMsIG9wdGlvbikpIHtcbiAgICAgIHN3aXRjaCAob3B0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2RlYWRsaW5lJzpcbiAgICAgICAgICB0aGlzLl90aW1lb3V0ID0gb3B0aW9ucy5kZWFkbGluZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmVzcG9uc2UnOlxuICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlVGltZW91dCA9IG9wdGlvbnMucmVzcG9uc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3VwbG9hZCc6XG4gICAgICAgICAgdGhpcy5fdXBsb2FkVGltZW91dCA9IG9wdGlvbnMudXBsb2FkO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybignVW5rbm93biB0aW1lb3V0IG9wdGlvbicsIG9wdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCBudW1iZXIgb2YgcmV0cnkgYXR0ZW1wdHMgb24gZXJyb3IuXG4gKlxuICogRmFpbGVkIHJlcXVlc3RzIHdpbGwgYmUgcmV0cmllZCAnY291bnQnIHRpbWVzIGlmIHRpbWVvdXQgb3IgZXJyLmNvZGUgPj0gNTAwLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb3VudFxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZXRyeSA9IGZ1bmN0aW9uIChjb3VudCwgZm4pIHtcbiAgLy8gRGVmYXVsdCB0byAxIGlmIG5vIGNvdW50IHBhc3NlZCBvciB0cnVlXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwIHx8IGNvdW50ID09PSB0cnVlKSBjb3VudCA9IDE7XG4gIGlmIChjb3VudCA8PSAwKSBjb3VudCA9IDA7XG4gIHRoaXMuX21heFJldHJpZXMgPSBjb3VudDtcbiAgdGhpcy5fcmV0cmllcyA9IDA7XG4gIHRoaXMuX3JldHJ5Q2FsbGJhY2sgPSBmbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vL1xuLy8gTk9URTogd2UgZG8gbm90IGluY2x1ZGUgRVNPQ0tFVFRJTUVET1VUIGJlY2F1c2UgdGhhdCBpcyBmcm9tIGByZXF1ZXN0YCBwYWNrYWdlXG4vLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9nb3QvcHVsbC81Mzc+XG4vL1xuLy8gTk9URTogd2UgZG8gbm90IGluY2x1ZGUgRUFERFJJTkZPIGJlY2F1c2UgaXQgd2FzIHJlbW92ZWQgZnJvbSBsaWJ1diBpbiAyMDE0XG4vLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2L2NvbW1pdC8wMmUxZWJkNDBiODA3YmU1YWY0NjM0M2VhODczMzMxYjJlZTRlOWMxPlxuLy8gICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9yZXF1ZXN0L3JlcXVlc3Qvc2VhcmNoP3E9RVNPQ0tFVFRJTUVET1VUJnVuc2NvcGVkX3E9RVNPQ0tFVFRJTUVET1VUPlxuLy9cbi8vXG4vLyBUT0RPOiBleHBvc2UgdGhlc2UgYXMgY29uZmlndXJhYmxlIGRlZmF1bHRzXG4vL1xuY29uc3QgRVJST1JfQ09ERVMgPSBuZXcgU2V0KFtcbiAgJ0VUSU1FRE9VVCcsXG4gICdFQ09OTlJFU0VUJyxcbiAgJ0VBRERSSU5VU0UnLFxuICAnRUNPTk5SRUZVU0VEJyxcbiAgJ0VQSVBFJyxcbiAgJ0VOT1RGT1VORCcsXG4gICdFTkVUVU5SRUFDSCcsXG4gICdFQUlfQUdBSU4nXG5dKTtcblxuY29uc3QgU1RBVFVTX0NPREVTID0gbmV3IFNldChbXG4gIDQwOCwgNDEzLCA0MjksIDUwMCwgNTAyLCA1MDMsIDUwNCwgNTIxLCA1MjIsIDUyNFxuXSk7XG5cbi8vIFRPRE86IHdlIHdvdWxkIG5lZWQgdG8gbWFrZSB0aGlzIGVhc2lseSBjb25maWd1cmFibGUgYmVmb3JlIGFkZGluZyBpdCBpbiAoZS5nLiBzb21lIG1pZ2h0IHdhbnQgdG8gYWRkIFBPU1QpXG4vLyBjb25zdCBNRVRIT0RTID0gbmV3IFNldChbJ0dFVCcsICdQVVQnLCAnSEVBRCcsICdERUxFVEUnLCAnT1BUSU9OUycsICdUUkFDRSddKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSByZXF1ZXN0IHNob3VsZCBiZSByZXRyaWVkLlxuICogKEluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvZ290I3JldHJ5KVxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVyciBhbiBlcnJvclxuICogQHBhcmFtIHtSZXNwb25zZX0gW3Jlc10gcmVzcG9uc2VcbiAqIEByZXR1cm5zIHtCb29sZWFufSBpZiBzZWdtZW50IHNob3VsZCBiZSByZXRyaWVkXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2hvdWxkUmV0cnkgPSBmdW5jdGlvbiAoZXJyb3IsIHJlcykge1xuICBpZiAoIXRoaXMuX21heFJldHJpZXMgfHwgdGhpcy5fcmV0cmllcysrID49IHRoaXMuX21heFJldHJpZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fcmV0cnlDYWxsYmFjaykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvdmVycmlkZSA9IHRoaXMuX3JldHJ5Q2FsbGJhY2soZXJyb3IsIHJlcyk7XG4gICAgICBpZiAob3ZlcnJpZGUgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKG92ZXJyaWRlID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgLy8gdW5kZWZpbmVkIGZhbGxzIGJhY2sgdG8gZGVmYXVsdHNcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiB3ZSB3b3VsZCBuZWVkIHRvIG1ha2UgdGhpcyBlYXNpbHkgY29uZmlndXJhYmxlIGJlZm9yZSBhZGRpbmcgaXQgaW4gKGUuZy4gc29tZSBtaWdodCB3YW50IHRvIGFkZCBQT1NUKVxuICAvKlxuICBpZiAoXG4gICAgdGhpcy5yZXEgJiZcbiAgICB0aGlzLnJlcS5tZXRob2QgJiZcbiAgICAhTUVUSE9EUy5oYXModGhpcy5yZXEubWV0aG9kLnRvVXBwZXJDYXNlKCkpXG4gIClcbiAgICByZXR1cm4gZmFsc2U7XG4gICovXG4gIGlmIChyZXMgJiYgcmVzLnN0YXR1cyAmJiBTVEFUVVNfQ09ERVMuaGFzKHJlcy5zdGF0dXMpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGVycm9yKSB7XG4gICAgaWYgKGVycm9yLmNvZGUgJiYgRVJST1JfQ09ERVMuaGFzKGVycm9yLmNvZGUpKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBTdXBlcmFnZW50IHRpbWVvdXRcbiAgICBpZiAoZXJyb3IudGltZW91dCAmJiBlcnJvci5jb2RlID09PSAnRUNPTk5BQk9SVEVEJykgcmV0dXJuIHRydWU7XG4gICAgaWYgKGVycm9yLmNyb3NzRG9tYWluKSByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0cnkgcmVxdWVzdFxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9yZXRyeSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jbGVhclRpbWVvdXQoKTtcblxuICAvLyBub2RlXG4gIGlmICh0aGlzLnJlcSkge1xuICAgIHRoaXMucmVxID0gbnVsbDtcbiAgICB0aGlzLnJlcSA9IHRoaXMucmVxdWVzdCgpO1xuICB9XG5cbiAgdGhpcy5fYWJvcnRlZCA9IGZhbHNlO1xuICB0aGlzLnRpbWVkb3V0ID0gZmFsc2U7XG4gIHRoaXMudGltZWRvdXRFcnJvciA9IG51bGw7XG5cbiAgcmV0dXJuIHRoaXMuX2VuZCgpO1xufTtcblxuLyoqXG4gKiBQcm9taXNlIHN1cHBvcnRcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVqZWN0XVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgaWYgKCF0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICh0aGlzLl9lbmRDYWxsZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1dhcm5pbmc6IHN1cGVyYWdlbnQgcmVxdWVzdCB3YXMgc2VudCB0d2ljZSwgYmVjYXVzZSBib3RoIC5lbmQoKSBhbmQgLnRoZW4oKSB3ZXJlIGNhbGxlZC4gTmV2ZXIgY2FsbCAuZW5kKCkgaWYgeW91IHVzZSBwcm9taXNlcydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fZnVsbGZpbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzZWxmLm9uKCdhYm9ydCcsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX21heFJldHJpZXMgJiYgdGhpcy5fbWF4UmV0cmllcyA+IHRoaXMuX3JldHJpZXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50aW1lZG91dCAmJiB0aGlzLnRpbWVkb3V0RXJyb3IpIHtcbiAgICAgICAgICByZWplY3QodGhpcy50aW1lZG91dEVycm9yKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignQWJvcnRlZCcpO1xuICAgICAgICBlcnJvci5jb2RlID0gJ0FCT1JURUQnO1xuICAgICAgICBlcnJvci5zdGF0dXMgPSB0aGlzLnN0YXR1cztcbiAgICAgICAgZXJyb3IubWV0aG9kID0gdGhpcy5tZXRob2Q7XG4gICAgICAgIGVycm9yLnVybCA9IHRoaXMudXJsO1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgICBzZWxmLmVuZCgoZXJyb3IsIHJlcykgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHJlamVjdChlcnJvcik7XG4gICAgICAgIGVsc2UgcmVzb2x2ZShyZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fZnVsbGZpbGxlZFByb21pc2UudGhlbihyZXNvbHZlLCByZWplY3QpO1xufTtcblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmNhdGNoID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEFsbG93IGZvciBleHRlbnNpb25cbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gKGZuKSB7XG4gIGZuKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5vayA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxiYWNrIHJlcXVpcmVkJyk7XG4gIHRoaXMuX29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2lzUmVzcG9uc2VPSyA9IGZ1bmN0aW9uIChyZXMpIHtcbiAgaWYgKCFyZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fb2tDYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLl9va0NhbGxiYWNrKHJlcyk7XG4gIH1cblxuICByZXR1cm4gcmVzLnN0YXR1cyA+PSAyMDAgJiYgcmVzLnN0YXR1cyA8IDMwMDtcbn07XG5cbi8qKlxuICogR2V0IHJlcXVlc3QgaGVhZGVyIGBmaWVsZGAuXG4gKiBDYXNlLWluc2Vuc2l0aXZlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIHJldHVybiB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG59O1xuXG4vKipcbiAqIEdldCBjYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBgZmllbGRgIHZhbHVlLlxuICogVGhpcyBpcyBhIGRlcHJlY2F0ZWQgaW50ZXJuYWwgQVBJLiBVc2UgYC5nZXQoZmllbGQpYCBpbnN0ZWFkLlxuICpcbiAqIChnZXRIZWFkZXIgaXMgbm8gbG9uZ2VyIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgc3VwZXJhZ2VudCBjb2RlIGJhc2UpXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqIEBkZXByZWNhdGVkXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmdldEhlYWRlciA9IFJlcXVlc3RCYXNlLnByb3RvdHlwZS5nZXQ7XG5cbi8qKlxuICogU2V0IGhlYWRlciBgZmllbGRgIHRvIGB2YWxgLCBvciBtdWx0aXBsZSBmaWVsZHMgd2l0aCBvbmUgb2JqZWN0LlxuICogQ2FzZS1pbnNlbnNpdGl2ZS5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuc2V0KCdYLUFQSS1LZXknLCAnZm9vYmFyJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoeyBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJywgJ1gtQVBJLUtleSc6ICdmb29iYXInIH0pXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoZmllbGQsIHZhbHVlKSB7XG4gIGlmIChpc09iamVjdChmaWVsZCkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZCkge1xuICAgICAgaWYgKGhhc093bihmaWVsZCwga2V5KSkgdGhpcy5zZXQoa2V5LCBmaWVsZFtrZXldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX2hlYWRlcltmaWVsZC50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlO1xuICB0aGlzLmhlYWRlcltmaWVsZF0gPSB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBoZWFkZXIgYGZpZWxkYC5cbiAqIENhc2UtaW5zZW5zaXRpdmUuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC51bnNldCgnVXNlci1BZ2VudCcpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkIGZpZWxkIG5hbWVcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIGRlbGV0ZSB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG4gIGRlbGV0ZSB0aGlzLmhlYWRlcltmaWVsZF07XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXcml0ZSB0aGUgZmllbGQgYG5hbWVgIGFuZCBgdmFsYCwgb3IgbXVsdGlwbGUgZmllbGRzIHdpdGggb25lIG9iamVjdFxuICogZm9yIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIHJlcXVlc3QgYm9kaWVzLlxuICpcbiAqIGBgYCBqc1xuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKCdmb28nLCAnYmFyJylcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKHsgZm9vOiAnYmFyJywgYmF6OiAncXV4JyB9KVxuICogICAuZW5kKGNhbGxiYWNrKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gbmFtZSBuYW1lIG9mIGZpZWxkXG4gKiBAcGFyYW0ge1N0cmluZ3xCbG9ifEZpbGV8QnVmZmVyfGZzLlJlYWRTdHJlYW19IHZhbCB2YWx1ZSBvZiBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbnMgZXh0cmEgb3B0aW9ucywgZS5nLiAnYmxvYidcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLmZpZWxkID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcHRpb25zKSB7XG4gIC8vIG5hbWUgc2hvdWxkIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvYmplY3QuXG4gIGlmIChuYW1lID09PSBudWxsIHx8IHVuZGVmaW5lZCA9PT0gbmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignLmZpZWxkKG5hbWUsIHZhbCkgbmFtZSBjYW4gbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICBpZiAodGhpcy5fZGF0YSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiLmZpZWxkKCkgY2FuJ3QgYmUgdXNlZCBpZiAuc2VuZCgpIGlzIHVzZWQuIFBsZWFzZSB1c2Ugb25seSAuc2VuZCgpIG9yIG9ubHkgLmZpZWxkKCkgJiAuYXR0YWNoKClcIlxuICAgICk7XG4gIH1cblxuICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBuYW1lKSB7XG4gICAgICBpZiAoaGFzT3duKG5hbWUsIGtleSkpIHRoaXMuZmllbGQoa2V5LCBuYW1lW2tleV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgZm9yIChjb25zdCBpIGluIHZhbHVlKSB7XG4gICAgICBpZiAoaGFzT3duKHZhbHVlLCBpKSkgdGhpcy5maWVsZChuYW1lLCB2YWx1ZVtpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB2YWwgc2hvdWxkIGJlIGRlZmluZWQgbm93XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB1bmRlZmluZWQgPT09IHZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCcuZmllbGQobmFtZSwgdmFsKSB2YWwgY2FuIG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgLy9maXggaHR0cHM6Ly9naXRodWIuY29tL3Zpc2lvbm1lZGlhL3N1cGVyYWdlbnQvaXNzdWVzLzE2ODBcbiAgaWYgKG9wdGlvbnMpIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKG5hbWUsIHZhbHVlLCBvcHRpb25zKTtcbiAgZWxzZSB0aGlzLl9nZXRGb3JtRGF0YSgpLmFwcGVuZChuYW1lLCB2YWx1ZSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEFib3J0IHRoZSByZXF1ZXN0LCBhbmQgY2xlYXIgcG90ZW50aWFsIHRpbWVvdXQuXG4gKlxuICogQHJldHVybiB7UmVxdWVzdH0gcmVxdWVzdFxuICogQGFwaSBwdWJsaWNcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLmFib3J0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5fYWJvcnRlZCA9IHRydWU7XG4gIGlmICh0aGlzLnhocikgdGhpcy54aHIuYWJvcnQoKTsgLy8gYnJvd3NlclxuICBpZiAodGhpcy5yZXEpIHtcbiAgICAvLyBOb2RlIHYxMyBoYXMgbWFqb3IgZGlmZmVyZW5jZXMgaW4gYGFib3J0KClgXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvdjEyLngvbGliL2ludGVybmFsL3N0cmVhbXMvZW5kLW9mLXN0cmVhbS5qc1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxMy54L2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanNcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi92MTQueC9saWIvaW50ZXJuYWwvc3RyZWFtcy9lbmQtb2Ytc3RyZWFtLmpzXG4gICAgLy8gKGlmIHlvdSBydW4gYSBkaWZmIGFjcm9zcyB0aGVzZSB5b3Ugd2lsbCBzZWUgdGhlIGRpZmZlcmVuY2VzKVxuICAgIC8vXG4gICAgLy8gUmVmZXJlbmNlczpcbiAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2lzc3Vlcy8zMTYzMD5cbiAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL3Zpc2lvbm1lZGlhL3N1cGVyYWdlbnQvcHVsbC8xMDg0L2NvbW1pdHMvZGMxODY3OWE3YzVjY2ZjNjA0NmQ4ODIwMTVlNTEyNjg4ODk3M2JjOD5cbiAgICAvL1xuICAgIC8vIFRoYW5rcyB0byBAc2hhZG93Z2F0ZTE1IGFuZCBAbmlmdHlsZXR0dWNlXG4gICAgaWYgKFxuICAgICAgc2VtdmVyLmd0ZShwcm9jZXNzLnZlcnNpb24sICd2MTMuMC4wJykgJiZcbiAgICAgIHNlbXZlci5sdChwcm9jZXNzLnZlcnNpb24sICd2MTQuMC4wJylcbiAgICApIHtcbiAgICAgIC8vIE5vdGUgdGhhdCB0aGUgcmVhc29uIHRoaXMgZG9lc24ndCB3b3JrIGlzIGJlY2F1c2UgaW4gdjEzIGFzIGNvbXBhcmVkIHRvIHYxNFxuICAgICAgLy8gdGhlcmUgaXMgbm8gYGNhbGxiYWNrID0gbm9wYCBzZXQgaW4gZW5kLW9mLXN0cmVhbS5qcyBhYm92ZVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnU3VwZXJhZ2VudCBkb2VzIG5vdCB3b3JrIGluIHYxMyBwcm9wZXJseSB3aXRoIGFib3J0KCkgZHVlIHRvIE5vZGUuanMgY29yZSBjaGFuZ2VzJ1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHNlbXZlci5ndGUocHJvY2Vzcy52ZXJzaW9uLCAndjE0LjAuMCcpKSB7XG4gICAgICAvLyBXZSBoYXZlIHRvIG1hbnVhbGx5IHNldCBgZGVzdHJveWVkYCB0byBgdHJ1ZWAgaW4gb3JkZXIgZm9yIHRoaXMgdG8gd29ya1xuICAgICAgLy8gKHNlZSBjb3JlIGludGVybmFscyBvZiBlbmQtb2Ytc3RyZWFtLmpzIGFib3ZlIGluIHYxNCBicmFuY2ggYXMgY29tcGFyZWQgdG8gdjEyKVxuICAgICAgdGhpcy5yZXEuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnJlcS5hYm9ydCgpOyAvLyBub2RlXG4gIH1cblxuICB0aGlzLmNsZWFyVGltZW91dCgpO1xuICB0aGlzLmVtaXQoJ2Fib3J0Jyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9hdXRoID0gZnVuY3Rpb24gKHVzZXIsIHBhc3MsIG9wdGlvbnMsIGJhc2U2NEVuY29kZXIpIHtcbiAgc3dpdGNoIChvcHRpb25zLnR5cGUpIHtcbiAgICBjYXNlICdiYXNpYyc6XG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsIGBCYXNpYyAke2Jhc2U2NEVuY29kZXIoYCR7dXNlcn06JHtwYXNzfWApfWApO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdhdXRvJzpcbiAgICAgIHRoaXMudXNlcm5hbWUgPSB1c2VyO1xuICAgICAgdGhpcy5wYXNzd29yZCA9IHBhc3M7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2JlYXJlcic6IC8vIHVzYWdlIHdvdWxkIGJlIC5hdXRoKGFjY2Vzc1Rva2VuLCB7IHR5cGU6ICdiZWFyZXInIH0pXG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsIGBCZWFyZXIgJHt1c2VyfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEVuYWJsZSB0cmFuc21pc3Npb24gb2YgY29va2llcyB3aXRoIHgtZG9tYWluIHJlcXVlc3RzLlxuICpcbiAqIE5vdGUgdGhhdCBmb3IgdGhpcyB0byB3b3JrIHRoZSBvcmlnaW4gbXVzdCBub3QgYmVcbiAqIHVzaW5nIFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXCIgd2l0aCBhIHdpbGRjYXJkLFxuICogYW5kIGFsc28gbXVzdCBzZXQgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1wiXG4gKiB0byBcInRydWVcIi5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS53aXRoQ3JlZGVudGlhbHMgPSBmdW5jdGlvbiAob24pIHtcbiAgLy8gVGhpcyBpcyBicm93c2VyLW9ubHkgZnVuY3Rpb25hbGl0eS4gTm9kZSBzaWRlIGlzIG5vLW9wLlxuICBpZiAob24gPT09IHVuZGVmaW5lZCkgb24gPSB0cnVlO1xuICB0aGlzLl93aXRoQ3JlZGVudGlhbHMgPSBvbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgbWF4IHJlZGlyZWN0cyB0byBgbmAuIERvZXMgbm90aGluZyBpbiBicm93c2VyIFhIUiBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gblxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZWRpcmVjdHMgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLl9tYXhSZWRpcmVjdHMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogTWF4aW11bSBzaXplIG9mIGJ1ZmZlcmVkIHJlc3BvbnNlIGJvZHksIGluIGJ5dGVzLiBDb3VudHMgdW5jb21wcmVzc2VkIHNpemUuXG4gKiBEZWZhdWx0IDIwME1CLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBuIG51bWJlciBvZiBieXRlc1xuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5tYXhSZXNwb25zZVNpemUgPSBmdW5jdGlvbiAobikge1xuICBpZiAodHlwZW9mIG4gIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBhcmd1bWVudCcpO1xuICB9XG5cbiAgdGhpcy5fbWF4UmVzcG9uc2VTaXplID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENvbnZlcnQgdG8gYSBwbGFpbiBqYXZhc2NyaXB0IG9iamVjdCAobm90IEpTT04gc3RyaW5nKSBvZiBzY2FsYXIgcHJvcGVydGllcy5cbiAqIE5vdGUgYXMgdGhpcyBtZXRob2QgaXMgZGVzaWduZWQgdG8gcmV0dXJuIGEgdXNlZnVsIG5vbi10aGlzIHZhbHVlLFxuICogaXQgY2Fubm90IGJlIGNoYWluZWQuXG4gKlxuICogQHJldHVybiB7T2JqZWN0fSBkZXNjcmliaW5nIG1ldGhvZCwgdXJsLCBhbmQgZGF0YSBvZiB0aGlzIHJlcXVlc3RcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHtcbiAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgIHVybDogdGhpcy51cmwsXG4gICAgZGF0YTogdGhpcy5fZGF0YSxcbiAgICBoZWFkZXJzOiB0aGlzLl9oZWFkZXJcbiAgfTtcbn07XG5cbi8qKlxuICogU2VuZCBgZGF0YWAgYXMgdGhlIHJlcXVlc3QgYm9keSwgZGVmYXVsdGluZyB0aGUgYC50eXBlKClgIHRvIFwianNvblwiIHdoZW5cbiAqIGFuIG9iamVjdCBpcyBnaXZlbi5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgICAvLyBtYW51YWwganNvblxuICogICAgICAgcmVxdWVzdC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgIC50eXBlKCdqc29uJylcbiAqICAgICAgICAgLnNlbmQoJ3tcIm5hbWVcIjpcInRqXCJ9JylcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBhdXRvIGpzb25cbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAuc2VuZCh7IG5hbWU6ICd0aicgfSlcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBtYW51YWwgeC13d3ctZm9ybS11cmxlbmNvZGVkXG4gKiAgICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAgLnR5cGUoJ2Zvcm0nKVxuICogICAgICAgICAuc2VuZCgnbmFtZT10aicpXG4gKiAgICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogICAgICAgLy8gYXV0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAudHlwZSgnZm9ybScpXG4gKiAgICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqICAgICAgIC8vIGRlZmF1bHRzIHRvIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxuICogICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAuc2VuZCgnbmFtZT10b2JpJylcbiAqICAgICAgICAuc2VuZCgnc3BlY2llcz1mZXJyZXQnKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBkYXRhXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZW5kID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgaXNPYmplY3RfID0gaXNPYmplY3QoZGF0YSk7XG4gIGxldCB0eXBlID0gdGhpcy5faGVhZGVyWydjb250ZW50LXR5cGUnXTtcblxuICBpZiAodGhpcy5fZm9ybURhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIi5zZW5kKCkgY2FuJ3QgYmUgdXNlZCBpZiAuYXR0YWNoKCkgb3IgLmZpZWxkKCkgaXMgdXNlZC4gUGxlYXNlIHVzZSBvbmx5IC5zZW5kKCkgb3Igb25seSAuZmllbGQoKSAmIC5hdHRhY2goKVwiXG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc09iamVjdF8gJiYgIXRoaXMuX2RhdGEpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgdGhpcy5fZGF0YSA9IFtdO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX2lzSG9zdChkYXRhKSkge1xuICAgICAgdGhpcy5fZGF0YSA9IHt9O1xuICAgIH1cbiAgfSBlbHNlIGlmIChkYXRhICYmIHRoaXMuX2RhdGEgJiYgdGhpcy5faXNIb3N0KHRoaXMuX2RhdGEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgbWVyZ2UgdGhlc2Ugc2VuZCBjYWxsc1wiKTtcbiAgfVxuXG4gIC8vIG1lcmdlXG4gIGlmIChpc09iamVjdF8gJiYgaXNPYmplY3QodGhpcy5fZGF0YSkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICBpZiAoaGFzT3duKGRhdGEsIGtleSkpIHRoaXMuX2RhdGFba2V5XSA9IGRhdGFba2V5XTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZGVmYXVsdCB0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAgICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnZm9ybScpO1xuICAgIHR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIGlmICh0eXBlKSB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBpZiAodHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLl9kYXRhID8gYCR7dGhpcy5fZGF0YX0mJHtkYXRhfWAgOiBkYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kYXRhID0gKHRoaXMuX2RhdGEgfHwgJycpICsgZGF0YTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gIH1cblxuICBpZiAoIWlzT2JqZWN0XyB8fCB0aGlzLl9pc0hvc3QoZGF0YSkpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGRlZmF1bHQgdG8ganNvblxuICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnanNvbicpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU29ydCBgcXVlcnlzdHJpbmdgIGJ5IHRoZSBzb3J0IGZ1bmN0aW9uXG4gKlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgIC8vIGRlZmF1bHQgb3JkZXJcbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KClcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBjdXN0b21pemVkIHNvcnQgZnVuY3Rpb25cbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KGZ1bmN0aW9uKGEsIGIpe1xuICogICAgICAgICAgIHJldHVybiBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICogICAgICAgICB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzb3J0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnNvcnRRdWVyeSA9IGZ1bmN0aW9uIChzb3J0KSB7XG4gIC8vIF9zb3J0IGRlZmF1bHQgdG8gdHJ1ZSBidXQgb3RoZXJ3aXNlIGNhbiBiZSBhIGZ1bmN0aW9uIG9yIGJvb2xlYW5cbiAgdGhpcy5fc29ydCA9IHR5cGVvZiBzb3J0ID09PSAndW5kZWZpbmVkJyA/IHRydWUgOiBzb3J0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ29tcG9zZSBxdWVyeXN0cmluZyB0byBhcHBlbmQgdG8gcmVxLnVybFxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2ZpbmFsaXplUXVlcnlTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHF1ZXJ5ID0gdGhpcy5fcXVlcnkuam9pbignJicpO1xuICBpZiAocXVlcnkpIHtcbiAgICB0aGlzLnVybCArPSAodGhpcy51cmwuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/JykgKyBxdWVyeTtcbiAgfVxuXG4gIHRoaXMuX3F1ZXJ5Lmxlbmd0aCA9IDA7IC8vIE1ha2VzIHRoZSBjYWxsIGlkZW1wb3RlbnRcblxuICBpZiAodGhpcy5fc29ydCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cmwuaW5kZXhPZignPycpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBxdWVyeUFycmF5ID0gdGhpcy51cmwuc2xpY2UoaW5kZXggKyAxKS5zcGxpdCgnJicpO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zb3J0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHF1ZXJ5QXJyYXkuc29ydCh0aGlzLl9zb3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXJ5QXJyYXkuc29ydCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnNsaWNlKDAsIGluZGV4KSArICc/JyArIHF1ZXJ5QXJyYXkuam9pbignJicpO1xuICAgIH1cbiAgfVxufTtcblxuLy8gRm9yIGJhY2t3YXJkcyBjb21wYXQgb25seVxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9hcHBlbmRRdWVyeVN0cmluZyA9ICgpID0+IHtcbiAgY29uc29sZS53YXJuKCdVbnN1cHBvcnRlZCcpO1xufTtcblxuLyoqXG4gKiBJbnZva2UgY2FsbGJhY2sgd2l0aCB0aW1lb3V0IGVycm9yLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fdGltZW91dEVycm9yID0gZnVuY3Rpb24gKHJlYXNvbiwgdGltZW91dCwgZXJybm8pIHtcbiAgaWYgKHRoaXMuX2Fib3J0ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgJHtyZWFzb24gKyB0aW1lb3V0fW1zIGV4Y2VlZGVkYCk7XG4gIGVycm9yLnRpbWVvdXQgPSB0aW1lb3V0O1xuICBlcnJvci5jb2RlID0gJ0VDT05OQUJPUlRFRCc7XG4gIGVycm9yLmVycm5vID0gZXJybm87XG4gIHRoaXMudGltZWRvdXQgPSB0cnVlO1xuICB0aGlzLnRpbWVkb3V0RXJyb3IgPSBlcnJvcjtcbiAgdGhpcy5hYm9ydCgpO1xuICB0aGlzLmNhbGxiYWNrKGVycm9yKTtcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2V0VGltZW91dHMgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gIC8vIGRlYWRsaW5lXG4gIGlmICh0aGlzLl90aW1lb3V0ICYmICF0aGlzLl90aW1lcikge1xuICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZWxmLl90aW1lb3V0RXJyb3IoJ1RpbWVvdXQgb2YgJywgc2VsZi5fdGltZW91dCwgJ0VUSU1FJyk7XG4gICAgfSwgdGhpcy5fdGltZW91dCk7XG4gIH1cblxuICAvLyByZXNwb25zZSB0aW1lb3V0XG4gIGlmICh0aGlzLl9yZXNwb25zZVRpbWVvdXQgJiYgIXRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyKSB7XG4gICAgdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNlbGYuX3RpbWVvdXRFcnJvcihcbiAgICAgICAgJ1Jlc3BvbnNlIHRpbWVvdXQgb2YgJyxcbiAgICAgICAgc2VsZi5fcmVzcG9uc2VUaW1lb3V0LFxuICAgICAgICAnRVRJTUVET1VUJ1xuICAgICAgKTtcbiAgICB9LCB0aGlzLl9yZXNwb25zZVRpbWVvdXQpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBTUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUF0QjtBQUVBO0FBQ0E7QUFDQTs7O0FBQ0EsZUFBNkJBLE9BQU8sQ0FBQyxTQUFELENBQXBDO0FBQUEsSUFBUUMsUUFBUixZQUFRQSxRQUFSO0FBQUEsSUFBa0JDLE1BQWxCLFlBQWtCQSxNQUFsQjtBQUVBO0FBQ0E7QUFDQTs7O0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkMsV0FBakI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVNBLFdBQVQsR0FBdUIsQ0FBRztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBQSxXQUFXLENBQUNDLFNBQVosQ0FBc0JDLFlBQXRCLEdBQXFDLFlBQVk7RUFDL0NBLFlBQVksQ0FBQyxLQUFLQyxNQUFOLENBQVo7RUFDQUQsWUFBWSxDQUFDLEtBQUtFLHFCQUFOLENBQVo7RUFDQUYsWUFBWSxDQUFDLEtBQUtHLG1CQUFOLENBQVo7RUFDQSxPQUFPLEtBQUtGLE1BQVo7RUFDQSxPQUFPLEtBQUtDLHFCQUFaO0VBQ0EsT0FBTyxLQUFLQyxtQkFBWjtFQUNBLE9BQU8sSUFBUDtBQUNELENBUkQ7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQUwsV0FBVyxDQUFDQyxTQUFaLENBQXNCSyxLQUF0QixHQUE4QixVQUFVQyxFQUFWLEVBQWM7RUFDMUMsS0FBS0MsT0FBTCxHQUFlRCxFQUFmO0VBQ0EsT0FBTyxJQUFQO0FBQ0QsQ0FIRDtB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","\"use strict\";\n\n/**\n * Module dependencies.\n */\nvar utils = require('./utils');\n/**\n * Expose `ResponseBase`.\n */\n\n\nmodule.exports = ResponseBase;\n/**\n * Initialize a new `ResponseBase`.\n *\n * @api public\n */\n\nfunction ResponseBase() {}\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\n\nResponseBase.prototype.get = function (field) {\n return this.header[field.toLowerCase()];\n};\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\n\nResponseBase.prototype._setHeaderProperties = function (header) {\n // TODO: moar!\n // TODO: make this a util\n // content-type\n var ct = header['content-type'] || '';\n this.type = utils.type(ct); // params\n\n var parameters = utils.params(ct);\n\n for (var key in parameters) {\n if (Object.prototype.hasOwnProperty.call(parameters, key)) this[key] = parameters[key];\n }\n\n this.links = {}; // links\n\n try {\n if (header.link) {\n this.links = utils.parseLinks(header.link);\n }\n } catch (_unused) {// ignore\n }\n};\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\n\nResponseBase.prototype._setStatusProperties = function (status) {\n var type = Math.trunc(status / 100); // status / class\n\n this.statusCode = status;\n this.status = this.statusCode;\n this.statusType = type; // basics\n\n this.info = type === 1;\n this.ok = type === 2;\n this.redirect = type === 3;\n this.clientError = type === 4;\n this.serverError = type === 5;\n this.error = type === 4 || type === 5 ? this.toError() : false; // sugar\n\n this.created = status === 201;\n this.accepted = status === 202;\n this.noContent = status === 204;\n this.badRequest = status === 400;\n this.unauthorized = status === 401;\n this.notAcceptable = status === 406;\n this.forbidden = status === 403;\n this.notFound = status === 404;\n this.unprocessableEntity = status === 422;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1dGlscyIsInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIiwiUmVzcG9uc2VCYXNlIiwicHJvdG90eXBlIiwiZ2V0IiwiZmllbGQiLCJoZWFkZXIiLCJ0b0xvd2VyQ2FzZSIsIl9zZXRIZWFkZXJQcm9wZXJ0aWVzIiwiY3QiLCJ0eXBlIiwicGFyYW1ldGVycyIsInBhcmFtcyIsImtleSIsIk9iamVjdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImxpbmtzIiwibGluayIsInBhcnNlTGlua3MiLCJfc2V0U3RhdHVzUHJvcGVydGllcyIsInN0YXR1cyIsIk1hdGgiLCJ0cnVuYyIsInN0YXR1c0NvZGUiLCJzdGF0dXNUeXBlIiwiaW5mbyIsIm9rIiwicmVkaXJlY3QiLCJjbGllbnRFcnJvciIsInNlcnZlckVycm9yIiwiZXJyb3IiLCJ0b0Vycm9yIiwiY3JlYXRlZCIsImFjY2VwdGVkIiwibm9Db250ZW50IiwiYmFkUmVxdWVzdCIsInVuYXV0aG9yaXplZCIsIm5vdEFjY2VwdGFibGUiLCJmb3JiaWRkZW4iLCJub3RGb3VuZCIsInVucHJvY2Vzc2FibGVFbnRpdHkiXSwic291cmNlcyI6WyIuLi9zcmMvcmVzcG9uc2UtYmFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbi8qKlxuICogRXhwb3NlIGBSZXNwb25zZUJhc2VgLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVzcG9uc2VCYXNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJlc3BvbnNlQmFzZWAuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBSZXNwb25zZUJhc2UoKSB7fVxuXG4vKipcbiAqIEdldCBjYXNlLWluc2Vuc2l0aXZlIGBmaWVsZGAgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlc3BvbnNlQmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIHJldHVybiB0aGlzLmhlYWRlcltmaWVsZC50b0xvd2VyQ2FzZSgpXTtcbn07XG5cbi8qKlxuICogU2V0IGhlYWRlciByZWxhdGVkIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGAudHlwZWAgdGhlIGNvbnRlbnQgdHlwZSB3aXRob3V0IHBhcmFtc1xuICpcbiAqIEEgcmVzcG9uc2Ugb2YgXCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLThcIlxuICogd2lsbCBwcm92aWRlIHlvdSB3aXRoIGEgYC50eXBlYCBvZiBcInRleHQvcGxhaW5cIi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaGVhZGVyXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXNwb25zZUJhc2UucHJvdG90eXBlLl9zZXRIZWFkZXJQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGhlYWRlcikge1xuICAvLyBUT0RPOiBtb2FyIVxuICAvLyBUT0RPOiBtYWtlIHRoaXMgYSB1dGlsXG5cbiAgLy8gY29udGVudC10eXBlXG4gIGNvbnN0IGN0ID0gaGVhZGVyWydjb250ZW50LXR5cGUnXSB8fCAnJztcbiAgdGhpcy50eXBlID0gdXRpbHMudHlwZShjdCk7XG5cbiAgLy8gcGFyYW1zXG4gIGNvbnN0IHBhcmFtZXRlcnMgPSB1dGlscy5wYXJhbXMoY3QpO1xuICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbWV0ZXJzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJhbWV0ZXJzLCBrZXkpKVxuICAgICAgdGhpc1trZXldID0gcGFyYW1ldGVyc1trZXldO1xuICB9XG5cbiAgdGhpcy5saW5rcyA9IHt9O1xuXG4gIC8vIGxpbmtzXG4gIHRyeSB7XG4gICAgaWYgKGhlYWRlci5saW5rKSB7XG4gICAgICB0aGlzLmxpbmtzID0gdXRpbHMucGFyc2VMaW5rcyhoZWFkZXIubGluayk7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBpZ25vcmVcbiAgfVxufTtcblxuLyoqXG4gKiBTZXQgZmxhZ3Mgc3VjaCBhcyBgLm9rYCBiYXNlZCBvbiBgc3RhdHVzYC5cbiAqXG4gKiBGb3IgZXhhbXBsZSBhIDJ4eCByZXNwb25zZSB3aWxsIGdpdmUgeW91IGEgYC5va2Agb2YgX190cnVlX19cbiAqIHdoZXJlYXMgNXh4IHdpbGwgYmUgX19mYWxzZV9fIGFuZCBgLmVycm9yYCB3aWxsIGJlIF9fdHJ1ZV9fLiBUaGVcbiAqIGAuY2xpZW50RXJyb3JgIGFuZCBgLnNlcnZlckVycm9yYCBhcmUgYWxzbyBhdmFpbGFibGUgdG8gYmUgbW9yZVxuICogc3BlY2lmaWMsIGFuZCBgLnN0YXR1c1R5cGVgIGlzIHRoZSBjbGFzcyBvZiBlcnJvciByYW5naW5nIGZyb20gMS4uNVxuICogc29tZXRpbWVzIHVzZWZ1bCBmb3IgbWFwcGluZyByZXNwb25kIGNvbG9ycyBldGMuXG4gKlxuICogXCJzdWdhclwiIHByb3BlcnRpZXMgYXJlIGFsc28gZGVmaW5lZCBmb3IgY29tbW9uIGNhc2VzLiBDdXJyZW50bHkgcHJvdmlkaW5nOlxuICpcbiAqICAgLSAubm9Db250ZW50XG4gKiAgIC0gLmJhZFJlcXVlc3RcbiAqICAgLSAudW5hdXRob3JpemVkXG4gKiAgIC0gLm5vdEFjY2VwdGFibGVcbiAqICAgLSAubm90Rm91bmRcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gc3RhdHVzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXNwb25zZUJhc2UucHJvdG90eXBlLl9zZXRTdGF0dXNQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHN0YXR1cykge1xuICBjb25zdCB0eXBlID0gTWF0aC50cnVuYyhzdGF0dXMgLyAxMDApO1xuXG4gIC8vIHN0YXR1cyAvIGNsYXNzXG4gIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1cztcbiAgdGhpcy5zdGF0dXMgPSB0aGlzLnN0YXR1c0NvZGU7XG4gIHRoaXMuc3RhdHVzVHlwZSA9IHR5cGU7XG5cbiAgLy8gYmFzaWNzXG4gIHRoaXMuaW5mbyA9IHR5cGUgPT09IDE7XG4gIHRoaXMub2sgPSB0eXBlID09PSAyO1xuICB0aGlzLnJlZGlyZWN0ID0gdHlwZSA9PT0gMztcbiAgdGhpcy5jbGllbnRFcnJvciA9IHR5cGUgPT09IDQ7XG4gIHRoaXMuc2VydmVyRXJyb3IgPSB0eXBlID09PSA1O1xuICB0aGlzLmVycm9yID0gdHlwZSA9PT0gNCB8fCB0eXBlID09PSA1ID8gdGhpcy50b0Vycm9yKCkgOiBmYWxzZTtcblxuICAvLyBzdWdhclxuICB0aGlzLmNyZWF0ZWQgPSBzdGF0dXMgPT09IDIwMTtcbiAgdGhpcy5hY2NlcHRlZCA9IHN0YXR1cyA9PT0gMjAyO1xuICB0aGlzLm5vQ29udGVudCA9IHN0YXR1cyA9PT0gMjA0O1xuICB0aGlzLmJhZFJlcXVlc3QgPSBzdGF0dXMgPT09IDQwMDtcbiAgdGhpcy51bmF1dGhvcml6ZWQgPSBzdGF0dXMgPT09IDQwMTtcbiAgdGhpcy5ub3RBY2NlcHRhYmxlID0gc3RhdHVzID09PSA0MDY7XG4gIHRoaXMuZm9yYmlkZGVuID0gc3RhdHVzID09PSA0MDM7XG4gIHRoaXMubm90Rm91bmQgPSBzdGF0dXMgPT09IDQwNDtcbiAgdGhpcy51bnByb2Nlc3NhYmxlRW50aXR5ID0gc3RhdHVzID09PSA0MjI7XG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUVBLElBQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7QUFFQTtBQUNBO0FBQ0E7OztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLFlBQWpCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTQSxZQUFULEdBQXdCLENBQUU7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBQSxZQUFZLENBQUNDLFNBQWIsQ0FBdUJDLEdBQXZCLEdBQTZCLFVBQVVDLEtBQVYsRUFBaUI7RUFDNUMsT0FBTyxLQUFLQyxNQUFMLENBQVlELEtBQUssQ0FBQ0UsV0FBTixFQUFaLENBQVA7QUFDRCxDQUZEO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUFMLFlBQVksQ0FBQ0MsU0FBYixDQUF1Qkssb0JBQXZCLEdBQThDLFVBQVVGLE1BQVYsRUFBa0I7RUFDOUQ7RUFDQTtFQUVBO0VBQ0EsSUFBTUcsRUFBRSxHQUFHSCxNQUFNLENBQUMsY0FBRCxDQUFOLElBQTBCLEVBQXJDO0VBQ0EsS0FBS0ksSUFBTCxHQUFZWixLQUFLLENBQUNZLElBQU4sQ0FBV0QsRUFBWCxDQUFaLENBTjhELENBUTlEOztFQUNBLElBQU1FLFVBQVUsR0FBR2IsS0FBSyxDQUFDYyxNQUFOLENBQWFILEVBQWIsQ0FBbkI7O0VBQ0EsS0FBSyxJQUFNSSxHQUFYLElBQWtCRixVQUFsQixFQUE4QjtJQUM1QixJQUFJRyxNQUFNLENBQUNYLFNBQVAsQ0FBaUJZLGNBQWpCLENBQWdDQyxJQUFoQyxDQUFxQ0wsVUFBckMsRUFBaURFLEdBQWpELENBQUosRUFDRSxLQUFLQSxHQUFMLElBQVlGLFVBQVUsQ0FBQ0UsR0FBRCxDQUF0QjtFQUNIOztFQUVELEtBQUtJLEtBQUwsR0FBYSxFQUFiLENBZjhELENBaUI5RDs7RUFDQSxJQUFJO0lBQ0YsSUFBSVgsTUFBTSxDQUFDWSxJQUFYLEVBQWlCO01BQ2YsS0FBS0QsS0FBTCxHQUFhbkIsS0FBSyxDQUFDcUIsVUFBTixDQUFpQmIsTUFBTSxDQUFDWSxJQUF4QixDQUFiO0lBQ0Q7RUFDRixDQUpELENBSUUsZ0JBQU0sQ0FDTjtFQUNEO0FBQ0YsQ0F6QkQ7QUEyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUFoQixZQUFZLENBQUNDLFNBQWIsQ0FBdUJpQixvQkFBdkIsR0FBOEMsVUFBVUMsTUFBVixFQUFrQjtFQUM5RCxJQUFNWCxJQUFJLEdBQUdZLElBQUksQ0FBQ0MsS0FBTCxDQUFXRixNQUFNLEdBQUcsR0FBcEIsQ0FBYixDQUQ4RCxDQUc5RDs7RUFDQSxLQUFLRyxVQUFMLEdBQWtCSCxNQUFsQjtFQUNBLEtBQUtBLE1BQUwsR0FBYyxLQUFLRyxVQUFuQjtFQUNBLEtBQUtDLFVBQUwsR0FBa0JmLElBQWxCLENBTjhELENBUTlEOztFQUNBLEtBQUtnQixJQUFMLEdBQVloQixJQUFJLEtBQUssQ0FBckI7RUFDQSxLQUFLaUIsRUFBTCxHQUFVakIsSUFBSSxLQUFLLENBQW5CO0VBQ0EsS0FBS2tCLFFBQUwsR0FBZ0JsQixJQUFJLEtBQUssQ0FBekI7RUFDQSxLQUFLbUIsV0FBTCxHQUFtQm5CLElBQUksS0FBSyxDQUE1QjtFQUNBLEtBQUtvQixXQUFMLEdBQW1CcEIsSUFBSSxLQUFLLENBQTVCO0VBQ0EsS0FBS3FCLEtBQUwsR0FBYXJCLElBQUksS0FBSyxDQUFULElBQWNBLElBQUksS0FBSyxDQUF2QixHQUEyQixLQUFLc0IsT0FBTCxFQUEzQixHQUE0QyxLQUF6RCxDQWQ4RCxDQWdCOUQ7O0VBQ0EsS0FBS0MsT0FBTCxHQUFlWixNQUFNLEtBQUssR0FBMUI7RUFDQSxLQUFLYSxRQUFMLEdBQWdCYixNQUFNLEtBQUssR0FBM0I7RUFDQSxLQUFLYyxTQUFMLEdBQWlCZCxNQUFNLEtBQUssR0FBNUI7RUFDQSxLQUFLZSxVQUFMLEdBQWtCZixNQUFNLEtBQUssR0FBN0I7RUFDQSxLQUFLZ0IsWUFBTCxHQUFvQmhCLE1BQU0sS0FBSyxHQUEvQjtFQUNBLEtBQUtpQixhQUFMLEdBQXFCakIsTUFBTSxLQUFLLEdBQWhDO0VBQ0EsS0FBS2tCLFNBQUwsR0FBaUJsQixNQUFNLEtBQUssR0FBNUI7RUFDQSxLQUFLbUIsUUFBTCxHQUFnQm5CLE1BQU0sS0FBSyxHQUEzQjtFQUNBLEtBQUtvQixtQkFBTCxHQUEyQnBCLE1BQU0sS0FBSyxHQUF0QztBQUNELENBMUJEIn0=","\"use strict\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction Agent() {\n this._defaults = [];\n}\n\nvar _loop = function _loop() {\n var fn = _arr[_i];\n\n // Default setting for all requests from this agent\n Agent.prototype[fn] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this._defaults.push({\n fn: fn,\n args: args\n });\n\n return this;\n };\n};\n\nfor (var _i = 0, _arr = ['use', 'on', 'once', 'set', 'query', 'type', 'accept', 'auth', 'withCredentials', 'sortQuery', 'retry', 'ok', 'redirects', 'timeout', 'buffer', 'serialize', 'parse', 'ca', 'key', 'pfx', 'cert', 'disableTLSCerts']; _i < _arr.length; _i++) {\n _loop();\n}\n\nAgent.prototype._setDefaults = function (request) {\n var _iterator = _createForOfIteratorHelper(this._defaults),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var def = _step.value;\n request[def.fn].apply(request, _toConsumableArray(def.args));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n};\n\nmodule.exports = Agent;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBZ2VudCIsIl9kZWZhdWx0cyIsImZuIiwicHJvdG90eXBlIiwiYXJncyIsInB1c2giLCJfc2V0RGVmYXVsdHMiLCJyZXF1ZXN0IiwiZGVmIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hZ2VudC1iYXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIEFnZW50KCkge1xuICB0aGlzLl9kZWZhdWx0cyA9IFtdO1xufVxuXG5mb3IgKGNvbnN0IGZuIG9mIFtcbiAgJ3VzZScsXG4gICdvbicsXG4gICdvbmNlJyxcbiAgJ3NldCcsXG4gICdxdWVyeScsXG4gICd0eXBlJyxcbiAgJ2FjY2VwdCcsXG4gICdhdXRoJyxcbiAgJ3dpdGhDcmVkZW50aWFscycsXG4gICdzb3J0UXVlcnknLFxuICAncmV0cnknLFxuICAnb2snLFxuICAncmVkaXJlY3RzJyxcbiAgJ3RpbWVvdXQnLFxuICAnYnVmZmVyJyxcbiAgJ3NlcmlhbGl6ZScsXG4gICdwYXJzZScsXG4gICdjYScsXG4gICdrZXknLFxuICAncGZ4JyxcbiAgJ2NlcnQnLFxuICAnZGlzYWJsZVRMU0NlcnRzJ1xuXSkge1xuICAvLyBEZWZhdWx0IHNldHRpbmcgZm9yIGFsbCByZXF1ZXN0cyBmcm9tIHRoaXMgYWdlbnRcbiAgQWdlbnQucHJvdG90eXBlW2ZuXSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgdGhpcy5fZGVmYXVsdHMucHVzaCh7IGZuLCBhcmdzIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG5BZ2VudC5wcm90b3R5cGUuX3NldERlZmF1bHRzID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgZm9yIChjb25zdCBkZWYgb2YgdGhpcy5fZGVmYXVsdHMpIHtcbiAgICByZXF1ZXN0W2RlZi5mbl0oLi4uZGVmLmFyZ3MpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFnZW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsS0FBVCxHQUFpQjtFQUNmLEtBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDRDs7O0VBRUksSUFBTUMsRUFBRSxXQUFSOztFQXdCSDtFQUNBRixLQUFLLENBQUNHLFNBQU4sQ0FBZ0JELEVBQWhCLElBQXNCLFlBQW1CO0lBQUEsa0NBQU5FLElBQU07TUFBTkEsSUFBTTtJQUFBOztJQUN2QyxLQUFLSCxTQUFMLENBQWVJLElBQWYsQ0FBb0I7TUFBRUgsRUFBRSxFQUFGQSxFQUFGO01BQU1FLElBQUksRUFBSkE7SUFBTixDQUFwQjs7SUFDQSxPQUFPLElBQVA7RUFDRCxDQUhEOzs7QUF6QkYsd0JBQWlCLENBQ2YsS0FEZSxFQUVmLElBRmUsRUFHZixNQUhlLEVBSWYsS0FKZSxFQUtmLE9BTGUsRUFNZixNQU5lLEVBT2YsUUFQZSxFQVFmLE1BUmUsRUFTZixpQkFUZSxFQVVmLFdBVmUsRUFXZixPQVhlLEVBWWYsSUFaZSxFQWFmLFdBYmUsRUFjZixTQWRlLEVBZWYsUUFmZSxFQWdCZixXQWhCZSxFQWlCZixPQWpCZSxFQWtCZixJQWxCZSxFQW1CZixLQW5CZSxFQW9CZixLQXBCZSxFQXFCZixNQXJCZSxFQXNCZixpQkF0QmUsQ0FBakIsMEJBdUJHO0VBQUE7QUFNRjs7QUFFREosS0FBSyxDQUFDRyxTQUFOLENBQWdCRyxZQUFoQixHQUErQixVQUFVQyxPQUFWLEVBQW1CO0VBQUEsMkNBQzlCLEtBQUtOLFNBRHlCO0VBQUE7O0VBQUE7SUFDaEQsb0RBQWtDO01BQUEsSUFBdkJPLEdBQXVCO01BQ2hDRCxPQUFPLENBQUNDLEdBQUcsQ0FBQ04sRUFBTCxDQUFQLE9BQUFLLE9BQU8scUJBQVlDLEdBQUcsQ0FBQ0osSUFBaEIsRUFBUDtJQUNEO0VBSCtDO0lBQUE7RUFBQTtJQUFBO0VBQUE7QUFJakQsQ0FKRDs7QUFNQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCVixLQUFqQiJ9","'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","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Root reference for iframes.\n */\nvar root;\n\nif (typeof window !== 'undefined') {\n // Browser window\n root = window;\n} else if (typeof self === 'undefined') {\n // Other environments\n console.warn('Using browser-only version of superagent in non-browser environment');\n root = void 0;\n} else {\n // Web Worker\n root = self;\n}\n\nvar Emitter = require('component-emitter');\n\nvar safeStringify = require('fast-safe-stringify');\n\nvar qs = require('qs');\n\nvar RequestBase = require('./request-base');\n\nvar _require = require('./utils'),\n isObject = _require.isObject,\n mixin = _require.mixin,\n hasOwn = _require.hasOwn;\n\nvar ResponseBase = require('./response-base');\n\nvar Agent = require('./agent-base');\n/**\n * Noop.\n */\n\n\nfunction noop() {}\n/**\n * Expose `request`.\n */\n\n\nmodule.exports = function (method, url) {\n // callback\n if (typeof url === 'function') {\n return new exports.Request('GET', method).end(url);\n } // url first\n\n\n if (arguments.length === 1) {\n return new exports.Request('GET', method);\n }\n\n return new exports.Request(method, url);\n};\n\nexports = module.exports;\nvar request = exports;\nexports.Request = Request;\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest && (!root.location || root.location.protocol !== 'file:' || !root.ActiveXObject)) {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject('Microsoft.XMLHTTP');\n } catch (_unused) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.6.0');\n } catch (_unused2) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.3.0');\n } catch (_unused3) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP');\n } catch (_unused4) {\n /**/\n }\n\n throw new Error('Browser-only version of superagent could not find XHR');\n};\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\n\nvar trim = ''.trim ? function (s) {\n return s.trim();\n} : function (s) {\n return s.replace(/(^\\s*|\\s*$)/g, '');\n};\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(object) {\n if (!isObject(object)) return object;\n var pairs = [];\n\n for (var key in object) {\n if (hasOwn(object, key)) pushEncodedKeyValuePair(pairs, key, object[key]);\n }\n\n return pairs.join('&');\n}\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\n\nfunction pushEncodedKeyValuePair(pairs, key, value) {\n if (value === undefined) return;\n\n if (value === null) {\n pairs.push(encodeURI(key));\n return;\n }\n\n if (Array.isArray(value)) {\n var _iterator = _createForOfIteratorHelper(value),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var v = _step.value;\n pushEncodedKeyValuePair(pairs, key, v);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else if (isObject(value)) {\n for (var subkey in value) {\n if (hasOwn(value, subkey)) pushEncodedKeyValuePair(pairs, \"\".concat(key, \"[\").concat(subkey, \"]\"), value[subkey]);\n }\n } else {\n pairs.push(encodeURI(key) + '=' + encodeURIComponent(value));\n }\n}\n/**\n * Expose serialization method.\n */\n\n\nrequest.serializeObject = serialize;\n/**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(string_) {\n var object = {};\n var pairs = string_.split('&');\n var pair;\n var pos;\n\n for (var i = 0, length_ = pairs.length; i < length_; ++i) {\n pair = pairs[i];\n pos = pair.indexOf('=');\n\n if (pos === -1) {\n object[decodeURIComponent(pair)] = '';\n } else {\n object[decodeURIComponent(pair.slice(0, pos))] = decodeURIComponent(pair.slice(pos + 1));\n }\n }\n\n return object;\n}\n/**\n * Expose parser.\n */\n\n\nrequest.parseString = parseString;\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'text/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n form: 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\nrequest.serialize = {\n 'application/x-www-form-urlencoded': qs.stringify,\n 'application/json': safeStringify\n};\n/**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(string_) {\n var lines = string_.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var value;\n\n for (var i = 0, length_ = lines.length; i < length_; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n\n if (index === -1) {\n // could be empty line, just skip it\n continue;\n }\n\n field = line.slice(0, index).toLowerCase();\n value = trim(line.slice(index + 1));\n fields[field] = value;\n }\n\n return fields;\n}\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\n\nfunction isJSON(mime) {\n // should match /json or +json\n // but not /json-seq\n return /[/+]json($|[^-\\w])/i.test(mime);\n}\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\n\nfunction Response(request_) {\n this.req = request_;\n this.xhr = this.req.xhr; // responseText is accessible only if responseType is '' or 'text' and on older browsers\n\n this.text = this.req.method !== 'HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text') || typeof this.xhr.responseType === 'undefined' ? this.xhr.responseText : null;\n this.statusText = this.req.xhr.statusText;\n var status = this.xhr.status; // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n\n if (status === 1223) {\n status = 204;\n }\n\n this._setStatusProperties(status);\n\n this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n this.header = this.headers; // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n\n this._setHeaderProperties(this.header);\n\n if (this.text === null && request_._responseType) {\n this.body = this.xhr.response;\n } else {\n this.body = this.req.method === 'HEAD' ? null : this._parseBody(this.text ? this.text : this.xhr.response);\n }\n}\n\nmixin(Response.prototype, ResponseBase.prototype);\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function (string_) {\n var parse = request.parse[this.type];\n\n if (this.req._parser) {\n return this.req._parser(this, string_);\n }\n\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n\n return parse && string_ && (string_.length > 0 || string_ instanceof Object) ? parse(string_) : null;\n};\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\n\nResponse.prototype.toError = function () {\n var req = this.req;\n var method = req.method;\n var url = req.url;\n var message = \"cannot \".concat(method, \" \").concat(url, \" (\").concat(this.status, \")\");\n var error = new Error(message);\n error.status = this.status;\n error.method = method;\n error.url = url;\n return error;\n};\n/**\n * Expose `Response`.\n */\n\n\nrequest.Response = Response;\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n\n this._header = {}; // coerces header names to lowercase\n\n this.on('end', function () {\n var error = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch (err) {\n error = new Error('Parser is unable to parse the response');\n error.parse = true;\n error.original = err; // issue #675: return the raw response if the response parsing fails\n\n if (self.xhr) {\n // ie9 doesn't have 'response' property\n error.rawResponse = typeof self.xhr.responseType === 'undefined' ? self.xhr.responseText : self.xhr.response; // issue #876: return the http status code if the response parsing fails\n\n error.status = self.xhr.status ? self.xhr.status : null;\n error.statusCode = error.status; // backwards-compat only\n } else {\n error.rawResponse = null;\n error.status = null;\n }\n\n return self.callback(error);\n }\n\n self.emit('response', res);\n var new_error;\n\n try {\n if (!self._isResponseOK(res)) {\n new_error = new Error(res.statusText || res.text || 'Unsuccessful HTTP response');\n }\n } catch (err) {\n new_error = err; // ok() callback can throw\n } // #1000 don't catch errors from the callback to avoid double calling it\n\n\n if (new_error) {\n new_error.original = error;\n new_error.response = res;\n new_error.status = res.status;\n self.callback(new_error, res);\n } else {\n self.callback(null, res);\n }\n });\n}\n/**\n * Mixin `Emitter` and `RequestBase`.\n */\n// eslint-disable-next-line new-cap\n\n\nEmitter(Request.prototype);\nmixin(Request.prototype, RequestBase.prototype);\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function (type) {\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.accept = function (type) {\n this.set('Accept', request.types[type] || type);\n return this;\n};\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} [pass] optional in case of using 'bearer' as type\n * @param {Object} options with 'type' property 'auto', 'basic' or 'bearer' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.auth = function (user, pass, options) {\n if (arguments.length === 1) pass = '';\n\n if (_typeof(pass) === 'object' && pass !== null) {\n // pass is optional and can be replaced with options\n options = pass;\n pass = '';\n }\n\n if (!options) {\n options = {\n type: typeof btoa === 'function' ? 'basic' : 'auto'\n };\n }\n\n var encoder = options.encoder ? options.encoder : function (string) {\n if (typeof btoa === 'function') {\n return btoa(string);\n }\n\n throw new Error('Cannot use basic auth, btoa is not a function');\n };\n return this._auth(user, pass, options, encoder);\n};\n/**\n * Add query-string `val`.\n *\n * Examples:\n *\n * request.get('/shoes')\n * .query('size=10')\n * .query({ color: 'blue' })\n *\n * @param {Object|String} val\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.query = function (value) {\n if (typeof value !== 'string') value = serialize(value);\n if (value) this._query.push(value);\n return this;\n};\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `options` (or filename).\n *\n * ``` js\n * request.post('/upload')\n * .attach('content', new Blob(['hey!'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String|Object} options\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.attach = function (field, file, options) {\n if (file) {\n if (this._data) {\n throw new Error(\"superagent can't mix .send() and .attach()\");\n }\n\n this._getFormData().append(field, file, options || file.name);\n }\n\n return this;\n};\n\nRequest.prototype._getFormData = function () {\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n\n return this._formData;\n};\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\n\nRequest.prototype.callback = function (error, res) {\n if (this._shouldRetry(error, res)) {\n return this._retry();\n }\n\n var fn = this._callback;\n this.clearTimeout();\n\n if (error) {\n if (this._maxRetries) error.retries = this._retries - 1;\n this.emit('error', error);\n }\n\n fn(error, res);\n};\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\n\nRequest.prototype.crossDomainError = function () {\n var error = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n error.crossDomain = true;\n error.status = this.status;\n error.method = this.method;\n error.url = this.url;\n this.callback(error);\n}; // This only warns, because the request is still likely to work\n\n\nRequest.prototype.agent = function () {\n console.warn('This is not supported in browser version of superagent');\n return this;\n};\n\nRequest.prototype.ca = Request.prototype.agent;\nRequest.prototype.buffer = Request.prototype.ca; // This throws, because it can't send/receive data as expected\n\nRequest.prototype.write = function () {\n throw new Error('Streaming is not supported in browser version of superagent');\n};\n\nRequest.prototype.pipe = Request.prototype.write;\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * @param {Object} obj host object\n * @return {Boolean} is a host object\n * @api private\n */\n\nRequest.prototype._isHost = function (object) {\n // Native objects stringify to [object File], [object Blob], [object FormData], etc.\n return object && _typeof(object) === 'object' && !Array.isArray(object) && Object.prototype.toString.call(object) !== '[object Object]';\n};\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.end = function (fn) {\n if (this._endCalled) {\n console.warn('Warning: .end() was called twice. This is not supported in superagent');\n }\n\n this._endCalled = true; // store callback\n\n this._callback = fn || noop; // querystring\n\n this._finalizeQueryString();\n\n this._end();\n};\n\nRequest.prototype._setUploadTimeout = function () {\n var self = this; // upload timeout it's wokrs only if deadline timeout is off\n\n if (this._uploadTimeout && !this._uploadTimeoutTimer) {\n this._uploadTimeoutTimer = setTimeout(function () {\n self._timeoutError('Upload timeout of ', self._uploadTimeout, 'ETIMEDOUT');\n }, this._uploadTimeout);\n }\n}; // eslint-disable-next-line complexity\n\n\nRequest.prototype._end = function () {\n if (this._aborted) return this.callback(new Error('The request has been aborted even before .end() was called'));\n var self = this;\n this.xhr = request.getXHR();\n var xhr = this.xhr;\n var data = this._formData || this._data;\n\n this._setTimeouts(); // state change\n\n\n xhr.addEventListener('readystatechange', function () {\n var readyState = xhr.readyState;\n\n if (readyState >= 2 && self._responseTimeoutTimer) {\n clearTimeout(self._responseTimeoutTimer);\n }\n\n if (readyState !== 4) {\n return;\n } // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n\n\n var status;\n\n try {\n status = xhr.status;\n } catch (_unused5) {\n status = 0;\n }\n\n if (!status) {\n if (self.timedout || self._aborted) return;\n return self.crossDomainError();\n }\n\n self.emit('end');\n }); // progress\n\n var handleProgress = function handleProgress(direction, e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n\n if (e.percent === 100) {\n clearTimeout(self._uploadTimeoutTimer);\n }\n }\n\n e.direction = direction;\n self.emit('progress', e);\n };\n\n if (this.hasListeners('progress')) {\n try {\n xhr.addEventListener('progress', handleProgress.bind(null, 'download'));\n\n if (xhr.upload) {\n xhr.upload.addEventListener('progress', handleProgress.bind(null, 'upload'));\n }\n } catch (_unused6) {// Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n }\n\n if (xhr.upload) {\n this._setUploadTimeout();\n } // initiate request\n\n\n try {\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n } catch (err) {\n // see #1149\n return this.callback(err);\n } // CORS\n\n\n if (this._withCredentials) xhr.withCredentials = true; // body\n\n if (!this._formData && this.method !== 'GET' && this.method !== 'HEAD' && typeof data !== 'string' && !this._isHost(data)) {\n // serialize stuff\n var contentType = this._header['content-type'];\n\n var _serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : ''];\n\n if (!_serialize && isJSON(contentType)) {\n _serialize = request.serialize['application/json'];\n }\n\n if (_serialize) data = _serialize(data);\n } // set header fields\n\n\n for (var field in this.header) {\n if (this.header[field] === null) continue;\n if (hasOwn(this.header, field)) xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n } // send stuff\n\n\n this.emit('request', this); // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n\n xhr.send(typeof data === 'undefined' ? null : data);\n};\n\nrequest.agent = function () {\n return new Agent();\n};\n\nvar _loop = function _loop() {\n var method = _arr[_i];\n\n Agent.prototype[method.toLowerCase()] = function (url, fn) {\n var request_ = new request.Request(method, url);\n\n this._setDefaults(request_);\n\n if (fn) {\n request_.end(fn);\n }\n\n return request_;\n };\n};\n\nfor (var _i = 0, _arr = ['GET', 'POST', 'OPTIONS', 'PATCH', 'PUT', 'DELETE']; _i < _arr.length; _i++) {\n _loop();\n}\n\nAgent.prototype.del = Agent.prototype.delete;\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = function (url, data, fn) {\n var request_ = request('GET', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.query(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.head = function (url, data, fn) {\n var request_ = request('HEAD', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.query(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.options = function (url, data, fn) {\n var request_ = request('OPTIONS', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * DELETE `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nfunction del(url, data, fn) {\n var request_ = request('DELETE', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n}\n\nrequest.del = del;\nrequest.delete = del;\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function (url, data, fn) {\n var request_ = request('PATCH', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.post = function (url, data, fn) {\n var request_ = request('POST', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.put = function (url, data, fn) {\n var request_ = request('PUT', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb290Iiwid2luZG93Iiwic2VsZiIsImNvbnNvbGUiLCJ3YXJuIiwiRW1pdHRlciIsInJlcXVpcmUiLCJzYWZlU3RyaW5naWZ5IiwicXMiLCJSZXF1ZXN0QmFzZSIsImlzT2JqZWN0IiwibWl4aW4iLCJoYXNPd24iLCJSZXNwb25zZUJhc2UiLCJBZ2VudCIsIm5vb3AiLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0aG9kIiwidXJsIiwiUmVxdWVzdCIsImVuZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInJlcXVlc3QiLCJnZXRYSFIiLCJYTUxIdHRwUmVxdWVzdCIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJBY3RpdmVYT2JqZWN0IiwiRXJyb3IiLCJ0cmltIiwicyIsInJlcGxhY2UiLCJzZXJpYWxpemUiLCJvYmplY3QiLCJwYWlycyIsImtleSIsInB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyIiwiam9pbiIsInZhbHVlIiwidW5kZWZpbmVkIiwicHVzaCIsImVuY29kZVVSSSIsIkFycmF5IiwiaXNBcnJheSIsInYiLCJzdWJrZXkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemVPYmplY3QiLCJwYXJzZVN0cmluZyIsInN0cmluZ18iLCJzcGxpdCIsInBhaXIiLCJwb3MiLCJpIiwibGVuZ3RoXyIsImluZGV4T2YiLCJkZWNvZGVVUklDb21wb25lbnQiLCJzbGljZSIsInR5cGVzIiwiaHRtbCIsImpzb24iLCJ4bWwiLCJ1cmxlbmNvZGVkIiwiZm9ybSIsInN0cmluZ2lmeSIsInBhcnNlIiwiSlNPTiIsInBhcnNlSGVhZGVyIiwibGluZXMiLCJmaWVsZHMiLCJpbmRleCIsImxpbmUiLCJmaWVsZCIsInRvTG93ZXJDYXNlIiwiaXNKU09OIiwibWltZSIsInRlc3QiLCJSZXNwb25zZSIsInJlcXVlc3RfIiwicmVxIiwieGhyIiwidGV4dCIsInJlc3BvbnNlVHlwZSIsInJlc3BvbnNlVGV4dCIsInN0YXR1c1RleHQiLCJzdGF0dXMiLCJfc2V0U3RhdHVzUHJvcGVydGllcyIsImhlYWRlcnMiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJoZWFkZXIiLCJnZXRSZXNwb25zZUhlYWRlciIsIl9zZXRIZWFkZXJQcm9wZXJ0aWVzIiwiX3Jlc3BvbnNlVHlwZSIsImJvZHkiLCJyZXNwb25zZSIsIl9wYXJzZUJvZHkiLCJwcm90b3R5cGUiLCJ0eXBlIiwiX3BhcnNlciIsIk9iamVjdCIsInRvRXJyb3IiLCJtZXNzYWdlIiwiZXJyb3IiLCJfcXVlcnkiLCJfaGVhZGVyIiwib24iLCJyZXMiLCJlcnIiLCJvcmlnaW5hbCIsInJhd1Jlc3BvbnNlIiwic3RhdHVzQ29kZSIsImNhbGxiYWNrIiwiZW1pdCIsIm5ld19lcnJvciIsIl9pc1Jlc3BvbnNlT0siLCJzZXQiLCJhY2NlcHQiLCJhdXRoIiwidXNlciIsInBhc3MiLCJvcHRpb25zIiwiYnRvYSIsImVuY29kZXIiLCJzdHJpbmciLCJfYXV0aCIsInF1ZXJ5IiwiYXR0YWNoIiwiZmlsZSIsIl9kYXRhIiwiX2dldEZvcm1EYXRhIiwiYXBwZW5kIiwibmFtZSIsIl9mb3JtRGF0YSIsIkZvcm1EYXRhIiwiX3Nob3VsZFJldHJ5IiwiX3JldHJ5IiwiZm4iLCJfY2FsbGJhY2siLCJjbGVhclRpbWVvdXQiLCJfbWF4UmV0cmllcyIsInJldHJpZXMiLCJfcmV0cmllcyIsImNyb3NzRG9tYWluRXJyb3IiLCJjcm9zc0RvbWFpbiIsImFnZW50IiwiY2EiLCJidWZmZXIiLCJ3cml0ZSIsInBpcGUiLCJfaXNIb3N0IiwidG9TdHJpbmciLCJjYWxsIiwiX2VuZENhbGxlZCIsIl9maW5hbGl6ZVF1ZXJ5U3RyaW5nIiwiX2VuZCIsIl9zZXRVcGxvYWRUaW1lb3V0IiwiX3VwbG9hZFRpbWVvdXQiLCJfdXBsb2FkVGltZW91dFRpbWVyIiwic2V0VGltZW91dCIsIl90aW1lb3V0RXJyb3IiLCJfYWJvcnRlZCIsImRhdGEiLCJfc2V0VGltZW91dHMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVhZHlTdGF0ZSIsIl9yZXNwb25zZVRpbWVvdXRUaW1lciIsInRpbWVkb3V0IiwiaGFuZGxlUHJvZ3Jlc3MiLCJkaXJlY3Rpb24iLCJlIiwidG90YWwiLCJwZXJjZW50IiwibG9hZGVkIiwiaGFzTGlzdGVuZXJzIiwiYmluZCIsInVwbG9hZCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJvcGVuIiwiX3dpdGhDcmVkZW50aWFscyIsIndpdGhDcmVkZW50aWFscyIsImNvbnRlbnRUeXBlIiwiX3NlcmlhbGl6ZXIiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsIl9zZXREZWZhdWx0cyIsImRlbCIsImRlbGV0ZSIsImdldCIsImhlYWQiLCJwYXRjaCIsInBvc3QiLCJwdXQiXSwic291cmNlcyI6WyIuLi9zcmMvY2xpZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUm9vdCByZWZlcmVuY2UgZm9yIGlmcmFtZXMuXG4gKi9cblxubGV0IHJvb3Q7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gQnJvd3NlciB3aW5kb3dcbiAgcm9vdCA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIHNlbGYgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIE90aGVyIGVudmlyb25tZW50c1xuICBjb25zb2xlLndhcm4oXG4gICAgJ1VzaW5nIGJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQnXG4gICk7XG4gIHJvb3QgPSB0aGlzO1xufSBlbHNlIHtcbiAgLy8gV2ViIFdvcmtlclxuICByb290ID0gc2VsZjtcbn1cblxuY29uc3QgRW1pdHRlciA9IHJlcXVpcmUoJ2NvbXBvbmVudC1lbWl0dGVyJyk7XG5jb25zdCBzYWZlU3RyaW5naWZ5ID0gcmVxdWlyZSgnZmFzdC1zYWZlLXN0cmluZ2lmeScpO1xuY29uc3QgcXMgPSByZXF1aXJlKCdxcycpO1xuY29uc3QgUmVxdWVzdEJhc2UgPSByZXF1aXJlKCcuL3JlcXVlc3QtYmFzZScpO1xuY29uc3QgeyBpc09iamVjdCwgbWl4aW4sIGhhc093biB9ID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3QgUmVzcG9uc2VCYXNlID0gcmVxdWlyZSgnLi9yZXNwb25zZS1iYXNlJyk7XG5jb25zdCBBZ2VudCA9IHJlcXVpcmUoJy4vYWdlbnQtYmFzZScpO1xuXG4vKipcbiAqIE5vb3AuXG4gKi9cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbi8qKlxuICogRXhwb3NlIGByZXF1ZXN0YC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtZXRob2QsIHVybCkge1xuICAvLyBjYWxsYmFja1xuICBpZiAodHlwZW9mIHVybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBuZXcgZXhwb3J0cy5SZXF1ZXN0KCdHRVQnLCBtZXRob2QpLmVuZCh1cmwpO1xuICB9XG5cbiAgLy8gdXJsIGZpcnN0XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIG5ldyBleHBvcnRzLlJlcXVlc3QoJ0dFVCcsIG1ldGhvZCk7XG4gIH1cblxuICByZXR1cm4gbmV3IGV4cG9ydHMuUmVxdWVzdChtZXRob2QsIHVybCk7XG59O1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHM7XG5cbmNvbnN0IHJlcXVlc3QgPSBleHBvcnRzO1xuXG5leHBvcnRzLlJlcXVlc3QgPSBSZXF1ZXN0O1xuXG4vKipcbiAqIERldGVybWluZSBYSFIuXG4gKi9cblxucmVxdWVzdC5nZXRYSFIgPSAoKSA9PiB7XG4gIGlmIChcbiAgICByb290LlhNTEh0dHBSZXF1ZXN0ICYmXG4gICAgKCFyb290LmxvY2F0aW9uIHx8XG4gICAgICByb290LmxvY2F0aW9uLnByb3RvY29sICE9PSAnZmlsZTonIHx8XG4gICAgICAhcm9vdC5BY3RpdmVYT2JqZWN0KVxuICApIHtcbiAgICByZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTWljcm9zb2Z0LlhNTEhUVFAnKTtcbiAgfSBjYXRjaCB7XG4gICAgLyoqL1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQLjYuMCcpO1xuICB9IGNhdGNoIHtcbiAgICAvKiovXG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTXN4bWwyLlhNTEhUVFAuMy4wJyk7XG4gIH0gY2F0Y2gge1xuICAgIC8qKi9cbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNc3htbDIuWE1MSFRUUCcpO1xuICB9IGNhdGNoIHtcbiAgICAvKiovXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0Jyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgY291bGQgbm90IGZpbmQgWEhSJyk7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYWRkZWQgdG8gc3VwcG9ydCBJRS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuY29uc3QgdHJpbSA9ICcnLnRyaW0gPyAocykgPT4gcy50cmltKCkgOiAocykgPT4gcy5yZXBsYWNlKC8oXlxccyp8XFxzKiQpL2csICcnKTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGdpdmVuIGBvYmpgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZShvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSByZXR1cm4gb2JqZWN0O1xuICBjb25zdCBwYWlycyA9IFtdO1xuICBmb3IgKGNvbnN0IGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoaGFzT3duKG9iamVjdCwga2V5KSkgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGtleSwgb2JqZWN0W2tleV0pO1xuICB9XG5cbiAgcmV0dXJuIHBhaXJzLmpvaW4oJyYnKTtcbn1cblxuLyoqXG4gKiBIZWxwcyAnc2VyaWFsaXplJyB3aXRoIHNlcmlhbGl6aW5nIGFycmF5cy5cbiAqIE11dGF0ZXMgdGhlIHBhaXJzIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzXG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5XG4gKiBAcGFyYW0ge01peGVkfSB2YWxcbiAqL1xuXG5mdW5jdGlvbiBwdXNoRW5jb2RlZEtleVZhbHVlUGFpcihwYWlycywga2V5LCB2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICBwYWlycy5wdXNoKGVuY29kZVVSSShrZXkpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWUpIHtcbiAgICAgIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIHYpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICBmb3IgKGNvbnN0IHN1YmtleSBpbiB2YWx1ZSkge1xuICAgICAgaWYgKGhhc093bih2YWx1ZSwgc3Via2V5KSlcbiAgICAgICAgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGAke2tleX1bJHtzdWJrZXl9XWAsIHZhbHVlW3N1YmtleV0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwYWlycy5wdXNoKGVuY29kZVVSSShrZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHBvc2Ugc2VyaWFsaXphdGlvbiBtZXRob2QuXG4gKi9cblxucmVxdWVzdC5zZXJpYWxpemVPYmplY3QgPSBzZXJpYWxpemU7XG5cbi8qKlxuICogUGFyc2UgdGhlIGdpdmVuIHgtd3d3LWZvcm0tdXJsZW5jb2RlZCBgc3RyYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZVN0cmluZyhzdHJpbmdfKSB7XG4gIGNvbnN0IG9iamVjdCA9IHt9O1xuICBjb25zdCBwYWlycyA9IHN0cmluZ18uc3BsaXQoJyYnKTtcbiAgbGV0IHBhaXI7XG4gIGxldCBwb3M7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aF8gPSBwYWlycy5sZW5ndGg7IGkgPCBsZW5ndGhfOyArK2kpIHtcbiAgICBwYWlyID0gcGFpcnNbaV07XG4gICAgcG9zID0gcGFpci5pbmRleE9mKCc9Jyk7XG4gICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgIG9iamVjdFtkZWNvZGVVUklDb21wb25lbnQocGFpcildID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9iamVjdFtkZWNvZGVVUklDb21wb25lbnQocGFpci5zbGljZSgwLCBwb3MpKV0gPSBkZWNvZGVVUklDb21wb25lbnQoXG4gICAgICAgIHBhaXIuc2xpY2UocG9zICsgMSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuLyoqXG4gKiBFeHBvc2UgcGFyc2VyLlxuICovXG5cbnJlcXVlc3QucGFyc2VTdHJpbmcgPSBwYXJzZVN0cmluZztcblxuLyoqXG4gKiBEZWZhdWx0IE1JTUUgdHlwZSBtYXAuXG4gKlxuICogICAgIHN1cGVyYWdlbnQudHlwZXMueG1sID0gJ2FwcGxpY2F0aW9uL3htbCc7XG4gKlxuICovXG5cbnJlcXVlc3QudHlwZXMgPSB7XG4gIGh0bWw6ICd0ZXh0L2h0bWwnLFxuICBqc29uOiAnYXBwbGljYXRpb24vanNvbicsXG4gIHhtbDogJ3RleHQveG1sJyxcbiAgdXJsZW5jb2RlZDogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gIGZvcm06ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAnZm9ybS1kYXRhJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBzZXJpYWxpemF0aW9uIG1hcC5cbiAqXG4gKiAgICAgc3VwZXJhZ2VudC5zZXJpYWxpemVbJ2FwcGxpY2F0aW9uL3htbCddID0gZnVuY3Rpb24ob2JqKXtcbiAqICAgICAgIHJldHVybiAnZ2VuZXJhdGVkIHhtbCBoZXJlJztcbiAqICAgICB9O1xuICpcbiAqL1xuXG5yZXF1ZXN0LnNlcmlhbGl6ZSA9IHtcbiAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc6IHFzLnN0cmluZ2lmeSxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nOiBzYWZlU3RyaW5naWZ5XG59O1xuXG4vKipcbiAqIERlZmF1bHQgcGFyc2Vycy5cbiAqXG4gKiAgICAgc3VwZXJhZ2VudC5wYXJzZVsnYXBwbGljYXRpb24veG1sJ10gPSBmdW5jdGlvbihzdHIpe1xuICogICAgICAgcmV0dXJuIHsgb2JqZWN0IHBhcnNlZCBmcm9tIHN0ciB9O1xuICogICAgIH07XG4gKlxuICovXG5cbnJlcXVlc3QucGFyc2UgPSB7XG4gICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOiBwYXJzZVN0cmluZyxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nOiBKU09OLnBhcnNlXG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBoZWFkZXIgYHN0cmAgaW50b1xuICogYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG1hcHBlZCBmaWVsZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXIoc3RyaW5nXykge1xuICBjb25zdCBsaW5lcyA9IHN0cmluZ18uc3BsaXQoL1xccj9cXG4vKTtcbiAgY29uc3QgZmllbGRzID0ge307XG4gIGxldCBpbmRleDtcbiAgbGV0IGxpbmU7XG4gIGxldCBmaWVsZDtcbiAgbGV0IHZhbHVlO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW5ndGhfID0gbGluZXMubGVuZ3RoOyBpIDwgbGVuZ3RoXzsgKytpKSB7XG4gICAgbGluZSA9IGxpbmVzW2ldO1xuICAgIGluZGV4ID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgLy8gY291bGQgYmUgZW1wdHkgbGluZSwganVzdCBza2lwIGl0XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmaWVsZCA9IGxpbmUuc2xpY2UoMCwgaW5kZXgpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsdWUgPSB0cmltKGxpbmUuc2xpY2UoaW5kZXggKyAxKSk7XG4gICAgZmllbGRzW2ZpZWxkXSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkcztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBgbWltZWAgaXMganNvbiBvciBoYXMgK2pzb24gc3RydWN0dXJlZCBzeW50YXggc3VmZml4LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBtaW1lXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gaXNKU09OKG1pbWUpIHtcbiAgLy8gc2hvdWxkIG1hdGNoIC9qc29uIG9yICtqc29uXG4gIC8vIGJ1dCBub3QgL2pzb24tc2VxXG4gIHJldHVybiAvWy8rXWpzb24oJHxbXi1cXHddKS9pLnRlc3QobWltZSk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVzcG9uc2VgIHdpdGggdGhlIGdpdmVuIGB4aHJgLlxuICpcbiAqICAtIHNldCBmbGFncyAoLm9rLCAuZXJyb3IsIGV0YylcbiAqICAtIHBhcnNlIGhlYWRlclxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICBBbGlhc2luZyBgc3VwZXJhZ2VudGAgYXMgYHJlcXVlc3RgIGlzIG5pY2U6XG4gKlxuICogICAgICByZXF1ZXN0ID0gc3VwZXJhZ2VudDtcbiAqXG4gKiAgV2UgY2FuIHVzZSB0aGUgcHJvbWlzZS1saWtlIEFQSSwgb3IgcGFzcyBjYWxsYmFja3M6XG4gKlxuICogICAgICByZXF1ZXN0LmdldCgnLycpLmVuZChmdW5jdGlvbihyZXMpe30pO1xuICogICAgICByZXF1ZXN0LmdldCgnLycsIGZ1bmN0aW9uKHJlcyl7fSk7XG4gKlxuICogIFNlbmRpbmcgZGF0YSBjYW4gYmUgY2hhaW5lZDpcbiAqXG4gKiAgICAgIHJlcXVlc3RcbiAqICAgICAgICAucG9zdCgnL3VzZXInKVxuICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiAgT3IgcGFzc2VkIHRvIGAuc2VuZCgpYDpcbiAqXG4gKiAgICAgIHJlcXVlc3RcbiAqICAgICAgICAucG9zdCgnL3VzZXInKVxuICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqICBPciBwYXNzZWQgdG8gYC5wb3N0KClgOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiBPciBmdXJ0aGVyIHJlZHVjZWQgdG8gYSBzaW5nbGUgY2FsbCBmb3Igc2ltcGxlIGNhc2VzOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqIEBwYXJhbSB7WE1MSFRUUFJlcXVlc3R9IHhoclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIFJlc3BvbnNlKHJlcXVlc3RfKSB7XG4gIHRoaXMucmVxID0gcmVxdWVzdF87XG4gIHRoaXMueGhyID0gdGhpcy5yZXEueGhyO1xuICAvLyByZXNwb25zZVRleHQgaXMgYWNjZXNzaWJsZSBvbmx5IGlmIHJlc3BvbnNlVHlwZSBpcyAnJyBvciAndGV4dCcgYW5kIG9uIG9sZGVyIGJyb3dzZXJzXG4gIHRoaXMudGV4dCA9XG4gICAgKHRoaXMucmVxLm1ldGhvZCAhPT0gJ0hFQUQnICYmXG4gICAgICAodGhpcy54aHIucmVzcG9uc2VUeXBlID09PSAnJyB8fCB0aGlzLnhoci5yZXNwb25zZVR5cGUgPT09ICd0ZXh0JykpIHx8XG4gICAgdHlwZW9mIHRoaXMueGhyLnJlc3BvbnNlVHlwZSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgID8gdGhpcy54aHIucmVzcG9uc2VUZXh0XG4gICAgICA6IG51bGw7XG4gIHRoaXMuc3RhdHVzVGV4dCA9IHRoaXMucmVxLnhoci5zdGF0dXNUZXh0O1xuICBsZXQgeyBzdGF0dXMgfSA9IHRoaXMueGhyO1xuICAvLyBoYW5kbGUgSUU5IGJ1ZzogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDA0Njk3Mi9tc2llLXJldHVybnMtc3RhdHVzLWNvZGUtb2YtMTIyMy1mb3ItYWpheC1yZXF1ZXN0XG4gIGlmIChzdGF0dXMgPT09IDEyMjMpIHtcbiAgICBzdGF0dXMgPSAyMDQ7XG4gIH1cblxuICB0aGlzLl9zZXRTdGF0dXNQcm9wZXJ0aWVzKHN0YXR1cyk7XG4gIHRoaXMuaGVhZGVycyA9IHBhcnNlSGVhZGVyKHRoaXMueGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTtcbiAgdGhpcy5oZWFkZXIgPSB0aGlzLmhlYWRlcnM7XG4gIC8vIGdldEFsbFJlc3BvbnNlSGVhZGVycyBzb21ldGltZXMgZmFsc2VseSByZXR1cm5zIFwiXCIgZm9yIENPUlMgcmVxdWVzdHMsIGJ1dFxuICAvLyBnZXRSZXNwb25zZUhlYWRlciBzdGlsbCB3b3Jrcy4gc28gd2UgZ2V0IGNvbnRlbnQtdHlwZSBldmVuIGlmIGdldHRpbmdcbiAgLy8gb3RoZXIgaGVhZGVycyBmYWlscy5cbiAgdGhpcy5oZWFkZXJbJ2NvbnRlbnQtdHlwZSddID0gdGhpcy54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ2NvbnRlbnQtdHlwZScpO1xuICB0aGlzLl9zZXRIZWFkZXJQcm9wZXJ0aWVzKHRoaXMuaGVhZGVyKTtcblxuICBpZiAodGhpcy50ZXh0ID09PSBudWxsICYmIHJlcXVlc3RfLl9yZXNwb25zZVR5cGUpIHtcbiAgICB0aGlzLmJvZHkgPSB0aGlzLnhoci5yZXNwb25zZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmJvZHkgPVxuICAgICAgdGhpcy5yZXEubWV0aG9kID09PSAnSEVBRCdcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogdGhpcy5fcGFyc2VCb2R5KHRoaXMudGV4dCA/IHRoaXMudGV4dCA6IHRoaXMueGhyLnJlc3BvbnNlKTtcbiAgfVxufVxuXG5taXhpbihSZXNwb25zZS5wcm90b3R5cGUsIFJlc3BvbnNlQmFzZS5wcm90b3R5cGUpO1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBib2R5IGBzdHJgLlxuICpcbiAqIFVzZWQgZm9yIGF1dG8tcGFyc2luZyBvZiBib2RpZXMuIFBhcnNlcnNcbiAqIGFyZSBkZWZpbmVkIG9uIHRoZSBgc3VwZXJhZ2VudC5wYXJzZWAgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge01peGVkfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVzcG9uc2UucHJvdG90eXBlLl9wYXJzZUJvZHkgPSBmdW5jdGlvbiAoc3RyaW5nXykge1xuICBsZXQgcGFyc2UgPSByZXF1ZXN0LnBhcnNlW3RoaXMudHlwZV07XG4gIGlmICh0aGlzLnJlcS5fcGFyc2VyKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxLl9wYXJzZXIodGhpcywgc3RyaW5nXyk7XG4gIH1cblxuICBpZiAoIXBhcnNlICYmIGlzSlNPTih0aGlzLnR5cGUpKSB7XG4gICAgcGFyc2UgPSByZXF1ZXN0LnBhcnNlWydhcHBsaWNhdGlvbi9qc29uJ107XG4gIH1cblxuICByZXR1cm4gcGFyc2UgJiYgc3RyaW5nXyAmJiAoc3RyaW5nXy5sZW5ndGggPiAwIHx8IHN0cmluZ18gaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgPyBwYXJzZShzdHJpbmdfKVxuICAgIDogbnVsbDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGFuIGBFcnJvcmAgcmVwcmVzZW50YXRpdmUgb2YgdGhpcyByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJuIHtFcnJvcn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVzcG9uc2UucHJvdG90eXBlLnRvRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHsgcmVxIH0gPSB0aGlzO1xuICBjb25zdCB7IG1ldGhvZCB9ID0gcmVxO1xuICBjb25zdCB7IHVybCB9ID0gcmVxO1xuXG4gIGNvbnN0IG1lc3NhZ2UgPSBgY2Fubm90ICR7bWV0aG9kfSAke3VybH0gKCR7dGhpcy5zdGF0dXN9KWA7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICBlcnJvci5zdGF0dXMgPSB0aGlzLnN0YXR1cztcbiAgZXJyb3IubWV0aG9kID0gbWV0aG9kO1xuICBlcnJvci51cmwgPSB1cmw7XG5cbiAgcmV0dXJuIGVycm9yO1xufTtcblxuLyoqXG4gKiBFeHBvc2UgYFJlc3BvbnNlYC5cbiAqL1xuXG5yZXF1ZXN0LlJlc3BvbnNlID0gUmVzcG9uc2U7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVxdWVzdGAgd2l0aCB0aGUgZ2l2ZW4gYG1ldGhvZGAgYW5kIGB1cmxgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBtZXRob2RcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUmVxdWVzdChtZXRob2QsIHVybCkge1xuICBjb25zdCBzZWxmID0gdGhpcztcbiAgdGhpcy5fcXVlcnkgPSB0aGlzLl9xdWVyeSB8fCBbXTtcbiAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gIHRoaXMudXJsID0gdXJsO1xuICB0aGlzLmhlYWRlciA9IHt9OyAvLyBwcmVzZXJ2ZXMgaGVhZGVyIG5hbWUgY2FzZVxuICB0aGlzLl9oZWFkZXIgPSB7fTsgLy8gY29lcmNlcyBoZWFkZXIgbmFtZXMgdG8gbG93ZXJjYXNlXG4gIHRoaXMub24oJ2VuZCcsICgpID0+IHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGxldCByZXMgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlcyA9IG5ldyBSZXNwb25zZShzZWxmKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKCdQYXJzZXIgaXMgdW5hYmxlIHRvIHBhcnNlIHRoZSByZXNwb25zZScpO1xuICAgICAgZXJyb3IucGFyc2UgPSB0cnVlO1xuICAgICAgZXJyb3Iub3JpZ2luYWwgPSBlcnI7XG4gICAgICAvLyBpc3N1ZSAjNjc1OiByZXR1cm4gdGhlIHJhdyByZXNwb25zZSBpZiB0aGUgcmVzcG9uc2UgcGFyc2luZyBmYWlsc1xuICAgICAgaWYgKHNlbGYueGhyKSB7XG4gICAgICAgIC8vIGllOSBkb2Vzbid0IGhhdmUgJ3Jlc3BvbnNlJyBwcm9wZXJ0eVxuICAgICAgICBlcnJvci5yYXdSZXNwb25zZSA9XG4gICAgICAgICAgdHlwZW9mIHNlbGYueGhyLnJlc3BvbnNlVHlwZSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gc2VsZi54aHIucmVzcG9uc2VUZXh0XG4gICAgICAgICAgICA6IHNlbGYueGhyLnJlc3BvbnNlO1xuICAgICAgICAvLyBpc3N1ZSAjODc2OiByZXR1cm4gdGhlIGh0dHAgc3RhdHVzIGNvZGUgaWYgdGhlIHJlc3BvbnNlIHBhcnNpbmcgZmFpbHNcbiAgICAgICAgZXJyb3Iuc3RhdHVzID0gc2VsZi54aHIuc3RhdHVzID8gc2VsZi54aHIuc3RhdHVzIDogbnVsbDtcbiAgICAgICAgZXJyb3Iuc3RhdHVzQ29kZSA9IGVycm9yLnN0YXR1czsgLy8gYmFja3dhcmRzLWNvbXBhdCBvbmx5XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvci5yYXdSZXNwb25zZSA9IG51bGw7XG4gICAgICAgIGVycm9yLnN0YXR1cyA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxmLmNhbGxiYWNrKGVycm9yKTtcbiAgICB9XG5cbiAgICBzZWxmLmVtaXQoJ3Jlc3BvbnNlJywgcmVzKTtcblxuICAgIGxldCBuZXdfZXJyb3I7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2VsZi5faXNSZXNwb25zZU9LKHJlcykpIHtcbiAgICAgICAgbmV3X2Vycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgIHJlcy5zdGF0dXNUZXh0IHx8IHJlcy50ZXh0IHx8ICdVbnN1Y2Nlc3NmdWwgSFRUUCByZXNwb25zZSdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIG5ld19lcnJvciA9IGVycjsgLy8gb2soKSBjYWxsYmFjayBjYW4gdGhyb3dcbiAgICB9XG5cbiAgICAvLyAjMTAwMCBkb24ndCBjYXRjaCBlcnJvcnMgZnJvbSB0aGUgY2FsbGJhY2sgdG8gYXZvaWQgZG91YmxlIGNhbGxpbmcgaXRcbiAgICBpZiAobmV3X2Vycm9yKSB7XG4gICAgICBuZXdfZXJyb3Iub3JpZ2luYWwgPSBlcnJvcjtcbiAgICAgIG5ld19lcnJvci5yZXNwb25zZSA9IHJlcztcbiAgICAgIG5ld19lcnJvci5zdGF0dXMgPSByZXMuc3RhdHVzO1xuICAgICAgc2VsZi5jYWxsYmFjayhuZXdfZXJyb3IsIHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYuY2FsbGJhY2sobnVsbCwgcmVzKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIE1peGluIGBFbWl0dGVyYCBhbmQgYFJlcXVlc3RCYXNlYC5cbiAqL1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuRW1pdHRlcihSZXF1ZXN0LnByb3RvdHlwZSk7XG5cbm1peGluKFJlcXVlc3QucHJvdG90eXBlLCBSZXF1ZXN0QmFzZS5wcm90b3R5cGUpO1xuXG4vKipcbiAqIFNldCBDb250ZW50LVR5cGUgdG8gYHR5cGVgLCBtYXBwaW5nIHZhbHVlcyBmcm9tIGByZXF1ZXN0LnR5cGVzYC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHN1cGVyYWdlbnQudHlwZXMueG1sID0gJ2FwcGxpY2F0aW9uL3htbCc7XG4gKlxuICogICAgICByZXF1ZXN0LnBvc3QoJy8nKVxuICogICAgICAgIC50eXBlKCd4bWwnKVxuICogICAgICAgIC5zZW5kKHhtbHN0cmluZylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiAgICAgIHJlcXVlc3QucG9zdCgnLycpXG4gKiAgICAgICAgLnR5cGUoJ2FwcGxpY2F0aW9uL3htbCcpXG4gKiAgICAgICAgLnNlbmQoeG1sc3RyaW5nKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUudHlwZSA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHRoaXMuc2V0KCdDb250ZW50LVR5cGUnLCByZXF1ZXN0LnR5cGVzW3R5cGVdIHx8IHR5cGUpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IEFjY2VwdCB0byBgdHlwZWAsIG1hcHBpbmcgdmFsdWVzIGZyb20gYHJlcXVlc3QudHlwZXNgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgc3VwZXJhZ2VudC50eXBlcy5qc29uID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICpcbiAqICAgICAgcmVxdWVzdC5nZXQoJy9hZ2VudCcpXG4gKiAgICAgICAgLmFjY2VwdCgnanNvbicpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogICAgICByZXF1ZXN0LmdldCgnL2FnZW50JylcbiAqICAgICAgICAuYWNjZXB0KCdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWNjZXB0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgdGhpcy5zZXQoJ0FjY2VwdCcsIHJlcXVlc3QudHlwZXNbdHlwZV0gfHwgdHlwZSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgQXV0aG9yaXphdGlvbiBmaWVsZCB2YWx1ZSB3aXRoIGB1c2VyYCBhbmQgYHBhc3NgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1c2VyXG4gKiBAcGFyYW0ge1N0cmluZ30gW3Bhc3NdIG9wdGlvbmFsIGluIGNhc2Ugb2YgdXNpbmcgJ2JlYXJlcicgYXMgdHlwZVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgd2l0aCAndHlwZScgcHJvcGVydHkgJ2F1dG8nLCAnYmFzaWMnIG9yICdiZWFyZXInIChkZWZhdWx0ICdiYXNpYycpXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYXV0aCA9IGZ1bmN0aW9uICh1c2VyLCBwYXNzLCBvcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSBwYXNzID0gJyc7XG4gIGlmICh0eXBlb2YgcGFzcyA9PT0gJ29iamVjdCcgJiYgcGFzcyAhPT0gbnVsbCkge1xuICAgIC8vIHBhc3MgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZXBsYWNlZCB3aXRoIG9wdGlvbnNcbiAgICBvcHRpb25zID0gcGFzcztcbiAgICBwYXNzID0gJyc7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgdHlwZTogdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicgPyAnYmFzaWMnIDogJ2F1dG8nXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGVuY29kZXIgPSBvcHRpb25zLmVuY29kZXJcbiAgICA/IG9wdGlvbnMuZW5jb2RlclxuICAgIDogKHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gYnRvYShzdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIGJhc2ljIGF1dGgsIGJ0b2EgaXMgbm90IGEgZnVuY3Rpb24nKTtcbiAgICAgIH07XG5cbiAgcmV0dXJuIHRoaXMuX2F1dGgodXNlciwgcGFzcywgb3B0aW9ucywgZW5jb2Rlcik7XG59O1xuXG4vKipcbiAqIEFkZCBxdWVyeS1zdHJpbmcgYHZhbGAuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICByZXF1ZXN0LmdldCgnL3Nob2VzJylcbiAqICAgICAucXVlcnkoJ3NpemU9MTAnKVxuICogICAgIC5xdWVyeSh7IGNvbG9yOiAnYmx1ZScgfSlcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB2YWx1ZSA9IHNlcmlhbGl6ZSh2YWx1ZSk7XG4gIGlmICh2YWx1ZSkgdGhpcy5fcXVlcnkucHVzaCh2YWx1ZSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBRdWV1ZSB0aGUgZ2l2ZW4gYGZpbGVgIGFzIGFuIGF0dGFjaG1lbnQgdG8gdGhlIHNwZWNpZmllZCBgZmllbGRgLFxuICogd2l0aCBvcHRpb25hbCBgb3B0aW9uc2AgKG9yIGZpbGVuYW1lKS5cbiAqXG4gKiBgYGAganNcbiAqIHJlcXVlc3QucG9zdCgnL3VwbG9hZCcpXG4gKiAgIC5hdHRhY2goJ2NvbnRlbnQnLCBuZXcgQmxvYihbJzxhIGlkPVwiYVwiPjxiIGlkPVwiYlwiPmhleSE8L2I+PC9hPiddLCB7IHR5cGU6IFwidGV4dC9odG1sXCJ9KSlcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZmllbGRcbiAqIEBwYXJhbSB7QmxvYnxGaWxlfSBmaWxlXG4gKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbiAoZmllbGQsIGZpbGUsIG9wdGlvbnMpIHtcbiAgaWYgKGZpbGUpIHtcbiAgICBpZiAodGhpcy5fZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3VwZXJhZ2VudCBjYW4ndCBtaXggLnNlbmQoKSBhbmQgLmF0dGFjaCgpXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKGZpZWxkLCBmaWxlLCBvcHRpb25zIHx8IGZpbGUubmFtZSk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3QucHJvdG90eXBlLl9nZXRGb3JtRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLl9mb3JtRGF0YSkge1xuICAgIHRoaXMuX2Zvcm1EYXRhID0gbmV3IHJvb3QuRm9ybURhdGEoKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9mb3JtRGF0YTtcbn07XG5cbi8qKlxuICogSW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIGBlcnJgIGFuZCBgcmVzYFxuICogYW5kIGhhbmRsZSBhcml0eSBjaGVjay5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEBwYXJhbSB7UmVzcG9uc2V9IHJlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuY2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyb3IsIHJlcykge1xuICBpZiAodGhpcy5fc2hvdWxkUmV0cnkoZXJyb3IsIHJlcykpIHtcbiAgICByZXR1cm4gdGhpcy5fcmV0cnkoKTtcbiAgfVxuXG4gIGNvbnN0IGZuID0gdGhpcy5fY2FsbGJhY2s7XG4gIHRoaXMuY2xlYXJUaW1lb3V0KCk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgaWYgKHRoaXMuX21heFJldHJpZXMpIGVycm9yLnJldHJpZXMgPSB0aGlzLl9yZXRyaWVzIC0gMTtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICB9XG5cbiAgZm4oZXJyb3IsIHJlcyk7XG59O1xuXG4vKipcbiAqIEludm9rZSBjYWxsYmFjayB3aXRoIHgtZG9tYWluIGVycm9yLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmNyb3NzRG9tYWluRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICdSZXF1ZXN0IGhhcyBiZWVuIHRlcm1pbmF0ZWRcXG5Qb3NzaWJsZSBjYXVzZXM6IHRoZSBuZXR3b3JrIGlzIG9mZmxpbmUsIE9yaWdpbiBpcyBub3QgYWxsb3dlZCBieSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4sIHRoZSBwYWdlIGlzIGJlaW5nIHVubG9hZGVkLCBldGMuJ1xuICApO1xuICBlcnJvci5jcm9zc0RvbWFpbiA9IHRydWU7XG5cbiAgZXJyb3Iuc3RhdHVzID0gdGhpcy5zdGF0dXM7XG4gIGVycm9yLm1ldGhvZCA9IHRoaXMubWV0aG9kO1xuICBlcnJvci51cmwgPSB0aGlzLnVybDtcblxuICB0aGlzLmNhbGxiYWNrKGVycm9yKTtcbn07XG5cbi8vIFRoaXMgb25seSB3YXJucywgYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBzdGlsbCBsaWtlbHkgdG8gd29ya1xuUmVxdWVzdC5wcm90b3R5cGUuYWdlbnQgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnNvbGUud2FybignVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGluIGJyb3dzZXIgdmVyc2lvbiBvZiBzdXBlcmFnZW50Jyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUmVxdWVzdC5wcm90b3R5cGUuY2EgPSBSZXF1ZXN0LnByb3RvdHlwZS5hZ2VudDtcblJlcXVlc3QucHJvdG90eXBlLmJ1ZmZlciA9IFJlcXVlc3QucHJvdG90eXBlLmNhO1xuXG4vLyBUaGlzIHRocm93cywgYmVjYXVzZSBpdCBjYW4ndCBzZW5kL3JlY2VpdmUgZGF0YSBhcyBleHBlY3RlZFxuUmVxdWVzdC5wcm90b3R5cGUud3JpdGUgPSAoKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnU3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYnJvd3NlciB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQnXG4gICk7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5waXBlID0gUmVxdWVzdC5wcm90b3R5cGUud3JpdGU7XG5cbi8qKlxuICogQ2hlY2sgaWYgYG9iamAgaXMgYSBob3N0IG9iamVjdCxcbiAqIHdlIGRvbid0IHdhbnQgdG8gc2VyaWFsaXplIHRoZXNlIDopXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBob3N0IG9iamVjdFxuICogQHJldHVybiB7Qm9vbGVhbn0gaXMgYSBob3N0IG9iamVjdFxuICogQGFwaSBwcml2YXRlXG4gKi9cblJlcXVlc3QucHJvdG90eXBlLl9pc0hvc3QgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gIC8vIE5hdGl2ZSBvYmplY3RzIHN0cmluZ2lmeSB0byBbb2JqZWN0IEZpbGVdLCBbb2JqZWN0IEJsb2JdLCBbb2JqZWN0IEZvcm1EYXRhXSwgZXRjLlxuICByZXR1cm4gKFxuICAgIG9iamVjdCAmJlxuICAgIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG4gICAgIUFycmF5LmlzQXJyYXkob2JqZWN0KSAmJlxuICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpICE9PSAnW29iamVjdCBPYmplY3RdJ1xuICApO1xufTtcblxuLyoqXG4gKiBJbml0aWF0ZSByZXF1ZXN0LCBpbnZva2luZyBjYWxsYmFjayBgZm4ocmVzKWBcbiAqIHdpdGggYW4gaW5zdGFuY2VvZiBgUmVzcG9uc2VgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGZuKSB7XG4gIGlmICh0aGlzLl9lbmRDYWxsZWQpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICAnV2FybmluZzogLmVuZCgpIHdhcyBjYWxsZWQgdHdpY2UuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCBpbiBzdXBlcmFnZW50J1xuICAgICk7XG4gIH1cblxuICB0aGlzLl9lbmRDYWxsZWQgPSB0cnVlO1xuXG4gIC8vIHN0b3JlIGNhbGxiYWNrXG4gIHRoaXMuX2NhbGxiYWNrID0gZm4gfHwgbm9vcDtcblxuICAvLyBxdWVyeXN0cmluZ1xuICB0aGlzLl9maW5hbGl6ZVF1ZXJ5U3RyaW5nKCk7XG5cbiAgdGhpcy5fZW5kKCk7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5fc2V0VXBsb2FkVGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgLy8gdXBsb2FkIHRpbWVvdXQgaXQncyB3b2tycyBvbmx5IGlmIGRlYWRsaW5lIHRpbWVvdXQgaXMgb2ZmXG4gIGlmICh0aGlzLl91cGxvYWRUaW1lb3V0ICYmICF0aGlzLl91cGxvYWRUaW1lb3V0VGltZXIpIHtcbiAgICB0aGlzLl91cGxvYWRUaW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNlbGYuX3RpbWVvdXRFcnJvcihcbiAgICAgICAgJ1VwbG9hZCB0aW1lb3V0IG9mICcsXG4gICAgICAgIHNlbGYuX3VwbG9hZFRpbWVvdXQsXG4gICAgICAgICdFVElNRURPVVQnXG4gICAgICApO1xuICAgIH0sIHRoaXMuX3VwbG9hZFRpbWVvdXQpO1xuICB9XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuUmVxdWVzdC5wcm90b3R5cGUuX2VuZCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuX2Fib3J0ZWQpXG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2soXG4gICAgICBuZXcgRXJyb3IoJ1RoZSByZXF1ZXN0IGhhcyBiZWVuIGFib3J0ZWQgZXZlbiBiZWZvcmUgLmVuZCgpIHdhcyBjYWxsZWQnKVxuICAgICk7XG5cbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gIHRoaXMueGhyID0gcmVxdWVzdC5nZXRYSFIoKTtcbiAgY29uc3QgeyB4aHIgfSA9IHRoaXM7XG4gIGxldCBkYXRhID0gdGhpcy5fZm9ybURhdGEgfHwgdGhpcy5fZGF0YTtcblxuICB0aGlzLl9zZXRUaW1lb3V0cygpO1xuXG4gIC8vIHN0YXRlIGNoYW5nZVxuICB4aHIuYWRkRXZlbnRMaXN0ZW5lcigncmVhZHlzdGF0ZWNoYW5nZScsICgpID0+IHtcbiAgICBjb25zdCB7IHJlYWR5U3RhdGUgfSA9IHhocjtcbiAgICBpZiAocmVhZHlTdGF0ZSA+PSAyICYmIHNlbGYuX3Jlc3BvbnNlVGltZW91dFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQoc2VsZi5fcmVzcG9uc2VUaW1lb3V0VGltZXIpO1xuICAgIH1cblxuICAgIGlmIChyZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSW4gSUU5LCByZWFkcyB0byBhbnkgcHJvcGVydHkgKGUuZy4gc3RhdHVzKSBvZmYgb2YgYW4gYWJvcnRlZCBYSFIgd2lsbFxuICAgIC8vIHJlc3VsdCBpbiB0aGUgZXJyb3IgXCJDb3VsZCBub3QgY29tcGxldGUgdGhlIG9wZXJhdGlvbiBkdWUgdG8gZXJyb3IgYzAwYzAyM2ZcIlxuICAgIGxldCBzdGF0dXM7XG4gICAgdHJ5IHtcbiAgICAgIHN0YXR1cyA9IHhoci5zdGF0dXM7XG4gICAgfSBjYXRjaCB7XG4gICAgICBzdGF0dXMgPSAwO1xuICAgIH1cblxuICAgIGlmICghc3RhdHVzKSB7XG4gICAgICBpZiAoc2VsZi50aW1lZG91dCB8fCBzZWxmLl9hYm9ydGVkKSByZXR1cm47XG4gICAgICByZXR1cm4gc2VsZi5jcm9zc0RvbWFpbkVycm9yKCk7XG4gICAgfVxuXG4gICAgc2VsZi5lbWl0KCdlbmQnKTtcbiAgfSk7XG5cbiAgLy8gcHJvZ3Jlc3NcbiAgY29uc3QgaGFuZGxlUHJvZ3Jlc3MgPSAoZGlyZWN0aW9uLCBlKSA9PiB7XG4gICAgaWYgKGUudG90YWwgPiAwKSB7XG4gICAgICBlLnBlcmNlbnQgPSAoZS5sb2FkZWQgLyBlLnRvdGFsKSAqIDEwMDtcblxuICAgICAgaWYgKGUucGVyY2VudCA9PT0gMTAwKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChzZWxmLl91cGxvYWRUaW1lb3V0VGltZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGUuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgIHNlbGYuZW1pdCgncHJvZ3Jlc3MnLCBlKTtcbiAgfTtcblxuICBpZiAodGhpcy5oYXNMaXN0ZW5lcnMoJ3Byb2dyZXNzJykpIHtcbiAgICB0cnkge1xuICAgICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgaGFuZGxlUHJvZ3Jlc3MuYmluZChudWxsLCAnZG93bmxvYWQnKSk7XG4gICAgICBpZiAoeGhyLnVwbG9hZCkge1xuICAgICAgICB4aHIudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICBoYW5kbGVQcm9ncmVzcy5iaW5kKG51bGwsICd1cGxvYWQnKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQWNjZXNzaW5nIHhoci51cGxvYWQgZmFpbHMgaW4gSUUgZnJvbSBhIHdlYiB3b3JrZXIsIHNvIGp1c3QgcHJldGVuZCBpdCBkb2Vzbid0IGV4aXN0LlxuICAgICAgLy8gUmVwb3J0ZWQgaGVyZTpcbiAgICAgIC8vIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvODM3MjQ1L3htbGh0dHByZXF1ZXN0LXVwbG9hZC10aHJvd3MtaW52YWxpZC1hcmd1bWVudC13aGVuLXVzZWQtZnJvbS13ZWItd29ya2VyLWNvbnRleHRcbiAgICB9XG4gIH1cblxuICBpZiAoeGhyLnVwbG9hZCkge1xuICAgIHRoaXMuX3NldFVwbG9hZFRpbWVvdXQoKTtcbiAgfVxuXG4gIC8vIGluaXRpYXRlIHJlcXVlc3RcbiAgdHJ5IHtcbiAgICBpZiAodGhpcy51c2VybmFtZSAmJiB0aGlzLnBhc3N3b3JkKSB7XG4gICAgICB4aHIub3Blbih0aGlzLm1ldGhvZCwgdGhpcy51cmwsIHRydWUsIHRoaXMudXNlcm5hbWUsIHRoaXMucGFzc3dvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB4aHIub3Blbih0aGlzLm1ldGhvZCwgdGhpcy51cmwsIHRydWUpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gc2VlICMxMTQ5XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2soZXJyKTtcbiAgfVxuXG4gIC8vIENPUlNcbiAgaWYgKHRoaXMuX3dpdGhDcmVkZW50aWFscykgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG5cbiAgLy8gYm9keVxuICBpZiAoXG4gICAgIXRoaXMuX2Zvcm1EYXRhICYmXG4gICAgdGhpcy5tZXRob2QgIT09ICdHRVQnICYmXG4gICAgdGhpcy5tZXRob2QgIT09ICdIRUFEJyAmJlxuICAgIHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJyAmJlxuICAgICF0aGlzLl9pc0hvc3QoZGF0YSlcbiAgKSB7XG4gICAgLy8gc2VyaWFsaXplIHN0dWZmXG4gICAgY29uc3QgY29udGVudFR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIGxldCBzZXJpYWxpemUgPVxuICAgICAgdGhpcy5fc2VyaWFsaXplciB8fFxuICAgICAgcmVxdWVzdC5zZXJpYWxpemVbY29udGVudFR5cGUgPyBjb250ZW50VHlwZS5zcGxpdCgnOycpWzBdIDogJyddO1xuICAgIGlmICghc2VyaWFsaXplICYmIGlzSlNPTihjb250ZW50VHlwZSkpIHtcbiAgICAgIHNlcmlhbGl6ZSA9IHJlcXVlc3Quc2VyaWFsaXplWydhcHBsaWNhdGlvbi9qc29uJ107XG4gICAgfVxuXG4gICAgaWYgKHNlcmlhbGl6ZSkgZGF0YSA9IHNlcmlhbGl6ZShkYXRhKTtcbiAgfVxuXG4gIC8vIHNldCBoZWFkZXIgZmllbGRzXG4gIGZvciAoY29uc3QgZmllbGQgaW4gdGhpcy5oZWFkZXIpIHtcbiAgICBpZiAodGhpcy5oZWFkZXJbZmllbGRdID09PSBudWxsKSBjb250aW51ZTtcblxuICAgIGlmIChoYXNPd24odGhpcy5oZWFkZXIsIGZpZWxkKSlcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGZpZWxkLCB0aGlzLmhlYWRlcltmaWVsZF0pO1xuICB9XG5cbiAgaWYgKHRoaXMuX3Jlc3BvbnNlVHlwZSkge1xuICAgIHhoci5yZXNwb25zZVR5cGUgPSB0aGlzLl9yZXNwb25zZVR5cGU7XG4gIH1cblxuICAvLyBzZW5kIHN0dWZmXG4gIHRoaXMuZW1pdCgncmVxdWVzdCcsIHRoaXMpO1xuXG4gIC8vIElFMTEgeGhyLnNlbmQodW5kZWZpbmVkKSBzZW5kcyAndW5kZWZpbmVkJyBzdHJpbmcgYXMgUE9TVCBwYXlsb2FkIChpbnN0ZWFkIG9mIG5vdGhpbmcpXG4gIC8vIFdlIG5lZWQgbnVsbCBoZXJlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gIHhoci5zZW5kKHR5cGVvZiBkYXRhID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiBkYXRhKTtcbn07XG5cbnJlcXVlc3QuYWdlbnQgPSAoKSA9PiBuZXcgQWdlbnQoKTtcblxuZm9yIChjb25zdCBtZXRob2Qgb2YgWydHRVQnLCAnUE9TVCcsICdPUFRJT05TJywgJ1BBVENIJywgJ1BVVCcsICdERUxFVEUnXSkge1xuICBBZ2VudC5wcm90b3R5cGVbbWV0aG9kLnRvTG93ZXJDYXNlKCldID0gZnVuY3Rpb24gKHVybCwgZm4pIHtcbiAgICBjb25zdCByZXF1ZXN0XyA9IG5ldyByZXF1ZXN0LlJlcXVlc3QobWV0aG9kLCB1cmwpO1xuICAgIHRoaXMuX3NldERlZmF1bHRzKHJlcXVlc3RfKTtcbiAgICBpZiAoZm4pIHtcbiAgICAgIHJlcXVlc3RfLmVuZChmbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3RfO1xuICB9O1xufVxuXG5BZ2VudC5wcm90b3R5cGUuZGVsID0gQWdlbnQucHJvdG90eXBlLmRlbGV0ZTtcblxuLyoqXG4gKiBHRVQgYHVybGAgd2l0aCBvcHRpb25hbCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LmdldCA9ICh1cmwsIGRhdGEsIGZuKSA9PiB7XG4gIGNvbnN0IHJlcXVlc3RfID0gcmVxdWVzdCgnR0VUJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcXVlc3RfLnF1ZXJ5KGRhdGEpO1xuICBpZiAoZm4pIHJlcXVlc3RfLmVuZChmbik7XG4gIHJldHVybiByZXF1ZXN0Xztcbn07XG5cbi8qKlxuICogSEVBRCBgdXJsYCB3aXRoIG9wdGlvbmFsIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfEZ1bmN0aW9ufSBbZGF0YV0gb3IgZm5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QuaGVhZCA9ICh1cmwsIGRhdGEsIGZuKSA9PiB7XG4gIGNvbnN0IHJlcXVlc3RfID0gcmVxdWVzdCgnSEVBRCcsIHVybCk7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gZGF0YTtcbiAgICBkYXRhID0gbnVsbDtcbiAgfVxuXG4gIGlmIChkYXRhKSByZXF1ZXN0Xy5xdWVyeShkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIE9QVElPTlMgcXVlcnkgdG8gYHVybGAgd2l0aCBvcHRpb25hbCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0Lm9wdGlvbnMgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ09QVElPTlMnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIERFTEVURSBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR9IFtkYXRhXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVsKHVybCwgZGF0YSwgZm4pIHtcbiAgY29uc3QgcmVxdWVzdF8gPSByZXF1ZXN0KCdERUxFVEUnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59XG5cbnJlcXVlc3QuZGVsID0gZGVsO1xucmVxdWVzdC5kZWxldGUgPSBkZWw7XG5cbi8qKlxuICogUEFUQ0ggYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfSBbZGF0YV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QucGF0Y2ggPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BBVENIJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcXVlc3RfLnNlbmQoZGF0YSk7XG4gIGlmIChmbikgcmVxdWVzdF8uZW5kKGZuKTtcbiAgcmV0dXJuIHJlcXVlc3RfO1xufTtcblxuLyoqXG4gKiBQT1NUIGB1cmxgIHdpdGggb3B0aW9uYWwgYGRhdGFgIGFuZCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZH0gW2RhdGFdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LnBvc3QgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BPU1QnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIFBVVCBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5wdXQgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BVVCcsIHVybCk7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gZGF0YTtcbiAgICBkYXRhID0gbnVsbDtcbiAgfVxuXG4gIGlmIChkYXRhKSByZXF1ZXN0Xy5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcXVlc3RfLmVuZChmbik7XG4gIHJldHVybiByZXF1ZXN0Xztcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxJQUFKOztBQUNBLElBQUksT0FBT0MsTUFBUCxLQUFrQixXQUF0QixFQUFtQztFQUNqQztFQUNBRCxJQUFJLEdBQUdDLE1BQVA7QUFDRCxDQUhELE1BR08sSUFBSSxPQUFPQyxJQUFQLEtBQWdCLFdBQXBCLEVBQWlDO0VBQ3RDO0VBQ0FDLE9BQU8sQ0FBQ0MsSUFBUixDQUNFLHFFQURGO0VBR0FKLElBQUksU0FBSjtBQUNELENBTk0sTUFNQTtFQUNMO0VBQ0FBLElBQUksR0FBR0UsSUFBUDtBQUNEOztBQUVELElBQU1HLE9BQU8sR0FBR0MsT0FBTyxDQUFDLG1CQUFELENBQXZCOztBQUNBLElBQU1DLGFBQWEsR0FBR0QsT0FBTyxDQUFDLHFCQUFELENBQTdCOztBQUNBLElBQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLElBQUQsQ0FBbEI7O0FBQ0EsSUFBTUcsV0FBVyxHQUFHSCxPQUFPLENBQUMsZ0JBQUQsQ0FBM0I7O0FBQ0EsZUFBb0NBLE9BQU8sQ0FBQyxTQUFELENBQTNDO0FBQUEsSUFBUUksUUFBUixZQUFRQSxRQUFSO0FBQUEsSUFBa0JDLEtBQWxCLFlBQWtCQSxLQUFsQjtBQUFBLElBQXlCQyxNQUF6QixZQUF5QkEsTUFBekI7O0FBQ0EsSUFBTUMsWUFBWSxHQUFHUCxPQUFPLENBQUMsaUJBQUQsQ0FBNUI7O0FBQ0EsSUFBTVEsS0FBSyxHQUFHUixPQUFPLENBQUMsY0FBRCxDQUFyQjtBQUVBO0FBQ0E7QUFDQTs7O0FBRUEsU0FBU1MsSUFBVCxHQUFnQixDQUFFO0FBRWxCO0FBQ0E7QUFDQTs7O0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixVQUFVQyxNQUFWLEVBQWtCQyxHQUFsQixFQUF1QjtFQUN0QztFQUNBLElBQUksT0FBT0EsR0FBUCxLQUFlLFVBQW5CLEVBQStCO0lBQzdCLE9BQU8sSUFBSUYsT0FBTyxDQUFDRyxPQUFaLENBQW9CLEtBQXBCLEVBQTJCRixNQUEzQixFQUFtQ0csR0FBbkMsQ0FBdUNGLEdBQXZDLENBQVA7RUFDRCxDQUpxQyxDQU10Qzs7O0VBQ0EsSUFBSUcsU0FBUyxDQUFDQyxNQUFWLEtBQXFCLENBQXpCLEVBQTRCO0lBQzFCLE9BQU8sSUFBSU4sT0FBTyxDQUFDRyxPQUFaLENBQW9CLEtBQXBCLEVBQTJCRixNQUEzQixDQUFQO0VBQ0Q7O0VBRUQsT0FBTyxJQUFJRCxPQUFPLENBQUNHLE9BQVosQ0FBb0JGLE1BQXBCLEVBQTRCQyxHQUE1QixDQUFQO0FBQ0QsQ0FaRDs7QUFjQUYsT0FBTyxHQUFHRCxNQUFNLENBQUNDLE9BQWpCO0FBRUEsSUFBTU8sT0FBTyxHQUFHUCxPQUFoQjtBQUVBQSxPQUFPLENBQUNHLE9BQVIsR0FBa0JBLE9BQWxCO0FBRUE7QUFDQTtBQUNBOztBQUVBSSxPQUFPLENBQUNDLE1BQVIsR0FBaUIsWUFBTTtFQUNyQixJQUNFekIsSUFBSSxDQUFDMEIsY0FBTCxLQUNDLENBQUMxQixJQUFJLENBQUMyQixRQUFOLElBQ0MzQixJQUFJLENBQUMyQixRQUFMLENBQWNDLFFBQWQsS0FBMkIsT0FENUIsSUFFQyxDQUFDNUIsSUFBSSxDQUFDNkIsYUFIUixDQURGLEVBS0U7SUFDQSxPQUFPLElBQUlILGNBQUosRUFBUDtFQUNEOztFQUVELElBQUk7SUFDRixPQUFPLElBQUlHLGFBQUosQ0FBa0IsbUJBQWxCLENBQVA7RUFDRCxDQUZELENBRUUsZ0JBQU07SUFDTjtFQUNEOztFQUVELElBQUk7SUFDRixPQUFPLElBQUlBLGFBQUosQ0FBa0Isb0JBQWxCLENBQVA7RUFDRCxDQUZELENBRUUsaUJBQU07SUFDTjtFQUNEOztFQUVELElBQUk7SUFDRixPQUFPLElBQUlBLGFBQUosQ0FBa0Isb0JBQWxCLENBQVA7RUFDRCxDQUZELENBRUUsaUJBQU07SUFDTjtFQUNEOztFQUVELElBQUk7SUFDRixPQUFPLElBQUlBLGFBQUosQ0FBa0IsZ0JBQWxCLENBQVA7RUFDRCxDQUZELENBRUUsaUJBQU07SUFDTjtFQUNEOztFQUVELE1BQU0sSUFBSUMsS0FBSixDQUFVLHVEQUFWLENBQU47QUFDRCxDQW5DRDtBQXFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsSUFBTUMsSUFBSSxHQUFHLEdBQUdBLElBQUgsR0FBVSxVQUFDQyxDQUFEO0VBQUEsT0FBT0EsQ0FBQyxDQUFDRCxJQUFGLEVBQVA7QUFBQSxDQUFWLEdBQTRCLFVBQUNDLENBQUQ7RUFBQSxPQUFPQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxjQUFWLEVBQTBCLEVBQTFCLENBQVA7QUFBQSxDQUF6QztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVNDLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCO0VBQ3pCLElBQUksQ0FBQ3pCLFFBQVEsQ0FBQ3lCLE1BQUQsQ0FBYixFQUF1QixPQUFPQSxNQUFQO0VBQ3ZCLElBQU1DLEtBQUssR0FBRyxFQUFkOztFQUNBLEtBQUssSUFBTUMsR0FBWCxJQUFrQkYsTUFBbEIsRUFBMEI7SUFDeEIsSUFBSXZCLE1BQU0sQ0FBQ3VCLE1BQUQsRUFBU0UsR0FBVCxDQUFWLEVBQXlCQyx1QkFBdUIsQ0FBQ0YsS0FBRCxFQUFRQyxHQUFSLEVBQWFGLE1BQU0sQ0FBQ0UsR0FBRCxDQUFuQixDQUF2QjtFQUMxQjs7RUFFRCxPQUFPRCxLQUFLLENBQUNHLElBQU4sQ0FBVyxHQUFYLENBQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBLFNBQVNELHVCQUFULENBQWlDRixLQUFqQyxFQUF3Q0MsR0FBeEMsRUFBNkNHLEtBQTdDLEVBQW9EO0VBQ2xELElBQUlBLEtBQUssS0FBS0MsU0FBZCxFQUF5Qjs7RUFDekIsSUFBSUQsS0FBSyxLQUFLLElBQWQsRUFBb0I7SUFDbEJKLEtBQUssQ0FBQ00sSUFBTixDQUFXQyxTQUFTLENBQUNOLEdBQUQsQ0FBcEI7SUFDQTtFQUNEOztFQUVELElBQUlPLEtBQUssQ0FBQ0MsT0FBTixDQUFjTCxLQUFkLENBQUosRUFBMEI7SUFBQSwyQ0FDUkEsS0FEUTtJQUFBOztJQUFBO01BQ3hCLG9EQUF1QjtRQUFBLElBQVpNLENBQVk7UUFDckJSLHVCQUF1QixDQUFDRixLQUFELEVBQVFDLEdBQVIsRUFBYVMsQ0FBYixDQUF2QjtNQUNEO0lBSHVCO01BQUE7SUFBQTtNQUFBO0lBQUE7RUFJekIsQ0FKRCxNQUlPLElBQUlwQyxRQUFRLENBQUM4QixLQUFELENBQVosRUFBcUI7SUFDMUIsS0FBSyxJQUFNTyxNQUFYLElBQXFCUCxLQUFyQixFQUE0QjtNQUMxQixJQUFJNUIsTUFBTSxDQUFDNEIsS0FBRCxFQUFRTyxNQUFSLENBQVYsRUFDRVQsdUJBQXVCLENBQUNGLEtBQUQsWUFBV0MsR0FBWCxjQUFrQlUsTUFBbEIsUUFBNkJQLEtBQUssQ0FBQ08sTUFBRCxDQUFsQyxDQUF2QjtJQUNIO0VBQ0YsQ0FMTSxNQUtBO0lBQ0xYLEtBQUssQ0FBQ00sSUFBTixDQUFXQyxTQUFTLENBQUNOLEdBQUQsQ0FBVCxHQUFpQixHQUFqQixHQUF1Qlcsa0JBQWtCLENBQUNSLEtBQUQsQ0FBcEQ7RUFDRDtBQUNGO0FBRUQ7QUFDQTtBQUNBOzs7QUFFQWhCLE9BQU8sQ0FBQ3lCLGVBQVIsR0FBMEJmLFNBQTFCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBU2dCLFdBQVQsQ0FBcUJDLE9BQXJCLEVBQThCO0VBQzVCLElBQU1oQixNQUFNLEdBQUcsRUFBZjtFQUNBLElBQU1DLEtBQUssR0FBR2UsT0FBTyxDQUFDQyxLQUFSLENBQWMsR0FBZCxDQUFkO0VBQ0EsSUFBSUMsSUFBSjtFQUNBLElBQUlDLEdBQUo7O0VBRUEsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBUixFQUFXQyxPQUFPLEdBQUdwQixLQUFLLENBQUNiLE1BQWhDLEVBQXdDZ0MsQ0FBQyxHQUFHQyxPQUE1QyxFQUFxRCxFQUFFRCxDQUF2RCxFQUEwRDtJQUN4REYsSUFBSSxHQUFHakIsS0FBSyxDQUFDbUIsQ0FBRCxDQUFaO0lBQ0FELEdBQUcsR0FBR0QsSUFBSSxDQUFDSSxPQUFMLENBQWEsR0FBYixDQUFOOztJQUNBLElBQUlILEdBQUcsS0FBSyxDQUFDLENBQWIsRUFBZ0I7TUFDZG5CLE1BQU0sQ0FBQ3VCLGtCQUFrQixDQUFDTCxJQUFELENBQW5CLENBQU4sR0FBbUMsRUFBbkM7SUFDRCxDQUZELE1BRU87TUFDTGxCLE1BQU0sQ0FBQ3VCLGtCQUFrQixDQUFDTCxJQUFJLENBQUNNLEtBQUwsQ0FBVyxDQUFYLEVBQWNMLEdBQWQsQ0FBRCxDQUFuQixDQUFOLEdBQWlESSxrQkFBa0IsQ0FDakVMLElBQUksQ0FBQ00sS0FBTCxDQUFXTCxHQUFHLEdBQUcsQ0FBakIsQ0FEaUUsQ0FBbkU7SUFHRDtFQUNGOztFQUVELE9BQU9uQixNQUFQO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7OztBQUVBWCxPQUFPLENBQUMwQixXQUFSLEdBQXNCQSxXQUF0QjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTFCLE9BQU8sQ0FBQ29DLEtBQVIsR0FBZ0I7RUFDZEMsSUFBSSxFQUFFLFdBRFE7RUFFZEMsSUFBSSxFQUFFLGtCQUZRO0VBR2RDLEdBQUcsRUFBRSxVQUhTO0VBSWRDLFVBQVUsRUFBRSxtQ0FKRTtFQUtkQyxJQUFJLEVBQUUsbUNBTFE7RUFNZCxhQUFhO0FBTkMsQ0FBaEI7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBekMsT0FBTyxDQUFDVSxTQUFSLEdBQW9CO0VBQ2xCLHFDQUFxQzFCLEVBQUUsQ0FBQzBELFNBRHRCO0VBRWxCLG9CQUFvQjNEO0FBRkYsQ0FBcEI7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBaUIsT0FBTyxDQUFDMkMsS0FBUixHQUFnQjtFQUNkLHFDQUFxQ2pCLFdBRHZCO0VBRWQsb0JBQW9Ca0IsSUFBSSxDQUFDRDtBQUZYLENBQWhCO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTRSxXQUFULENBQXFCbEIsT0FBckIsRUFBOEI7RUFDNUIsSUFBTW1CLEtBQUssR0FBR25CLE9BQU8sQ0FBQ0MsS0FBUixDQUFjLE9BQWQsQ0FBZDtFQUNBLElBQU1tQixNQUFNLEdBQUcsRUFBZjtFQUNBLElBQUlDLEtBQUo7RUFDQSxJQUFJQyxJQUFKO0VBQ0EsSUFBSUMsS0FBSjtFQUNBLElBQUlsQyxLQUFKOztFQUVBLEtBQUssSUFBSWUsQ0FBQyxHQUFHLENBQVIsRUFBV0MsT0FBTyxHQUFHYyxLQUFLLENBQUMvQyxNQUFoQyxFQUF3Q2dDLENBQUMsR0FBR0MsT0FBNUMsRUFBcUQsRUFBRUQsQ0FBdkQsRUFBMEQ7SUFDeERrQixJQUFJLEdBQUdILEtBQUssQ0FBQ2YsQ0FBRCxDQUFaO0lBQ0FpQixLQUFLLEdBQUdDLElBQUksQ0FBQ2hCLE9BQUwsQ0FBYSxHQUFiLENBQVI7O0lBQ0EsSUFBSWUsS0FBSyxLQUFLLENBQUMsQ0FBZixFQUFrQjtNQUNoQjtNQUNBO0lBQ0Q7O0lBRURFLEtBQUssR0FBR0QsSUFBSSxDQUFDZCxLQUFMLENBQVcsQ0FBWCxFQUFjYSxLQUFkLEVBQXFCRyxXQUFyQixFQUFSO0lBQ0FuQyxLQUFLLEdBQUdULElBQUksQ0FBQzBDLElBQUksQ0FBQ2QsS0FBTCxDQUFXYSxLQUFLLEdBQUcsQ0FBbkIsQ0FBRCxDQUFaO0lBQ0FELE1BQU0sQ0FBQ0csS0FBRCxDQUFOLEdBQWdCbEMsS0FBaEI7RUFDRDs7RUFFRCxPQUFPK0IsTUFBUDtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBLFNBQVNLLE1BQVQsQ0FBZ0JDLElBQWhCLEVBQXNCO0VBQ3BCO0VBQ0E7RUFDQSxPQUFPLHNCQUFzQkMsSUFBdEIsQ0FBMkJELElBQTNCLENBQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsU0FBU0UsUUFBVCxDQUFrQkMsUUFBbEIsRUFBNEI7RUFDMUIsS0FBS0MsR0FBTCxHQUFXRCxRQUFYO0VBQ0EsS0FBS0UsR0FBTCxHQUFXLEtBQUtELEdBQUwsQ0FBU0MsR0FBcEIsQ0FGMEIsQ0FHMUI7O0VBQ0EsS0FBS0MsSUFBTCxHQUNHLEtBQUtGLEdBQUwsQ0FBUy9ELE1BQVQsS0FBb0IsTUFBcEIsS0FDRSxLQUFLZ0UsR0FBTCxDQUFTRSxZQUFULEtBQTBCLEVBQTFCLElBQWdDLEtBQUtGLEdBQUwsQ0FBU0UsWUFBVCxLQUEwQixNQUQ1RCxDQUFELElBRUEsT0FBTyxLQUFLRixHQUFMLENBQVNFLFlBQWhCLEtBQWlDLFdBRmpDLEdBR0ksS0FBS0YsR0FBTCxDQUFTRyxZQUhiLEdBSUksSUFMTjtFQU1BLEtBQUtDLFVBQUwsR0FBa0IsS0FBS0wsR0FBTCxDQUFTQyxHQUFULENBQWFJLFVBQS9CO0VBQ0EsSUFBTUMsTUFBTixHQUFpQixLQUFLTCxHQUF0QixDQUFNSyxNQUFOLENBWDBCLENBWTFCOztFQUNBLElBQUlBLE1BQU0sS0FBSyxJQUFmLEVBQXFCO0lBQ25CQSxNQUFNLEdBQUcsR0FBVDtFQUNEOztFQUVELEtBQUtDLG9CQUFMLENBQTBCRCxNQUExQjs7RUFDQSxLQUFLRSxPQUFMLEdBQWVwQixXQUFXLENBQUMsS0FBS2EsR0FBTCxDQUFTUSxxQkFBVCxFQUFELENBQTFCO0VBQ0EsS0FBS0MsTUFBTCxHQUFjLEtBQUtGLE9BQW5CLENBbkIwQixDQW9CMUI7RUFDQTtFQUNBOztFQUNBLEtBQUtFLE1BQUwsQ0FBWSxjQUFaLElBQThCLEtBQUtULEdBQUwsQ0FBU1UsaUJBQVQsQ0FBMkIsY0FBM0IsQ0FBOUI7O0VBQ0EsS0FBS0Msb0JBQUwsQ0FBMEIsS0FBS0YsTUFBL0I7O0VBRUEsSUFBSSxLQUFLUixJQUFMLEtBQWMsSUFBZCxJQUFzQkgsUUFBUSxDQUFDYyxhQUFuQyxFQUFrRDtJQUNoRCxLQUFLQyxJQUFMLEdBQVksS0FBS2IsR0FBTCxDQUFTYyxRQUFyQjtFQUNELENBRkQsTUFFTztJQUNMLEtBQUtELElBQUwsR0FDRSxLQUFLZCxHQUFMLENBQVMvRCxNQUFULEtBQW9CLE1BQXBCLEdBQ0ksSUFESixHQUVJLEtBQUsrRSxVQUFMLENBQWdCLEtBQUtkLElBQUwsR0FBWSxLQUFLQSxJQUFqQixHQUF3QixLQUFLRCxHQUFMLENBQVNjLFFBQWpELENBSE47RUFJRDtBQUNGOztBQUVEckYsS0FBSyxDQUFDb0UsUUFBUSxDQUFDbUIsU0FBVixFQUFxQnJGLFlBQVksQ0FBQ3FGLFNBQWxDLENBQUw7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQW5CLFFBQVEsQ0FBQ21CLFNBQVQsQ0FBbUJELFVBQW5CLEdBQWdDLFVBQVU5QyxPQUFWLEVBQW1CO0VBQ2pELElBQUlnQixLQUFLLEdBQUczQyxPQUFPLENBQUMyQyxLQUFSLENBQWMsS0FBS2dDLElBQW5CLENBQVo7O0VBQ0EsSUFBSSxLQUFLbEIsR0FBTCxDQUFTbUIsT0FBYixFQUFzQjtJQUNwQixPQUFPLEtBQUtuQixHQUFMLENBQVNtQixPQUFULENBQWlCLElBQWpCLEVBQXVCakQsT0FBdkIsQ0FBUDtFQUNEOztFQUVELElBQUksQ0FBQ2dCLEtBQUQsSUFBVVMsTUFBTSxDQUFDLEtBQUt1QixJQUFOLENBQXBCLEVBQWlDO0lBQy9CaEMsS0FBSyxHQUFHM0MsT0FBTyxDQUFDMkMsS0FBUixDQUFjLGtCQUFkLENBQVI7RUFDRDs7RUFFRCxPQUFPQSxLQUFLLElBQUloQixPQUFULEtBQXFCQSxPQUFPLENBQUM1QixNQUFSLEdBQWlCLENBQWpCLElBQXNCNEIsT0FBTyxZQUFZa0QsTUFBOUQsSUFDSGxDLEtBQUssQ0FBQ2hCLE9BQUQsQ0FERixHQUVILElBRko7QUFHRCxDQWJEO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTRCLFFBQVEsQ0FBQ21CLFNBQVQsQ0FBbUJJLE9BQW5CLEdBQTZCLFlBQVk7RUFDdkMsSUFBUXJCLEdBQVIsR0FBZ0IsSUFBaEIsQ0FBUUEsR0FBUjtFQUNBLElBQVEvRCxNQUFSLEdBQW1CK0QsR0FBbkIsQ0FBUS9ELE1BQVI7RUFDQSxJQUFRQyxHQUFSLEdBQWdCOEQsR0FBaEIsQ0FBUTlELEdBQVI7RUFFQSxJQUFNb0YsT0FBTyxvQkFBYXJGLE1BQWIsY0FBdUJDLEdBQXZCLGVBQStCLEtBQUtvRSxNQUFwQyxNQUFiO0VBQ0EsSUFBTWlCLEtBQUssR0FBRyxJQUFJMUUsS0FBSixDQUFVeUUsT0FBVixDQUFkO0VBQ0FDLEtBQUssQ0FBQ2pCLE1BQU4sR0FBZSxLQUFLQSxNQUFwQjtFQUNBaUIsS0FBSyxDQUFDdEYsTUFBTixHQUFlQSxNQUFmO0VBQ0FzRixLQUFLLENBQUNyRixHQUFOLEdBQVlBLEdBQVo7RUFFQSxPQUFPcUYsS0FBUDtBQUNELENBWkQ7QUFjQTtBQUNBO0FBQ0E7OztBQUVBaEYsT0FBTyxDQUFDdUQsUUFBUixHQUFtQkEsUUFBbkI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTM0QsT0FBVCxDQUFpQkYsTUFBakIsRUFBeUJDLEdBQXpCLEVBQThCO0VBQzVCLElBQU1qQixJQUFJLEdBQUcsSUFBYjtFQUNBLEtBQUt1RyxNQUFMLEdBQWMsS0FBS0EsTUFBTCxJQUFlLEVBQTdCO0VBQ0EsS0FBS3ZGLE1BQUwsR0FBY0EsTUFBZDtFQUNBLEtBQUtDLEdBQUwsR0FBV0EsR0FBWDtFQUNBLEtBQUt3RSxNQUFMLEdBQWMsRUFBZCxDQUw0QixDQUtWOztFQUNsQixLQUFLZSxPQUFMLEdBQWUsRUFBZixDQU40QixDQU1UOztFQUNuQixLQUFLQyxFQUFMLENBQVEsS0FBUixFQUFlLFlBQU07SUFDbkIsSUFBSUgsS0FBSyxHQUFHLElBQVo7SUFDQSxJQUFJSSxHQUFHLEdBQUcsSUFBVjs7SUFFQSxJQUFJO01BQ0ZBLEdBQUcsR0FBRyxJQUFJN0IsUUFBSixDQUFhN0UsSUFBYixDQUFOO0lBQ0QsQ0FGRCxDQUVFLE9BQU8yRyxHQUFQLEVBQVk7TUFDWkwsS0FBSyxHQUFHLElBQUkxRSxLQUFKLENBQVUsd0NBQVYsQ0FBUjtNQUNBMEUsS0FBSyxDQUFDckMsS0FBTixHQUFjLElBQWQ7TUFDQXFDLEtBQUssQ0FBQ00sUUFBTixHQUFpQkQsR0FBakIsQ0FIWSxDQUlaOztNQUNBLElBQUkzRyxJQUFJLENBQUNnRixHQUFULEVBQWM7UUFDWjtRQUNBc0IsS0FBSyxDQUFDTyxXQUFOLEdBQ0UsT0FBTzdHLElBQUksQ0FBQ2dGLEdBQUwsQ0FBU0UsWUFBaEIsS0FBaUMsV0FBakMsR0FDSWxGLElBQUksQ0FBQ2dGLEdBQUwsQ0FBU0csWUFEYixHQUVJbkYsSUFBSSxDQUFDZ0YsR0FBTCxDQUFTYyxRQUhmLENBRlksQ0FNWjs7UUFDQVEsS0FBSyxDQUFDakIsTUFBTixHQUFlckYsSUFBSSxDQUFDZ0YsR0FBTCxDQUFTSyxNQUFULEdBQWtCckYsSUFBSSxDQUFDZ0YsR0FBTCxDQUFTSyxNQUEzQixHQUFvQyxJQUFuRDtRQUNBaUIsS0FBSyxDQUFDUSxVQUFOLEdBQW1CUixLQUFLLENBQUNqQixNQUF6QixDQVJZLENBUXFCO01BQ2xDLENBVEQsTUFTTztRQUNMaUIsS0FBSyxDQUFDTyxXQUFOLEdBQW9CLElBQXBCO1FBQ0FQLEtBQUssQ0FBQ2pCLE1BQU4sR0FBZSxJQUFmO01BQ0Q7O01BRUQsT0FBT3JGLElBQUksQ0FBQytHLFFBQUwsQ0FBY1QsS0FBZCxDQUFQO0lBQ0Q7O0lBRUR0RyxJQUFJLENBQUNnSCxJQUFMLENBQVUsVUFBVixFQUFzQk4sR0FBdEI7SUFFQSxJQUFJTyxTQUFKOztJQUNBLElBQUk7TUFDRixJQUFJLENBQUNqSCxJQUFJLENBQUNrSCxhQUFMLENBQW1CUixHQUFuQixDQUFMLEVBQThCO1FBQzVCTyxTQUFTLEdBQUcsSUFBSXJGLEtBQUosQ0FDVjhFLEdBQUcsQ0FBQ3RCLFVBQUosSUFBa0JzQixHQUFHLENBQUN6QixJQUF0QixJQUE4Qiw0QkFEcEIsQ0FBWjtNQUdEO0lBQ0YsQ0FORCxDQU1FLE9BQU8wQixHQUFQLEVBQVk7TUFDWk0sU0FBUyxHQUFHTixHQUFaLENBRFksQ0FDSztJQUNsQixDQXZDa0IsQ0F5Q25COzs7SUFDQSxJQUFJTSxTQUFKLEVBQWU7TUFDYkEsU0FBUyxDQUFDTCxRQUFWLEdBQXFCTixLQUFyQjtNQUNBVyxTQUFTLENBQUNuQixRQUFWLEdBQXFCWSxHQUFyQjtNQUNBTyxTQUFTLENBQUM1QixNQUFWLEdBQW1CcUIsR0FBRyxDQUFDckIsTUFBdkI7TUFDQXJGLElBQUksQ0FBQytHLFFBQUwsQ0FBY0UsU0FBZCxFQUF5QlAsR0FBekI7SUFDRCxDQUxELE1BS087TUFDTDFHLElBQUksQ0FBQytHLFFBQUwsQ0FBYyxJQUFkLEVBQW9CTCxHQUFwQjtJQUNEO0VBQ0YsQ0FsREQ7QUFtREQ7QUFFRDtBQUNBO0FBQ0E7QUFFQTs7O0FBQ0F2RyxPQUFPLENBQUNlLE9BQU8sQ0FBQzhFLFNBQVQsQ0FBUDtBQUVBdkYsS0FBSyxDQUFDUyxPQUFPLENBQUM4RSxTQUFULEVBQW9CekYsV0FBVyxDQUFDeUYsU0FBaEMsQ0FBTDtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTlFLE9BQU8sQ0FBQzhFLFNBQVIsQ0FBa0JDLElBQWxCLEdBQXlCLFVBQVVBLElBQVYsRUFBZ0I7RUFDdkMsS0FBS2tCLEdBQUwsQ0FBUyxjQUFULEVBQXlCN0YsT0FBTyxDQUFDb0MsS0FBUixDQUFjdUMsSUFBZCxLQUF1QkEsSUFBaEQ7RUFDQSxPQUFPLElBQVA7QUFDRCxDQUhEO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBL0UsT0FBTyxDQUFDOEUsU0FBUixDQUFrQm9CLE1BQWxCLEdBQTJCLFVBQVVuQixJQUFWLEVBQWdCO0VBQ3pDLEtBQUtrQixHQUFMLENBQVMsUUFBVCxFQUFtQjdGLE9BQU8sQ0FBQ29DLEtBQVIsQ0FBY3VDLElBQWQsS0FBdUJBLElBQTFDO0VBQ0EsT0FBTyxJQUFQO0FBQ0QsQ0FIRDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEvRSxPQUFPLENBQUM4RSxTQUFSLENBQWtCcUIsSUFBbEIsR0FBeUIsVUFBVUMsSUFBVixFQUFnQkMsSUFBaEIsRUFBc0JDLE9BQXRCLEVBQStCO0VBQ3RELElBQUlwRyxTQUFTLENBQUNDLE1BQVYsS0FBcUIsQ0FBekIsRUFBNEJrRyxJQUFJLEdBQUcsRUFBUDs7RUFDNUIsSUFBSSxRQUFPQSxJQUFQLE1BQWdCLFFBQWhCLElBQTRCQSxJQUFJLEtBQUssSUFBekMsRUFBK0M7SUFDN0M7SUFDQUMsT0FBTyxHQUFHRCxJQUFWO0lBQ0FBLElBQUksR0FBRyxFQUFQO0VBQ0Q7O0VBRUQsSUFBSSxDQUFDQyxPQUFMLEVBQWM7SUFDWkEsT0FBTyxHQUFHO01BQ1J2QixJQUFJLEVBQUUsT0FBT3dCLElBQVAsS0FBZ0IsVUFBaEIsR0FBNkIsT0FBN0IsR0FBdUM7SUFEckMsQ0FBVjtFQUdEOztFQUVELElBQU1DLE9BQU8sR0FBR0YsT0FBTyxDQUFDRSxPQUFSLEdBQ1pGLE9BQU8sQ0FBQ0UsT0FESSxHQUVaLFVBQUNDLE1BQUQsRUFBWTtJQUNWLElBQUksT0FBT0YsSUFBUCxLQUFnQixVQUFwQixFQUFnQztNQUM5QixPQUFPQSxJQUFJLENBQUNFLE1BQUQsQ0FBWDtJQUNEOztJQUVELE1BQU0sSUFBSS9GLEtBQUosQ0FBVSwrQ0FBVixDQUFOO0VBQ0QsQ0FSTDtFQVVBLE9BQU8sS0FBS2dHLEtBQUwsQ0FBV04sSUFBWCxFQUFpQkMsSUFBakIsRUFBdUJDLE9BQXZCLEVBQWdDRSxPQUFoQyxDQUFQO0FBQ0QsQ0F6QkQ7QUEyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBeEcsT0FBTyxDQUFDOEUsU0FBUixDQUFrQjZCLEtBQWxCLEdBQTBCLFVBQVV2RixLQUFWLEVBQWlCO0VBQ3pDLElBQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQkEsS0FBSyxHQUFHTixTQUFTLENBQUNNLEtBQUQsQ0FBakI7RUFDL0IsSUFBSUEsS0FBSixFQUFXLEtBQUtpRSxNQUFMLENBQVkvRCxJQUFaLENBQWlCRixLQUFqQjtFQUNYLE9BQU8sSUFBUDtBQUNELENBSkQ7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUFwQixPQUFPLENBQUM4RSxTQUFSLENBQWtCOEIsTUFBbEIsR0FBMkIsVUFBVXRELEtBQVYsRUFBaUJ1RCxJQUFqQixFQUF1QlAsT0FBdkIsRUFBZ0M7RUFDekQsSUFBSU8sSUFBSixFQUFVO0lBQ1IsSUFBSSxLQUFLQyxLQUFULEVBQWdCO01BQ2QsTUFBTSxJQUFJcEcsS0FBSixDQUFVLDRDQUFWLENBQU47SUFDRDs7SUFFRCxLQUFLcUcsWUFBTCxHQUFvQkMsTUFBcEIsQ0FBMkIxRCxLQUEzQixFQUFrQ3VELElBQWxDLEVBQXdDUCxPQUFPLElBQUlPLElBQUksQ0FBQ0ksSUFBeEQ7RUFDRDs7RUFFRCxPQUFPLElBQVA7QUFDRCxDQVZEOztBQVlBakgsT0FBTyxDQUFDOEUsU0FBUixDQUFrQmlDLFlBQWxCLEdBQWlDLFlBQVk7RUFDM0MsSUFBSSxDQUFDLEtBQUtHLFNBQVYsRUFBcUI7SUFDbkIsS0FBS0EsU0FBTCxHQUFpQixJQUFJdEksSUFBSSxDQUFDdUksUUFBVCxFQUFqQjtFQUNEOztFQUVELE9BQU8sS0FBS0QsU0FBWjtBQUNELENBTkQ7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQWxILE9BQU8sQ0FBQzhFLFNBQVIsQ0FBa0JlLFFBQWxCLEdBQTZCLFVBQVVULEtBQVYsRUFBaUJJLEdBQWpCLEVBQXNCO0VBQ2pELElBQUksS0FBSzRCLFlBQUwsQ0FBa0JoQyxLQUFsQixFQUF5QkksR0FBekIsQ0FBSixFQUFtQztJQUNqQyxPQUFPLEtBQUs2QixNQUFMLEVBQVA7RUFDRDs7RUFFRCxJQUFNQyxFQUFFLEdBQUcsS0FBS0MsU0FBaEI7RUFDQSxLQUFLQyxZQUFMOztFQUVBLElBQUlwQyxLQUFKLEVBQVc7SUFDVCxJQUFJLEtBQUtxQyxXQUFULEVBQXNCckMsS0FBSyxDQUFDc0MsT0FBTixHQUFnQixLQUFLQyxRQUFMLEdBQWdCLENBQWhDO0lBQ3RCLEtBQUs3QixJQUFMLENBQVUsT0FBVixFQUFtQlYsS0FBbkI7RUFDRDs7RUFFRGtDLEVBQUUsQ0FBQ2xDLEtBQUQsRUFBUUksR0FBUixDQUFGO0FBQ0QsQ0FkRDtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQXhGLE9BQU8sQ0FBQzhFLFNBQVIsQ0FBa0I4QyxnQkFBbEIsR0FBcUMsWUFBWTtFQUMvQyxJQUFNeEMsS0FBSyxHQUFHLElBQUkxRSxLQUFKLENBQ1osOEpBRFksQ0FBZDtFQUdBMEUsS0FBSyxDQUFDeUMsV0FBTixHQUFvQixJQUFwQjtFQUVBekMsS0FBSyxDQUFDakIsTUFBTixHQUFlLEtBQUtBLE1BQXBCO0VBQ0FpQixLQUFLLENBQUN0RixNQUFOLEdBQWUsS0FBS0EsTUFBcEI7RUFDQXNGLEtBQUssQ0FBQ3JGLEdBQU4sR0FBWSxLQUFLQSxHQUFqQjtFQUVBLEtBQUs4RixRQUFMLENBQWNULEtBQWQ7QUFDRCxDQVhELEMsQ0FhQTs7O0FBQ0FwRixPQUFPLENBQUM4RSxTQUFSLENBQWtCZ0QsS0FBbEIsR0FBMEIsWUFBWTtFQUNwQy9JLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLHdEQUFiO0VBQ0EsT0FBTyxJQUFQO0FBQ0QsQ0FIRDs7QUFLQWdCLE9BQU8sQ0FBQzhFLFNBQVIsQ0FBa0JpRCxFQUFsQixHQUF1Qi9ILE9BQU8sQ0FBQzhFLFNBQVIsQ0FBa0JnRCxLQUF6QztBQUNBOUgsT0FBTyxDQUFDOEUsU0FBUixDQUFrQmtELE1BQWxCLEdBQTJCaEksT0FBTyxDQUFDOEUsU0FBUixDQUFrQmlELEVBQTdDLEMsQ0FFQTs7QUFDQS9ILE9BQU8sQ0FBQzhFLFNBQVIsQ0FBa0JtRCxLQUFsQixHQUEwQixZQUFNO0VBQzlCLE1BQU0sSUFBSXZILEtBQUosQ0FDSiw2REFESSxDQUFOO0FBR0QsQ0FKRDs7QUFNQVYsT0FBTyxDQUFDOEUsU0FBUixDQUFrQm9ELElBQWxCLEdBQXlCbEksT0FBTyxDQUFDOEUsU0FBUixDQUFrQm1ELEtBQTNDO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQWpJLE9BQU8sQ0FBQzhFLFNBQVIsQ0FBa0JxRCxPQUFsQixHQUE0QixVQUFVcEgsTUFBVixFQUFrQjtFQUM1QztFQUNBLE9BQ0VBLE1BQU0sSUFDTixRQUFPQSxNQUFQLE1BQWtCLFFBRGxCLElBRUEsQ0FBQ1MsS0FBSyxDQUFDQyxPQUFOLENBQWNWLE1BQWQsQ0FGRCxJQUdBa0UsTUFBTSxDQUFDSCxTQUFQLENBQWlCc0QsUUFBakIsQ0FBMEJDLElBQTFCLENBQStCdEgsTUFBL0IsTUFBMkMsaUJBSjdDO0FBTUQsQ0FSRDtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBZixPQUFPLENBQUM4RSxTQUFSLENBQWtCN0UsR0FBbEIsR0FBd0IsVUFBVXFILEVBQVYsRUFBYztFQUNwQyxJQUFJLEtBQUtnQixVQUFULEVBQXFCO0lBQ25CdkosT0FBTyxDQUFDQyxJQUFSLENBQ0UsdUVBREY7RUFHRDs7RUFFRCxLQUFLc0osVUFBTCxHQUFrQixJQUFsQixDQVBvQyxDQVNwQzs7RUFDQSxLQUFLZixTQUFMLEdBQWlCRCxFQUFFLElBQUkzSCxJQUF2QixDQVZvQyxDQVlwQzs7RUFDQSxLQUFLNEksb0JBQUw7O0VBRUEsS0FBS0MsSUFBTDtBQUNELENBaEJEOztBQWtCQXhJLE9BQU8sQ0FBQzhFLFNBQVIsQ0FBa0IyRCxpQkFBbEIsR0FBc0MsWUFBWTtFQUNoRCxJQUFNM0osSUFBSSxHQUFHLElBQWIsQ0FEZ0QsQ0FHaEQ7O0VBQ0EsSUFBSSxLQUFLNEosY0FBTCxJQUF1QixDQUFDLEtBQUtDLG1CQUFqQyxFQUFzRDtJQUNwRCxLQUFLQSxtQkFBTCxHQUEyQkMsVUFBVSxDQUFDLFlBQU07TUFDMUM5SixJQUFJLENBQUMrSixhQUFMLENBQ0Usb0JBREYsRUFFRS9KLElBQUksQ0FBQzRKLGNBRlAsRUFHRSxXQUhGO0lBS0QsQ0FOb0MsRUFNbEMsS0FBS0EsY0FONkIsQ0FBckM7RUFPRDtBQUNGLENBYkQsQyxDQWVBOzs7QUFDQTFJLE9BQU8sQ0FBQzhFLFNBQVIsQ0FBa0IwRCxJQUFsQixHQUF5QixZQUFZO0VBQ25DLElBQUksS0FBS00sUUFBVCxFQUNFLE9BQU8sS0FBS2pELFFBQUwsQ0FDTCxJQUFJbkYsS0FBSixDQUFVLDREQUFWLENBREssQ0FBUDtFQUlGLElBQU01QixJQUFJLEdBQUcsSUFBYjtFQUNBLEtBQUtnRixHQUFMLEdBQVcxRCxPQUFPLENBQUNDLE1BQVIsRUFBWDtFQUNBLElBQVF5RCxHQUFSLEdBQWdCLElBQWhCLENBQVFBLEdBQVI7RUFDQSxJQUFJaUYsSUFBSSxHQUFHLEtBQUs3QixTQUFMLElBQWtCLEtBQUtKLEtBQWxDOztFQUVBLEtBQUtrQyxZQUFMLEdBWG1DLENBYW5DOzs7RUFDQWxGLEdBQUcsQ0FBQ21GLGdCQUFKLENBQXFCLGtCQUFyQixFQUF5QyxZQUFNO0lBQzdDLElBQVFDLFVBQVIsR0FBdUJwRixHQUF2QixDQUFRb0YsVUFBUjs7SUFDQSxJQUFJQSxVQUFVLElBQUksQ0FBZCxJQUFtQnBLLElBQUksQ0FBQ3FLLHFCQUE1QixFQUFtRDtNQUNqRDNCLFlBQVksQ0FBQzFJLElBQUksQ0FBQ3FLLHFCQUFOLENBQVo7SUFDRDs7SUFFRCxJQUFJRCxVQUFVLEtBQUssQ0FBbkIsRUFBc0I7TUFDcEI7SUFDRCxDQVI0QyxDQVU3QztJQUNBOzs7SUFDQSxJQUFJL0UsTUFBSjs7SUFDQSxJQUFJO01BQ0ZBLE1BQU0sR0FBR0wsR0FBRyxDQUFDSyxNQUFiO0lBQ0QsQ0FGRCxDQUVFLGlCQUFNO01BQ05BLE1BQU0sR0FBRyxDQUFUO0lBQ0Q7O0lBRUQsSUFBSSxDQUFDQSxNQUFMLEVBQWE7TUFDWCxJQUFJckYsSUFBSSxDQUFDc0ssUUFBTCxJQUFpQnRLLElBQUksQ0FBQ2dLLFFBQTFCLEVBQW9DO01BQ3BDLE9BQU9oSyxJQUFJLENBQUM4SSxnQkFBTCxFQUFQO0lBQ0Q7O0lBRUQ5SSxJQUFJLENBQUNnSCxJQUFMLENBQVUsS0FBVjtFQUNELENBekJELEVBZG1DLENBeUNuQzs7RUFDQSxJQUFNdUQsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFDQyxTQUFELEVBQVlDLENBQVosRUFBa0I7SUFDdkMsSUFBSUEsQ0FBQyxDQUFDQyxLQUFGLEdBQVUsQ0FBZCxFQUFpQjtNQUNmRCxDQUFDLENBQUNFLE9BQUYsR0FBYUYsQ0FBQyxDQUFDRyxNQUFGLEdBQVdILENBQUMsQ0FBQ0MsS0FBZCxHQUF1QixHQUFuQzs7TUFFQSxJQUFJRCxDQUFDLENBQUNFLE9BQUYsS0FBYyxHQUFsQixFQUF1QjtRQUNyQmpDLFlBQVksQ0FBQzFJLElBQUksQ0FBQzZKLG1CQUFOLENBQVo7TUFDRDtJQUNGOztJQUVEWSxDQUFDLENBQUNELFNBQUYsR0FBY0EsU0FBZDtJQUNBeEssSUFBSSxDQUFDZ0gsSUFBTCxDQUFVLFVBQVYsRUFBc0J5RCxDQUF0QjtFQUNELENBWEQ7O0VBYUEsSUFBSSxLQUFLSSxZQUFMLENBQWtCLFVBQWxCLENBQUosRUFBbUM7SUFDakMsSUFBSTtNQUNGN0YsR0FBRyxDQUFDbUYsZ0JBQUosQ0FBcUIsVUFBckIsRUFBaUNJLGNBQWMsQ0FBQ08sSUFBZixDQUFvQixJQUFwQixFQUEwQixVQUExQixDQUFqQzs7TUFDQSxJQUFJOUYsR0FBRyxDQUFDK0YsTUFBUixFQUFnQjtRQUNkL0YsR0FBRyxDQUFDK0YsTUFBSixDQUFXWixnQkFBWCxDQUNFLFVBREYsRUFFRUksY0FBYyxDQUFDTyxJQUFmLENBQW9CLElBQXBCLEVBQTBCLFFBQTFCLENBRkY7TUFJRDtJQUNGLENBUkQsQ0FRRSxpQkFBTSxDQUNOO01BQ0E7TUFDQTtJQUNEO0VBQ0Y7O0VBRUQsSUFBSTlGLEdBQUcsQ0FBQytGLE1BQVIsRUFBZ0I7SUFDZCxLQUFLcEIsaUJBQUw7RUFDRCxDQXpFa0MsQ0EyRW5DOzs7RUFDQSxJQUFJO0lBQ0YsSUFBSSxLQUFLcUIsUUFBTCxJQUFpQixLQUFLQyxRQUExQixFQUFvQztNQUNsQ2pHLEdBQUcsQ0FBQ2tHLElBQUosQ0FBUyxLQUFLbEssTUFBZCxFQUFzQixLQUFLQyxHQUEzQixFQUFnQyxJQUFoQyxFQUFzQyxLQUFLK0osUUFBM0MsRUFBcUQsS0FBS0MsUUFBMUQ7SUFDRCxDQUZELE1BRU87TUFDTGpHLEdBQUcsQ0FBQ2tHLElBQUosQ0FBUyxLQUFLbEssTUFBZCxFQUFzQixLQUFLQyxHQUEzQixFQUFnQyxJQUFoQztJQUNEO0VBQ0YsQ0FORCxDQU1FLE9BQU8wRixHQUFQLEVBQVk7SUFDWjtJQUNBLE9BQU8sS0FBS0ksUUFBTCxDQUFjSixHQUFkLENBQVA7RUFDRCxDQXJGa0MsQ0F1Rm5DOzs7RUFDQSxJQUFJLEtBQUt3RSxnQkFBVCxFQUEyQm5HLEdBQUcsQ0FBQ29HLGVBQUosR0FBc0IsSUFBdEIsQ0F4RlEsQ0EwRm5DOztFQUNBLElBQ0UsQ0FBQyxLQUFLaEQsU0FBTixJQUNBLEtBQUtwSCxNQUFMLEtBQWdCLEtBRGhCLElBRUEsS0FBS0EsTUFBTCxLQUFnQixNQUZoQixJQUdBLE9BQU9pSixJQUFQLEtBQWdCLFFBSGhCLElBSUEsQ0FBQyxLQUFLWixPQUFMLENBQWFZLElBQWIsQ0FMSCxFQU1FO0lBQ0E7SUFDQSxJQUFNb0IsV0FBVyxHQUFHLEtBQUs3RSxPQUFMLENBQWEsY0FBYixDQUFwQjs7SUFDQSxJQUFJeEUsVUFBUyxHQUNYLEtBQUtzSixXQUFMLElBQ0FoSyxPQUFPLENBQUNVLFNBQVIsQ0FBa0JxSixXQUFXLEdBQUdBLFdBQVcsQ0FBQ25JLEtBQVosQ0FBa0IsR0FBbEIsRUFBdUIsQ0FBdkIsQ0FBSCxHQUErQixFQUE1RCxDQUZGOztJQUdBLElBQUksQ0FBQ2xCLFVBQUQsSUFBYzBDLE1BQU0sQ0FBQzJHLFdBQUQsQ0FBeEIsRUFBdUM7TUFDckNySixVQUFTLEdBQUdWLE9BQU8sQ0FBQ1UsU0FBUixDQUFrQixrQkFBbEIsQ0FBWjtJQUNEOztJQUVELElBQUlBLFVBQUosRUFBZWlJLElBQUksR0FBR2pJLFVBQVMsQ0FBQ2lJLElBQUQsQ0FBaEI7RUFDaEIsQ0E1R2tDLENBOEduQzs7O0VBQ0EsS0FBSyxJQUFNekYsS0FBWCxJQUFvQixLQUFLaUIsTUFBekIsRUFBaUM7SUFDL0IsSUFBSSxLQUFLQSxNQUFMLENBQVlqQixLQUFaLE1BQXVCLElBQTNCLEVBQWlDO0lBRWpDLElBQUk5RCxNQUFNLENBQUMsS0FBSytFLE1BQU4sRUFBY2pCLEtBQWQsQ0FBVixFQUNFUSxHQUFHLENBQUN1RyxnQkFBSixDQUFxQi9HLEtBQXJCLEVBQTRCLEtBQUtpQixNQUFMLENBQVlqQixLQUFaLENBQTVCO0VBQ0g7O0VBRUQsSUFBSSxLQUFLb0IsYUFBVCxFQUF3QjtJQUN0QlosR0FBRyxDQUFDRSxZQUFKLEdBQW1CLEtBQUtVLGFBQXhCO0VBQ0QsQ0F4SGtDLENBMEhuQzs7O0VBQ0EsS0FBS29CLElBQUwsQ0FBVSxTQUFWLEVBQXFCLElBQXJCLEVBM0htQyxDQTZIbkM7RUFDQTs7RUFDQWhDLEdBQUcsQ0FBQ3dHLElBQUosQ0FBUyxPQUFPdkIsSUFBUCxLQUFnQixXQUFoQixHQUE4QixJQUE5QixHQUFxQ0EsSUFBOUM7QUFDRCxDQWhJRDs7QUFrSUEzSSxPQUFPLENBQUMwSCxLQUFSLEdBQWdCO0VBQUEsT0FBTSxJQUFJcEksS0FBSixFQUFOO0FBQUEsQ0FBaEI7OztFQUVLLElBQU1JLE1BQU0sV0FBWjs7RUFDSEosS0FBSyxDQUFDb0YsU0FBTixDQUFnQmhGLE1BQU0sQ0FBQ3lELFdBQVAsRUFBaEIsSUFBd0MsVUFBVXhELEdBQVYsRUFBZXVILEVBQWYsRUFBbUI7SUFDekQsSUFBTTFELFFBQVEsR0FBRyxJQUFJeEQsT0FBTyxDQUFDSixPQUFaLENBQW9CRixNQUFwQixFQUE0QkMsR0FBNUIsQ0FBakI7O0lBQ0EsS0FBS3dLLFlBQUwsQ0FBa0IzRyxRQUFsQjs7SUFDQSxJQUFJMEQsRUFBSixFQUFRO01BQ04xRCxRQUFRLENBQUMzRCxHQUFULENBQWFxSCxFQUFiO0lBQ0Q7O0lBRUQsT0FBTzFELFFBQVA7RUFDRCxDQVJEOzs7QUFERix3QkFBcUIsQ0FBQyxLQUFELEVBQVEsTUFBUixFQUFnQixTQUFoQixFQUEyQixPQUEzQixFQUFvQyxLQUFwQyxFQUEyQyxRQUEzQyxDQUFyQiwwQkFBMkU7RUFBQTtBQVUxRTs7QUFFRGxFLEtBQUssQ0FBQ29GLFNBQU4sQ0FBZ0IwRixHQUFoQixHQUFzQjlLLEtBQUssQ0FBQ29GLFNBQU4sQ0FBZ0IyRixNQUF0QztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQXJLLE9BQU8sQ0FBQ3NLLEdBQVIsR0FBYyxVQUFDM0ssR0FBRCxFQUFNZ0osSUFBTixFQUFZekIsRUFBWixFQUFtQjtFQUMvQixJQUFNMUQsUUFBUSxHQUFHeEQsT0FBTyxDQUFDLEtBQUQsRUFBUUwsR0FBUixDQUF4Qjs7RUFDQSxJQUFJLE9BQU9nSixJQUFQLEtBQWdCLFVBQXBCLEVBQWdDO0lBQzlCekIsRUFBRSxHQUFHeUIsSUFBTDtJQUNBQSxJQUFJLEdBQUcsSUFBUDtFQUNEOztFQUVELElBQUlBLElBQUosRUFBVW5GLFFBQVEsQ0FBQytDLEtBQVQsQ0FBZW9DLElBQWY7RUFDVixJQUFJekIsRUFBSixFQUFRMUQsUUFBUSxDQUFDM0QsR0FBVCxDQUFhcUgsRUFBYjtFQUNSLE9BQU8xRCxRQUFQO0FBQ0QsQ0FWRDtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUF4RCxPQUFPLENBQUN1SyxJQUFSLEdBQWUsVUFBQzVLLEdBQUQsRUFBTWdKLElBQU4sRUFBWXpCLEVBQVosRUFBbUI7RUFDaEMsSUFBTTFELFFBQVEsR0FBR3hELE9BQU8sQ0FBQyxNQUFELEVBQVNMLEdBQVQsQ0FBeEI7O0VBQ0EsSUFBSSxPQUFPZ0osSUFBUCxLQUFnQixVQUFwQixFQUFnQztJQUM5QnpCLEVBQUUsR0FBR3lCLElBQUw7SUFDQUEsSUFBSSxHQUFHLElBQVA7RUFDRDs7RUFFRCxJQUFJQSxJQUFKLEVBQVVuRixRQUFRLENBQUMrQyxLQUFULENBQWVvQyxJQUFmO0VBQ1YsSUFBSXpCLEVBQUosRUFBUTFELFFBQVEsQ0FBQzNELEdBQVQsQ0FBYXFILEVBQWI7RUFDUixPQUFPMUQsUUFBUDtBQUNELENBVkQ7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBeEQsT0FBTyxDQUFDa0csT0FBUixHQUFrQixVQUFDdkcsR0FBRCxFQUFNZ0osSUFBTixFQUFZekIsRUFBWixFQUFtQjtFQUNuQyxJQUFNMUQsUUFBUSxHQUFHeEQsT0FBTyxDQUFDLFNBQUQsRUFBWUwsR0FBWixDQUF4Qjs7RUFDQSxJQUFJLE9BQU9nSixJQUFQLEtBQWdCLFVBQXBCLEVBQWdDO0lBQzlCekIsRUFBRSxHQUFHeUIsSUFBTDtJQUNBQSxJQUFJLEdBQUcsSUFBUDtFQUNEOztFQUVELElBQUlBLElBQUosRUFBVW5GLFFBQVEsQ0FBQzBHLElBQVQsQ0FBY3ZCLElBQWQ7RUFDVixJQUFJekIsRUFBSixFQUFRMUQsUUFBUSxDQUFDM0QsR0FBVCxDQUFhcUgsRUFBYjtFQUNSLE9BQU8xRCxRQUFQO0FBQ0QsQ0FWRDtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsU0FBUzRHLEdBQVQsQ0FBYXpLLEdBQWIsRUFBa0JnSixJQUFsQixFQUF3QnpCLEVBQXhCLEVBQTRCO0VBQzFCLElBQU0xRCxRQUFRLEdBQUd4RCxPQUFPLENBQUMsUUFBRCxFQUFXTCxHQUFYLENBQXhCOztFQUNBLElBQUksT0FBT2dKLElBQVAsS0FBZ0IsVUFBcEIsRUFBZ0M7SUFDOUJ6QixFQUFFLEdBQUd5QixJQUFMO0lBQ0FBLElBQUksR0FBRyxJQUFQO0VBQ0Q7O0VBRUQsSUFBSUEsSUFBSixFQUFVbkYsUUFBUSxDQUFDMEcsSUFBVCxDQUFjdkIsSUFBZDtFQUNWLElBQUl6QixFQUFKLEVBQVExRCxRQUFRLENBQUMzRCxHQUFULENBQWFxSCxFQUFiO0VBQ1IsT0FBTzFELFFBQVA7QUFDRDs7QUFFRHhELE9BQU8sQ0FBQ29LLEdBQVIsR0FBY0EsR0FBZDtBQUNBcEssT0FBTyxDQUFDcUssTUFBUixHQUFpQkQsR0FBakI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUFwSyxPQUFPLENBQUN3SyxLQUFSLEdBQWdCLFVBQUM3SyxHQUFELEVBQU1nSixJQUFOLEVBQVl6QixFQUFaLEVBQW1CO0VBQ2pDLElBQU0xRCxRQUFRLEdBQUd4RCxPQUFPLENBQUMsT0FBRCxFQUFVTCxHQUFWLENBQXhCOztFQUNBLElBQUksT0FBT2dKLElBQVAsS0FBZ0IsVUFBcEIsRUFBZ0M7SUFDOUJ6QixFQUFFLEdBQUd5QixJQUFMO0lBQ0FBLElBQUksR0FBRyxJQUFQO0VBQ0Q7O0VBRUQsSUFBSUEsSUFBSixFQUFVbkYsUUFBUSxDQUFDMEcsSUFBVCxDQUFjdkIsSUFBZDtFQUNWLElBQUl6QixFQUFKLEVBQVExRCxRQUFRLENBQUMzRCxHQUFULENBQWFxSCxFQUFiO0VBQ1IsT0FBTzFELFFBQVA7QUFDRCxDQVZEO0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQXhELE9BQU8sQ0FBQ3lLLElBQVIsR0FBZSxVQUFDOUssR0FBRCxFQUFNZ0osSUFBTixFQUFZekIsRUFBWixFQUFtQjtFQUNoQyxJQUFNMUQsUUFBUSxHQUFHeEQsT0FBTyxDQUFDLE1BQUQsRUFBU0wsR0FBVCxDQUF4Qjs7RUFDQSxJQUFJLE9BQU9nSixJQUFQLEtBQWdCLFVBQXBCLEVBQWdDO0lBQzlCekIsRUFBRSxHQUFHeUIsSUFBTDtJQUNBQSxJQUFJLEdBQUcsSUFBUDtFQUNEOztFQUVELElBQUlBLElBQUosRUFBVW5GLFFBQVEsQ0FBQzBHLElBQVQsQ0FBY3ZCLElBQWQ7RUFDVixJQUFJekIsRUFBSixFQUFRMUQsUUFBUSxDQUFDM0QsR0FBVCxDQUFhcUgsRUFBYjtFQUNSLE9BQU8xRCxRQUFQO0FBQ0QsQ0FWRDtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUF4RCxPQUFPLENBQUMwSyxHQUFSLEdBQWMsVUFBQy9LLEdBQUQsRUFBTWdKLElBQU4sRUFBWXpCLEVBQVosRUFBbUI7RUFDL0IsSUFBTTFELFFBQVEsR0FBR3hELE9BQU8sQ0FBQyxLQUFELEVBQVFMLEdBQVIsQ0FBeEI7O0VBQ0EsSUFBSSxPQUFPZ0osSUFBUCxLQUFnQixVQUFwQixFQUFnQztJQUM5QnpCLEVBQUUsR0FBR3lCLElBQUw7SUFDQUEsSUFBSSxHQUFHLElBQVA7RUFDRDs7RUFFRCxJQUFJQSxJQUFKLEVBQVVuRixRQUFRLENBQUMwRyxJQUFULENBQWN2QixJQUFkO0VBQ1YsSUFBSXpCLEVBQUosRUFBUTFELFFBQVEsQ0FBQzNELEdBQVQsQ0FBYXFILEVBQWI7RUFDUixPQUFPMUQsUUFBUDtBQUNELENBVkQifQ==","import base64 from 'base64-js';\n\nfunction padding(str) {\n var mod = str.length % 4;\n var pad = 4 - mod;\n\n if (mod === 0) {\n return str;\n }\n\n return str + new Array(1 + pad).join('=');\n}\n\nfunction stringToByteArray(str) {\n var arr = new Array(str.length);\n for (var a = 0; a < str.length; a++) {\n arr[a] = str.charCodeAt(a);\n }\n return arr;\n}\n\nfunction byteArrayToString(array) {\n var result = '';\n for (var i = 0; i < array.length; i++) {\n result += String.fromCharCode(array[i]);\n }\n return result;\n}\n\nfunction encode(str) {\n return base64\n .fromByteArray(stringToByteArray(str))\n .replace(/\\+/g, '-') // Convert '+' to '-'\n .replace(/\\//g, '_'); // Convert '/' to '_'\n}\n\nfunction decode(str) {\n str = padding(str)\n .replace(/-/g, '+') // Convert '-' to '+'\n .replace(/_/g, '/'); // Convert '_' to '/'\n\n return byteArrayToString(base64.toByteArray(str));\n}\n\nexport default {\n encode: encode,\n decode: decode\n};\n","module.exports = { raw: '9.25.0' };\n","var toString = Object.prototype.toString;\n\nfunction attribute(o, attr, type, text) {\n type = type === 'array' ? 'object' : type;\n if (o && typeof o[attr] !== type) {\n throw new Error(text);\n }\n}\n\nfunction variable(o, type, text) {\n if (typeof o !== type) {\n throw new Error(text);\n }\n}\n\nfunction value(o, values, text) {\n if (values.indexOf(o) === -1) {\n throw new Error(text);\n }\n}\n\nfunction check(o, config, attributes) {\n if (!config.optional || o) {\n variable(o, config.type, config.message);\n }\n if (config.type === 'object' && attributes) {\n var keys = Object.keys(attributes);\n\n for (var index = 0; index < keys.length; index++) {\n var a = keys[index];\n if (!attributes[a].optional || o[a]) {\n if (!attributes[a].condition || attributes[a].condition(o)) {\n attribute(o, a, attributes[a].type, attributes[a].message);\n if (attributes[a].values) {\n value(o[a], attributes[a].values, attributes[a].value_message);\n }\n }\n }\n }\n }\n}\n\n/**\n * Wrap `Array.isArray` Polyfill for IE9\n * source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\n *\n * @param {Array} array\n * @private\n */\nfunction isArray(array) {\n if (this.supportsIsArray()) {\n return Array.isArray(array);\n }\n\n return toString.call(array) === '[object Array]';\n}\n\nfunction supportsIsArray() {\n return Array.isArray != null;\n}\n\nexport default {\n check: check,\n attribute: attribute,\n variable: variable,\n value: value,\n isArray: isArray,\n supportsIsArray: supportsIsArray\n};\n","/* eslint-disable no-continue */\n\nfunction get() {\n if (!Object.assign) {\n return objectAssignPolyfill;\n }\n\n return Object.assign;\n}\n\nfunction objectAssignPolyfill(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (\n var nextIndex = 0, len = keysArray.length;\n nextIndex < len;\n nextIndex++\n ) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nexport default {\n get: get,\n objectAssignPolyfill: objectAssignPolyfill\n};\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\n\nimport assert from './assert';\nimport objectAssign from './object-assign';\n\nfunction pick(object, keys) {\n return keys.reduce(function(prev, key) {\n if (object[key]) {\n prev[key] = object[key];\n }\n return prev;\n }, {});\n}\n\nfunction getKeysNotIn(obj, allowedKeys) {\n var notAllowed = [];\n for (var key in obj) {\n if (allowedKeys.indexOf(key) === -1) {\n notAllowed.push(key);\n }\n }\n return notAllowed;\n}\n\nfunction objectValues(obj) {\n var values = [];\n for (var key in obj) {\n values.push(obj[key]);\n }\n return values;\n}\n\nfunction extend() {\n var params = objectValues(arguments);\n params.unshift({});\n return objectAssign.get().apply(undefined, params);\n}\n\nfunction merge(object, keys) {\n return {\n base: keys ? pick(object, keys) : object,\n with: function(object2, keys2) {\n object2 = keys2 ? pick(object2, keys2) : object2;\n return extend(this.base, object2);\n }\n };\n}\n\nfunction blacklist(object, blacklistedKeys) {\n return Object.keys(object).reduce(function(p, key) {\n if (blacklistedKeys.indexOf(key) === -1) {\n p[key] = object[key];\n }\n return p;\n }, {});\n}\n\nfunction camelToSnake(str) {\n var newKey = '';\n var index = 0;\n var code;\n var wasPrevNumber = true;\n var wasPrevUppercase = true;\n\n while (index < str.length) {\n code = str.charCodeAt(index);\n if (\n (!wasPrevUppercase && code >= 65 && code <= 90) ||\n (!wasPrevNumber && code >= 48 && code <= 57)\n ) {\n newKey += '_';\n newKey += str[index].toLowerCase();\n } else {\n newKey += str[index].toLowerCase();\n }\n wasPrevNumber = code >= 48 && code <= 57;\n wasPrevUppercase = code >= 65 && code <= 90;\n index++;\n }\n\n return newKey;\n}\n\nfunction snakeToCamel(str) {\n var parts = str.split('_');\n return parts.reduce(function(p, c) {\n return p + c.charAt(0).toUpperCase() + c.slice(1);\n }, parts.shift());\n}\n\nfunction toSnakeCase(object, exceptions) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n exceptions = exceptions || [];\n\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? camelToSnake(key) : key;\n p[newKey] = toSnakeCase(object[key]);\n return p;\n }, {});\n}\n\nfunction toCamelCase(object, exceptions, options) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n\n exceptions = exceptions || [];\n options = options || {};\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? snakeToCamel(key) : key;\n\n p[newKey] = toCamelCase(object[newKey] || object[key], [], options);\n\n if (options.keepOriginal) {\n p[key] = toCamelCase(object[key], [], options);\n }\n return p;\n }, {});\n}\n\nfunction getLocationFromUrl(href) {\n var match = href.match(\n /^(https?:|file:|chrome-extension:)\\/\\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\\?[^#]*|)(#.*|)$/\n );\n return (\n match && {\n href: href,\n protocol: match[1],\n host: match[2],\n hostname: match[3],\n port: match[4],\n pathname: match[5],\n search: match[6],\n hash: match[7]\n }\n );\n}\n\nfunction getOriginFromUrl(url) {\n if (!url) {\n return undefined;\n }\n var parsed = getLocationFromUrl(url);\n if (!parsed) {\n return null;\n }\n var origin = parsed.protocol + '//' + parsed.hostname;\n if (parsed.port) {\n origin += ':' + parsed.port;\n }\n return origin;\n}\n\nfunction trim(options, key) {\n var trimmed = extend(options);\n if (options[key]) {\n trimmed[key] = options[key].trim();\n }\n return trimmed;\n}\n\nfunction trimMultiple(options, keys) {\n return keys.reduce(trim, options);\n}\n\nfunction trimUserDetails(options) {\n return trimMultiple(options, ['username', 'email', 'phoneNumber']);\n}\n\n/**\n * Updates the value of a property on the given object, using a deep path selector.\n * @param {object} obj The object to set the property value on\n * @param {string|array} path The path to the property that should have its value updated. e.g. 'prop1.prop2.prop3' or ['prop1', 'prop2', 'prop3']\n * @param {any} value The value to set\n * @ignore\n */\nfunction updatePropertyOn(obj, path, value) {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n\n var next = path[0];\n\n if (obj.hasOwnProperty(next)) {\n if (path.length === 1) {\n obj[next] = value;\n } else {\n updatePropertyOn(obj[next], path.slice(1), value);\n }\n }\n}\n\nexport default {\n toSnakeCase: toSnakeCase,\n toCamelCase: toCamelCase,\n blacklist: blacklist,\n merge: merge,\n pick: pick,\n getKeysNotIn: getKeysNotIn,\n extend: extend,\n getOriginFromUrl: getOriginFromUrl,\n getLocationFromUrl: getLocationFromUrl,\n trimUserDetails: trimUserDetails,\n updatePropertyOn: updatePropertyOn\n};\n","/* eslint-disable no-param-reassign */\nimport request from 'superagent';\nimport base64Url from './base64_url';\nimport version from '../version';\nimport objectHelper from './object';\n\n// ------------------------------------------------ RequestWrapper\n\nfunction RequestWrapper(req) {\n this.request = req;\n this.method = req.method;\n this.url = req.url;\n this.body = req._data;\n this.headers = req._header;\n}\n\nRequestWrapper.prototype.abort = function() {\n this.request.abort();\n};\n\nRequestWrapper.prototype.getMethod = function() {\n return this.method;\n};\n\nRequestWrapper.prototype.getBody = function() {\n return this.body;\n};\n\nRequestWrapper.prototype.getUrl = function() {\n return this.url;\n};\n\nRequestWrapper.prototype.getHeaders = function() {\n return this.headers;\n};\n\n// ------------------------------------------------ RequestObj\n\nfunction RequestObj(req) {\n this.request = req;\n}\n\nRequestObj.prototype.set = function(key, value) {\n this.request = this.request.set(key, value);\n return this;\n};\n\nRequestObj.prototype.send = function(body) {\n this.request = this.request.send(objectHelper.trimUserDetails(body));\n return this;\n};\n\nRequestObj.prototype.withCredentials = function() {\n this.request = this.request.withCredentials();\n return this;\n};\n\nRequestObj.prototype.end = function(cb) {\n this.request.end(cb);\n return new RequestWrapper(this.request);\n};\n\n// ------------------------------------------------ RequestBuilder\n\nfunction RequestBuilder(options) {\n this._sendTelemetry =\n options._sendTelemetry === false ? options._sendTelemetry : true;\n this._telemetryInfo = options._telemetryInfo || null;\n this._timesToRetryFailedRequests = options._timesToRetryFailedRequests;\n this.headers = options.headers || {};\n this._universalLoginPage = options.universalLoginPage;\n}\n\nRequestBuilder.prototype.setCommonConfiguration = function(\n ongoingRequest,\n options\n) {\n options = options || {};\n\n if (this._timesToRetryFailedRequests > 0) {\n ongoingRequest = ongoingRequest.retry(this._timesToRetryFailedRequests);\n }\n\n if (options.noHeaders) {\n return ongoingRequest;\n }\n\n var headers = this.headers;\n ongoingRequest = ongoingRequest.set('Content-Type', 'application/json');\n\n if (options.xRequestLanguage) {\n ongoingRequest = ongoingRequest.set(\n 'X-Request-Language',\n options.xRequestLanguage\n );\n }\n\n var keys = Object.keys(this.headers);\n\n for (var a = 0; a < keys.length; a++) {\n ongoingRequest = ongoingRequest.set(keys[a], headers[keys[a]]);\n }\n\n if (this._sendTelemetry) {\n ongoingRequest = ongoingRequest.set(\n 'Auth0-Client',\n this.getTelemetryData()\n );\n }\n\n return ongoingRequest;\n};\n\nRequestBuilder.prototype.getTelemetryData = function() {\n var telemetryName = this._universalLoginPage ? 'auth0.js-ulp' : 'auth0.js';\n var clientInfo = { name: telemetryName, version: version.raw };\n if (this._telemetryInfo) {\n clientInfo = objectHelper.extend({}, this._telemetryInfo);\n clientInfo.env = objectHelper.extend({}, this._telemetryInfo.env);\n clientInfo.env[telemetryName] = version.raw;\n }\n var jsonClientInfo = JSON.stringify(clientInfo);\n return base64Url.encode(jsonClientInfo);\n};\n\nRequestBuilder.prototype.get = function(url, options) {\n return new RequestObj(this.setCommonConfiguration(request.get(url), options));\n};\n\nRequestBuilder.prototype.post = function(url, options) {\n return new RequestObj(\n this.setCommonConfiguration(request.post(url), options)\n );\n};\n\nRequestBuilder.prototype.patch = function(url, options) {\n return new RequestObj(\n this.setCommonConfiguration(request.patch(url), options)\n );\n};\n\nexport default RequestBuilder;\n","import objectHelper from './object';\n\nfunction redirect(url) {\n getWindow().location = url;\n}\n\nfunction getDocument() {\n return getWindow().document;\n}\n\nfunction getWindow() {\n return window;\n}\n\nfunction getOrigin() {\n var location = getWindow().location;\n var origin = location.origin;\n\n if (!origin) {\n origin = objectHelper.getOriginFromUrl(location.href);\n }\n\n return origin;\n}\n\nexport default {\n redirect: redirect,\n getDocument: getDocument,\n getWindow: getWindow,\n getOrigin: getOrigin\n};\n","function DummyStorage() {}\n\nDummyStorage.prototype.getItem = function() {\n return null;\n};\n\nDummyStorage.prototype.removeItem = function() {};\n\nDummyStorage.prototype.setItem = function() {};\n\nexport default DummyStorage;\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","import Cookie from 'js-cookie';\nimport objectHelper from '../object';\nimport windowHandler from '../window';\n\nfunction buildCompatCookieKey(key) {\n return '_' + key + '_compat';\n}\n\nfunction CookieStorage(options) {\n this._options = options || {};\n}\n\nCookieStorage.prototype.getItem = function (key) {\n var cookie = Cookie.get(key);\n\n return cookie || Cookie.get(buildCompatCookieKey(key));\n};\n\nCookieStorage.prototype.removeItem = function (key) {\n var params = {};\n if (this._options.cookieDomain) {\n params.domain = this._options.cookieDomain;\n }\n Cookie.remove(key, params);\n Cookie.remove(buildCompatCookieKey(key), params);\n};\n\nCookieStorage.prototype.setItem = function (key, value, options) {\n var params = objectHelper.extend(\n {\n expires: 1 // 1 day\n },\n options\n );\n\n if (windowHandler.getWindow().location.protocol === 'https:') {\n params.secure = true;\n params.sameSite = 'none';\n\n if (this._options.legacySameSiteCookie) {\n // Save a compatibility cookie without sameSite='none' for browsers that don't support it.\n var legacyOptions = objectHelper.blacklist(params, ['sameSite']);\n Cookie.set(buildCompatCookieKey(key), value, legacyOptions);\n }\n }\n\n if (this._options.cookieDomain) {\n params.domain = this._options.cookieDomain;\n }\n\n Cookie.set(key, value, params);\n};\n\nexport default CookieStorage;\n","/* eslint-disable no-console */\n\nfunction Warn(options) {\n this.disableWarnings = options.disableWarnings;\n}\n\nWarn.prototype.warning = function(message) {\n if (this.disableWarnings) {\n return;\n }\n\n console.warn(message);\n};\n\nexport default Warn;\n","import windowHandler from '../window';\nimport DummyStorage from './dummy';\nimport CookieStorage from './cookie';\nimport Warn from '../warn';\n\nfunction StorageHandler(options) {\n this.warn = new Warn({});\n this.storage = new CookieStorage(options);\n\n if (options.__tryLocalStorageFirst !== true) {\n return;\n }\n\n try {\n // some browsers throw an error when trying to access localStorage\n // when localStorage is disabled.\n var localStorage = windowHandler.getWindow().localStorage;\n if (localStorage) {\n this.storage = localStorage;\n }\n } catch (e) {\n this.warn.warning(e);\n this.warn.warning(\"Can't use localStorage. Using CookieStorage instead.\");\n }\n}\n\nStorageHandler.prototype.failover = function () {\n if (this.storage instanceof DummyStorage) {\n this.warn.warning('DummyStorage: ignore failover');\n return;\n } else if (this.storage instanceof CookieStorage) {\n this.warn.warning('CookieStorage: failing over DummyStorage');\n this.storage = new DummyStorage();\n } else {\n this.warn.warning('LocalStorage: failing over CookieStorage');\n this.storage = new CookieStorage();\n }\n};\n\nStorageHandler.prototype.getItem = function (key) {\n try {\n return this.storage.getItem(key);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.getItem(key);\n }\n};\n\nStorageHandler.prototype.removeItem = function (key) {\n try {\n return this.storage.removeItem(key);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.removeItem(key);\n }\n};\n\nStorageHandler.prototype.setItem = function (key, value, options) {\n try {\n return this.storage.setItem(key, value, options);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.setItem(key, value, options);\n }\n};\n\nexport default StorageHandler;\n","import StorageHandler from './storage/handler';\n\nfunction Storage(options) {\n this.handler = new StorageHandler(options);\n}\n\nStorage.prototype.getItem = function(key) {\n var value = this.handler.getItem(key);\n try {\n return JSON.parse(value);\n } catch (_) {\n return value;\n }\n};\nStorage.prototype.removeItem = function(key) {\n return this.handler.removeItem(key);\n};\nStorage.prototype.setItem = function(key, value, options) {\n var json = JSON.stringify(value);\n return this.handler.setItem(key, json, options);\n};\n\nexport default Storage;\n","import Storage from './storage';\n\nfunction SSODataStorage(options) {\n this.storage = new Storage(options);\n}\n\nSSODataStorage.prototype.set = function(connection, sub) {\n var ssodata = {\n lastUsedConnection: connection,\n lastUsedSub: sub\n };\n this.storage.setItem('auth0.ssodata', JSON.stringify(ssodata));\n};\nSSODataStorage.prototype.get = function() {\n var ssodata = this.storage.getItem('auth0.ssodata');\n if (!ssodata) {\n return;\n }\n return JSON.parse(ssodata);\n};\n\nexport default SSODataStorage;\n","function buildResponse(error, description) {\n return {\n error: error,\n errorDescription: description\n };\n}\n\nfunction invalidToken(description) {\n return buildResponse('invalid_token', description);\n}\n\nexport default {\n buildResponse: buildResponse,\n invalidToken: invalidToken\n};\n","import error from './error';\nimport objectHelper from './object';\n\nfunction wrapCallback(cb, options) {\n options = options || {};\n options.ignoreCasing = options.ignoreCasing ? options.ignoreCasing : false;\n\n return function(err, data) {\n var errObj;\n\n if (!err && !data) {\n return cb(error.buildResponse('generic_error', 'Something went wrong'));\n }\n\n if (!err && data.err) {\n err = data.err;\n data = null;\n }\n\n if (!err && data.error) {\n err = data;\n data = null;\n }\n\n if (err) {\n errObj = {\n original: err\n };\n\n objectHelper.updatePropertyOn(\n errObj,\n 'original.response.req._data.password',\n '*****'\n );\n\n if (err.response && err.response.statusCode) {\n errObj.statusCode = err.response.statusCode;\n }\n\n if (err.response && err.response.statusText) {\n errObj.statusText = err.response.statusText;\n }\n\n if (err.response && err.response.body) {\n err = err.response.body;\n }\n\n if (err.err) {\n err = err.err;\n }\n\n errObj.code =\n err.code || err.error || err.error_code || err.status || null;\n\n errObj.description =\n err.errorDescription ||\n err.error_description ||\n err.description ||\n err.error ||\n err.details ||\n err.err ||\n null;\n\n if (options.forceLegacyError) {\n errObj.error = errObj.code;\n errObj.error_description = errObj.description;\n }\n\n if (err.error_codes && err.error_details) {\n errObj.errorDetails = {\n codes: err.error_codes,\n details: err.error_details\n };\n }\n\n if (err.name) {\n errObj.name = err.name;\n }\n\n if (err.policy) {\n errObj.policy = err.policy;\n }\n\n return cb(errObj);\n }\n\n if (\n data.type &&\n (data.type === 'text/html' || data.type === 'text/plain')\n ) {\n return cb(null, data.text);\n }\n\n if (options.ignoreCasing) {\n return cb(null, data.body || data);\n }\n\n return cb(\n null,\n objectHelper.toCamelCase(data.body || data, [], {\n keepOriginal: options.keepOriginalCasing\n })\n );\n };\n}\n\nexport default wrapCallback;\n","// For future reference:,\n// The only parameters that should be allowed are parameters\n// defined by the specification, or existing parameters that we\n// need for compatibility\n\nimport objectHelper from './object';\n\nvar tokenParams = [\n // auth0\n 'realm',\n 'audience',\n 'otp',\n // oauth2\n 'client_id',\n 'client_secret',\n 'redirect_uri',\n 'scope',\n 'code',\n 'grant_type',\n 'username',\n 'password',\n 'refresh_token',\n 'assertion',\n 'client_assertion',\n 'client_assertion_type',\n 'code_verifier'\n];\n\nvar authorizeParams = [\n // auth0\n 'connection',\n 'connection_scope',\n 'auth0Client',\n 'owp',\n 'device',\n 'realm',\n 'organization',\n 'invitation',\n\n 'protocol',\n '_csrf',\n '_intstate',\n 'login_ticket',\n\n // oauth2\n 'client_id',\n 'response_type',\n 'response_mode',\n 'redirect_uri',\n 'audience',\n 'scope',\n 'state',\n 'nonce',\n 'display',\n 'prompt',\n 'screen_hint',\n 'max_age',\n 'ui_locales',\n 'claims_locales',\n 'id_token_hint',\n 'login_hint',\n 'acr_values',\n 'claims',\n 'registration',\n 'request',\n 'request_uri',\n 'code_challenge',\n 'code_challenge_method',\n\n // ADDITIONAL_PARAMETERS:\n // https://auth0.com/docs/api/authentication?javascript#social\n 'access_type',\n 'display'\n];\n\nfunction oauthAuthorizeParams(warn, params) {\n var notAllowed = objectHelper.getKeysNotIn(params, authorizeParams);\n\n if (notAllowed.length > 0) {\n warn.warning(\n 'Following parameters are not allowed on the `/authorize` endpoint: [' +\n notAllowed.join(',') +\n ']'\n );\n }\n\n return params;\n}\n\nfunction oauthTokenParams(warn, params) {\n return objectHelper.pick(params, tokenParams);\n}\n\nexport default {\n oauthTokenParams: oauthTokenParams,\n oauthAuthorizeParams: oauthAuthorizeParams\n};\n","var t=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r=e(function(e,r){e.exports=function(){function e(t){return\"function\"==typeof t}var r=Array.isArray?Array.isArray:function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},i=0,n=void 0,o=void 0,s=function(t,e){l[i]=t,l[i+1]=e,2===(i+=2)&&(o?o(d):w())},h=\"undefined\"!=typeof window?window:void 0,u=h||{},a=u.MutationObserver||u.WebKitMutationObserver,f=\"undefined\"==typeof self&&\"undefined\"!=typeof process&&\"[object process]\"==={}.toString.call(process),c=\"undefined\"!=typeof Uint8ClampedArray&&\"undefined\"!=typeof importScripts&&\"undefined\"!=typeof MessageChannel;function p(){var t=setTimeout;return function(){return t(d,1)}}var l=new Array(1e3);function d(){for(var t=0;t>>2]|=(r[o>>>2]>>>24-o%4*8&255)<<24-(i+o)%4*8;else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join(\"\")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new f.init(r,e/2)}},l=c.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255));return i.join(\"\")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new f.init(r,e)}},d=c.Utf8={stringify:function(t){try{return decodeURIComponent(escape(l.stringify(t)))}catch(t){throw new Error(\"Malformed UTF-8 data\")}},parse:function(t){return l.parse(unescape(encodeURIComponent(t)))}},m=u.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new f.init,this._nDataBytes=0},_append:function(t){\"string\"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,h=o/(4*s),u=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*s,a=e.min(4*u,o);if(u){for(var c=0;c>>7)^(d<<14|d>>>18)^d>>>3)+a[l-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+a[l-16]}var v=i&n^i&o^n&o,y=p+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&f^~h&c)+u[l]+a[l];p=c,c=f,f=h,h=s+y|0,s=o,o=n,n=i,i=y+(((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+v)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+h|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+p|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(f),e.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)}),s=e(function(t,e){var r,i;t.exports=(i=(r=n).lib.WordArray,r.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,h=0;h<4&&o+.75*h>>6*(3-h)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join(\"\")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=(h|u)<<24-o%4*8,o++}return i.create(n,o)}(t,e,n)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"},r.enc.Base64)}),h=e(function(t,e){t.exports=n.enc.Hex}),u=e(function(e,r){(function(){var t;function r(t,e,r){null!=t&&(\"number\"==typeof t?this.fromNumber(t,e,r):this.fromString(t,null==e&&\"string\"!=typeof t?256:e))}function i(){return new r(null)}var n=\"undefined\"!=typeof navigator;n&&\"Microsoft Internet Explorer\"==navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(var s=32767&e,h=e>>15;--o>=0;){var u=32767&this[t],a=this[t++]>>15,f=h*u+a*s;n=((u=s*u+((32767&f)<<15)+r[i]+(1073741823&n))>>>30)+(f>>>15)+h*a+(n>>>30),r[i++]=1073741823&u}return n},t=30):n&&\"Netscape\"!=navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(;--o>=0;){var s=e*this[t++]+r[i]+n;n=Math.floor(s/67108864),r[i++]=67108863&s}return n},t=26):(r.prototype.am=function(t,e,r,i,n,o){for(var s=16383&e,h=e>>14;--o>=0;){var u=16383&this[t],a=this[t++]>>14,f=h*u+a*s;n=((u=s*u+((16383&f)<<14)+r[i]+n)>>28)+(f>>14)+h*a,r[i++]=268435455&u}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function p(t){this.m=t}function l(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function w(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function T(){}function b(t){return t}function _(t){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}p.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},p.prototype.revert=function(t){return t},p.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},p.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},p.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},l.prototype.convert=function(t){var e=i();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(r.ZERO)>0&&this.m.subTo(e,e),e},l.prototype.revert=function(t){var e=i();return t.copyTo(e),this.reduce(e),e},l.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,i,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},l.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},l.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},r.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},r.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},r.prototype.fromString=function(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else{if(4!=e)return void this.fromRadix(t,e);i=2}this.t=0,this.s=0;for(var n=t.length,o=!1,s=0;--n>=0;){var h=8==i?255&t[n]:a(t,n);h<0?\"-\"==t.charAt(n)&&(o=!0):(o=!1,0==s?this[this.t++]=h:s+i>this.DB?(this[this.t-1]|=(h&(1<>this.DB-s):this[this.t-1]|=h<=this.DB&&(s-=this.DB))}8==i&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},r.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},r.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>n|h,h=(this[r]&o)<=0;--r)e[r]=0;e[s]=h,e.t=this.t+s+1,e.s=this.s,e.clamp()},r.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var i=t%this.DB,n=this.DB-i,o=(1<>i;for(var s=r+1;s>i;i>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i-=t.s}e.s=i<0?-1:0,i<-1?e[r++]=this.DV+i:i>0&&(e[r++]=i),e.t=r,e.clamp()},r.prototype.multiplyTo=function(t,e){var i=this.abs(),n=t.abs(),o=i.t;for(e.t=o+n.t;--o>=0;)e[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},r.prototype.divRemTo=function(t,e,n){var o=t.abs();if(!(o.t<=0)){var s=this.abs();if(s.t0?(o.lShiftTo(f,h),s.lShiftTo(f,n)):(o.copyTo(h),s.copyTo(n));var p=h.t,l=h[p-1];if(0!=l){var d=l*(1<1?h[p-2]>>this.F2:0),m=this.FV/d,v=(1<=0&&(n[n.t++]=1,n.subTo(T,n)),r.ONE.dlShiftTo(p,T),T.subTo(h,h);h.t=0;){var b=n[--g]==l?this.DM:Math.floor(n[g]*m+(n[g-1]+y)*v);if((n[g]+=h.am(0,b,n,w,0,p))0&&n.rShiftTo(f,n),u<0&&r.ZERO.subTo(n,n)}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(t,e){if(t>4294967295||t<1)return r.ONE;var n=i(),o=i(),s=e.convert(this),h=c(t)-1;for(s.copyTo(n);--h>=0;)if(e.sqrTo(n,o),(t&1<0)e.mulTo(o,s,n);else{var u=n;n=o,o=u}return e.revert(n)},r.prototype.toString=function(t){if(this.s<0)return\"-\"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,i=(1<0)for(h>h)>0&&(n=!0,o=u(r));s>=0;)h>(h+=this.DB-e)):(r=this[s]>>(h-=e)&i,h<=0&&(h+=this.DB,--s)),r>0&&(n=!0),n&&(o+=u(r));return n?o:\"0\"},r.prototype.negate=function(){var t=i();return r.ZERO.subTo(this,t),t},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+c(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(t){var e=i();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(r.ZERO)>0&&t.subTo(e,e),e},r.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new p(e):new l(e),this.exp(t,r)},r.ZERO=f(0),r.ONE=f(1),T.prototype.convert=b,T.prototype.revert=b,T.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},T.prototype.sqrTo=function(t,e){t.squareTo(e)},_.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=i();return t.copyTo(e),this.reduce(e),e},_.prototype.revert=function(t){return t},_.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},_.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},_.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var S,A,D,B=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],x=(1<<26)/B[B.length-1];function E(){var t;t=(new Date).getTime(),A[D++]^=255&t,A[D++]^=t>>8&255,A[D++]^=t>>16&255,A[D++]^=t>>24&255,D>=j&&(D-=j)}if(r.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},r.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return\"0\";var e=this.chunkSize(t),r=Math.pow(t,e),n=f(r),o=i(),s=i(),h=\"\";for(this.divRemTo(n,o,s);o.signum()>0;)h=(r+s.intValue()).toString(t).substr(1)+h,o.divRemTo(n,o,s);return s.intValue().toString(t)+h},r.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var i=this.chunkSize(e),n=Math.pow(e,i),o=!1,s=0,h=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(h,0),s=0,h=0))}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(h,0)),o&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(t,e,i){if(\"number\"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(r.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(r.ONE.shiftLeft(t-1),this);else{var n=new Array,o=7&t;n.length=1+(t>>3),e.nextBytes(n),o>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i+=t.s}e.s=i<0?-1:0,i>0?e[r++]=i:i<-1&&(e[r++]=this.DV+i),e.t=r,e.clamp()},r.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},r.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},r.prototype.multiplyLowerTo=function(t,e,r){var i,n=Math.min(this.t+t.t,e);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(e-this.t,0);i0)if(0==e)r=this[0]%t;else for(var i=this.t-1;i>=0;--i)r=(e*r+this[i])%t;return r},r.prototype.millerRabin=function(t){var e=this.subtract(r.ONE),n=e.getLowestSetBit();if(n<=0)return!1;var o=e.shiftRight(n);(t=t+1>>1)>B.length&&(t=B.length);for(var s=i(),h=0;h>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,i=this.DB-t*this.DB%8,n=0;if(t-- >0)for(i>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<=0;)i<8?(r=(this[t]&(1<>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,i<=0&&(i+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(e[n++]=r);return e},r.prototype.equals=function(t){return 0==this.compareTo(t)},r.prototype.min=function(t){return this.compareTo(t)<0?this:t},r.prototype.max=function(t){return this.compareTo(t)>0?this:t},r.prototype.and=function(t){var e=i();return this.bitwiseTo(t,d,e),e},r.prototype.or=function(t){var e=i();return this.bitwiseTo(t,m,e),e},r.prototype.xor=function(t){var e=i();return this.bitwiseTo(t,v,e),e},r.prototype.andNot=function(t){var e=i();return this.bitwiseTo(t,y,e),e},r.prototype.not=function(){for(var t=i(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var m=i();for(n.sqrTo(h[1],m);u<=d;)h[u]=i(),n.mulTo(m,h[u-2],h[u]),u+=2}var v,y,g=t.t-1,w=!0,T=i();for(o=c(t[g])-1;g>=0;){for(o>=a?v=t[g]>>o-a&d:(v=(t[g]&(1<0&&(v|=t[g-1]>>this.DB+o-a)),u=r;0==(1&v);)v>>=1,--u;if((o-=u)<0&&(o+=this.DB,--g),w)h[v].copyTo(s),w=!1;else{for(;u>1;)n.sqrTo(s,T),n.sqrTo(T,s),u-=2;u>0?n.sqrTo(s,T):(y=s,s=T,T=y),n.mulTo(T,h[v],s)}for(;g>=0&&0==(t[g]&1<=0?(i.subTo(n,i),e&&o.subTo(h,o),s.subTo(u,s)):(n.subTo(i,n),e&&h.subTo(o,h),u.subTo(s,u))}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(t)>=0?u.subtract(t):u.signum()<0?(u.addTo(t,u),u.signum()<0?u.add(t):u):u},r.prototype.pow=function(t){return this.exp(t,new T)},r.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var i=e;e=r,r=i}var n=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(n0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},r.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=B[B.length-1]){for(e=0;e>>8,A[D++]=255&k;D=0,E()}function C(){if(null==S){for(E(),(S=new O).init(A),D=0;D0&&e.length>0))throw new Error(\"Invalid key data\");this.n=new u.BigInteger(t,16),this.e=parseInt(e,16)}c.prototype.verify=function(t,e){e=e.replace(/[^0-9a-f]|[\\s\\n]]/gi,\"\");var r=new u.BigInteger(e,16);if(r.bitLength()>this.n.bitLength())throw new Error(\"Signature does not match with the key modulus.\");var i=function(t){for(var e in a){var r=a[e],i=r.length;if(t.substring(0,i)===r)return{alg:e,hash:t.substring(i)}}return[]}(r.modPowInt(this.e,this.n).toString(16).replace(/^1f+00/,\"\"));if(0===i.length)return!1;if(!f.hasOwnProperty(i.alg))throw new Error(\"Hashing algorithm is not supported.\");var n=f[i.alg](t).toString();return i.hash===n};for(var p=[],l=[],d=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,m=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",v=0;v<64;++v)p[v]=m[v],l[m.charCodeAt(v)]=v;l[\"-\".charCodeAt(0)]=62,l[\"_\".charCodeAt(0)]=63;var y=function(t){var e,r,i=function(t){var e=t.length;if(e%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}(t),n=i[0],o=i[1],s=new d(function(t,e,r){return 3*(e+r)/4-r}(0,n,o)),h=0,u=o>0?n-4:n;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;return 2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,s[h++]=255&e),1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e),s};function g(t){var e=t.length%4;return 0===e?t:t+new Array(4-e+1).join(\"=\")}function w(t){return t=g(t).replace(/\\-/g,\"+\").replace(/_/g,\"/\"),decodeURIComponent(function(t){for(var e=\"\",r=0;r1){var r=t.shift();t[0]=r+t[0]}t[0]=t[0].match(/^file:\\/\\/\\//)?t[0].replace(/^([^/:]+):\\/*/,\"$1:///\"):t[0].replace(/^([^/:]+):\\/*/,\"$1://\");for(var i=0;i0&&(n=n.replace(/^[\\/]+/,\"\")),n=n.replace(/[\\/]+$/,i0?\"?\":\"\")+s.join(\"&\")}(\"object\"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():r.urljoin=i()});function _(t,e){return e=e||{},new Promise(function(r,i){var n=new XMLHttpRequest,o=[],s=[],h={},u=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:u,headers:{keys:function(){return o},entries:function(){return s},get:function(t){return h[t.toLowerCase()]},has:function(t){return t.toLowerCase()in h}}}};for(var a in n.open(e.method||\"get\",t,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(t,e,r){o.push(e=e.toLowerCase()),s.push([e,r]),h[e]=h[e]?h[e]+\",\"+r:r}),r(u())},n.onerror=i,n.withCredentials=\"include\"==e.credentials,e.headers)n.setRequestHeader(a,e.headers[a]);n.send(e.body||null)})}function S(t){if(t.ok)return t.json();var e=new Error(t.statusText);return e.response=t,Promise.reject(e)}function A(t){this.name=\"ConfigurationError\",this.message=t||\"\"}function D(t){this.name=\"TokenValidationError\",this.message=t||\"\"}A.prototype=Error.prototype,D.prototype=Error.prototype;var B=function(){function t(){}var e=t.prototype;return e.get=function(){return null},e.has=function(){return null},e.set=function(){return null},t}();r.polyfill();var x=\"RS256\",E=function(t){return\"number\"==typeof t},k=function(){return new Date};function I(t){var e=t||{};if(this.jwksCache=e.jwksCache||new B,this.expectedAlg=e.expectedAlg||\"RS256\",this.issuer=e.issuer,this.audience=e.audience,this.leeway=0===e.leeway?0:e.leeway||60,this.jwksURI=e.jwksURI,this.maxAge=e.maxAge,this.__clock=\"function\"==typeof e.__clock?e.__clock:k,this.leeway<0||this.leeway>300)throw new A(\"The leeway should be positive and lower than five minutes.\");if(x!==this.expectedAlg)throw new A('Signature algorithm of \"'+this.expectedAlg+'\" is not supported. Expected the ID token to be signed with \"'+x+'\".')}I.prototype.verify=function(t,e,r){if(!r&&e&&\"function\"==typeof e&&(r=e,e=void 0),!t)return r(new D(\"ID token is required but missing\"),null);var i=this.decode(t);if(i instanceof Error)return r(new D(\"ID token could not be decoded\"),null);var n=i.encoded.header+\".\"+i.encoded.payload,o=T(i.encoded.signature),s=i.header.alg,h=i.header.kid,u=i.payload.aud,a=i.payload.sub,f=i.payload.iss,c=i.payload.exp,p=i.payload.nbf,l=i.payload.iat,d=i.payload.azp,m=i.payload.auth_time,v=i.payload.nonce,y=this.__clock(),g=this;if(g.expectedAlg!==s)return r(new D('Signature algorithm of \"'+s+'\" is not supported. Expected the ID token to be signed with \"'+x+'\".'),null);this.getRsaVerifier(f,h,function(t,s){if(t)return r(t,null);if(!s.verify(n,o))return r(new D(\"Invalid ID token signature.\"),null);if(!f||\"string\"!=typeof f)return r(new D(\"Issuer (iss) claim must be a string present in the ID token\"),null);if(g.issuer!==f)return r(new D('Issuer (iss) claim mismatch in the ID token, expected \"'+g.issuer+'\", found \"'+f+'\"'),null);if(!a||\"string\"!=typeof a)return r(new D(\"Subject (sub) claim must be a string present in the ID token\"),null);if(!u||\"string\"!=typeof u&&!Array.isArray(u))return r(new D(\"Audience (aud) claim must be a string or array of strings present in the ID token\"),null);if(Array.isArray(u)&&!u.includes(g.audience))return r(new D('Audience (aud) claim mismatch in the ID token; expected \"'+g.audience+'\" but was not one of \"'+u.join(\", \")+'\"'),null);if(\"string\"==typeof u&&g.audience!==u)return r(new D('Audience (aud) claim mismatch in the ID token; expected \"'+g.audience+'\" but found \"'+u+'\"'),null);if(e){if(!v||\"string\"!=typeof v)return r(new D(\"Nonce (nonce) claim must be a string present in the ID token\"),null);if(v!==e)return r(new D('Nonce (nonce) claim value mismatch in the ID token; expected \"'+e+'\", found \"'+v+'\"'),null)}if(Array.isArray(u)&&u.length>1){if(!d||\"string\"!=typeof d)return r(new D(\"Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values\"),null);if(d!==g.audience)return r(new D('Authorized Party (azp) claim mismatch in the ID token; expected \"'+g.audience+'\", found \"'+d+'\"'),null)}if(!c||!E(c))return r(new D(\"Expiration Time (exp) claim must be a number present in the ID token\"),null);if(!l||!E(l))return r(new D(\"Issued At (iat) claim must be a number present in the ID token\"),null);var h=c+g.leeway,w=new Date(0);if(w.setUTCSeconds(h),y>w)return r(new D('Expiration Time (exp) claim error in the ID token; current time \"'+y+'\" is after expiration time \"'+w+'\"'),null);if(p&&E(p)){var T=p-g.leeway,b=new Date(0);if(b.setUTCSeconds(T),yS)return r(new D('Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time \"'+y+'\" is after last auth time at \"'+S+'\"'),null)}return r(null,i.payload)})},I.prototype.getRsaVerifier=function(t,e,r){var i=this,n=t+e;Promise.resolve(this.jwksCache.has(n)).then(function(r){return r?i.jwksCache.get(n):(s=(o={jwksURI:i.jwksURI,iss:t,kid:e}).jwksURI||b(o.iss,\".well-known\",\"jwks.json\"),(\"undefined\"==fetch?_:fetch)(s).then(S).then(function(t){var e,r,i,n=null;for(e=0;e 11\n else if (ua.indexOf(\"Trident\") > -1) {\n var re = new RegExp(\"rv:([0-9]{2,2}[\\.0-9]{0,})\");\n if (re.exec(ua) !== null) {\n rv = parseFloat(RegExp.$1);\n }\n }\n\n return rv >= 8;\n }\n\n // checking Mobile Firefox (Fennec)\n function isFennec() {\n try {\n // We must check for both XUL and Java versions of Fennec. Both have\n // distinct UA strings.\n var userAgent = navigator.userAgent;\n return (userAgent.indexOf('Fennec/') != -1) || // XUL\n (userAgent.indexOf('Firefox/') != -1 && userAgent.indexOf('Android') != -1); // Java\n } catch(e) {}\n return false;\n }\n\n // feature checking to see if this platform is supported at all\n function isSupported() {\n return (typeof window !== 'undefined' && window.JSON && window.JSON.stringify &&\n window.JSON.parse && window.postMessage);\n }\n\n // given a URL, extract the origin. Taken from: https://github.com/firebase/firebase-simple-login/blob/d2cb95b9f812d8488bdbfba51c3a7c153ba1a074/js/src/simple-login/transports/WinChan.js#L25-L30\n function extractOrigin(url) {\n if (!/^https?:\\/\\//.test(url)) url = window.location.href;\n var m = /^(https?:\\/\\/[\\-_a-zA-Z\\.0-9:]+)/.exec(url);\n if (m) return m[1];\n return url;\n }\n\n // find the relay iframe in the opener\n function findRelay() {\n var loc = window.location;\n var frames = window.opener.frames;\n for (var i = frames.length - 1; i >= 0; i--) {\n try {\n if (frames[i].location.protocol === window.location.protocol &&\n frames[i].location.host === window.location.host &&\n frames[i].name === RELAY_FRAME_NAME)\n {\n return frames[i];\n }\n } catch(e) { }\n }\n return;\n }\n\n var isIE = isInternetExplorer();\n\n if (isSupported()) {\n /* General flow:\n * 0. user clicks\n * (IE SPECIFIC) 1. caller adds relay iframe (served from trusted domain) to DOM\n * 2. caller opens window (with content from trusted domain)\n * 3. window on opening adds a listener to 'message'\n * (IE SPECIFIC) 4. window on opening finds iframe\n * 5. window checks if iframe is \"loaded\" - has a 'doPost' function yet\n * (IE SPECIFIC5) 5a. if iframe.doPost exists, window uses it to send ready event to caller\n * (IE SPECIFIC5) 5b. if iframe.doPost doesn't exist, window waits for frame ready\n * (IE SPECIFIC5) 5bi. once ready, window calls iframe.doPost to send ready event\n * 6. caller upon reciept of 'ready', sends args\n */\n return {\n open: function(opts, cb) {\n if (!cb) throw \"missing required callback argument\";\n\n // test required options\n var err;\n if (!opts.url) err = \"missing required 'url' parameter\";\n if (!opts.relay_url) err = \"missing required 'relay_url' parameter\";\n if (err) setTimeout(function() { cb(err); }, 0);\n\n // supply default options\n if (!opts.window_name) opts.window_name = null;\n if (!opts.window_features || isFennec()) opts.window_features = undefined;\n\n // opts.params may be undefined\n\n var iframe;\n\n // sanity check, are url and relay_url the same origin?\n var origin = opts.origin || extractOrigin(opts.url);\n if (origin !== extractOrigin(opts.relay_url)) {\n return setTimeout(function() {\n cb('invalid arguments: origin of url and relay_url must match');\n }, 0);\n }\n\n var messageTarget;\n\n if (isIE) {\n // first we need to add a \"relay\" iframe to the document that's served\n // from the target domain. We can postmessage into a iframe, but not a\n // window\n iframe = document.createElement(\"iframe\");\n // iframe.setAttribute('name', framename);\n iframe.setAttribute('src', opts.relay_url);\n iframe.style.display = \"none\";\n iframe.setAttribute('name', RELAY_FRAME_NAME);\n document.body.appendChild(iframe);\n messageTarget = iframe.contentWindow;\n }\n\n var w = opts.popup || window.open(opts.url, opts.window_name, opts.window_features);\n if (opts.popup) {\n w.location.href = opts.url;\n }\n\n if (!messageTarget) messageTarget = w;\n\n // lets listen in case the window blows up before telling us\n var closeInterval = setInterval(function() {\n if (w && w.closed) {\n cleanup();\n if (cb) {\n cb('User closed the popup window');\n cb = null;\n }\n }\n }, 500);\n\n var req = JSON.stringify({a: 'request', d: opts.params});\n\n // cleanup on unload\n function cleanup() {\n if (iframe) document.body.removeChild(iframe);\n iframe = undefined;\n if (closeInterval) closeInterval = clearInterval(closeInterval);\n removeListener(window, 'message', onMessage);\n removeListener(window, 'unload', cleanup);\n if (w) {\n try {\n w.close();\n } catch (securityViolation) {\n // This happens in Opera 12 sometimes\n // see https://github.com/mozilla/browserid/issues/1844\n messageTarget.postMessage(CLOSE_CMD, origin);\n }\n }\n w = messageTarget = undefined;\n }\n\n addListener(window, 'unload', cleanup);\n\n function onMessage(e) {\n if (e.origin !== origin) { return; }\n try {\n var d = JSON.parse(e.data);\n } catch(err) {\n if (cb) {\n return cb(err);\n } else {\n throw err;\n }\n }\n\n if (d.a === 'ready') {\n messageTarget.postMessage(req, origin);\n } else if (d.a === 'error') {\n cleanup();\n if (cb) {\n cb(d.d);\n cb = null;\n }\n } else if (d.a === 'response') {\n cleanup();\n if (cb) {\n cb(null, d.d);\n cb = null;\n }\n }\n }\n\n addListener(window, 'message', onMessage);\n\n return {\n originalPopup: w,\n close: cleanup,\n focus: function() {\n if (w) {\n try {\n w.focus();\n } catch (e) {\n // IE7 blows up here, do nothing\n }\n }\n }\n };\n },\n onOpen: function(cb) {\n var o = \"*\";\n var msgTarget = isIE ? findRelay() : window.opener;\n if (!msgTarget) throw \"can't find relay frame\";\n function doPost(msg) {\n msg = JSON.stringify(msg);\n if (isIE) msgTarget.doPost(msg, o);\n else msgTarget.postMessage(msg, o);\n }\n\n function onMessage(e) {\n // only one message gets through, but let's make sure it's actually\n // the message we're looking for (other code may be using\n // postmessage) - we do this by ensuring the payload can\n // be parsed, and it's got an 'a' (action) value of 'request'.\n var d;\n try {\n d = JSON.parse(e.data);\n } catch(err) { }\n if (!d || d.a !== 'request') return;\n removeListener(window, 'message', onMessage);\n o = e.origin;\n if (cb) {\n // this setTimeout is critically important for IE8 -\n // in ie8 sometimes addListener for 'message' can synchronously\n // cause your callback to be invoked. awesome.\n setTimeout(function() {\n cb(o, d.d, function(r) {\n cb = undefined;\n doPost({a: 'response', d: r});\n });\n }, 0);\n }\n }\n\n function onDie(e) {\n if (e.data === CLOSE_CMD) {\n try { window.close(); } catch (o_O) {}\n }\n }\n addListener(isIE ? msgTarget : window, 'message', onMessage);\n addListener(isIE ? msgTarget : window, 'message', onDie);\n\n // we cannot post to our parent that we're ready before the iframe\n // is loaded. (IE specific possible failure)\n try {\n doPost({a: \"ready\"});\n } catch(e) {\n // this code should never be exectued outside IE\n addListener(msgTarget, 'load', function(e) {\n doPost({a: \"ready\"});\n });\n }\n\n // if window is unloaded and the client hasn't called cb, it's an error\n var onUnload = function() {\n try {\n // IE8 doesn't like this...\n removeListener(isIE ? msgTarget : window, 'message', onDie);\n } catch (ohWell) { }\n if (cb) doPost({ a: 'error', d: 'client closed window' });\n cb = undefined;\n // explicitly close the window, in case the client is trying to reload or nav\n try { window.close(); } catch (e) { }\n };\n addListener(window, 'unload', onUnload);\n return {\n detach: function() {\n removeListener(window, 'unload', onUnload);\n }\n };\n }\n };\n } else {\n return {\n open: function(url, winopts, arg, cb) {\n setTimeout(function() { cb(\"unsupported browser\"); }, 0);\n },\n onOpen: function(cb) {\n setTimeout(function() { cb(\"unsupported browser\"); }, 0);\n }\n };\n }\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = WinChan;\n}\n","// given a URL, extract the origin. Taken from: https://github.com/firebase/firebase-simple-login/blob/d2cb95b9f812d8488bdbfba51c3a7c153ba1a074/js/src/simple-login/transports/WinChan.js#L25-L30\nfunction extractOrigin(url) {\n if (!/^https?:\\/\\//.test(url)) url = window.location.href;\n var m = /^(https?:\\/\\/[-_a-zA-Z.0-9:]+)/.exec(url);\n if (m) return m[1];\n return url;\n}\n\nexport default {\n extractOrigin: extractOrigin\n};\n","/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\nimport WinChan from 'winchan';\n\nimport windowHandler from './window';\nimport objectHelper from './object';\nimport qs from 'qs';\n\nfunction PopupHandler() {\n this._current_popup = null;\n}\n\nPopupHandler.prototype.calculatePosition = function(options) {\n var width = options.width || 500;\n var height = options.height || 600;\n var _window = windowHandler.getWindow();\n\n var screenX =\n typeof _window.screenX !== 'undefined'\n ? _window.screenX\n : _window.screenLeft;\n var screenY =\n typeof _window.screenY !== 'undefined'\n ? _window.screenY\n : _window.screenTop;\n\n var outerWidth =\n typeof _window.outerWidth !== 'undefined'\n ? _window.outerWidth\n : _window.document.body.clientWidth;\n\n var outerHeight =\n typeof _window.outerHeight !== 'undefined'\n ? _window.outerHeight\n : _window.document.body.clientHeight;\n\n var left = options.left || screenX + (outerWidth - width) / 2;\n var top = options.top || screenY + (outerHeight - height) / 2;\n\n return { width: width, height: height, left: left, top: top };\n};\n\nPopupHandler.prototype.preload = function(options) {\n var _this = this;\n var _window = windowHandler.getWindow();\n var popupPosition = this.calculatePosition(options.popupOptions || {});\n var popupOptions = objectHelper\n .merge(popupPosition)\n .with(options.popupOptions);\n var url = options.url || 'about:blank';\n var windowFeatures = qs.stringify(popupOptions, {\n encode: false,\n delimiter: ','\n });\n\n if (this._current_popup && !this._current_popup.closed) {\n return this._current_popup;\n }\n\n this._current_popup = _window.open(url, 'auth0_signup_popup', windowFeatures);\n\n this._current_popup.kill = function() {\n this.close();\n _this._current_popup = null;\n };\n\n return this._current_popup;\n};\n\nPopupHandler.prototype.load = function(url, relayUrl, options, cb) {\n var _this = this;\n var popupPosition = this.calculatePosition(options.popupOptions || {});\n var popupOptions = objectHelper\n .merge(popupPosition)\n .with(options.popupOptions);\n\n var winchanOptions = objectHelper\n .merge({\n url: url,\n relay_url: relayUrl,\n window_features: qs.stringify(popupOptions, {\n delimiter: ',',\n encode: false\n }),\n popup: this._current_popup\n })\n .with(options);\n\n var popup = WinChan.open(winchanOptions, function(err, data) {\n // Ignores messages sent by browser extensions.\n if (err && err.name === 'SyntaxError') {\n return;\n }\n _this._current_popup = null;\n return cb(err, data);\n });\n\n popup.focus();\n\n return popup;\n};\n\nexport default PopupHandler;\n","import urljoin from 'url-join';\nimport WinChan from 'winchan';\n\nimport urlHelper from '../helper/url';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\nimport PopupHandler from '../helper/popup-handler';\nimport objectHelper from '../helper/object';\nimport windowHelper from '../helper/window';\nimport Warn from '../helper/warn';\nimport TransactionManager from './transaction-manager';\nimport CrossOriginAuthentication from './cross-origin-authentication';\n\n/**\n * @class\n * @classdesc This class cannot be instantiated directly. Instead, use WebAuth.popup\n * @hideconstructor\n */\nfunction Popup(webAuth, options) {\n this.baseOptions = options;\n this.baseOptions.popupOrigin = options.popupOrigin;\n this.client = webAuth.client;\n this.webAuth = webAuth;\n\n this.transactionManager = new TransactionManager(this.baseOptions);\n this.crossOriginAuthentication = new CrossOriginAuthentication(\n webAuth,\n this.baseOptions\n );\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n}\n\n/**\n * Returns a new instance of the popup handler\n *\n * @method buildPopupHandler\n * @private\n */\nPopup.prototype.buildPopupHandler = function() {\n var pluginHandler = this.baseOptions.plugins.get('popup.getPopupHandler');\n\n if (pluginHandler) {\n return pluginHandler.getPopupHandler();\n }\n\n return new PopupHandler();\n};\n\n/**\n * Initializes the popup window and returns the instance to be used later in order to avoid being blocked by the browser.\n *\n * @method preload\n * @param {Object} options receives the window height and width and any other window feature to be sent to window.open\n * @memberof Popup.prototype\n */\nPopup.prototype.preload = function(options) {\n options = options || {};\n\n var popup = this.buildPopupHandler();\n\n popup.preload(options);\n return popup;\n};\n\n/**\n * Internal use.\n *\n * @method getPopupHandler\n * @private\n */\nPopup.prototype.getPopupHandler = function(options, preload) {\n if (options.popupHandler) {\n return options.popupHandler;\n }\n\n if (preload) {\n return this.preload(options);\n }\n\n return this.buildPopupHandler();\n};\n\n/**\n * Handles the popup logic for the callback page.\n *\n * @method callback\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @see {@link parseHash}\n * @memberof Popup.prototype\n */\nPopup.prototype.callback = function(options) {\n var _this = this;\n var theWindow = windowHelper.getWindow();\n options = options || {};\n var originUrl =\n options.popupOrigin ||\n this.baseOptions.popupOrigin ||\n windowHelper.getOrigin();\n\n /*\n in IE 11, there's a bug that makes window.opener return undefined.\n The callback page will still call `popup.callback()` which will run this method\n in the relay page. WinChan expects the relay page to have a global `doPost` function,\n which will be called with the response.\n\n IE11 Bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/110920/\n */\n if (!theWindow.opener) {\n theWindow.doPost = function(msg) {\n if (theWindow.parent) {\n theWindow.parent.postMessage(msg, originUrl);\n }\n };\n return;\n }\n\n WinChan.onOpen(function(popupOrigin, r, cb) {\n if (popupOrigin !== originUrl) {\n return cb({\n error: 'origin_mismatch',\n error_description:\n \"The popup's origin (\" +\n popupOrigin +\n ') should match the `popupOrigin` parameter (' +\n originUrl +\n ').'\n });\n }\n _this.webAuth.parseHash(options || {}, function(err, data) {\n return cb(err || data);\n });\n });\n};\n\n/**\n * Shows inside a new window the hosted login page (`/authorize`) in order to start a new authN/authZ transaction and post its result using `postMessage`.\n *\n * @method authorize\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.organization] the Id of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Boolean} [options.owp] determines if Auth0 should render the relay page or not and the caller is responsible of handling the response.\n * @param {authorizeCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof Popup.prototype\n */\nPopup.prototype.authorize = function(options, cb) {\n var popup;\n var url;\n var relayUrl;\n var popOpts = {};\n\n var pluginHandler = this.baseOptions.plugins.get('popup.authorize');\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'scope',\n 'domain',\n 'audience',\n 'tenant',\n 'responseType',\n 'redirectUri',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'organization',\n 'invitation'\n ])\n .with(objectHelper.blacklist(options, ['popupHandler']));\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n // the relay page should not be necessary as long it happens in the same domain\n // (a redirectUri shoul be provided). It is necessary when using OWP\n relayUrl = urljoin(this.baseOptions.rootUrl, 'relay.html');\n\n // if a owp is enabled, it should use the owp flag\n if (options.owp) {\n // used by server to render the relay page instead of sending the chunk in the\n // url to the callback\n params.owp = true;\n } else {\n popOpts.origin = urlHelper.extractOrigin(params.redirectUri);\n relayUrl = params.redirectUri;\n }\n\n if (options.popupOptions) {\n popOpts.popupOptions = objectHelper.pick(options.popupOptions, [\n 'width',\n 'height',\n 'top',\n 'left'\n ]);\n }\n\n if (pluginHandler) {\n params = pluginHandler.processParams(params);\n }\n\n params = this.transactionManager.process(params);\n params.scope = params.scope || 'openid profile email';\n delete params.domain;\n\n url = this.client.buildAuthorizeUrl(params);\n\n popup = this.getPopupHandler(options);\n\n return popup.load(\n url,\n relayUrl,\n popOpts,\n responseHandler(cb, { keepOriginalCasing: true })\n );\n};\n\n/**\n * Performs authentication with username/email and password with a database connection inside a new window\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link login}.\n *\n * @method loginWithCredentials\n * @param {Object} options\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used. It can be any of the values `code` and `token`\n * @param {String} [options.responseMode] how the AuthN response is encoded and redirected back to the client. Supported values are `query` and `fragment`. The `query` value is only supported when `responseType` is `code`.\n * @param {String} [options.scope] scopes to be requested during AuthN. e.g. `openid email`\n * @param {credentialsCallback} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.loginWithCredentials = function (options, cb) {\n options.realm = options.realm || options.connection;\n options.popup = true;\n options = objectHelper\n .merge(this.baseOptions, [\n 'redirectUri',\n 'responseType',\n 'state',\n 'nonce',\n 'timeout'\n ])\n .with(objectHelper.blacklist(options, ['popupHandler', 'connection']));\n\n options = this.transactionManager.process(options);\n this.crossOriginAuthentication.login(options, cb);\n};\n\n/**\n * Verifies the passwordless TOTP and redirects to finish the passwordless transaction\n *\n * @method passwordlessVerify\n * @param {Object} options\n * @param {String} options.type `sms` or `email`\n * @param {String} options.phoneNumber only if type = sms\n * @param {String} options.email only if type = email\n * @param {String} options.connection the connection name\n * @param {String} options.verificationCode the TOTP code\n * @param {Function} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.passwordlessVerify = function(options, cb) {\n var _this = this;\n return this.client.passwordless.verify(\n objectHelper.blacklist(options, ['popupHandler']),\n function(err) {\n if (err) {\n return cb(err);\n }\n\n options.username = options.phoneNumber || options.email;\n options.password = options.verificationCode;\n\n delete options.email;\n delete options.phoneNumber;\n delete options.verificationCode;\n delete options.type;\n\n _this.client.loginWithResourceOwner(options, cb);\n }\n );\n};\n\n/**\n * Signs up a new user and automatically logs the user in after the signup.\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link signupAndAuthorize}.\n *\n * @method signupAndLogin\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {credentialsCallback} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.signupAndLogin = function(options, cb) {\n var _this = this;\n\n return this.client.dbConnection.signup(options, function(err) {\n if (err) {\n return cb(err);\n }\n _this.loginWithCredentials(options, cb);\n });\n};\n\nexport default Popup;\n","import IframeHandler from '../helper/iframe-handler';\nimport windowHelper from '../helper/window';\n\nfunction SilentAuthenticationHandler(options) {\n this.authenticationUrl = options.authenticationUrl;\n this.timeout = options.timeout || 60 * 1000;\n this.handler = null;\n this.postMessageDataType = options.postMessageDataType || false;\n\n // prefer origin from options, fallback to origin from browser, and some browsers (for example MS Edge) don't support origin; fallback to construct origin manually\n this.postMessageOrigin =\n options.postMessageOrigin ||\n windowHelper.getWindow().location.origin ||\n windowHelper.getWindow().location.protocol +\n '//' +\n windowHelper.getWindow().location.hostname +\n (windowHelper.getWindow().location.port\n ? ':' + windowHelper.getWindow().location.port\n : '');\n}\n\nSilentAuthenticationHandler.create = function(options) {\n return new SilentAuthenticationHandler(options);\n};\n\nSilentAuthenticationHandler.prototype.login = function(\n usePostMessage,\n callback\n) {\n this.handler = new IframeHandler({\n auth0: this.auth0,\n url: this.authenticationUrl,\n eventListenerType: usePostMessage ? 'message' : 'load',\n callback: this.getCallbackHandler(callback, usePostMessage),\n timeout: this.timeout,\n eventValidator: this.getEventValidator(),\n timeoutCallback: function() {\n callback(\n null,\n '#error=timeout&error_description=Timeout+during+authentication+renew.'\n );\n },\n usePostMessage: usePostMessage || false\n });\n\n this.handler.init();\n};\n\nSilentAuthenticationHandler.prototype.getEventValidator = function() {\n var _this = this;\n return {\n isValid: function(eventData) {\n switch (eventData.event.type) {\n case 'message':\n // Message must come from the expected origin and iframe window.\n if (\n eventData.event.origin !== _this.postMessageOrigin ||\n eventData.event.source !== _this.handler.iframe.contentWindow\n ) {\n return false;\n }\n\n // Default behaviour, return all message events from the iframe.\n if (_this.postMessageDataType === false) {\n return true;\n }\n\n return (\n eventData.event.data.type &&\n eventData.event.data.type === _this.postMessageDataType\n );\n\n case 'load':\n if (\n eventData.sourceObject.contentWindow.location.protocol === 'about:'\n ) {\n // Chrome is automatically loading the about:blank page, we ignore this.\n return false;\n }\n // Fall through to default\n default:\n return true;\n }\n }\n };\n};\n\nSilentAuthenticationHandler.prototype.getCallbackHandler = function(\n callback,\n usePostMessage\n) {\n return function(eventData) {\n var callbackValue;\n if (!usePostMessage) {\n callbackValue = eventData.sourceObject.contentWindow.location.hash;\n } else if (\n typeof eventData.event.data === 'object' &&\n eventData.event.data.hash\n ) {\n callbackValue = eventData.event.data.hash;\n } else {\n callbackValue = eventData.event.data;\n }\n callback(null, callbackValue);\n };\n};\n\nexport default SilentAuthenticationHandler;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport RequestBuilder from '../helper/request-builder';\nimport responseHandler from '../helper/response-handler';\nimport windowHelper from '../helper/window';\nimport TransactionManager from './transaction-manager';\n\nfunction UsernamePassword(options) {\n this.baseOptions = options;\n this.request = new RequestBuilder(options);\n this.transactionManager = new TransactionManager(this.baseOptions);\n}\n\nUsernamePassword.prototype.login = function(options, cb) {\n var url;\n var body;\n\n url = urljoin(this.baseOptions.rootUrl, 'usernamepassword', 'login');\n\n options.username = options.username || options.email; // eslint-disable-line\n\n options = objectHelper.blacklist(options, ['email', 'onRedirecting']); // eslint-disable-line\n\n body = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'tenant',\n 'responseType',\n 'responseMode',\n 'scope',\n 'audience'\n ])\n .with(options);\n body = this.transactionManager.process(body);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\nUsernamePassword.prototype.callback = function(formHtml) {\n var div;\n var form;\n var _document = windowHelper.getDocument();\n\n div = _document.createElement('div');\n div.innerHTML = formHtml;\n form = _document.body.appendChild(div).children[0];\n\n form.submit();\n};\n\nexport default UsernamePassword;\n","import urljoin from 'url-join';\nimport qs from 'qs';\n\nimport UsernamePassword from './username-password';\nimport RequestBuilder from '../helper/request-builder';\nimport responseHandler from '../helper/response-handler';\nimport objectHelper from '../helper/object';\nimport windowHelper from '../helper/window';\nimport Warn from '../helper/warn';\nimport assert from '../helper/assert';\n\nfunction HostedPages(client, options) {\n this.baseOptions = options;\n this.client = client;\n this.baseOptions.universalLoginPage = true;\n this.request = new RequestBuilder(this.baseOptions);\n\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n}\n\n/**\n * @callback credentialsCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the AuthN request\n * @param {String} result.accessToken token that can be used with {@link userinfo}\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @ignore\n */\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n * @ignore\n */\n\n/**\n * Performs authentication with username/email and password with a database connection\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link login}.\n *\n * @method login\n * @param {Object} options\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used. It can be any of the values `code` and `token`\n * @param {String} [options.responseMode] how the AuthN response is encoded and redirected back to the client. Supported values are `query` and `fragment`\n * @param {String} [options.scope] scopes to be requested during AuthN. e.g. `openid email`\n * @param {onRedirectingCallback} [options.onRedirecting] Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {credentialsCallback} cb\n * @ignore\n */\nHostedPages.prototype.login = function(options, cb) {\n if (windowHelper.getWindow().location.host !== this.baseOptions.domain) {\n throw new Error(\n 'This method is meant to be used only inside the Universal Login Page.'\n );\n }\n\n var usernamePassword;\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'tenant',\n 'responseType',\n 'responseMode',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n usernamePassword = new UsernamePassword(this.baseOptions);\n\n return usernamePassword.login(params, function(err, data) {\n if (err) {\n return cb(err);\n }\n\n function doAuth() {\n usernamePassword.callback(data);\n }\n\n if (typeof options.onRedirecting === 'function') {\n return options.onRedirecting(function() {\n doAuth();\n });\n }\n\n doAuth();\n });\n};\n\n/**\n * Signs up a new user and automatically logs the user in after the signup.\n *\n * @method signupAndLogin\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {credentialsCallback} cb\n * @ignore\n */\nHostedPages.prototype.signupAndLogin = function(options, cb) {\n var _this = this;\n return _this.client.client.dbConnection.signup(options, function(err) {\n if (err) {\n return cb(err);\n }\n return _this.login(options, cb);\n });\n};\n\nHostedPages.prototype.getSSOData = function(withActiveDirectories, cb) {\n var url;\n var params = '';\n\n if (typeof withActiveDirectories === 'function') {\n cb = withActiveDirectories;\n withActiveDirectories = false;\n }\n\n assert.check(withActiveDirectories, {\n type: 'boolean',\n message: 'withActiveDirectories parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (withActiveDirectories) {\n params =\n '?' +\n qs.stringify({\n ldaps: 1,\n client_id: this.baseOptions.clientID\n });\n }\n\n url = urljoin(this.baseOptions.rootUrl, 'user', 'ssodata', params);\n\n return this.request\n .get(url, { noHeaders: true })\n .withCredentials()\n .end(responseHandler(cb));\n};\n\nexport default HostedPages;\n","// eslint-disable-next-line no-unused-vars\nimport Authentication from '../authentication';\nimport object from '../helper/object';\n\nvar noop = function () { };\nvar captchaSolved = noop;\n\nvar Flow = {\n DEFAULT: 'default',\n PASSWORDLESS: 'passwordless',\n PASSWORD_RESET: 'password_reset'\n};\n\nvar RECAPTCHA_V2_PROVIDER = 'recaptcha_v2';\nvar RECAPTCHA_ENTERPRISE_PROVIDER = 'recaptcha_enterprise';\nvar HCAPTCHA_PROVIDER = 'hcaptcha';\nvar FRIENDLY_CAPTCHA_PROVIDER = 'friendly_captcha';\nvar ARKOSE_PROVIDER = 'arkose';\nvar AUTH0_PROVIDER = 'auth0';\nvar AUTH0_V2_CAPTCHA_PROVIDER = 'auth0_v2';\nvar MAX_RETRY = 3;\n\nvar defaults = {\n lang: 'en',\n templates: {\n auth0: function (challenge) {\n var message =\n challenge.type === 'code'\n ? 'Enter the code shown above'\n : 'Solve the formula shown above';\n return (\n '
\\n' +\n ' \\n' +\n ' \\n' +\n '
\\n' +\n ''\n );\n },\n recaptcha_v2: function () {\n return '
';\n },\n recaptcha_enterprise: function () {\n return '
';\n },\n hcaptcha: function () {\n return '
';\n },\n friendly_captcha: function () {\n return '
';\n },\n arkose: function () {\n return '
';\n },\n auth0_v2: function () {\n return '
';\n },\n error: function () {\n return '
Error getting the bot detection challenge. Please contact the system administrator.
';\n }\n }\n};\n\nfunction handleAuth0Provider(element, options, challenge, load) {\n element.innerHTML = options.templates[challenge.provider](challenge);\n element\n .querySelector('.captcha-reload')\n .addEventListener('click', function (e) {\n e.preventDefault();\n load();\n });\n}\n\nfunction globalForCaptchaProvider(provider) {\n switch (provider) {\n case RECAPTCHA_V2_PROVIDER:\n return window.grecaptcha;\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n return window.grecaptcha.enterprise;\n case HCAPTCHA_PROVIDER:\n return window.hcaptcha;\n case FRIENDLY_CAPTCHA_PROVIDER:\n return window.friendlyChallenge;\n case ARKOSE_PROVIDER:\n return window.arkose;\n case AUTH0_V2_CAPTCHA_PROVIDER:\n return window.turnstile;\n /* istanbul ignore next */\n default:\n throw new Error('Unknown captcha provider');\n }\n}\n\nfunction scriptForCaptchaProvider(\n provider,\n lang,\n callback,\n clientSubdomain,\n siteKey\n) {\n switch (provider) {\n case RECAPTCHA_V2_PROVIDER:\n return (\n 'https://www.recaptcha.net/recaptcha/api.js?hl=' +\n lang +\n '&onload=' +\n callback\n );\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n return (\n 'https://www.recaptcha.net/recaptcha/enterprise.js?render=explicit&hl=' +\n lang +\n '&onload=' +\n callback\n );\n case HCAPTCHA_PROVIDER:\n return (\n 'https://js.hcaptcha.com/1/api.js?hl=' + lang + '&onload=' + callback\n );\n case FRIENDLY_CAPTCHA_PROVIDER:\n return 'https://cdn.jsdelivr.net/npm/friendly-challenge@0.9.12/widget.min.js';\n case ARKOSE_PROVIDER:\n return (\n 'https://' +\n clientSubdomain +\n '.arkoselabs.com/v2/' +\n siteKey +\n '/api.js'\n );\n case AUTH0_V2_CAPTCHA_PROVIDER:\n return (\n 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload=' +\n callback\n );\n /* istanbul ignore next */\n default:\n throw new Error('Unknown captcha provider');\n }\n}\n\nfunction loadScript(url, attributes) {\n var script = window.document.createElement('script');\n for (var attr in attributes) {\n if (attr.startsWith('data-')) {\n script.dataset[attr.replace('data-', '')] = attributes[attr];\n } else {\n script[attr] = attributes[attr];\n }\n }\n script.src = url;\n window.document.body.appendChild(script);\n}\n\nfunction removeScript(url) {\n var scripts = window.document.querySelectorAll('script[src=\"' + url + '\"]');\n scripts.forEach(function (script) {\n script.remove();\n });\n}\n\nfunction injectCaptchaScript(element, opts, callback, setValue) {\n var callbackName =\n opts.provider + 'Callback_' + Math.floor(Math.random() * 1000001);\n var attributes = {\n async: true,\n defer: true\n };\n var scriptSrc = scriptForCaptchaProvider(\n opts.provider,\n opts.lang,\n callbackName,\n opts.clientSubdomain,\n opts.siteKey\n );\n if (\n opts.provider === ARKOSE_PROVIDER ||\n opts.provider === AUTH0_V2_CAPTCHA_PROVIDER\n ) {\n var retryCount = 0;\n attributes['data-callback'] = callbackName;\n attributes['onerror'] = function () {\n if (retryCount < MAX_RETRY) {\n removeScript(scriptSrc);\n loadScript(scriptSrc, attributes);\n retryCount++;\n return;\n }\n removeScript(scriptSrc);\n // Optimzation to tell auth0 to fail open if Arkose/auth0_v2 is configured to fail open\n setValue('BYPASS_CAPTCHA');\n };\n window[callbackName] = function (arkose) {\n window.arkose = arkose;\n callback(arkose);\n };\n } else {\n window[callbackName] = function () {\n delete window[callbackName];\n callback();\n };\n if (opts.provider === FRIENDLY_CAPTCHA_PROVIDER) {\n attributes['onload'] = window[callbackName];\n }\n }\n loadScript(scriptSrc, attributes);\n}\n\nfunction handleCaptchaProvider(element, options, challenge) {\n var widgetId =\n element.hasAttribute('data-wid') && element.getAttribute('data-wid');\n\n function setValue(value) {\n var input = element.querySelector('input[name=\"captcha\"]');\n input.value = value || '';\n }\n\n if (\n challenge.provider === FRIENDLY_CAPTCHA_PROVIDER &&\n window.auth0FCInstance\n ) {\n setValue();\n window.auth0FCInstance.reset();\n return;\n } else if (\n challenge.provider === ARKOSE_PROVIDER &&\n globalForCaptchaProvider(challenge.provider)\n ) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset();\n return;\n } else if (widgetId) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset(widgetId);\n return;\n }\n\n element.innerHTML = options.templates[challenge.provider](challenge);\n\n var captchaClass;\n switch (challenge.provider) {\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n captchaClass = '.recaptcha';\n break;\n case RECAPTCHA_V2_PROVIDER:\n captchaClass = '.recaptcha';\n break;\n case HCAPTCHA_PROVIDER:\n captchaClass = '.hcaptcha';\n break;\n case FRIENDLY_CAPTCHA_PROVIDER:\n captchaClass = '.friendly-captcha';\n break;\n case ARKOSE_PROVIDER:\n captchaClass = '.arkose';\n break;\n case AUTH0_V2_CAPTCHA_PROVIDER:\n captchaClass = '.auth0_v2';\n break;\n }\n var captchaDiv = element.querySelector(captchaClass);\n\n injectCaptchaScript(\n element,\n {\n lang: options.lang,\n provider: challenge.provider,\n clientSubdomain: challenge.clientSubdomain,\n siteKey: challenge.siteKey\n },\n function (arkose) {\n var global = globalForCaptchaProvider(challenge.provider);\n if (challenge.provider === ARKOSE_PROVIDER) {\n var retryCount = 0;\n arkose.setConfig({\n onCompleted: function (response) {\n setValue(response.token);\n captchaSolved();\n },\n onError: function () {\n if (retryCount < MAX_RETRY) {\n setValue();\n arkose.reset();\n // To ensure reset is successful, we need to set a timeout here\n setTimeout(function () {\n arkose.run();\n }, 500);\n retryCount++;\n } else {\n // Optimzation to tell auth0 to fail open if Arkose is configured to fail open\n setValue('BYPASS_CAPTCHA');\n }\n }\n });\n } else if (challenge.provider === FRIENDLY_CAPTCHA_PROVIDER) {\n window.auth0FCInstance = new global.WidgetInstance(captchaDiv, {\n sitekey: challenge.siteKey,\n language: options.lang,\n doneCallback: function (solution) {\n setValue(solution);\n },\n errorCallback: function () {\n setValue();\n }\n });\n } else {\n var renderParams = {\n callback: setValue,\n 'expired-callback': function () {\n setValue();\n },\n 'error-callback': function () {\n setValue();\n },\n sitekey: challenge.siteKey\n };\n\n if (challenge.provider === AUTH0_V2_CAPTCHA_PROVIDER) {\n retryCount = 0;\n renderParams.language = options.lang;\n renderParams.theme = 'light';\n renderParams.retry = 'never';\n renderParams['response-field'] = false;\n renderParams['error-callback'] = function () {\n if (retryCount < MAX_RETRY) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset(widgetId);\n retryCount++;\n } else {\n setValue('BYPASS_CAPTCHA');\n }\n return true;\n };\n }\n widgetId = global.render(captchaDiv, renderParams);\n element.setAttribute('data-wid', widgetId);\n }\n },\n setValue\n );\n}\n\n/**\n *\n * Renders the captcha challenge in the provided element based on the flow.\n *\n * @param {Authentication} auth0Client The challenge response from the authentication server\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Flow} flow The flow for which the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for recaptcha\n * @param {Function} [callback] An optional callback called after captcha is loaded\n * @ignore\n */\nfunction render(auth0Client, flow, element, options, callback) {\n options = object.merge(defaults).with(options || {});\n function load(done) {\n done = done || noop;\n function challengeCallback(err, challenge) {\n if (err) {\n element.innerHTML = options.templates.error(err);\n return done(err);\n }\n if (!challenge.required) {\n element.style.display = 'none';\n element.innerHTML = '';\n return;\n }\n element.style.display = '';\n if (challenge.provider === AUTH0_PROVIDER) {\n handleAuth0Provider(element, options, challenge, load);\n } else if (\n challenge.provider === RECAPTCHA_V2_PROVIDER ||\n challenge.provider === RECAPTCHA_ENTERPRISE_PROVIDER ||\n challenge.provider === HCAPTCHA_PROVIDER ||\n challenge.provider === FRIENDLY_CAPTCHA_PROVIDER ||\n challenge.provider === ARKOSE_PROVIDER ||\n challenge.provider === AUTH0_V2_CAPTCHA_PROVIDER\n ) {\n handleCaptchaProvider(element, options, challenge);\n }\n if (challenge.provider === ARKOSE_PROVIDER) {\n done(null, {\n triggerCaptcha: function (solvedCallback) {\n globalForCaptchaProvider(challenge.provider).run();\n captchaSolved = solvedCallback;\n }\n });\n } else {\n done();\n }\n }\n if (flow === Flow.PASSWORDLESS) {\n auth0Client.passwordless.getChallenge(challengeCallback);\n } else if (flow === Flow.PASSWORD_RESET) {\n auth0Client.dbConnection.getPasswordResetChallenge(challengeCallback);\n } else {\n auth0Client.getChallenge(challengeCallback);\n }\n }\n\n function getValue() {\n var captchaInput = element.querySelector('input[name=\"captcha\"]');\n if (!captchaInput) {\n return;\n }\n return captchaInput.value;\n }\n\n load(callback);\n\n return {\n reload: load,\n getValue: getValue\n };\n}\n\n\nexport default { render: render, Flow: Flow };\n","import IdTokenVerifier from 'idtoken-verifier';\nimport qs from 'qs';\n\nimport assert from '../helper/assert';\nimport error from '../helper/error';\nimport PluginHandler from '../helper/plugins';\nimport windowHelper from '../helper/window';\nimport objectHelper from '../helper/object';\nimport SSODataStorage from '../helper/ssodata';\nimport responseHandler from '../helper/response-handler';\nimport TransactionManager from './transaction-manager';\nimport Authentication from '../authentication';\nimport Redirect from './redirect';\nimport Popup from './popup';\nimport SilentAuthenticationHandler from './silent-authentication-handler';\nimport CrossOriginAuthentication from './cross-origin-authentication';\nimport WebMessageHandler from './web-message-handler';\nimport HostedPages from './hosted-pages';\nimport captcha from './captcha';\n\nfunction defaultClock() {\n return new Date();\n}\n\n/**\n * Handles all the browser's AuthN/AuthZ flows\n * @constructor\n * @param {Object} options\n * @param {String} options.domain your Auth0 domain\n * @param {String} options.clientID the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {Number} [options.leeway] number of seconds to account for clock skew when validating time-based claims in ID tokens. Defaults to 60 seconds.\n * @param {Number} [options.maxAge] maximum elapsed time in seconds since the last time the user was actively authenticated by the authorization server.\n * @param {Number} [options.stateExpiration] number of minutes for the stored state to be kept. Defaults to 30 minutes.\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Array} [options.plugins]\n * @param {Boolean} [options.legacySameSiteCookie] set this to `false` to disable the legacy compatibility cookie that is created for older browsers that don't support the SameSite attribute (defaults to `true`)\n * @param {String} [options.cookieDomain] The domain the cookie is accessible from. If not set, the cookie is scoped to the current domain, including the subdomain. To keep a user logged in across multiple subdomains set this to your top-level domain and prefixed with a `.` (eg: `.example.com`).\n * @param {Number} [options._timesToRetryFailedRequests] Number of times to retry a failed request, according to {@link https://github.com/visionmedia/superagent/blob/master/lib/request-base.js}\n * @see {@link https://auth0.com/docs/api/authentication}\n */\nfunction WebAuth(options) {\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n clientID: { type: 'string', message: 'clientID option is required' },\n responseType: {\n optional: true,\n type: 'string',\n message: 'responseType is not valid'\n },\n responseMode: {\n optional: true,\n type: 'string',\n message: 'responseMode is not valid'\n },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri is not valid'\n },\n scope: { optional: true, type: 'string', message: 'scope is not valid' },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience is not valid'\n },\n popupOrigin: {\n optional: true,\n type: 'string',\n message: 'popupOrigin is not valid'\n },\n leeway: {\n optional: true,\n type: 'number',\n message: 'leeway is not valid'\n },\n plugins: {\n optional: true,\n type: 'array',\n message: 'plugins is not valid'\n },\n maxAge: {\n optional: true,\n type: 'number',\n message: 'maxAge is not valid'\n },\n stateExpiration: {\n optional: true,\n type: 'number',\n message: 'stateExpiration is not valid'\n },\n legacySameSiteCookie: {\n optional: true,\n type: 'boolean',\n message: 'legacySameSiteCookie option is not valid'\n },\n _disableDeprecationWarnings: {\n optional: true,\n type: 'boolean',\n message: '_disableDeprecationWarnings option is not valid'\n },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n },\n _timesToRetryFailedRequests: {\n optional: true,\n type: 'number',\n message: '_timesToRetryFailedRequests option is not valid'\n }\n }\n );\n\n if (options.overrides) {\n assert.check(\n options.overrides,\n { type: 'object', message: 'overrides option is not valid' },\n {\n __tenant: {\n optional: true,\n type: 'string',\n message: '__tenant option is required'\n },\n __token_issuer: {\n optional: true,\n type: 'string',\n message: '__token_issuer option is required'\n },\n __jwks_uri: {\n optional: true,\n type: 'string',\n message: '__jwks_uri is required'\n }\n }\n );\n }\n /* eslint-enable */\n\n this.baseOptions = options;\n this.baseOptions.plugins = new PluginHandler(\n this,\n this.baseOptions.plugins || []\n );\n\n this.baseOptions._sendTelemetry =\n this.baseOptions._sendTelemetry === false\n ? this.baseOptions._sendTelemetry\n : true;\n\n this.baseOptions._timesToRetryFailedRequests =\n options._timesToRetryFailedRequests\n ? parseInt(options._timesToRetryFailedRequests)\n : 0;\n\n this.baseOptions.tenant =\n (this.baseOptions.overrides && this.baseOptions.overrides.__tenant) ||\n this.baseOptions.domain.split('.')[0];\n\n this.baseOptions.token_issuer =\n (this.baseOptions.overrides && this.baseOptions.overrides.__token_issuer) ||\n 'https://' + this.baseOptions.domain + '/';\n\n this.baseOptions.jwksURI =\n this.baseOptions.overrides && this.baseOptions.overrides.__jwks_uri;\n\n if (options.legacySameSiteCookie !== false) {\n this.baseOptions.legacySameSiteCookie = true;\n }\n\n this.transactionManager = new TransactionManager(this.baseOptions);\n\n this.client = new Authentication(this.baseOptions);\n\n /** @member {Redirect} */\n this.redirect = new Redirect(this, this.baseOptions);\n\n /** @member {Popup} */\n this.popup = new Popup(this, this.baseOptions);\n\n this.crossOriginAuthentication = new CrossOriginAuthentication(\n this,\n this.baseOptions\n );\n\n this.webMessageHandler = new WebMessageHandler(this);\n this._universalLogin = new HostedPages(this, this.baseOptions);\n this.ssodataStorage = new SSODataStorage(this.baseOptions);\n}\n\n/**\n * Parse the url hash and extract the Auth response from a Auth flow started with {@link authorize}\n *\n * Only validates id_tokens signed by Auth0 using the RS256 algorithm using the public key exposed\n * by the `/.well-known/jwks.json` endpoint of your account.\n * Tokens signed with the HS256 algorithm cannot be properly validated.\n * Instead, a call to {@link userInfo} will be made with the parsed `access_token`.\n * If the {@link userInfo} call fails, the {@link userInfo} error will be passed to the callback.\n * Tokens signed with other algorithms will not be accepted.\n *\n * @example\n * auth0.parseHash({ hash: window.location.hash }, function(err, authResult) {\n * if (err) {\n * return console.log(err);\n * }\n\n * // The contents of authResult depend on which authentication parameters were used.\n * // It can include the following:\n * // authResult.accessToken - access token for the API specified by `audience`\n * // authResult.expiresIn - string with the access token's expiration time in seconds\n * // authResult.idToken - ID token JWT containing user profile information\n\n * auth0.client.userInfo(authResult.accessToken, function(err, user) {\n * // Now you have the user's information\n * });\n *});\n * @method parseHash\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `token`, `id_token`. For this specific method, we'll only use this value to check if the hash contains the tokens requested in the responseType.\n * @param {authorizeCallback} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.parseHash = function (options, cb) {\n var parsedQs;\n var err;\n\n if (!cb && typeof options === 'function') {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n\n var hashStr =\n options.hash === undefined\n ? windowHelper.getWindow().location.hash\n : options.hash;\n hashStr = hashStr.replace(/^#?\\/?/, '');\n\n parsedQs = qs.parse(hashStr);\n\n if (parsedQs.hasOwnProperty('error')) {\n err = error.buildResponse(parsedQs.error, parsedQs.error_description);\n\n if (parsedQs.state) {\n err.state = parsedQs.state;\n }\n\n return cb(err);\n }\n\n if (\n !parsedQs.hasOwnProperty('access_token') &&\n !parsedQs.hasOwnProperty('id_token') &&\n !parsedQs.hasOwnProperty('refresh_token')\n ) {\n return cb(null, null);\n }\n var responseTypes = (\n this.baseOptions.responseType ||\n options.responseType ||\n ''\n ).split(' ');\n if (\n responseTypes.length > 0 &&\n responseTypes.indexOf('token') !== -1 &&\n !parsedQs.hasOwnProperty('access_token')\n ) {\n return cb(\n error.buildResponse(\n 'invalid_hash',\n 'response_type contains `token`, but the parsed hash does not contain an `access_token` property'\n )\n );\n }\n if (\n responseTypes.length > 0 &&\n responseTypes.indexOf('id_token') !== -1 &&\n !parsedQs.hasOwnProperty('id_token')\n ) {\n return cb(\n error.buildResponse(\n 'invalid_hash',\n 'response_type contains `id_token`, but the parsed hash does not contain an `id_token` property'\n )\n );\n }\n return this.validateAuthenticationResponse(options, parsedQs, cb);\n};\n\n/**\n * Validates an Auth response from a Auth flow started with {@link authorize}\n *\n * Only validates id_tokens signed by Auth0 using the RS256 algorithm using the public key exposed\n * by the `/.well-known/jwks.json` endpoint of your account.\n * Tokens signed with the HS256 algorithm cannot be properly validated.\n * Instead, a call to {@link userInfo} will be made with the parsed `access_token`.\n * If the {@link userInfo} call fails, the {@link userInfo} error will be passed to the callback.\n * Tokens signed with other algorithms will not be accepted.\n *\n * @method validateAuthenticationResponse\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @param {Object} parsedHash an object that represents the parsed hash\n * @param {authorizeCallback} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.validateAuthenticationResponse = function (\n options,\n parsedHash,\n cb\n) {\n var _this = this;\n\n options.__enableIdPInitiatedLogin =\n options.__enableIdPInitiatedLogin || options.__enableImpersonation;\n\n var state = parsedHash.state;\n var transaction = this.transactionManager.getStoredTransaction(state);\n\n var transactionState =\n options.state || (transaction && transaction.state) || null;\n\n var transactionStateMatchesState = transactionState === state;\n\n var shouldBypassStateChecking =\n !state && !transactionState && options.__enableIdPInitiatedLogin;\n\n if (!shouldBypassStateChecking && !transactionStateMatchesState) {\n return cb({\n error: 'invalid_token',\n errorDescription: '`state` does not match.'\n });\n }\n\n var transactionNonce =\n options.nonce || (transaction && transaction.nonce) || null;\n\n var transactionOrganization = transaction && transaction.organization;\n var appState = options.state || (transaction && transaction.appState) || null;\n\n var callback = function (err, payload) {\n if (err) {\n return cb(err);\n }\n\n if (transaction && transaction.lastUsedConnection) {\n var sub;\n\n if (payload) {\n sub = payload.sub;\n }\n\n _this.ssodataStorage.set(transaction.lastUsedConnection, sub);\n }\n\n return cb(null, buildParseHashResponse(parsedHash, appState, payload));\n };\n\n if (!parsedHash.id_token) {\n return callback(null, null);\n }\n\n return this.validateToken(\n parsedHash.id_token,\n transactionNonce,\n function (validationError, payload) {\n if (!validationError) {\n // Verify the organization\n if (transactionOrganization) {\n if (transactionOrganization.indexOf('org_') === 0) {\n if (!payload.org_id) {\n return callback(\n error.invalidToken(\n 'Organization Id (org_id) claim must be a string present in the ID token'\n )\n );\n }\n\n if (payload.org_id !== transactionOrganization) {\n return callback(\n error.invalidToken(\n 'Organization Id (org_id) claim value mismatch in the ID token; expected \"' +\n transactionOrganization +\n '\", found \"' +\n payload.org_id +\n '\"'\n )\n );\n }\n } else {\n if (!payload.org_name) {\n return callback(\n error.invalidToken(\n 'Organization Name (org_name) claim must be a string present in the ID token'\n )\n );\n }\n\n if (payload.org_name !== transactionOrganization.toLowerCase()) {\n return callback(\n error.invalidToken(\n 'Organization Name (org_name) claim value mismatch in the ID token; expected \"' +\n transactionOrganization +\n '\", found \"' +\n payload.org_name +\n '\"'\n )\n );\n }\n }\n }\n\n if (!parsedHash.access_token) {\n return callback(null, payload);\n }\n\n // id_token's generated by non-oidc applications don't have at_hash\n if (!payload.at_hash) {\n return callback(null, payload);\n }\n\n // here we're absolutely sure that the id_token's alg is RS256\n // and that the id_token is valid, so we can check the access_token\n return new IdTokenVerifier().validateAccessToken(\n parsedHash.access_token,\n 'RS256',\n payload.at_hash,\n function (err) {\n if (err) {\n return callback(error.invalidToken(err.message));\n }\n return callback(null, payload);\n }\n );\n }\n\n if (\n validationError.error !== 'invalid_token' ||\n (validationError.errorDescription &&\n validationError.errorDescription.indexOf(\n 'Nonce (nonce) claim value mismatch in the ID token'\n ) > -1)\n ) {\n return callback(validationError);\n }\n\n // if it's an invalid_token error, decode the token\n var decodedToken = new IdTokenVerifier().decode(parsedHash.id_token);\n\n // if the alg is not HS256, return the raw error\n if (decodedToken.header.alg !== 'HS256') {\n return callback(validationError);\n }\n\n if ((decodedToken.payload.nonce || null) !== transactionNonce) {\n return callback({\n error: 'invalid_token',\n errorDescription:\n 'Nonce (nonce) claim value mismatch in the ID token; expected \"' +\n transactionNonce +\n '\", found \"' +\n decodedToken.payload.nonce +\n '\"'\n });\n }\n\n if (!parsedHash.access_token) {\n var noAccessTokenError = {\n error: 'invalid_token',\n description:\n 'The id_token cannot be validated because it was signed with the HS256 algorithm and public clients (like a browser) can’t store secrets. Please read the associated doc for possible ways to fix this. Read more: https://auth0.com/docs/errors/libraries/auth0-js/invalid-token#parsing-an-hs256-signed-id-token-without-an-access-token'\n };\n return callback(noAccessTokenError);\n }\n\n // if the alg is HS256, use the /userinfo endpoint to build the payload\n return _this.client.userInfo(\n parsedHash.access_token,\n function (errUserInfo, profile) {\n // if the /userinfo request fails, use the validationError instead\n if (errUserInfo) {\n return callback(errUserInfo);\n }\n return callback(null, profile);\n }\n );\n }\n );\n};\n\nfunction buildParseHashResponse(qsParams, appState, token) {\n return {\n accessToken: qsParams.access_token || null,\n idToken: qsParams.id_token || null,\n idTokenPayload: token || null,\n appState: appState || null,\n refreshToken: qsParams.refresh_token || null,\n state: qsParams.state || null,\n expiresIn: qsParams.expires_in ? parseInt(qsParams.expires_in, 10) : null,\n tokenType: qsParams.token_type || null,\n scope: qsParams.scope || null\n };\n}\n\n/**\n * @callback validateTokenCallback\n * @param {Error} [err] error returned by while validating the token\n * @param {Object} [payload] claims stored in the token\n */\n\n/**\n * Decodes the a JWT and verifies its nonce value\n *\n * @method validateToken\n * @private\n * @param {String} token\n * @param {String} nonce\n * @param {validateTokenCallback} cb\n */\nWebAuth.prototype.validateToken = function (token, nonce, cb) {\n var verifier = new IdTokenVerifier({\n issuer: this.baseOptions.token_issuer,\n jwksURI: this.baseOptions.jwksURI,\n audience: this.baseOptions.clientID,\n leeway: this.baseOptions.leeway || 60,\n maxAge: this.baseOptions.maxAge,\n __clock: this.baseOptions.__clock || defaultClock\n });\n\n verifier.verify(token, nonce, function (err, payload) {\n if (err) {\n return cb(error.invalidToken(err.message));\n }\n\n cb(null, payload);\n });\n};\n\n/**\n * Executes a silent authentication transaction under the hood in order to fetch a new tokens for the current session.\n * This method requires that all Auth is performed with {@link authorize}\n * Watch out! If you're not using the hosted login page to do social logins, you have to use your own [social connection keys](https://manage.auth0.com/#/connections/social). If you use Auth0's dev keys, you'll always get `login_required` as an error when calling this method.\n *\n * @method renewAuth\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.postMessageDataType] identifier data type to look for in postMessage event data, where events are initiated from silent callback urls, before accepting a message event is the event expected. A value of false means any postMessage event will trigger a callback.\n * @param {String} [options.postMessageOrigin] origin of redirectUri to expect postMessage response from. Defaults to the origin of the receiving window. Only used if usePostMessage is truthy.\n * @param {String} [options.timeout] value in milliseconds used to timeout when the `/authorize` call is failing as part of the silent authentication with postmessage enabled due to a configuration.\n * @param {Boolean} [options.usePostMessage] use postMessage to comunicate between the silent callback and the SPA. When false the SDK will attempt to parse the url hash should ignore the url hash and no extra behaviour is needed\n * @param {authorizeCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renewAuth = function (options, cb) {\n var handler;\n var usePostMessage = !!options.usePostMessage;\n var postMessageDataType = options.postMessageDataType || false;\n var postMessageOrigin =\n options.postMessageOrigin || windowHelper.getWindow().origin;\n var timeout = options.timeout;\n var _this = this;\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'responseType',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n params.responseType = params.responseType || 'token';\n params.responseMode = params.responseMode || 'fragment';\n params = this.transactionManager.process(params);\n\n assert.check(params, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n params.prompt = 'none';\n\n params = objectHelper.blacklist(params, [\n 'usePostMessage',\n 'tenant',\n 'postMessageDataType',\n 'postMessageOrigin'\n ]);\n\n handler = SilentAuthenticationHandler.create({\n authenticationUrl: this.client.buildAuthorizeUrl(params),\n postMessageDataType: postMessageDataType,\n postMessageOrigin: postMessageOrigin,\n timeout: timeout\n });\n\n handler.login(usePostMessage, function (err, hash) {\n if (typeof hash === 'object') {\n // hash was already parsed, so we just return it.\n // it's here to be backwards compatible and should be removed in the next major version.\n return cb(err, hash);\n }\n _this.parseHash({ hash: hash }, cb);\n });\n};\n\n/**\n * Renews an existing session on Auth0's servers using `response_mode=web_message`\n *\n * Allows you to acquire a new token from Auth0 for a user who already\n * has an SSO session established against Auth0 for your domain. \n * If the user is not authenticated, the authentication result will be empty \n * and you'll receive an error like this: `{error: 'login_required'}`.\n * The method accepts any valid OAuth2 parameters that would normally be sent to `/authorize`.\n * \n * Everything happens inside an iframe, so it will not reload your application or redirect away from it.\n * \n * **Important:** If you're not using the hosted login page to do social logins, \n * you have to use your own [social connection keys](https://manage.auth0.com/#/connections/social). \n * If you use Auth0's dev keys, you'll always get `login_required` as an error when calling `checkSession`.\n *\n * **Important:** Because there is no redirect in this method, `responseType: 'code'` is not supported and will throw an error.\n\n * Remember to add the URL where the authorization request originates from to the Allowed Web Origins list of your Auth0 Application in the [Dashboard](https://manage.auth0.com/) under your Applications's **Settings**.\n * @example\n * auth0.checkSession({\n * audience: 'https://mystore.com/api/v2',\n * scope: 'read:order write:order'\n * },\n * function(err, authResult) {\n * // Authentication tokens or error\n * });\n * \n * @method checkSession\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.timeout] value in milliseconds used to timeout when the `/authorize` call is failing as part of the silent authentication with postmessage enabled due to a configuration.\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {checkSessionCallback} cb\n * @see {@link https://auth0.com/docs/libraries/auth0js/v9#using-checksession-to-acquire-new-tokens}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.checkSession = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n if (params.responseType === 'code') {\n return cb({\n error: 'error',\n error_description: \"responseType can't be `code`\"\n });\n }\n\n if (!options.nonce) {\n params = this.transactionManager.process(params);\n }\n\n if (!params.redirectUri) {\n return cb({\n error: 'error',\n error_description: \"redirectUri can't be empty\"\n });\n }\n\n assert.check(params, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n params = objectHelper.blacklist(params, [\n 'usePostMessage',\n 'tenant',\n 'postMessageDataType'\n ]);\n this.webMessageHandler.run(\n params,\n responseHandler(cb, { forceLegacyError: true, ignoreCasing: true })\n );\n};\n\n/**\n * Request an email with instruction to change a user's password\n *\n * @method changePassword\n * @param {Object} options\n * @param {String} options.email address where the user will receive the change password email. It should match the user's email in Auth0\n * @param {String} options.connection name of the connection where the user was created\n * @param {changePasswordCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#change-password}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.changePassword = function (options, cb) {\n return this.client.dbConnection.changePassword(options, cb);\n};\n\n/**\n * Starts a passwordless authentication transaction.\n *\n * @method passwordlessStart\n * @param {Object} options\n * @param {String} options.send what will be sent via email which could be `link` or `code`. For SMS `code` is the only one valid\n * @param {String} [options.phoneNumber] phone number where to send the `code`. This parameter is mutually exclusive with `email`\n * @param {String} [options.email] email where to send the `code` or `link`. This parameter is mutually exclusive with `phoneNumber`\n * @param {String} [options.captcha] the attempted solution for the captcha, if one was presented\n * @param {String} options.connection name of the passwordless connection\n * @param {Object} [options.authParams] additional Auth parameters when using `link`\n * @param {Object} [options.xRequestLanguage] value for the X-Request-Language header. If not set, the language is detected using the client browser.\n * @param {Function} cb\n * @see {@link https://auth0.com/docs/api/authentication#passwordless}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessStart = function (options, cb) {\n var authParams = objectHelper\n .merge(this.baseOptions, [\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options.authParams);\n\n options.authParams = this.transactionManager.process(authParams);\n return this.client.passwordless.start(options, cb);\n};\n\n/**\n * Creates a new user in a Auth0 Database connection\n *\n * @method signup\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {String} [options.given_name] The user's given name(s).\n * @param {String} [options.family_name] The user's family name(s).\n * @param {String} [options.name] The user's full name.\n * @param {String} [options.nickname] The user's nickname.\n * @param {String} [options.picture] A URI pointing to the user's picture.\n * @param {signUpCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.signup = function (options, cb) {\n return this.client.dbConnection.signup(options, cb);\n};\n\n/**\n * Redirects to the hosted login page (`/authorize`) in order to start a new authN/authZ transaction.\n * After that, you'll have to use the {@link parseHash} function at the specified `redirectUri`.\n *\n * @example\n * auth0.authorize({\n * audience: 'https://mystore.com/api/v2',\n * scope: 'read:order write:order',\n * responseType: 'token',\n * redirectUri: 'https://example.com/auth/callback'\n *});\n * @method authorize\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`. Defaults to `openid profile email`.\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Object} [options.appState] any values that you want back on the authentication response\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.authorize = function (options) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'organization',\n 'invitation'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n params = this.transactionManager.process(params);\n params.scope = params.scope || 'openid profile email';\n\n windowHelper.redirect(this.client.buildAuthorizeUrl(params));\n};\n\n/**\n * Signs up a new user, automatically logs the user in after the signup and returns the user token.\n * The login will be done using /oauth/token with password-realm grant type.\n *\n * @method signupAndAuthorize\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {tokenCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @see {@link https://auth0.com/docs/api-auth/grant/password}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.signupAndAuthorize = function (options, cb) {\n var _this = this;\n\n return this.client.dbConnection.signup(\n objectHelper.blacklist(options, ['popupHandler']),\n function (err) {\n if (err) {\n return cb(err);\n }\n options.realm = options.connection;\n if (!options.username) {\n options.username = options.email;\n }\n _this.client.login(options, cb);\n }\n );\n};\n\n/**\n * @callback crossOriginLoginCallback\n * @param {Error} [err] Authentication error returned by Auth0 with the reason why the request failed\n */\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Logs the user in with username and password using the correct flow based on where it's called from:\n * - If you're calling this method from the Universal Login Page, it will use the usernamepassword/login endpoint\n * - If you're calling this method outside the Universal Login Page, it will use the cross origin authentication (/co/authenticate) flow\n * You can use either `username` or `email` to identify the user, but `username` will take precedence over `email`.\n * After the redirect to `redirectUri`, use {@link parseHash} to retrieve the authentication data.\n * **Notice that when using the cross origin authentication flow, some browsers might not be able to successfully authenticate if 3rd party cookies are disabled. [See here for more information.]{@link https://auth0.com/docs/cross-origin-authentication}.**\n *\n * @method login\n * @see Requires [`Implicit` grant]{@link https://auth0.com/docs/api-auth/grant/implicit}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} [options.username] Username (mutually exclusive with email)\n * @param {String} [options.email] Email (mutually exclusive with username)\n * @param {String} [options.password] Password\n * @param {String} [options.realm] Realm used to authenticate the user, it can be a realm name or a database connection name\n * @param {String} [options.captcha] the attempted solution for the captcha, if one was presented\n * @param {onRedirectingCallback} [options.onRedirecting] Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.login = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting',\n 'organization',\n 'invitation'\n ])\n .with(options);\n\n params = this.transactionManager.process(params);\n\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n\n if (isHostedLoginPage) {\n params.connection = params.realm;\n delete params.realm;\n this._universalLogin.login(params, cb);\n } else {\n this.crossOriginAuthentication.login(params, cb);\n }\n};\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Logs in the user by verifying the verification code (OTP) using the cross origin authentication (/co/authenticate) flow. You can use either `phoneNumber` or `email` to identify the user.\n * This only works when 3rd party cookies are enabled in the browser. After the /co/authenticate call, you'll have to use the {@link parseHash} function at the `redirectUri` specified in the constructor.\n *\n * @method passwordlessLogin\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} options.phoneNumber Phone Number (mutually exclusive with email)\n * @param {String} options.email Email (mutually exclusive with username)\n * @param {String} options.verificationCode Verification Code (OTP)\n * @param {String} options.connection Passwordless connection to use. It can either be 'sms' or 'email'.\n * @param {onRedirectingCallback} options.onRedirecting Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessLogin = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting'\n ])\n .with(options);\n\n params = this.transactionManager.process(params);\n\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n\n if (isHostedLoginPage) {\n this.passwordlessVerify(params, cb);\n } else {\n var crossOriginOptions = objectHelper.extend(\n {\n credentialType: 'http://auth0.com/oauth/grant-type/passwordless/otp',\n realm: params.connection,\n username: params.email || params.phoneNumber,\n otp: params.verificationCode\n },\n objectHelper.blacklist(params, [\n 'connection',\n 'email',\n 'phoneNumber',\n 'verificationCode'\n ])\n );\n\n this.crossOriginAuthentication.login(crossOriginOptions, cb);\n }\n};\n\n/**\n * Runs the callback code for the cross origin authentication call. This method is meant to be called by the cross origin authentication callback url.\n *\n * @method crossOriginAuthenticationCallback\n * @deprecated Use {@link crossOriginVerification} instead.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.crossOriginAuthenticationCallback = function () {\n this.crossOriginVerification();\n};\n\n/**\n * Runs the callback code for the cross origin authentication call. This method is meant to be called by the cross origin authentication callback url.\n *\n * @method crossOriginVerification\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.crossOriginVerification = function () {\n this.crossOriginAuthentication.callback();\n};\n\n/**\n * Redirects to the auth0 logout endpoint\n *\n * If you want to navigate the user to a specific URL after the logout, set that URL at the returnTo parameter. The URL should be included in any the appropriate Allowed Logout URLs list:\n *\n * - If the client_id parameter is included, the returnTo URL must be listed in the Allowed Logout URLs set at the Auth0 Application level (see Setting Allowed Logout URLs at the App Level).\n * - If the client_id parameter is NOT included, the returnTo URL must be listed in the Allowed Logout URLs set at the account level (see Setting Allowed Logout URLs at the Account Level).\n *\n * @method logout\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.returnTo] URL to be redirected after the logout\n * @param {Boolean} [options.federated] tells Auth0 if it should logout the user also from the IdP.\n * @see {@link https://auth0.com/docs/api/authentication#logout}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.logout = function (options) {\n windowHelper.redirect(this.client.buildLogoutUrl(options));\n};\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Verifies the passwordless TOTP and redirects to finish the passwordless transaction\n *\n * @method passwordlessVerify\n * @param {Object} options\n * @param {String} options.type `sms` or `email`\n * @param {String} options.phoneNumber only if type = sms\n * @param {String} options.email only if type = email\n * @param {String} options.connection the connection name\n * @param {String} options.verificationCode the TOTP code\n * @param {String} options.clientID the client ID\n * @param {onRedirectingCallback} options.onRedirecting Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {Function} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessVerify = function (options, cb) {\n var _this = this;\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n params = this.transactionManager.process(params);\n\n return this.client.passwordless.verify(params, function (err) {\n if (err) {\n return cb(err);\n }\n\n function doAuth() {\n windowHelper.redirect(_this.client.passwordless.buildVerifyUrl(params));\n }\n\n if (typeof options.onRedirecting === 'function') {\n return options.onRedirecting(function () {\n doAuth();\n });\n }\n\n doAuth();\n });\n};\n\n/**\n * @callback captchaLoadedCallback\n * @param {Error} [error] Error returned if request to get captcha challenge fails\n * @param {Object} [payload] An object containing a callback to trigger the captcha (only if Arkose is the provider)\n * @param {Function} [payload.triggerCaptcha] Triggers the captcha with the first parameter as a callback to be fired after it's solved\n */\n\n/**\n *\n * Renders the captcha challenge in the provided element.\n * This function can only be used in the context of a Classic Universal Login Page.\n *\n * @method renderCaptcha\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for the captcha provider\n * @param {captchaLoadedCallback} [callback] An optional callback called after captcha is loaded\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renderCaptcha = function (element, options, callback) {\n return captcha.render(this.client, captcha.Flow.DEFAULT, element, options, callback);\n};\n\n/**\n *\n * Renders the passwordless captcha challenge in the provided element.\n * This function can only be used in the context of a Classic Universal Login Page.\n *\n * @method renderPasswordlessCaptcha\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for the captcha provider\n * @param {captchaLoadedCallback} [callback] An optional callback called after captcha is loaded\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renderPasswordlessCaptcha = function (\n element,\n options,\n callback\n) {\n return captcha.render(this.client, captcha.Flow.PASSWORDLESS, element, options, callback);\n};\n\n/**\n *\n * Renders the password reset captcha challenge in the provided element.\n * This function can only be used in the context of a Classic Universal Login Page.\n *\n * @method renderPasswordResetCaptcha\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for the captcha provider\n * @param {captchaLoadedCallback} [callback] An optional callback called after captcha is loaded\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renderPasswordResetCaptcha = function (\n element,\n options,\n callback\n) {\n return captcha.render(this.client, captcha.Flow.PASSWORD_RESET, element, options, callback);\n};\n\nexport default WebAuth;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport qs from 'qs';\nimport responseHandler from '../helper/response-handler';\n\nfunction PasswordlessAuthentication(request, options) {\n this.baseOptions = options;\n this.request = request;\n}\n\nPasswordlessAuthentication.prototype.buildVerifyUrl = function(options) {\n var params;\n var qString;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n verificationCode: {\n type: 'string',\n message: 'verificationCode option is required'\n },\n phoneNumber: {\n optional: false,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return !o.email;\n }\n },\n email: {\n optional: false,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return !o.phoneNumber;\n }\n }\n }\n );\n /* eslint-enable */\n\n params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'protocol',\n 'nonce'\n ])\n .with(options);\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n params = objectHelper.toSnakeCase(params, ['auth0Client']);\n\n qString = qs.stringify(params);\n\n return urljoin(\n this.baseOptions.rootUrl,\n 'passwordless',\n 'verify_redirect',\n '?' + qString\n );\n};\n\nPasswordlessAuthentication.prototype.start = function(options, cb) {\n var url;\n var body;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n send: {\n type: 'string',\n message: 'send option is required',\n values: ['link', 'code'],\n value_message: 'send is not valid ([link, code])'\n },\n phoneNumber: {\n optional: true,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return o.send === 'code' || !o.email;\n }\n },\n email: {\n optional: true,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return o.send === 'link' || !o.phoneNumber;\n }\n },\n authParams: {\n optional: true,\n type: 'object',\n message: 'authParams option is required'\n }\n }\n );\n /* eslint-enable */\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'start');\n\n var xRequestLanguage = options.xRequestLanguage;\n delete options.xRequestLanguage;\n\n body = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope'\n ])\n .with(options);\n\n if (body.scope) {\n body.authParams = body.authParams || {};\n body.authParams.scope = body.authParams.scope || body.scope;\n }\n\n if (body.redirectUri) {\n body.authParams = body.authParams || {};\n body.authParams.redirect_uri =\n body.authParams.redirectUri || body.redirectUri;\n }\n\n if (body.responseType) {\n body.authParams = body.authParams || {};\n body.authParams.response_type =\n body.authParams.responseType || body.responseType;\n }\n\n delete body.redirectUri;\n delete body.responseType;\n delete body.scope;\n\n body = objectHelper.toSnakeCase(body, ['auth0Client', 'authParams']);\n\n var postOptions = xRequestLanguage\n ? { xRequestLanguage: xRequestLanguage }\n : undefined;\n\n return this.request\n .post(url, postOptions)\n .send(body)\n .end(responseHandler(cb));\n};\n\nPasswordlessAuthentication.prototype.verify = function(options, cb) {\n var url;\n var cleanOption;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n verificationCode: {\n type: 'string',\n message: 'verificationCode option is required'\n },\n phoneNumber: {\n optional: false,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return !o.email;\n }\n },\n email: {\n optional: false,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return !o.phoneNumber;\n }\n }\n }\n );\n /* eslint-enable */\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n cleanOption = objectHelper.pick(options, [\n 'connection',\n 'verificationCode',\n 'phoneNumber',\n 'email',\n 'auth0Client',\n 'clientID'\n ]);\n cleanOption = objectHelper.toSnakeCase(cleanOption, ['auth0Client']);\n\n url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'verify');\n\n return this.request\n .post(url)\n .send(cleanOption)\n .end(responseHandler(cb));\n};\n\n/**\n * Makes a call to the `/passwordless/challenge` endpoint\n * and returns the challenge (captcha) if necessary.\n *\n * @method getChallenge\n * @param {callback} cb\n * @memberof PasswordlessAuthentication.prototype\n */\nPasswordlessAuthentication.prototype.getChallenge = function(cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default PasswordlessAuthentication;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\n\nfunction DBConnection(request, options) {\n this.baseOptions = options;\n this.request = request;\n}\n\n/**\n * @callback signUpCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the signup failed\n * @param {Object} [result] result of the signup request\n * @param {Object} result.email user's email\n * @param {Object} result.emailVerified if the user's email was verified\n * @ignore\n */\n\n/**\n * Creates a new user in a Auth0 Database connection\n *\n * @method signup\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} [options.username] user desired username. Required if you use a database connection and you have enabled `Requires Username`\n * @param {String} [options.given_name] The user's given name(s).\n * @param {String} [options.family_name] The user's family name(s).\n * @param {String} [options.name] The user's full name.\n * @param {String} [options.nickname] The user's nickname.\n * @param {String} [options.picture] A URI pointing to the user's picture.\n * @param {String} options.connection name of the connection where the user will be created\n * @param {Object} [options.user_metadata] additional signup attributes used for creating the user. Will be stored in `user_metadata`\n * @param {signUpCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @ignore\n */\nDBConnection.prototype.signup = function (options, cb) {\n var url;\n var body;\n var metadata;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n email: { type: 'string', message: 'email option is required' },\n password: { type: 'string', message: 'password option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'signup');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'state'])\n .with(options);\n\n metadata = body.user_metadata || body.userMetadata;\n\n body = objectHelper.blacklist(body, [\n 'scope',\n 'userMetadata',\n 'user_metadata'\n ]);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n if (metadata) {\n body.user_metadata = metadata;\n }\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * @callback changePasswordCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the request failed\n * @ignore\n */\n\n/**\n * Request an email with instruction to change a user's password\n *\n * @method changePassword\n * @param {Object} options\n * @param {String} options.email address where the user will receive the change password email. It should match the user's email in Auth0\n * @param {String} options.connection name of the connection where the user was created\n * @param {changePasswordCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#change-password}\n * @ignore\n */\nDBConnection.prototype.changePassword = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n email: { type: 'string', message: 'email option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'change_password');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'state'])\n .with(options, ['email', 'connection', 'captcha']);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\nDBConnection.prototype.getPasswordResetChallenge = function (cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'change_password', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default DBConnection;\n","import urljoin from 'url-join';\nimport qs from 'qs';\n\nimport RequestBuilder from '../helper/request-builder';\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport SSODataStorage from '../helper/ssodata';\nimport windowHelper from '../helper/window';\nimport responseHandler from '../helper/response-handler';\nimport parametersWhitelist from '../helper/parameters-whitelist';\nimport Warn from '../helper/warn';\nimport WebAuth from '../web-auth/index';\nimport PasswordlessAuthentication from './passwordless-authentication';\nimport DBConnection from './db-connection';\n\n/**\n * Creates a new Auth0 Authentication API client\n * @constructor\n * @param {Object} options\n * @param {String} options.domain your Auth0 domain\n * @param {String} options.clientID the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.cookieDomain] The domain the cookie is accessible from. If not set, the cookie is scoped to the current domain, including the subdomain. To keep a user logged in across multiple subdomains set this to your top-level domain and prefixed with a `.` (eg: `.example.com`).\n * @see {@link https://auth0.com/docs/api/authentication}\n */\nfunction Authentication(auth0, options) {\n // If we have two arguments, the first one is a WebAuth instance, so we assign that\n // if not, it's an options object and then we should use that as options instead\n // this is here because we don't want to break people coming from v8\n if (arguments.length === 2) {\n this.auth0 = auth0;\n } else {\n options = auth0;\n }\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n clientID: { type: 'string', message: 'clientID option is required' },\n responseType: {\n optional: true,\n type: 'string',\n message: 'responseType is not valid'\n },\n responseMode: {\n optional: true,\n type: 'string',\n message: 'responseMode is not valid'\n },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri is not valid'\n },\n scope: { optional: true, type: 'string', message: 'scope is not valid' },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience is not valid'\n },\n _disableDeprecationWarnings: {\n optional: true,\n type: 'boolean',\n message: '_disableDeprecationWarnings option is not valid'\n },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n }\n }\n );\n /* eslint-enable */\n\n this.baseOptions = options;\n this.baseOptions._sendTelemetry =\n this.baseOptions._sendTelemetry === false\n ? this.baseOptions._sendTelemetry\n : true;\n\n this.baseOptions.rootUrl =\n this.baseOptions.domain &&\n this.baseOptions.domain.toLowerCase().indexOf('http') === 0\n ? this.baseOptions.domain\n : 'https://' + this.baseOptions.domain;\n\n this.request = new RequestBuilder(this.baseOptions);\n\n this.passwordless = new PasswordlessAuthentication(\n this.request,\n this.baseOptions\n );\n this.dbConnection = new DBConnection(this.request, this.baseOptions);\n\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n this.ssodataStorage = new SSODataStorage(this.baseOptions);\n}\n\n/**\n * Builds and returns the `/authorize` url in order to initialize a new authN/authZ transaction\n *\n * @method buildAuthorizeUrl\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @see {@link https://auth0.com/docs/api/authentication#social}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.buildAuthorizeUrl = function (options) {\n var params;\n var qString;\n\n assert.check(options, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n\n params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience'\n ])\n .with(options);\n\n /* eslint-disable */\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n clientID: { type: 'string', message: 'clientID option is required' },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri option is required'\n },\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n },\n nonce: {\n type: 'string',\n message: 'nonce option is required',\n condition: function (o) {\n return (\n o.responseType.indexOf('code') === -1 &&\n o.responseType.indexOf('id_token') !== -1\n );\n }\n },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n /* eslint-enable */\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n if (params.connection_scope && assert.isArray(params.connection_scope)) {\n params.connection_scope = params.connection_scope.join(',');\n }\n\n params = objectHelper.blacklist(params, [\n 'username',\n 'popupOptions',\n 'domain',\n 'tenant',\n 'timeout',\n 'appState'\n ]);\n params = objectHelper.toSnakeCase(params, ['auth0Client']);\n params = parametersWhitelist.oauthAuthorizeParams(this.warn, params);\n\n qString = qs.stringify(params);\n\n return urljoin(this.baseOptions.rootUrl, 'authorize', '?' + qString);\n};\n\n/**\n * Builds and returns the Logout url in order to initialize a new authN/authZ transaction\n *\n * If you want to navigate the user to a specific URL after the logout, set that URL at the returnTo parameter. The URL should be included in any the appropriate Allowed Logout URLs list:\n *\n * - If the client_id parameter is included, the returnTo URL must be listed in the Allowed Logout URLs set at the Auth0 Application level (see Setting Allowed Logout URLs at the App Level).\n * - If the client_id parameter is NOT included, the returnTo URL must be listed in the Allowed Logout URLs set at the account level (see Setting Allowed Logout URLs at the Account Level).\n * @method buildLogoutUrl\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.returnTo] URL to be redirected after the logout\n * @param {Boolean} [options.federated] tells Auth0 if it should logout the user also from the IdP.\n * @see {@link https://auth0.com/docs/api/authentication#logout}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.buildLogoutUrl = function (options) {\n var params;\n var qString;\n\n assert.check(options, {\n optional: true,\n type: 'object',\n message: 'options parameter is not valid'\n });\n\n params = objectHelper\n .merge(this.baseOptions, ['clientID'])\n .with(options || {});\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n params = objectHelper.toSnakeCase(params, ['auth0Client', 'returnTo']);\n\n qString = qs.stringify(objectHelper.blacklist(params, ['federated']));\n if (\n options &&\n options.federated !== undefined &&\n options.federated !== false &&\n options.federated !== 'false'\n ) {\n qString += '&federated';\n }\n\n return urljoin(this.baseOptions.rootUrl, 'v2', 'logout', '?' + qString);\n};\n\n/**\n * @callback authorizeCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the Auth request. If there is no token available, this value will be null.\n * @param {String} [result.accessToken] token that allows access to the specified resource server (identified by the audience parameter or by default Auth0's /userinfo endpoint)\n * @param {Number} [result.expiresIn] number of seconds until the access token expires\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @param {Object} [result.appState] values that you receive back on the authentication response\n * @memberof Authentication.prototype\n */\n\n/**\n * @callback tokenCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the Auth request\n * @param {String} result.accessToken token that allows access to the specified resource server (identified by the audience parameter or by default Auth0's /userinfo endpoint)\n * @param {Number} result.expiresIn number of seconds until the access token expires\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `oauth/token` endpoint with `password` grant type to login to the default directory.\n *\n * @method loginWithDefaultDirectory\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {tokenCallback} cb function called with the result of the request\n * @see Requires [`password` grant]{@link https://auth0.com/docs/api-auth/grant/password}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.loginWithDefaultDirectory = function (options, cb) {\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n options.grantType = 'password';\n\n return this.oauthToken(options, cb);\n};\n\n/**\n * Makes a call to the `oauth/token` endpoint with `password-realm` grant type\n *\n * @method login\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} options.realm the HRD domain or the connection name where the user belongs to. e.g. `Username-Password-Authentication`\n * @param {tokenCallback} cb function called with the result of the request\n * @see Requires [`http://auth0.com/oauth/grant-type/password-realm` grant]{@link https://auth0.com/docs/api-auth/grant/password#realm-support}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.login = function (options, cb) {\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n realm: { type: 'string', message: 'realm option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n options.grantType = 'http://auth0.com/oauth/grant-type/password-realm';\n\n return this.oauthToken(options, cb);\n};\n\n/**\n * Makes a call to the `oauth/token` endpoint\n *\n * @method oauthToken\n * @private\n */\nAuthentication.prototype.oauthToken = function (options, cb) {\n var url;\n var body;\n\n assert.check(options, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'oauth', 'token');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'scope', 'audience'])\n .with(options);\n\n assert.check(\n body,\n { type: 'object', message: 'options parameter is not valid' },\n {\n clientID: { type: 'string', message: 'clientID option is required' },\n grantType: { type: 'string', message: 'grantType option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n body = parametersWhitelist.oauthTokenParams(this.warn, body);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Performs authentication calling `/oauth/ro` endpoint with username\n * and password for a given connection name.\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link login} or {@link loginWithDefaultDirectory}.\n *\n * @method loginWithResourceOwner\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {Object} options.connection the connection name where the user belongs to. e.g. `Username-Password-Authentication`\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.device] name of the device/browser where the Auth was requested\n * @param {tokenCallback} cb function called with the result of the request\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.loginWithResourceOwner = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n connection: { type: 'string', message: 'connection option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'oauth', 'ro');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'scope'])\n .with(options, ['username', 'password', 'scope', 'connection', 'device']);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n body.grant_type = body.grant_type || 'password';\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Uses {@link checkSession} and localStorage to return data from the last successful authentication request.\n *\n * @method getSSOData\n * @param {Boolean} withActiveDirectories this parameter is not used anymore. It's here to be backward compatible\n * @param {Function} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getSSOData = function (withActiveDirectories, cb) {\n /* istanbul ignore if */\n if (!this.auth0) {\n this.auth0 = new WebAuth(this.baseOptions);\n }\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n if (isHostedLoginPage) {\n return this.auth0._universalLogin.getSSOData(withActiveDirectories, cb);\n }\n if (typeof withActiveDirectories === 'function') {\n cb = withActiveDirectories;\n }\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n var clientId = this.baseOptions.clientID;\n var ssodataInformation = this.ssodataStorage.get() || {};\n\n this.auth0.checkSession(\n {\n responseType: 'token id_token',\n scope: 'openid profile email',\n connection: ssodataInformation.lastUsedConnection,\n timeout: 5000\n },\n function (err, result) {\n if (err) {\n if (err.error === 'login_required') {\n return cb(null, { sso: false });\n }\n if (err.error === 'consent_required') {\n err.error_description =\n 'Consent required. When using `getSSOData`, the user has to be authenticated with the following scope: `openid profile email`.';\n }\n return cb(err, { sso: false });\n }\n if (\n ssodataInformation.lastUsedSub &&\n ssodataInformation.lastUsedSub !== result.idTokenPayload.sub\n ) {\n return cb(err, { sso: false });\n }\n return cb(null, {\n lastUsedConnection: {\n name: ssodataInformation.lastUsedConnection\n },\n lastUsedUserID: result.idTokenPayload.sub,\n lastUsedUsername:\n result.idTokenPayload.email || result.idTokenPayload.name,\n lastUsedClientID: clientId,\n sessionClients: [clientId],\n sso: true\n });\n }\n );\n};\n\n/**\n * @callback userInfoCallback\n * @param {Error} [err] error returned by Auth0\n * @param {Object} [userInfo] user information\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `/userinfo` endpoint and returns the user profile\n *\n * @method userInfo\n * @param {String} accessToken token issued to a user after Auth\n * @param {userInfoCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#get-user-info}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.userInfo = function (accessToken, cb) {\n var url;\n\n assert.check(accessToken, {\n type: 'string',\n message: 'accessToken parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'userinfo');\n\n return this.request\n .get(url)\n .set('Authorization', 'Bearer ' + accessToken)\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Makes a call to the `/usernamepassword/challenge` endpoint\n * and returns the challenge (captcha) if necessary.\n *\n * @method getChallenge\n * @param {callback} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getChallenge = function (cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'usernamepassword', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * @callback delegationCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the delegation failed\n * @param {Object} [result] result of the delegation request. The payload depends on what ai type was used\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `/delegation` endpoint with either an `id_token` or `refresh_token`\n *\n * @method delegation\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.grantType grant type used for delegation. The only valid value is `urn:ietf:params:oauth:grant-type:jwt-bearer`\n * @param {String} [options.idToken] valid token of the user issued after Auth. If no `refresh_token` is provided this parameter is required\n * @param {String} [options.refreshToken] valid refresh token of the user issued after Auth. If no `id_token` is provided this parameter is required\n * @param {String} [options.target] the target ClientID of the delegation\n * @param {String} [options.scope] either `openid` or `openid profile email`\n * @param {String} [options.apiType] the api to be called\n * @param {delegationCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#delegation}\n * @see Requires [http://auth0.com/oauth/grant-type/password-realm]{@link https://auth0.com/docs/api-auth/grant/password#realm-support}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.delegation = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n grant_type: { type: 'string', message: 'grant_type option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'delegation');\n\n body = objectHelper.merge(this.baseOptions, ['clientID']).with(options);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Fetches the user country based on the ip.\n *\n * @method getUserCountry\n * @private\n * @param {Function} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getUserCountry = function (cb) {\n var url;\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'user', 'geoloc', 'country');\n\n return this.request.get(url).end(responseHandler(cb));\n};\n\nexport default Authentication;\n","import urljoin from 'url-join';\n\nimport RequestBuilder from '../helper/request-builder';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\n\n/**\n * Auth0 Management API Client (methods allowed to be called from the browser only)\n * @constructor\n * @param {Object} options\n * @param {Object} options.domain your Auth0 acount domain\n * @param {Object} options.token a valid API token\n */\nfunction Management(options) {\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n token: { type: 'string', message: 'token option is required' },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n }\n }\n );\n /* eslint-enable */\n\n this.baseOptions = options;\n\n this.baseOptions.headers = {\n Authorization: 'Bearer ' + this.baseOptions.token\n };\n\n this.request = new RequestBuilder(this.baseOptions);\n this.baseOptions.rootUrl = urljoin(\n 'https://' + this.baseOptions.domain,\n 'api',\n 'v2'\n );\n}\n\n/**\n * @callback userCallback\n * @param {Error} [err] failure reason for the failed request to Management API\n * @param {Object} [result] user profile\n * @memberof Management.prototype\n */\n\n/**\n * Returns the user profile\n *\n * @method getUser\n * @param {String} userId identifier of the user to retrieve\n * @param {userCallback} cb\n * @see https://auth0.com/docs/api/management/v2#!/Users/get_users_by_id\n * @memberof Management.prototype\n */\nManagement.prototype.getUser = function(userId, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request.get(url).end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Updates the user metdata. It will patch the user metdata with the attributes sent.\n *\n *\n * @method patchUserMetadata\n * @param {String} userId\n * @param {Object} userMetadata\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id}\n * @memberof Management.prototype\n */\nManagement.prototype.patchUserMetadata = function(userId, userMetadata, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(userMetadata, {\n type: 'object',\n message: 'userMetadata parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request\n .patch(url)\n .send({ user_metadata: userMetadata })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Updates the user attributes. It will patch the user attributes that the server allows it.\n *\n * @method patchUserAttributes\n * @param {String} userId\n * @param {Object} user\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id}\n * @memberof Management.prototype\n */\nManagement.prototype.patchUserAttributes = function(userId, user, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(user, {\n type: 'object',\n message: 'user parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request\n .patch(url)\n .send(user)\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Link two users\n *\n * @method linkUser\n * @param {String} userId\n * @param {String} secondaryUserToken\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/post_identities}\n * @memberof Management.prototype\n */\nManagement.prototype.linkUser = function(userId, secondaryUserToken, cb) {\n var url;\n /* eslint-disable */\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(secondaryUserToken, {\n type: 'string',\n message: 'secondaryUserToken parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n /* eslint-enable */\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId, 'identities');\n\n return this.request\n .post(url)\n .send({ link_with: secondaryUserToken })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default Management;\n","import Authentication from './authentication';\nimport Management from './management';\nimport WebAuth from './web-auth';\nimport version from './version';\n\nexport { Authentication, Management, WebAuth, version };\n\nexport default {\n Authentication: Authentication,\n Management: Management,\n WebAuth: WebAuth,\n version: version\n};\n"],"names":["context","definition","this","normalize","strArray","resultArray","length","TypeError","match","first","shift","replace","i","component","push","str","join","parts","split","arguments","slice","call","module","exports","origSymbol","Symbol","test","foo","$Object","Object","ERROR_MESSAGE","toStr","prototype","toString","max","Math","concatty","a","b","arr","j","slicy","arrLike","offset","joiny","joiner","Function","bind","that","target","apply","bound","args","binder","result","boundLength","boundArgs","Empty","hasOwnProperty","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","e","$gOPD","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","calleeThrows","get","gOPDthrows","hasSymbols","getOwnPropertySymbols","iterator","obj","sym","symObj","keys","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","value","enumerable","hasSymbolSham","hasProto","__proto__","getProto","getPrototypeOf","x","needsEval","TypedArray","Uint8Array","undefined","INTRINSICS","%AggregateError%","AggregateError","%Array%","Array","%ArrayBuffer%","ArrayBuffer","%ArrayIteratorPrototype%","%AsyncFromSyncIteratorPrototype%","%AsyncFunction%","%AsyncGenerator%","%AsyncGeneratorFunction%","%AsyncIteratorPrototype%","%Atomics%","Atomics","%BigInt%","BigInt","%BigInt64Array%","BigInt64Array","%BigUint64Array%","BigUint64Array","%Boolean%","Boolean","%DataView%","DataView","%Date%","Date","%decodeURI%","decodeURI","%decodeURIComponent%","decodeURIComponent","%encodeURI%","encodeURI","%encodeURIComponent%","encodeURIComponent","%Error%","Error","%eval%","eval","%EvalError%","EvalError","%Float32Array%","Float32Array","%Float64Array%","Float64Array","%FinalizationRegistry%","FinalizationRegistry","%Function%","%GeneratorFunction%","%Int8Array%","Int8Array","%Int16Array%","Int16Array","%Int32Array%","Int32Array","%isFinite%","isFinite","%isNaN%","isNaN","%IteratorPrototype%","%JSON%","JSON","%Map%","Map","%MapIteratorPrototype%","%Math%","%Number%","Number","%Object%","%parseFloat%","parseFloat","%parseInt%","parseInt","%Promise%","Promise","%Proxy%","Proxy","%RangeError%","RangeError","%ReferenceError%","ReferenceError","%Reflect%","Reflect","%RegExp%","RegExp","%Set%","Set","%SetIteratorPrototype%","%SharedArrayBuffer%","SharedArrayBuffer","%String%","String","%StringIteratorPrototype%","%Symbol%","%SyntaxError%","%ThrowTypeError%","%TypedArray%","%TypeError%","%Uint8Array%","%Uint8ClampedArray%","Uint8ClampedArray","%Uint16Array%","Uint16Array","%Uint32Array%","Uint32Array","%URIError%","URIError","%WeakMap%","WeakMap","%WeakRef%","WeakRef","%WeakSet%","WeakSet","error","errorProto","LEGACY_ALIASES","%ArrayBufferPrototype%","%ArrayPrototype%","%ArrayProto_entries%","%ArrayProto_forEach%","%ArrayProto_keys%","%ArrayProto_values%","%AsyncFunctionPrototype%","%AsyncGeneratorPrototype%","%BooleanPrototype%","%DataViewPrototype%","%DatePrototype%","%ErrorPrototype%","%EvalErrorPrototype%","%Float32ArrayPrototype%","%Float64ArrayPrototype%","%FunctionPrototype%","%Generator%","%GeneratorPrototype%","%Int8ArrayPrototype%","%Int16ArrayPrototype%","%Int32ArrayPrototype%","%JSONParse%","%JSONStringify%","%MapPrototype%","%NumberPrototype%","%ObjectPrototype%","%ObjProto_toString%","%ObjProto_valueOf%","%PromisePrototype%","%PromiseProto_then%","%Promise_all%","%Promise_reject%","%Promise_resolve%","%RangeErrorPrototype%","%ReferenceErrorPrototype%","%RegExpPrototype%","%SetPrototype%","%SharedArrayBufferPrototype%","%StringPrototype%","%SymbolPrototype%","%SyntaxErrorPrototype%","%TypedArrayPrototype%","%TypeErrorPrototype%","%Uint8ArrayPrototype%","%Uint8ClampedArrayPrototype%","%Uint16ArrayPrototype%","%Uint32ArrayPrototype%","%URIErrorPrototype%","%WeakMapPrototype%","%WeakSetPrototype%","$concat","concat","$spliceApply","splice","$replace","$strSlice","$exec","exec","rePropName","reEscapeChar","stringToPath","string","last","number","quote","subString","getBaseIntrinsic","name","allowMissing","alias","intrinsicName","hasOwn","doEval","fn","gen","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","desc","$apply","GetIntrinsic","$call","$reflectApply","$defineProperty","$max","originalFunction","func","configurable","applyBind","$indexOf","callBind","hasMap","mapSizeDescriptor","mapSize","mapForEach","forEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","has","weakSetHas","weakRefDeref","deref","booleanValueOf","valueOf","objectToString","functionToString","$match","$slice","$toUpperCase","toUpperCase","$toLowerCase","toLowerCase","$test","$join","$arrSlice","$floor","floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","inspectCustom","utilInspect","custom","inspectSymbol","isSymbol","inspect_","options","depth","seen","opts","quoteStyle","maxStringLength","customInspect","indent","numericSeparator","inspectString","remaining","trailer","wrapQuotes","lowbyte","bigIntStr","maxDepth","isArray","baseIndent","base","prev","getIndent","indexOf","inspect","from","noIndent","newOpts","isRegExp","f","m","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","isElement","s","attrs","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","key","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","isPlainObject","constructor","protoTag","stringTag","tag","defaultStyle","quoteChar","l","c","n","charCodeAt","8","9","10","12","13","type","size","entries","lineJoiner","isArr","symMap","k","$WeakMap","$Map","$weakMapGet","callBound","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","list","curr","next","$wm","$m","$o","channel","assert","objects","node","listGet","listHas","set","listSet","percentTwenties","Format","default","formatters","RFC1738","RFC3986","hexTable","array","arrayToObject","source","plainObjects","create","assign","reduce","acc","combine","compact","queue","o","prop","refs","item","val","pop","compacted","compactQueue","decode","decoder","charset","strWithoutPlus","unescape","encode","defaultEncoder","kind","format","escape","$0","out","formats","charAt","isBuffer","maybeMap","mapped","merge","allowPrototypes","mergeTarget","targetItem","arrayPrefixGenerators","brackets","prefix","comma","indices","repeat","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","defaults","addQueryPrefix","allowDots","charsetSentinel","delimiter","encoder","utils","encodeValuesOnly","formatter","serializeDate","date","skipNulls","strictNullHandling","sentinel","stringify","object","generateArrayPrefix","commaRoundTrip","filter","sort","sideChannel","tmpSc","step","findFlag","pos","v","isNonNullishPrimitive","objKeys","values","adjustedPrefix","keyPrefix","valueSideChannel","getSideChannel","allowSparse","arrayLimit","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","fromCharCode","parseArrayValue","parseKeys","givenKey","valuesParsed","child","segment","parent","index","chain","leaf","root","cleanRoot","0","parseObject","parse","normalizeParseOptions","tempObj","cleanStr","limit","skipIndex","bracketEqualsPos","encodedVal","parseValues","newObj","normalizeStringifyOptions","arrayFormat","joined","Emitter","mixin","on","addEventListener","event","_callbacks","once","off","removeListener","removeAllListeners","removeEventListener","cb","callbacks","emit","len","listeners","hasListeners","stable","deterministicStringify","stableStringify","replacerStack","defaultOptions","depthLimit","MAX_SAFE_INTEGER","edgesLimit","replacer","spacer","res","decirc","edgeIndex","stack","setReplace","replaceGetterValues","_","defineProperty","propertyDescriptor","compareFunction","tmp","deterministicDecirc","toJSON","_typeof","_createForOfIteratorHelper","allowArrayLike","it","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","done","_e","err","normalCompletion","didErr","_e2","return","arr2","string_","_step","_iterator","_value","_step2","_iterator2","url","header","changesOrigin","host","authorization","cookie","property","isObject","_require","RequestBase","clearTimeout","_timer","_responseTimeoutTimer","_uploadTimeoutTimer","_parser","responseType","_responseType","serialize","_serializer","timeout","_timeout","_responseTimeout","_uploadTimeout","option","deadline","response","upload","console","warn","retry","count","_maxRetries","_retries","_retryCallback","ERROR_CODES","STATUS_CODES","_shouldRetry","override","status","code","crossDomain","_retry","req","request","_aborted","timedout","timedoutError","_end","then","resolve","reject","_this","_fullfilledPromise","self","_endCalled","method","end","catch","callback","use","ok","_okCallback","_isResponseOK","field","_header","getHeader","unset","_data","_getFormData","append","abort","xhr","semver","gte","process","version","lt","destroyed","_auth","user","pass","base64Encoder","username","password","withCredentials","_withCredentials","redirects","_maxRedirects","maxResponseSize","_maxResponseSize","data","headers","send","isObject_","_formData","_isHost","trim","sortQuery","_sort","_finalizeQueryString","query","_query","includes","queryArray","_appendQueryString","_timeoutError","reason","errno","_setTimeouts","setTimeout","ResponseBase","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","Agent","_defaults","_setHeaderProperties","ct","parameters","params","links","link","parseLinks","_unused","_setStatusProperties","trunc","statusCode","statusType","info","redirect","clientError","serverError","toError","created","accepted","noContent","badRequest","unauthorized","notAcceptable","forbidden","notFound","unprocessableEntity","_loop","_arr","_i","_len","_key","_setDefaults","def","window","noop","Request","getXHR","XMLHttpRequest","location","protocol","ActiveXObject","_unused2","_unused3","_unused4","pairs","pushEncodedKeyValuePair","subkey","parseString","pair","length_","isJSON","mime","Response","request_","text","responseText","statusText","line","lines","fields","parseHeader","getAllResponseHeaders","getResponseHeader","body","_parseBody","new_error","original","rawResponse","serializeObject","types","html","json","xml","urlencoded","form","form-data","application/x-www-form-urlencoded","qs","application/json","safeStringify","message","accept","auth","btoa","attach","file","FormData","_callback","retries","crossDomainError","agent","ca","buffer","write","pipe","_setUploadTimeout","readyState","_unused5","handleProgress","direction","total","percent","loaded","_unused6","open","contentType","_serialize","setRequestHeader","del","delete","head","patch","post","put","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","start","output","base64","fromByteArray","stringToByteArray","mod","padding","byteArrayToString","toByteArray","raw","attribute","attr","variable","check","config","optional","condition","value_message","supportsIsArray","objectAssignPolyfill","to","nextSource","keysArray","nextIndex","nextKey","pick","objectValues","extend","unshift","objectAssign","getLocationFromUrl","href","hostname","port","pathname","search","hash","trimmed","toSnakeCase","exceptions","p","newKey","wasPrevNumber","wasPrevUppercase","camelToSnake","toCamelCase","keepOriginal","blacklist","blacklistedKeys","with","object2","keys2","getKeysNotIn","allowedKeys","notAllowed","getOriginFromUrl","parsed","origin","trimUserDetails","trimMultiple","updatePropertyOn","path","RequestWrapper","RequestObj","RequestBuilder","_sendTelemetry","_telemetryInfo","_timesToRetryFailedRequests","_universalLoginPage","universalLoginPage","getWindow","getMethod","getBody","getUrl","getHeaders","objectHelper","setCommonConfiguration","ongoingRequest","noHeaders","xRequestLanguage","getTelemetryData","telemetryName","clientInfo","env","jsonClientInfo","base64Url","getDocument","document","getOrigin","DummyStorage","getItem","removeItem","setItem","factory","init","converter","api","expires","toUTCString","stringifiedAttributes","attributeName","jar","cookies","read","getJSON","remove","withConverter","buildCompatCookieKey","CookieStorage","_options","Warn","disableWarnings","StorageHandler","storage","__tryLocalStorageFirst","localStorage","windowHandler","warning","Storage","handler","SSODataStorage","buildResponse","description","errorDescription","Cookie","cookieDomain","domain","secure","sameSite","legacySameSiteCookie","legacyOptions","failover","connection","sub","ssodata","lastUsedConnection","lastUsedSub","invalidToken","wrapCallback","ignoreCasing","errObj","error_code","error_description","details","forceLegacyError","error_codes","error_details","errorDetails","codes","policy","keepOriginalCasing","tokenParams","authorizeParams","oauthTokenParams","oauthAuthorizeParams","t","globalThis","global","r","d","w","h","u","MutationObserver","WebKitMutationObserver","importScripts","MessageChannel","y","g","T","S","N","_state","_result","C","E","nextTick","createTextNode","observe","characterData","port1","onmessage","port2","postMessage","require","runOnLoop","runOnContext","random","substring","A","I","M","_onerror","R","_subscribers","P","_instanceConstructor","promise","_remaining","_enumerate","_eachEntry","_settledAt","V","_willSettleAt","finally","all","race","_setScheduler","_setAsap","_asap","polyfill","cast","crypto","msCrypto","getRandomValues","randomBytes","readInt32LE","lib","Base","mixIn","$super","clone","WordArray","words","sigBytes","clamp","ceil","enc","Hex","substr","Latin1","Utf8","BufferedBlockAlgorithm","reset","_nDataBytes","_append","_process","blockSize","_minBufferSize","min","_doProcessBlock","Hasher","cfg","_doReset","update","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","sqrt","pow","SHA256","_hash","HmacSHA256","Base64","_map","_reverseMap","fromNumber","fromString","navigator","appName","am","DB","DM","DV","FV","F1","F2","fromInt","mp","invDigit","mpl","mph","um","mt2","r2","q3","ONE","dlShiftTo","mu","divide","convert","compareTo","revert","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","abs","ZERO","subTo","copyTo","drShiftTo","fromRadix","lShiftTo","rShiftTo","isEven","exp","negate","toRadix","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","D","B","getTime","chunkSize","LN2","log","signum","intValue","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","subtract","getLowestSetBit","shiftRight","modPow","byteValue","shortValue","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","add","multiply","remainder","divideAndRemainder","modInverse","gcd","square","Barrett","appVersion","BigInteger","SecureRandom","sha1","sha224","sha256","sha384","sha512","md2","md5","ripemd160","verify","alg","map","urljoin","responseURL","blob","Blob","onload","onerror","credentials","jwksCache","expectedAlg","issuer","audience","leeway","jwksURI","maxAge","__clock","PluginHandler","webAuth","plugins","pluginName","setWebAuth","encoded","payload","signature","kid","aud","iss","nbf","iat","azp","auth_time","nonce","getRsaVerifier","setUTCSeconds","fetch","modulus","validateAccessToken","+","/","=","extensibilityPoint","supports","randomString","bytes","cryptoObj","windowHelper","TransactionManager","transaction","namespace","keyLength","stateExpiration","IframeHandler","timeoutCallback","eventListenerType","iframe","timeoutHandle","_destroyTimeout","transientMessageEventListener","proxyEventListener","eventValidator","isValid","WebMessageHandler","baseOptions","CrossOriginAuthentication","webMessageHandler","createKey","coId","Redirect","auth0","crossOriginAuthentication","_disableDeprecationWarnings","realm","responseTypeIncludesIdToken","generateTransaction","appState","state","organization","generateNonce","transactionPayload","getStoredTransaction","transactionData","clearTransaction","_window","createElement","style","display","eventListener","eventSourceObject","appendChild","src","timeoutHandler","eventData","sourceObject","destroy","parentNode","removeChild","run","responseMode","prompt","currentOrigin","redirectUriOrigin","redirectUri","authorizeUrl","runWebMessageFlow","client","buildAuthorizeUrl","parsedHash","validateAuthenticationResponse","transactionManager","login","rootUrl","email","authenticateBody","client_id","clientID","otp","credentialType","credential_type","errorObject","responseHandler","doAuth","popupMode","popup","authorizeOptions","loginTicket","login_ticket","co_id","co_verifier","authorize","onRedirecting","targetOrigin","getFragment","theWindow","evt","id","verifier","tryGetVerifier","loginWithCredentials","signupAndLogin","dbConnection","signup","WinChan","addListener","attachEvent","detachEvent","extractOrigin","isIE","rv","ua","userAgent","$1","isInternetExplorer","relay_url","window_name","window_features","isFennec","messageTarget","setAttribute","contentWindow","closeInterval","setInterval","closed","cleanup","clearInterval","onMessage","close","securityViolation","originalPopup","focus","onOpen","msgTarget","frames","opener","findRelay","doPost","msg","onDie","o_O","onUnload","ohWell","detach","winopts","arg","PopupHandler","_current_popup","Popup","popupOrigin","SilentAuthenticationHandler","authenticationUrl","postMessageDataType","postMessageOrigin","UsernamePassword","HostedPages","calculatePosition","width","height","screenX","screenLeft","screenY","screenTop","outerWidth","clientWidth","outerHeight","clientHeight","left","top","preload","popupPosition","popupOptions","windowFeatures","kill","load","relayUrl","winchanOptions","buildPopupHandler","pluginHandler","getPopupHandler","popupHandler","originUrl","parseHash","popOpts","owp","urlHelper","processParams","scope","passwordlessVerify","passwordless","phoneNumber","verificationCode","loginWithResourceOwner","usePostMessage","getCallbackHandler","getEventValidator","callbackValue","formHtml","div","_document","innerHTML","children","submit","usernamePassword","getSSOData","withActiveDirectories","ldaps","captchaSolved","Flow","DEFAULT","PASSWORDLESS","PASSWORD_RESET","lang","templates","challenge","image","recaptcha_v2","recaptcha_enterprise","hcaptcha","friendly_captcha","arkose","auth0_v2","globalForCaptchaProvider","provider","grecaptcha","enterprise","friendlyChallenge","turnstile","loadScript","script","startsWith","dataset","removeScript","querySelectorAll","injectCaptchaScript","element","setValue","callbackName","async","defer","scriptSrc","clientSubdomain","siteKey","scriptForCaptchaProvider","retryCount","render","auth0Client","flow","challengeCallback","required","querySelector","preventDefault","handleAuth0Provider","captchaClass","widgetId","hasAttribute","auth0FCInstance","captchaDiv","setConfig","onCompleted","token","onError","WidgetInstance","sitekey","language","doneCallback","solution","errorCallback","renderParams","expired-callback","error-callback","theme","handleCaptchaProvider","triggerCaptcha","solvedCallback","getChallenge","getPasswordResetChallenge","reload","getValue","captchaInput","defaultClock","WebAuth","overrides","__tenant","__token_issuer","__jwks_uri","tenant","token_issuer","Authentication","_universalLogin","ssodataStorage","PasswordlessAuthentication","DBConnection","Management","Authorization","parsedQs","hashStr","responseTypes","__enableIdPInitiatedLogin","__enableImpersonation","transactionState","transactionStateMatchesState","transactionNonce","transactionOrganization","qsParams","accessToken","access_token","idToken","id_token","idTokenPayload","refreshToken","refresh_token","expiresIn","expires_in","tokenType","token_type","buildParseHashResponse","validateToken","validationError","org_id","org_name","at_hash","IdTokenVerifier","decodedToken","userInfo","errUserInfo","profile","renewAuth","checkSession","changePassword","passwordlessStart","authParams","signupAndAuthorize","passwordlessLogin","crossOriginOptions","crossOriginAuthenticationCallback","crossOriginVerification","logout","buildLogoutUrl","buildVerifyUrl","renderCaptcha","captcha","renderPasswordlessCaptcha","renderPasswordResetCaptcha","qString","redirect_uri","response_type","postOptions","cleanOption","metadata","user_metadata","userMetadata","connection_scope","parametersWhitelist","federated","loginWithDefaultDirectory","grantType","oauthToken","grant_type","clientId","ssodataInformation","sso","lastUsedUserID","lastUsedUsername","lastUsedClientID","sessionClients","delegation","getUserCountry","getUser","userId","patchUserMetadata","patchUserAttributes","linkUser","secondaryUserToken","link_with"],"mappings":"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"} \ No newline at end of file diff --git a/dist/auth0.min.js b/dist/auth0.min.js index 8dc949b7..1e33c89e 100644 --- a/dist/auth0.min.js +++ b/dist/auth0.min.js @@ -1,9 +1,9 @@ /** * auth0-js v9.25.0 * Author: Auth0 - * Date: 2024-04-25 + * Date: 2024-04-29 * License: MIT */ -!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports):"function"==typeof define&&define.amd?define(["exports"],factory):factory((global=global||self).auth0={})}(this,(function(exports){"use strict";var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(fn,module){return fn(module={exports:{}},module.exports),module.exports}var urlJoin=createCommonjsModule((function(module){var context,definition;context=commonjsGlobal,definition=function(){function normalize(strArray){var resultArray=[];if(0===strArray.length)return"";if("string"!=typeof strArray[0])throw new TypeError("Url must be a string. Received "+strArray[0]);if(strArray[0].match(/^[^/:]+:\/*$/)&&strArray.length>1){var first=strArray.shift();strArray[0]=first+strArray[0]}strArray[0].match(/^file:\/\/\//)?strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1:///"):strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(component=component.replace(/^[\/]+/,"")),component=i0?"?":"")+parts.join("&")}return function(){return normalize("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},module.exports?module.exports=definition():context.urljoin=definition()})),origSymbol="undefined"!=typeof Symbol&&Symbol,ERROR_MESSAGE="Function.prototype.bind called on incompatible ",slice=Array.prototype.slice,toStr=Object.prototype.toString,functionBind=Function.prototype.bind||function(that){var target=this;if("function"!=typeof target||"[object Function]"!==toStr.call(target))throw new TypeError(ERROR_MESSAGE+target);for(var bound,args=slice.call(arguments,1),binder=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))},boundLength=Math.max(0,target.length-args.length),boundArgs=[],i=0;i1&&"boolean"!=typeof allowMissing)throw new $TypeError('"allowMissing" argument must be a boolean');if(null===$exec(/^%?[^%]*%?$/,name))throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var parts=stringToPath(name),intrinsicBaseName=parts.length>0?parts[0]:"",intrinsic=getBaseIntrinsic("%"+intrinsicBaseName+"%",allowMissing),intrinsicRealName=intrinsic.name,value=intrinsic.value,skipFurtherCaching=!1,alias=intrinsic.alias;alias&&(intrinsicBaseName=alias[0],$spliceApply(parts,$concat([0,1],alias)));for(var i=1,isOwn=!0;i=parts.length){var desc=$gOPD(value,part);value=(isOwn=!!desc)&&"get"in desc&&!("originalValue"in desc.get)?desc.get:value[part]}else isOwn=src(value,part),value=value[part];isOwn&&!skipFurtherCaching&&(INTRINSICS[intrinsicRealName]=value)}}return value},callBind=createCommonjsModule((function(module){var $apply=getIntrinsic("%Function.prototype.apply%"),$call=getIntrinsic("%Function.prototype.call%"),$reflectApply=getIntrinsic("%Reflect.apply%",!0)||functionBind.call($call,$apply),$gOPD=getIntrinsic("%Object.getOwnPropertyDescriptor%",!0),$defineProperty=getIntrinsic("%Object.defineProperty%",!0),$max=getIntrinsic("%Math.max%");if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=null}module.exports=function(originalFunction){var func=$reflectApply(functionBind,$call,arguments);if($gOPD&&$defineProperty){var desc=$gOPD(func,"length");desc.configurable&&$defineProperty(func,"length",{value:1+$max(0,originalFunction.length-(arguments.length-1))})}return func};var applyBind=function(){return $reflectApply(functionBind,$apply,arguments)};$defineProperty?$defineProperty(module.exports,"apply",{value:applyBind}):module.exports.apply=applyBind})),$indexOf=(callBind.apply,callBind(getIntrinsic("String.prototype.indexOf"))),callBound=function(name,allowMissing){var intrinsic=getIntrinsic(name,!!allowMissing);return"function"==typeof intrinsic&&$indexOf(name,".prototype.")>-1?callBind(intrinsic):intrinsic},semver=function(n){return n&&n.default||n}(Object.freeze({__proto__:null,default:{}})),hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,weakMapHas="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,weakSetHas="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,weakRefDeref="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,$match=String.prototype.match,$slice=String.prototype.slice,$replace$1=String.prototype.replace,$toUpperCase=String.prototype.toUpperCase,$toLowerCase=String.prototype.toLowerCase,$test=RegExp.prototype.test,$concat$1=Array.prototype.concat,$join=Array.prototype.join,$arrSlice=Array.prototype.slice,$floor=Math.floor,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,toStringTag="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===hasShammedSymbols||"symbol")?Symbol.toStringTag:null,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(O){return O.__proto__}:null);function addNumericSeparator(num,str){if(num===1/0||num===-1/0||num!=num||num&&num>-1e3&&num<1e3||$test.call(/e/,str))return str;var sepRegex=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof num){var int=num<0?-$floor(-num):$floor(num);if(int!==num){var intStr=String(int),dec=$slice.call(str,intStr.length+1);return $replace$1.call(intStr,sepRegex,"$&_")+"."+$replace$1.call($replace$1.call(dec,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace$1.call(str,sepRegex,"$&_")}var inspectCustom=semver.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null,objectInspect=function inspect_(obj,options,depth,seen){var opts=options||{};if(has(opts,"quoteStyle")&&"single"!==opts.quoteStyle&&"double"!==opts.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(opts,"maxStringLength")&&("number"==typeof opts.maxStringLength?opts.maxStringLength<0&&opts.maxStringLength!==1/0:null!==opts.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var customInspect=!has(opts,"customInspect")||opts.customInspect;if("boolean"!=typeof customInspect&&"symbol"!==customInspect)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(opts,"indent")&&null!==opts.indent&&"\t"!==opts.indent&&!(parseInt(opts.indent,10)===opts.indent&&opts.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(opts,"numericSeparator")&&"boolean"!=typeof opts.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var numericSeparator=opts.numericSeparator;if(void 0===obj)return"undefined";if(null===obj)return"null";if("boolean"==typeof obj)return obj?"true":"false";if("string"==typeof obj)return function inspectString(str,opts){if(str.length>opts.maxStringLength){var remaining=str.length-opts.maxStringLength,trailer="... "+remaining+" more character"+(remaining>1?"s":"");return inspectString($slice.call(str,0,opts.maxStringLength),opts)+trailer}return wrapQuotes($replace$1.call($replace$1.call(str,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",opts)}(obj,opts);if("number"==typeof obj){if(0===obj)return 1/0/obj>0?"0":"-0";var str=String(obj);return numericSeparator?addNumericSeparator(obj,str):str}if("bigint"==typeof obj){var bigIntStr=String(obj)+"n";return numericSeparator?addNumericSeparator(obj,bigIntStr):bigIntStr}var maxDepth=void 0===opts.depth?5:opts.depth;if(void 0===depth&&(depth=0),depth>=maxDepth&&maxDepth>0&&"object"==typeof obj)return isArray(obj)?"[Array]":"[Object]";var indent=function(opts,depth){var baseIndent;if("\t"===opts.indent)baseIndent="\t";else{if(!("number"==typeof opts.indent&&opts.indent>0))return null;baseIndent=$join.call(Array(opts.indent+1)," ")}return{base:baseIndent,prev:$join.call(Array(depth+1),baseIndent)}}(opts,depth);if(void 0===seen)seen=[];else if(indexOf(seen,obj)>=0)return"[Circular]";function inspect(value,from,noIndent){if(from&&(seen=$arrSlice.call(seen)).push(from),noIndent){var newOpts={depth:opts.depth};return has(opts,"quoteStyle")&&(newOpts.quoteStyle=opts.quoteStyle),inspect_(value,newOpts,depth+1,seen)}return inspect_(value,opts,depth+1,seen)}if("function"==typeof obj&&!isRegExp(obj)){var name=function(f){if(f.name)return f.name;var m=$match.call(functionToString.call(f),/^function\s*([\w$]+)/);if(m)return m[1];return null}(obj),keys=arrObjKeys(obj,inspect);return"[Function"+(name?": "+name:" (anonymous)")+"]"+(keys.length>0?" { "+$join.call(keys,", ")+" }":"")}if(isSymbol(obj)){var symString=hasShammedSymbols?$replace$1.call(String(obj),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(obj);return"object"!=typeof obj||hasShammedSymbols?symString:markBoxed(symString)}if(function(x){if(!x||"object"!=typeof x)return!1;if("undefined"!=typeof HTMLElement&&x instanceof HTMLElement)return!0;return"string"==typeof x.nodeName&&"function"==typeof x.getAttribute}(obj)){for(var s="<"+$toLowerCase.call(String(obj.nodeName)),attrs=obj.attributes||[],i=0;i"}if(isArray(obj)){if(0===obj.length)return"[]";var xs=arrObjKeys(obj,inspect);return indent&&!function(xs){for(var i=0;i=0)return!1;return!0}(xs)?"["+indentedJoin(xs,indent)+"]":"[ "+$join.call(xs,", ")+" ]"}if(function(obj){return!("[object Error]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)){var parts=arrObjKeys(obj,inspect);return"cause"in Error.prototype||!("cause"in obj)||isEnumerable.call(obj,"cause")?0===parts.length?"["+String(obj)+"]":"{ ["+String(obj)+"] "+$join.call(parts,", ")+" }":"{ ["+String(obj)+"] "+$join.call($concat$1.call("[cause]: "+inspect(obj.cause),parts),", ")+" }"}if("object"==typeof obj&&customInspect){if(inspectSymbol&&"function"==typeof obj[inspectSymbol]&&semver)return semver(obj,{depth:maxDepth-depth});if("symbol"!==customInspect&&"function"==typeof obj.inspect)return obj.inspect()}if(function(x){if(!mapSize||!x||"object"!=typeof x)return!1;try{mapSize.call(x);try{setSize.call(x)}catch(s){return!0}return x instanceof Map}catch(e){}return!1}(obj)){var mapParts=[];return mapForEach&&mapForEach.call(obj,(function(value,key){mapParts.push(inspect(key,obj,!0)+" => "+inspect(value,obj))})),collectionOf("Map",mapSize.call(obj),mapParts,indent)}if(function(x){if(!setSize||!x||"object"!=typeof x)return!1;try{setSize.call(x);try{mapSize.call(x)}catch(m){return!0}return x instanceof Set}catch(e){}return!1}(obj)){var setParts=[];return setForEach&&setForEach.call(obj,(function(value){setParts.push(inspect(value,obj))})),collectionOf("Set",setSize.call(obj),setParts,indent)}if(function(x){if(!weakMapHas||!x||"object"!=typeof x)return!1;try{weakMapHas.call(x,weakMapHas);try{weakSetHas.call(x,weakSetHas)}catch(s){return!0}return x instanceof WeakMap}catch(e){}return!1}(obj))return weakCollectionOf("WeakMap");if(function(x){if(!weakSetHas||!x||"object"!=typeof x)return!1;try{weakSetHas.call(x,weakSetHas);try{weakMapHas.call(x,weakMapHas)}catch(s){return!0}return x instanceof WeakSet}catch(e){}return!1}(obj))return weakCollectionOf("WeakSet");if(function(x){if(!weakRefDeref||!x||"object"!=typeof x)return!1;try{return weakRefDeref.call(x),!0}catch(e){}return!1}(obj))return weakCollectionOf("WeakRef");if(function(obj){return!("[object Number]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(Number(obj)));if(function(obj){if(!obj||"object"!=typeof obj||!bigIntValueOf)return!1;try{return bigIntValueOf.call(obj),!0}catch(e){}return!1}(obj))return markBoxed(inspect(bigIntValueOf.call(obj)));if(function(obj){return!("[object Boolean]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(booleanValueOf.call(obj));if(function(obj){return!("[object String]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(String(obj)));if(!function(obj){return!("[object Date]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)&&!isRegExp(obj)){var ys=arrObjKeys(obj,inspect),isPlainObject=gPO?gPO(obj)===Object.prototype:obj instanceof Object||obj.constructor===Object,protoTag=obj instanceof Object?"":"null prototype",stringTag=!isPlainObject&&toStringTag&&Object(obj)===obj&&toStringTag in obj?$slice.call(toStr$1(obj),8,-1):protoTag?"Object":"",tag=(isPlainObject||"function"!=typeof obj.constructor?"":obj.constructor.name?obj.constructor.name+" ":"")+(stringTag||protoTag?"["+$join.call($concat$1.call([],stringTag||[],protoTag||[]),": ")+"] ":"");return 0===ys.length?tag+"{}":indent?tag+"{"+indentedJoin(ys,indent)+"}":tag+"{ "+$join.call(ys,", ")+" }"}return String(obj)};function wrapQuotes(s,defaultStyle,opts){var quoteChar="double"===(opts.quoteStyle||defaultStyle)?'"':"'";return quoteChar+s+quoteChar}function quote(s){return $replace$1.call(String(s),/"/g,""")}function isArray(obj){return!("[object Array]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isRegExp(obj){return!("[object RegExp]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isSymbol(obj){if(hasShammedSymbols)return obj&&"object"==typeof obj&&obj instanceof Symbol;if("symbol"==typeof obj)return!0;if(!obj||"object"!=typeof obj||!symToString)return!1;try{return symToString.call(obj),!0}catch(e){}return!1}var hasOwn=Object.prototype.hasOwnProperty||function(key){return key in this};function has(obj,key){return hasOwn.call(obj,key)}function toStr$1(obj){return objectToString.call(obj)}function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0,l=xs.length;i1;){var item=queue.pop(),obj=item.obj[item.prop];if(isArray$1(obj)){for(var compacted=[],j=0;j=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||format===formats.RFC1738&&(40===c||41===c)?out+=string.charAt(i):c<128?out+=hexTable[c]:c<2048?out+=hexTable[192|c>>6]+hexTable[128|63&c]:c<55296||c>=57344?out+=hexTable[224|c>>12]+hexTable[128|c>>6&63]+hexTable[128|63&c]:(i+=1,c=65536+((1023&c)<<10|1023&string.charCodeAt(i)),out+=hexTable[240|c>>18]+hexTable[128|c>>12&63]+hexTable[128|c>>6&63]+hexTable[128|63&c])}return out},isBuffer:function(obj){return!(!obj||"object"!=typeof obj)&&!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj))},isRegExp:function(obj){return"[object RegExp]"===Object.prototype.toString.call(obj)},maybeMap:function(val,fn){if(isArray$1(val)){for(var mapped=[],i=0;i0?obj.join(",")||null:void 0}];else if(isArray$2(filter))objKeys=filter;else{var keys=Object.keys(obj);objKeys=sort?keys.sort(sort):keys}for(var adjustedPrefix=commaRoundTrip&&isArray$2(obj)&&1===obj.length?prefix+"[]":prefix,j=0;j-1?val.split(","):val},parseKeys=function(givenKey,val,options,valuesParsed){if(givenKey){var key=options.allowDots?givenKey.replace(/\.([^.[]+)/g,"[$1]"):givenKey,child=/(\[[^[\]]*])/g,segment=options.depth>0&&/(\[[^[\]]*])/.exec(key),parent=segment?key.slice(0,segment.index):key,keys=[];if(parent){if(!options.plainObjects&&has$3.call(Object.prototype,parent)&&!options.allowPrototypes)return;keys.push(parent)}for(var i=0;options.depth>0&&null!==(segment=child.exec(key))&&i=0;--i){var obj,root=chain[i];if("[]"===root&&options.parseArrays)obj=[].concat(leaf);else{obj=options.plainObjects?Object.create(null):{};var cleanRoot="["===root.charAt(0)&&"]"===root.charAt(root.length-1)?root.slice(1,-1):root,index=parseInt(cleanRoot,10);options.parseArrays||""!==cleanRoot?!isNaN(index)&&root!==cleanRoot&&String(index)===cleanRoot&&index>=0&&options.parseArrays&&index<=options.arrayLimit?(obj=[])[index]=leaf:"__proto__"!==cleanRoot&&(obj[cleanRoot]=leaf):obj={0:leaf}}leaf=obj}return leaf}(keys,val,options,valuesParsed)}},lib={formats:formats,parse:function(str,opts){var options=function(opts){if(!opts)return defaults$1;if(null!==opts.decoder&&void 0!==opts.decoder&&"function"!=typeof opts.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==opts.charset&&"utf-8"!==opts.charset&&"iso-8859-1"!==opts.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var charset=void 0===opts.charset?defaults$1.charset:opts.charset;return{allowDots:void 0===opts.allowDots?defaults$1.allowDots:!!opts.allowDots,allowPrototypes:"boolean"==typeof opts.allowPrototypes?opts.allowPrototypes:defaults$1.allowPrototypes,allowSparse:"boolean"==typeof opts.allowSparse?opts.allowSparse:defaults$1.allowSparse,arrayLimit:"number"==typeof opts.arrayLimit?opts.arrayLimit:defaults$1.arrayLimit,charset:charset,charsetSentinel:"boolean"==typeof opts.charsetSentinel?opts.charsetSentinel:defaults$1.charsetSentinel,comma:"boolean"==typeof opts.comma?opts.comma:defaults$1.comma,decoder:"function"==typeof opts.decoder?opts.decoder:defaults$1.decoder,delimiter:"string"==typeof opts.delimiter||utils.isRegExp(opts.delimiter)?opts.delimiter:defaults$1.delimiter,depth:"number"==typeof opts.depth||!1===opts.depth?+opts.depth:defaults$1.depth,ignoreQueryPrefix:!0===opts.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof opts.interpretNumericEntities?opts.interpretNumericEntities:defaults$1.interpretNumericEntities,parameterLimit:"number"==typeof opts.parameterLimit?opts.parameterLimit:defaults$1.parameterLimit,parseArrays:!1!==opts.parseArrays,plainObjects:"boolean"==typeof opts.plainObjects?opts.plainObjects:defaults$1.plainObjects,strictNullHandling:"boolean"==typeof opts.strictNullHandling?opts.strictNullHandling:defaults$1.strictNullHandling}}(opts);if(""===str||null==str)return options.plainObjects?Object.create(null):{};for(var tempObj="string"==typeof str?function(str,options){var i,obj={},cleanStr=options.ignoreQueryPrefix?str.replace(/^\?/,""):str,limit=options.parameterLimit===1/0?void 0:options.parameterLimit,parts=cleanStr.split(options.delimiter,limit),skipIndex=-1,charset=options.charset;if(options.charsetSentinel)for(i=0;i-1&&(val=isArray$3(val)?[val]:val),has$3.call(obj,key)?obj[key]=utils.combine(obj[key],val):obj[key]=val}return obj}(str,options):str,obj=options.plainObjects?Object.create(null):{},keys=Object.keys(tempObj),i=0;i0?prefix+joined:""}},componentEmitter=createCommonjsModule((function(module){function Emitter(obj){if(obj)return function(obj){for(var key in Emitter.prototype)obj[key]=Emitter.prototype[key];return obj}(obj)}module.exports=Emitter,Emitter.prototype.on=Emitter.prototype.addEventListener=function(event,fn){return this._callbacks=this._callbacks||{},(this._callbacks["$"+event]=this._callbacks["$"+event]||[]).push(fn),this},Emitter.prototype.once=function(event,fn){function on(){this.off(event,on),fn.apply(this,arguments)}return on.fn=fn,this.on(event,on),this},Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(event,fn){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var cb,callbacks=this._callbacks["$"+event];if(!callbacks)return this;if(1==arguments.length)return delete this._callbacks["$"+event],this;for(var i=0;ioptions.depthLimit)return void setReplace("[...]",val,k,parent);if(void 0!==options.edgesLimit&&edgeIndex+1>options.edgesLimit)return void setReplace("[...]",val,k,parent);if(stack.push(val),Array.isArray(val))for(i=0;ib?1:0}function deterministicStringify(obj,replacer,spacer,options){void 0===options&&(options=defaultOptions());var res,tmp=function deterministicDecirc(val,k,edgeIndex,stack,parent,depth,options){var i;if(depth+=1,"object"==typeof val&&null!==val){for(i=0;ioptions.depthLimit)return void setReplace("[...]",val,k,parent);if(void 0!==options.edgesLimit&&edgeIndex+1>options.edgesLimit)return void setReplace("[...]",val,k,parent);if(stack.push(val),Array.isArray(val))for(i=0;i0)for(var i=0;i=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i=this._maxRetries)return!1;if(this._retryCallback)try{var override=this._retryCallback(error,res);if(!0===override)return!0;if(!1===override)return!1}catch(err){console.error(err)}if(res&&res.status&&STATUS_CODES.has(res.status))return!0;if(error){if(error.code&&ERROR_CODES.has(error.code))return!0;if(error.timeout&&"ECONNABORTED"===error.code)return!0;if(error.crossDomain)return!0}return!1},RequestBase.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this.timedoutError=null,this._end()},RequestBase.prototype.then=function(resolve,reject){var _this=this;if(!this._fullfilledPromise){var self=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise((function(resolve,reject){self.on("abort",(function(){if(!(_this._maxRetries&&_this._maxRetries>_this._retries))if(_this.timedout&&_this.timedoutError)reject(_this.timedoutError);else{var error=new Error("Aborted");error.code="ABORTED",error.status=_this.status,error.method=_this.method,error.url=_this.url,reject(error)}})),self.end((function(error,res){error?reject(error):resolve(res)}))}))}return this._fullfilledPromise.then(resolve,reject)},RequestBase.prototype.catch=function(callback){return this.then(void 0,callback)},RequestBase.prototype.use=function(fn){return fn(this),this},RequestBase.prototype.ok=function(callback){if("function"!=typeof callback)throw new Error("Callback required");return this._okCallback=callback,this},RequestBase.prototype._isResponseOK=function(res){return!!res&&(this._okCallback?this._okCallback(res):res.status>=200&&res.status<300)},RequestBase.prototype.get=function(field){return this._header[field.toLowerCase()]},RequestBase.prototype.getHeader=RequestBase.prototype.get,RequestBase.prototype.set=function(field,value){if(isObject(field)){for(var key in field)hasOwn$1(field,key)&&this.set(key,field[key]);return this}return this._header[field.toLowerCase()]=value,this.header[field]=value,this},RequestBase.prototype.unset=function(field){return delete this._header[field.toLowerCase()],delete this.header[field],this},RequestBase.prototype.field=function(name,value,options){if(null==name)throw new Error(".field(name, val) name can not be empty");if(this._data)throw new Error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()");if(isObject(name)){for(var key in name)hasOwn$1(name,key)&&this.field(key,name[key]);return this}if(Array.isArray(value)){for(var i in value)hasOwn$1(value,i)&&this.field(name,value[i]);return this}if(null==value)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof value&&(value=String(value)),options?this._getFormData().append(name,value,options):this._getFormData().append(name,value),this},RequestBase.prototype.abort=function(){if(this._aborted)return this;if(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req){if(semver.gte(process.version,"v13.0.0")&&semver.lt(process.version,"v14.0.0"))throw new Error("Superagent does not work in v13 properly with abort() due to Node.js core changes");semver.gte(process.version,"v14.0.0")&&(this.req.destroyed=!0),this.req.abort()}return this.clearTimeout(),this.emit("abort"),this},RequestBase.prototype._auth=function(user,pass,options,base64Encoder){switch(options.type){case"basic":this.set("Authorization","Basic ".concat(base64Encoder("".concat(user,":").concat(pass))));break;case"auto":this.username=user,this.password=pass;break;case"bearer":this.set("Authorization","Bearer ".concat(user))}return this},RequestBase.prototype.withCredentials=function(on){return void 0===on&&(on=!0),this._withCredentials=on,this},RequestBase.prototype.redirects=function(n){return this._maxRedirects=n,this},RequestBase.prototype.maxResponseSize=function(n){if("number"!=typeof n)throw new TypeError("Invalid argument");return this._maxResponseSize=n,this},RequestBase.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},RequestBase.prototype.send=function(data){var isObject_=isObject(data),type=this._header["content-type"];if(this._formData)throw new Error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()");if(isObject_&&!this._data)Array.isArray(data)?this._data=[]:this._isHost(data)||(this._data={});else if(data&&this._data&&this._isHost(this._data))throw new Error("Can't merge these send calls");if(isObject_&&isObject(this._data))for(var key in data)hasOwn$1(data,key)&&(this._data[key]=data[key]);else"string"==typeof data?(type||this.type("form"),(type=this._header["content-type"])&&(type=type.toLowerCase().trim()),this._data="application/x-www-form-urlencoded"===type?this._data?"".concat(this._data,"&").concat(data):data:(this._data||"")+data):this._data=data;return!isObject_||this._isHost(data)||type||this.type("json"),this},RequestBase.prototype.sortQuery=function(sort){return this._sort=void 0===sort||sort,this},RequestBase.prototype._finalizeQueryString=function(){var query=this._query.join("&");if(query&&(this.url+=(this.url.includes("?")?"&":"?")+query),this._query.length=0,this._sort){var index=this.url.indexOf("?");if(index>=0){var queryArray=this.url.slice(index+1).split("&");"function"==typeof this._sort?queryArray.sort(this._sort):queryArray.sort(),this.url=this.url.slice(0,index)+"?"+queryArray.join("&")}}},RequestBase.prototype._appendQueryString=function(){console.warn("Unsupported")},RequestBase.prototype._timeoutError=function(reason,timeout,errno){if(!this._aborted){var error=new Error("".concat(reason+timeout,"ms exceeded"));error.timeout=timeout,error.code="ECONNABORTED",error.errno=errno,this.timedout=!0,this.timedoutError=error,this.abort(),this.callback(error)}},RequestBase.prototype._setTimeouts=function(){var self=this;this._timeout&&!this._timer&&(this._timer=setTimeout((function(){self._timeoutError("Timeout of ",self._timeout,"ETIME")}),this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout((function(){self._timeoutError("Response timeout of ",self._responseTimeout,"ETIMEDOUT")}),this._responseTimeout))};var responseBase=ResponseBase;function ResponseBase(){}function _toConsumableArray(arr){return function(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr)}(arr)||function(iter){if("undefined"!=typeof Symbol&&null!=iter[Symbol.iterator]||null!=iter["@@iterator"])return Array.from(iter)}(arr)||_unsupportedIterableToArray(arr)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _unsupportedIterableToArray(o,minLen){if(o){if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(o):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(o,minLen):void 0}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}(this._defaults);try{for(_iterator.s();!(_step=_iterator.n()).done;){var def=_step.value;request[def.fn].apply(request,_toConsumableArray(def.args))}}catch(err){_iterator.e(err)}finally{_iterator.f()}};for(var agentBase=Agent,client=createCommonjsModule((function(module,exports){function _typeof(obj){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj})(obj)}function _createForOfIteratorHelper(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(!it){if(Array.isArray(o)||(it=function(o,minLen){if(!o)return;if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);"Object"===n&&o.constructor&&(n=o.constructor.name);if("Map"===n||"Set"===n)return Array.from(o);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}(o))||allowArrayLike&&o&&"number"==typeof o.length){it&&(o=it);var i=0,F=function(){};return{s:F,n:function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i0||string_ instanceof Object)?parse(string_):null)},Response.prototype.toError=function(){var req=this.req,method=req.method,url=req.url,message="cannot ".concat(method," ").concat(url," (").concat(this.status,")"),error=new Error(message);return error.status=this.status,error.method=method,error.url=url,error},request.Response=Response,componentEmitter(Request.prototype),mixin(Request.prototype,requestBase.prototype),Request.prototype.type=function(type){return this.set("Content-Type",request.types[type]||type),this},Request.prototype.accept=function(type){return this.set("Accept",request.types[type]||type),this},Request.prototype.auth=function(user,pass,options){1===arguments.length&&(pass=""),"object"===_typeof(pass)&&null!==pass&&(options=pass,pass=""),options||(options={type:"function"==typeof btoa?"basic":"auto"});var encoder=options.encoder?options.encoder:function(string){if("function"==typeof btoa)return btoa(string);throw new Error("Cannot use basic auth, btoa is not a function")};return this._auth(user,pass,options,encoder)},Request.prototype.query=function(value){return"string"!=typeof value&&(value=serialize(value)),value&&this._query.push(value),this},Request.prototype.attach=function(field,file,options){if(file){if(this._data)throw new Error("superagent can't mix .send() and .attach()");this._getFormData().append(field,file,options||file.name)}return this},Request.prototype._getFormData=function(){return this._formData||(this._formData=new root.FormData),this._formData},Request.prototype.callback=function(error,res){if(this._shouldRetry(error,res))return this._retry();var fn=this._callback;this.clearTimeout(),error&&(this._maxRetries&&(error.retries=this._retries-1),this.emit("error",error)),fn(error,res)},Request.prototype.crossDomainError=function(){var error=new Error("Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.");error.crossDomain=!0,error.status=this.status,error.method=this.method,error.url=this.url,this.callback(error)},Request.prototype.agent=function(){return console.warn("This is not supported in browser version of superagent"),this},Request.prototype.ca=Request.prototype.agent,Request.prototype.buffer=Request.prototype.ca,Request.prototype.write=function(){throw new Error("Streaming is not supported in browser version of superagent")},Request.prototype.pipe=Request.prototype.write,Request.prototype._isHost=function(object){return object&&"object"===_typeof(object)&&!Array.isArray(object)&&"[object Object]"!==Object.prototype.toString.call(object)},Request.prototype.end=function(fn){this._endCalled&&console.warn("Warning: .end() was called twice. This is not supported in superagent"),this._endCalled=!0,this._callback=fn||noop,this._finalizeQueryString(),this._end()},Request.prototype._setUploadTimeout=function(){var self=this;this._uploadTimeout&&!this._uploadTimeoutTimer&&(this._uploadTimeoutTimer=setTimeout((function(){self._timeoutError("Upload timeout of ",self._uploadTimeout,"ETIMEDOUT")}),this._uploadTimeout))},Request.prototype._end=function(){if(this._aborted)return this.callback(new Error("The request has been aborted even before .end() was called"));var self=this;this.xhr=request.getXHR();var xhr=this.xhr,data=this._formData||this._data;this._setTimeouts(),xhr.addEventListener("readystatechange",(function(){var readyState=xhr.readyState;if(readyState>=2&&self._responseTimeoutTimer&&clearTimeout(self._responseTimeoutTimer),4===readyState){var status;try{status=xhr.status}catch(_unused5){status=0}if(!status){if(self.timedout||self._aborted)return;return self.crossDomainError()}self.emit("end")}}));var handleProgress=function(direction,e){e.total>0&&(e.percent=e.loaded/e.total*100,100===e.percent&&clearTimeout(self._uploadTimeoutTimer)),e.direction=direction,self.emit("progress",e)};if(this.hasListeners("progress"))try{xhr.addEventListener("progress",handleProgress.bind(null,"download")),xhr.upload&&xhr.upload.addEventListener("progress",handleProgress.bind(null,"upload"))}catch(_unused6){}xhr.upload&&this._setUploadTimeout();try{this.username&&this.password?xhr.open(this.method,this.url,!0,this.username,this.password):xhr.open(this.method,this.url,!0)}catch(err){return this.callback(err)}if(this._withCredentials&&(xhr.withCredentials=!0),!this._formData&&"GET"!==this.method&&"HEAD"!==this.method&&"string"!=typeof data&&!this._isHost(data)){var contentType=this._header["content-type"],_serialize=this._serializer||request.serialize[contentType?contentType.split(";")[0]:""];!_serialize&&isJSON(contentType)&&(_serialize=request.serialize["application/json"]),_serialize&&(data=_serialize(data))}for(var field in this.header)null!==this.header[field]&&hasOwn(this.header,field)&&xhr.setRequestHeader(field,this.header[field]);this._responseType&&(xhr.responseType=this._responseType),this.emit("request",this),xhr.send(void 0===data?null:data)},request.agent=function(){return new agentBase};for(var _loop=function(){var method=_arr[_i];agentBase.prototype[method.toLowerCase()]=function(url,fn){var request_=new request.Request(method,url);return this._setDefaults(request_),fn&&request_.end(fn),request_}},_i=0,_arr=["GET","POST","OPTIONS","PATCH","PUT","DELETE"];_i<_arr.length;_i++)_loop();function del(url,data,fn){var request_=request("DELETE",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_}agentBase.prototype.del=agentBase.prototype.delete,request.get=function(url,data,fn){var request_=request("GET",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.query(data),fn&&request_.end(fn),request_},request.head=function(url,data,fn){var request_=request("HEAD",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.query(data),fn&&request_.end(fn),request_},request.options=function(url,data,fn){var request_=request("OPTIONS",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.del=del,request.delete=del,request.patch=function(url,data,fn){var request_=request("PATCH",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.post=function(url,data,fn){var request_=request("POST",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.put=function(url,data,fn){var request_=request("PUT",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_}})),byteLength_1=(client.Request,function(b64){var lens=getLens(b64),validLen=lens[0],placeHoldersLen=lens[1];return 3*(validLen+placeHoldersLen)/4-placeHoldersLen}),toByteArray_1=function(b64){var tmp,i,lens=getLens(b64),validLen=lens[0],placeHoldersLen=lens[1],arr=new Arr(function(b64,validLen,placeHoldersLen){return 3*(validLen+placeHoldersLen)/4-placeHoldersLen}(0,validLen,placeHoldersLen)),curByte=0,len=placeHoldersLen>0?validLen-4:validLen;for(i=0;i>16&255,arr[curByte++]=tmp>>8&255,arr[curByte++]=255&tmp;2===placeHoldersLen&&(tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4,arr[curByte++]=255&tmp);1===placeHoldersLen&&(tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2,arr[curByte++]=tmp>>8&255,arr[curByte++]=255&tmp);return arr},fromByteArray_1=function(uint8){for(var tmp,len=uint8.length,extraBytes=len%3,parts=[],i=0,len2=len-extraBytes;ilen2?len2:i+16383));1===extraBytes?(tmp=uint8[len-1],parts.push(lookup[tmp>>2]+lookup[tmp<<4&63]+"==")):2===extraBytes&&(tmp=(uint8[len-2]<<8)+uint8[len-1],parts.push(lookup[tmp>>10]+lookup[tmp>>4&63]+lookup[tmp<<2&63]+"="));return parts.join("")},lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,len=code.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var validLen=b64.indexOf("=");return-1===validLen&&(validLen=len),[validLen,validLen===len?0:4-validLen%4]}function encodeChunk(uint8,start,end){for(var tmp,num,output=[],i=start;i>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[63&num]);return output.join("")}revLookup["-".charCodeAt(0)]=62,revLookup["_".charCodeAt(0)]=63;var base64Js={byteLength:byteLength_1,toByteArray:toByteArray_1,fromByteArray:fromByteArray_1};var base64Url={encode:function(str){return base64Js.fromByteArray(function(str){for(var arr=new Array(str.length),a=0;a=65&&code<=90||!wasPrevNumber&&code>=48&&code<=57?(newKey+="_",newKey+=str[index].toLowerCase()):newKey+=str[index].toLowerCase(),wasPrevNumber=code>=48&&code<=57,wasPrevUppercase=code>=65&&code<=90,index++;return newKey}(key):key]=toSnakeCase(object[key]),p}),{}))},toCamelCase:function toCamelCase(object,exceptions,options){return"object"!=typeof object||assert.isArray(object)||null===object?object:(exceptions=exceptions||[],options=options||{},Object.keys(object).reduce((function(p,key){var parts,newKey=-1===exceptions.indexOf(key)?(parts=key.split("_")).reduce((function(p,c){return p+c.charAt(0).toUpperCase()+c.slice(1)}),parts.shift()):key;return p[newKey]=toCamelCase(object[newKey]||object[key],[],options),options.keepOriginal&&(p[key]=toCamelCase(object[key],[],options)),p}),{}))},blacklist:function(object,blacklistedKeys){return Object.keys(object).reduce((function(p,key){return-1===blacklistedKeys.indexOf(key)&&(p[key]=object[key]),p}),{})},merge:function(object,keys){return{base:keys?pick(object,keys):object,with:function(object2,keys2){return object2=keys2?pick(object2,keys2):object2,extend(this.base,object2)}}},pick:pick,getKeysNotIn:function(obj,allowedKeys){var notAllowed=[];for(var key in obj)-1===allowedKeys.indexOf(key)&¬Allowed.push(key);return notAllowed},extend:extend,getOriginFromUrl:function(url){if(url){var parsed=getLocationFromUrl(url);if(!parsed)return null;var origin=parsed.protocol+"//"+parsed.hostname;return parsed.port&&(origin+=":"+parsed.port),origin}},getLocationFromUrl:getLocationFromUrl,trimUserDetails:function(options){return function(options,keys){return keys.reduce(trim,options)}(options,["username","email","phoneNumber"])},updatePropertyOn:function updatePropertyOn(obj,path,value){"string"==typeof path&&(path=path.split("."));var next=path[0];obj.hasOwnProperty(next)&&(1===path.length?obj[next]=value:updatePropertyOn(obj[next],path.slice(1),value))}};function RequestWrapper(req){this.request=req,this.method=req.method,this.url=req.url,this.body=req._data,this.headers=req._header}function RequestObj(req){this.request=req}function RequestBuilder(options){this._sendTelemetry=!1!==options._sendTelemetry||options._sendTelemetry,this._telemetryInfo=options._telemetryInfo||null,this._timesToRetryFailedRequests=options._timesToRetryFailedRequests,this.headers=options.headers||{},this._universalLoginPage=options.universalLoginPage}function getWindow(){return window}RequestWrapper.prototype.abort=function(){this.request.abort()},RequestWrapper.prototype.getMethod=function(){return this.method},RequestWrapper.prototype.getBody=function(){return this.body},RequestWrapper.prototype.getUrl=function(){return this.url},RequestWrapper.prototype.getHeaders=function(){return this.headers},RequestObj.prototype.set=function(key,value){return this.request=this.request.set(key,value),this},RequestObj.prototype.send=function(body){return this.request=this.request.send(objectHelper.trimUserDetails(body)),this},RequestObj.prototype.withCredentials=function(){return this.request=this.request.withCredentials(),this},RequestObj.prototype.end=function(cb){return this.request.end(cb),new RequestWrapper(this.request)},RequestBuilder.prototype.setCommonConfiguration=function(ongoingRequest,options){if(options=options||{},this._timesToRetryFailedRequests>0&&(ongoingRequest=ongoingRequest.retry(this._timesToRetryFailedRequests)),options.noHeaders)return ongoingRequest;var headers=this.headers;ongoingRequest=ongoingRequest.set("Content-Type","application/json"),options.xRequestLanguage&&(ongoingRequest=ongoingRequest.set("X-Request-Language",options.xRequestLanguage));for(var keys=Object.keys(this.headers),a=0;a0&&warn.warning("Following parameters are not allowed on the `/authorize` endpoint: ["+notAllowed.join(",")+"]"),params}},t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r=e((function(e,r){e.exports=function(){function e(t){return"function"==typeof t}var r=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},i=0,n=void 0,o=void 0,s=function(t,e){l[i]=t,l[i+1]=e,2===(i+=2)&&(o?o(d):w())},h="undefined"!=typeof window?window:void 0,u=h||{},a=u.MutationObserver||u.WebKitMutationObserver,f="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),c="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function p(){var t=setTimeout;return function(){return t(d,1)}}var l=new Array(1e3);function d(){for(var t=0;t>>2]|=(r[o>>>2]>>>24-o%4*8&255)<<24-(i+o)%4*8;else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new f.init(r,e/2)}},l=c.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255));return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new f.init(r,e)}},d=c.Utf8={stringify:function(t){try{return decodeURIComponent(escape(l.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return l.parse(unescape(encodeURIComponent(t)))}},m=u.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new f.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,h=o/(4*s),u=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*s,a=e.min(4*u,o);if(u){for(var c=0;c>>7)^(d<<14|d>>>18)^d>>>3)+a[l-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+a[l-16]}var v=i&n^i&o^n&o,y=p+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&f^~h&c)+u[l]+a[l];p=c,c=f,f=h,h=s+y|0,s=o,o=n,n=i,i=y+(((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+v)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+h|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+p|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(f),e.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)})),s=e((function(t,e){var r,i;t.exports=(i=(r=n).lib.WordArray,r.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,h=0;h<4&&o+.75*h>>6*(3-h)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join("")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=(h|u)<<24-o%4*8,o++}return i.create(n,o)}(t,e,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},r.enc.Base64)})),h=e((function(t,e){t.exports=n.enc.Hex})),u=e((function(e,r){(function(){var t;function r(t,e,r){null!=t&&("number"==typeof t?this.fromNumber(t,e,r):this.fromString(t,null==e&&"string"!=typeof t?256:e))}function i(){return new r(null)}var n="undefined"!=typeof navigator;n&&"Microsoft Internet Explorer"==navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(var s=32767&e,h=e>>15;--o>=0;){var u=32767&this[t],a=this[t++]>>15,f=h*u+a*s;n=((u=s*u+((32767&f)<<15)+r[i]+(1073741823&n))>>>30)+(f>>>15)+h*a+(n>>>30),r[i++]=1073741823&u}return n},t=30):n&&"Netscape"!=navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(;--o>=0;){var s=e*this[t++]+r[i]+n;n=Math.floor(s/67108864),r[i++]=67108863&s}return n},t=26):(r.prototype.am=function(t,e,r,i,n,o){for(var s=16383&e,h=e>>14;--o>=0;){var u=16383&this[t],a=this[t++]>>14,f=h*u+a*s;n=((u=s*u+((16383&f)<<14)+r[i]+n)>>28)+(f>>14)+h*a,r[i++]=268435455&u}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function p(t){this.m=t}function l(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function w(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function T(){}function b(t){return t}function _(t){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}p.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},p.prototype.revert=function(t){return t},p.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},p.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},p.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},l.prototype.convert=function(t){var e=i();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(r.ZERO)>0&&this.m.subTo(e,e),e},l.prototype.revert=function(t){var e=i();return t.copyTo(e),this.reduce(e),e},l.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,i,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},l.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},l.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},r.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},r.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},r.prototype.fromString=function(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else{if(4!=e)return void this.fromRadix(t,e);i=2}this.t=0,this.s=0;for(var n=t.length,o=!1,s=0;--n>=0;){var h=8==i?255&t[n]:a(t,n);h<0?"-"==t.charAt(n)&&(o=!0):(o=!1,0==s?this[this.t++]=h:s+i>this.DB?(this[this.t-1]|=(h&(1<>this.DB-s):this[this.t-1]|=h<=this.DB&&(s-=this.DB))}8==i&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},r.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},r.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>n|h,h=(this[r]&o)<=0;--r)e[r]=0;e[s]=h,e.t=this.t+s+1,e.s=this.s,e.clamp()},r.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var i=t%this.DB,n=this.DB-i,o=(1<>i;for(var s=r+1;s>i;i>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i-=t.s}e.s=i<0?-1:0,i<-1?e[r++]=this.DV+i:i>0&&(e[r++]=i),e.t=r,e.clamp()},r.prototype.multiplyTo=function(t,e){var i=this.abs(),n=t.abs(),o=i.t;for(e.t=o+n.t;--o>=0;)e[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},r.prototype.divRemTo=function(t,e,n){var o=t.abs();if(!(o.t<=0)){var s=this.abs();if(s.t0?(o.lShiftTo(f,h),s.lShiftTo(f,n)):(o.copyTo(h),s.copyTo(n));var p=h.t,l=h[p-1];if(0!=l){var d=l*(1<1?h[p-2]>>this.F2:0),m=this.FV/d,v=(1<=0&&(n[n.t++]=1,n.subTo(T,n)),r.ONE.dlShiftTo(p,T),T.subTo(h,h);h.t=0;){var b=n[--g]==l?this.DM:Math.floor(n[g]*m+(n[g-1]+y)*v);if((n[g]+=h.am(0,b,n,w,0,p))0&&n.rShiftTo(f,n),u<0&&r.ZERO.subTo(n,n)}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(t,e){if(t>4294967295||t<1)return r.ONE;var n=i(),o=i(),s=e.convert(this),h=c(t)-1;for(s.copyTo(n);--h>=0;)if(e.sqrTo(n,o),(t&1<0)e.mulTo(o,s,n);else{var u=n;n=o,o=u}return e.revert(n)},r.prototype.toString=function(t){if(this.s<0)return"-"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,i=(1<0)for(h>h)>0&&(n=!0,o=u(r));s>=0;)h>(h+=this.DB-e)):(r=this[s]>>(h-=e)&i,h<=0&&(h+=this.DB,--s)),r>0&&(n=!0),n&&(o+=u(r));return n?o:"0"},r.prototype.negate=function(){var t=i();return r.ZERO.subTo(this,t),t},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+c(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(t){var e=i();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(r.ZERO)>0&&t.subTo(e,e),e},r.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new p(e):new l(e),this.exp(t,r)},r.ZERO=f(0),r.ONE=f(1),T.prototype.convert=b,T.prototype.revert=b,T.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},T.prototype.sqrTo=function(t,e){t.squareTo(e)},_.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=i();return t.copyTo(e),this.reduce(e),e},_.prototype.revert=function(t){return t},_.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},_.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},_.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var S,A,D,B=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],x=(1<<26)/B[B.length-1];function E(){var t;t=(new Date).getTime(),A[D++]^=255&t,A[D++]^=t>>8&255,A[D++]^=t>>16&255,A[D++]^=t>>24&255,D>=j&&(D-=j)}if(r.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},r.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return"0";var e=this.chunkSize(t),r=Math.pow(t,e),n=f(r),o=i(),s=i(),h="";for(this.divRemTo(n,o,s);o.signum()>0;)h=(r+s.intValue()).toString(t).substr(1)+h,o.divRemTo(n,o,s);return s.intValue().toString(t)+h},r.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var i=this.chunkSize(e),n=Math.pow(e,i),o=!1,s=0,h=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(h,0),s=0,h=0))}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(h,0)),o&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(t,e,i){if("number"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(r.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(r.ONE.shiftLeft(t-1),this);else{var n=new Array,o=7&t;n.length=1+(t>>3),e.nextBytes(n),o>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i+=t.s}e.s=i<0?-1:0,i>0?e[r++]=i:i<-1&&(e[r++]=this.DV+i),e.t=r,e.clamp()},r.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},r.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},r.prototype.multiplyLowerTo=function(t,e,r){var i,n=Math.min(this.t+t.t,e);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(e-this.t,0);i0)if(0==e)r=this[0]%t;else for(var i=this.t-1;i>=0;--i)r=(e*r+this[i])%t;return r},r.prototype.millerRabin=function(t){var e=this.subtract(r.ONE),n=e.getLowestSetBit();if(n<=0)return!1;var o=e.shiftRight(n);(t=t+1>>1)>B.length&&(t=B.length);for(var s=i(),h=0;h>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,i=this.DB-t*this.DB%8,n=0;if(t-- >0)for(i>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<=0;)i<8?(r=(this[t]&(1<>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,i<=0&&(i+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(e[n++]=r);return e},r.prototype.equals=function(t){return 0==this.compareTo(t)},r.prototype.min=function(t){return this.compareTo(t)<0?this:t},r.prototype.max=function(t){return this.compareTo(t)>0?this:t},r.prototype.and=function(t){var e=i();return this.bitwiseTo(t,d,e),e},r.prototype.or=function(t){var e=i();return this.bitwiseTo(t,m,e),e},r.prototype.xor=function(t){var e=i();return this.bitwiseTo(t,v,e),e},r.prototype.andNot=function(t){var e=i();return this.bitwiseTo(t,y,e),e},r.prototype.not=function(){for(var t=i(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var m=i();for(n.sqrTo(h[1],m);u<=d;)h[u]=i(),n.mulTo(m,h[u-2],h[u]),u+=2}var v,y,g=t.t-1,w=!0,T=i();for(o=c(t[g])-1;g>=0;){for(o>=a?v=t[g]>>o-a&d:(v=(t[g]&(1<0&&(v|=t[g-1]>>this.DB+o-a)),u=r;0==(1&v);)v>>=1,--u;if((o-=u)<0&&(o+=this.DB,--g),w)h[v].copyTo(s),w=!1;else{for(;u>1;)n.sqrTo(s,T),n.sqrTo(T,s),u-=2;u>0?n.sqrTo(s,T):(y=s,s=T,T=y),n.mulTo(T,h[v],s)}for(;g>=0&&0==(t[g]&1<=0?(i.subTo(n,i),e&&o.subTo(h,o),s.subTo(u,s)):(n.subTo(i,n),e&&h.subTo(o,h),u.subTo(s,u))}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(t)>=0?u.subtract(t):u.signum()<0?(u.addTo(t,u),u.signum()<0?u.add(t):u):u},r.prototype.pow=function(t){return this.exp(t,new T)},r.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var i=e;e=r,r=i}var n=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(n0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},r.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=B[B.length-1]){for(e=0;e>>8,A[D++]=255&k;D=0,E()}function C(){if(null==S){for(E(),(S=new O).init(A),D=0;D0&&e.length>0))throw new Error("Invalid key data");this.n=new u.BigInteger(t,16),this.e=parseInt(e,16)}c.prototype.verify=function(t,e){e=e.replace(/[^0-9a-f]|[\s\n]]/gi,"");var r=new u.BigInteger(e,16);if(r.bitLength()>this.n.bitLength())throw new Error("Signature does not match with the key modulus.");var i=function(t){for(var e in a){var r=a[e],i=r.length;if(t.substring(0,i)===r)return{alg:e,hash:t.substring(i)}}return[]}(r.modPowInt(this.e,this.n).toString(16).replace(/^1f+00/,""));if(0===i.length)return!1;if(!f.hasOwnProperty(i.alg))throw new Error("Hashing algorithm is not supported.");var n=f[i.alg](t).toString();return i.hash===n};for(var p=[],l=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0,y=m.length;v0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}(t),n=i[0],o=i[1],s=new d(function(t,e,r){return 3*(e+r)/4-r}(0,n,o)),h=0,u=o>0?n-4:n;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;return 2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,s[h++]=255&e),1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e),s};function w(t){var e=t.length%4;return 0===e?t:t+new Array(4-e+1).join("=")}function T(t){return t=w(t).replace(/\-/g,"+").replace(/_/g,"/"),decodeURIComponent(function(t){for(var e="",r=0;r1){var r=t.shift();t[0]=r+t[0]}t[0]=t[0].match(/^file:\/\/\//)?t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(n=n.replace(/^[\/]+/,"")),n=n.replace(/[\/]+$/,i0?"?":"")+s.join("&")}return function(){return t("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():r.urljoin=i()}));function S(t,e){return e=e||{},new Promise((function(r,i){var n=new XMLHttpRequest,o=[],s=[],h={},u=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:u,headers:{keys:function(){return o},entries:function(){return s},get:function(t){return h[t.toLowerCase()]},has:function(t){return t.toLowerCase()in h}}}};for(var a in n.open(e.method||"get",t,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(t,e,r){o.push(e=e.toLowerCase()),s.push([e,r]),h[e]=h[e]?h[e]+","+r:r})),r(u())},n.onerror=i,n.withCredentials="include"==e.credentials,e.headers)n.setRequestHeader(a,e.headers[a]);n.send(e.body||null)}))}function A(t){if(t.ok)return t.json();var e=new Error(t.statusText);return e.response=t,Promise.reject(e)}function D(t){this.name="ConfigurationError",this.message=t||""}function B(t){this.name="TokenValidationError",this.message=t||""}D.prototype=Error.prototype,B.prototype=Error.prototype;var x=function(){function t(){}var e=t.prototype;return e.get=function(){return null},e.has=function(){return null},e.set=function(){return null},t}();r.polyfill();var E="RS256",k=function(t){return"number"==typeof t},I=function(){return new Date};function M(t){var e=t||{};if(this.jwksCache=e.jwksCache||new x,this.expectedAlg=e.expectedAlg||"RS256",this.issuer=e.issuer,this.audience=e.audience,this.leeway=0===e.leeway?0:e.leeway||60,this.jwksURI=e.jwksURI,this.maxAge=e.maxAge,this.__clock="function"==typeof e.__clock?e.__clock:I,this.leeway<0||this.leeway>300)throw new D("The leeway should be positive and lower than five minutes.");if(E!==this.expectedAlg)throw new D('Signature algorithm of "'+this.expectedAlg+'" is not supported. Expected the ID token to be signed with "'+E+'".')}function PluginHandler(webAuth,plugins){this.plugins=plugins;for(var a=0;a1){if(!d||"string"!=typeof d)return r(new B("Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values"),null);if(d!==g.audience)return r(new B('Authorized Party (azp) claim mismatch in the ID token; expected "'+g.audience+'", found "'+d+'"'),null)}if(!c||!k(c))return r(new B("Expiration Time (exp) claim must be a number present in the ID token"),null);if(!l||!k(l))return r(new B("Issued At (iat) claim must be a number present in the ID token"),null);var h=c+g.leeway,w=new Date(0);if(w.setUTCSeconds(h),y>w)return r(new B('Expiration Time (exp) claim error in the ID token; current time "'+y+'" is after expiration time "'+w+'"'),null);if(p&&k(p)){var T=p-g.leeway,b=new Date(0);if(b.setUTCSeconds(T),yS)return r(new B('Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time "'+y+'" is after last auth time at "'+S+'"'),null)}return r(null,i.payload)}))},M.prototype.getRsaVerifier=function(t,e,r){var i=this,n=t+e;Promise.resolve(this.jwksCache.has(n)).then((function(r){return r?i.jwksCache.get(n):(o={jwksURI:i.jwksURI,iss:t,kid:e},("undefined"==typeof fetch?S:fetch)(o.jwksURI||_(o.iss,".well-known","jwks.json")).then(A).then((function(t){var e,r,i,n=null;for(e=0;e-1){null!==new RegExp("rv:([0-9]{2,2}[.0-9]{0,})").exec(ua)&&(rv=parseFloat(RegExp.$1))}return rv>=8}();return"undefined"!=typeof window&&window.JSON&&window.JSON.stringify&&window.JSON.parse&&window.postMessage?{open:function(opts,cb){if(!cb)throw"missing required callback argument";var err,iframe;opts.url||(err="missing required 'url' parameter"),opts.relay_url||(err="missing required 'relay_url' parameter"),err&&setTimeout((function(){cb(err)}),0),opts.window_name||(opts.window_name=null),opts.window_features&&!function(){try{var userAgent=navigator.userAgent;return-1!=userAgent.indexOf("Fennec/")||-1!=userAgent.indexOf("Firefox/")&&-1!=userAgent.indexOf("Android")}catch(e){}return!1}()||(opts.window_features=void 0);var messageTarget,origin=opts.origin||extractOrigin(opts.url);if(origin!==extractOrigin(opts.relay_url))return setTimeout((function(){cb("invalid arguments: origin of url and relay_url must match")}),0);isIE&&((iframe=document.createElement("iframe")).setAttribute("src",opts.relay_url),iframe.style.display="none",iframe.setAttribute("name","__winchan_relay_frame"),document.body.appendChild(iframe),messageTarget=iframe.contentWindow);var w=opts.popup||window.open(opts.url,opts.window_name,opts.window_features);opts.popup&&(w.location.href=opts.url),messageTarget||(messageTarget=w);var closeInterval=setInterval((function(){w&&w.closed&&(cleanup(),cb&&(cb("User closed the popup window"),cb=null))}),500),req=JSON.stringify({a:"request",d:opts.params});function cleanup(){if(iframe&&document.body.removeChild(iframe),iframe=void 0,closeInterval&&(closeInterval=clearInterval(closeInterval)),removeListener(window,"message",onMessage),removeListener(window,"unload",cleanup),w)try{w.close()}catch(securityViolation){messageTarget.postMessage("die",origin)}w=messageTarget=void 0}function onMessage(e){if(e.origin===origin){try{var d=JSON.parse(e.data)}catch(err){if(cb)return cb(err);throw err}"ready"===d.a?messageTarget.postMessage(req,origin):"error"===d.a?(cleanup(),cb&&(cb(d.d),cb=null)):"response"===d.a&&(cleanup(),cb&&(cb(null,d.d),cb=null))}}return addListener(window,"unload",cleanup),addListener(window,"message",onMessage),{originalPopup:w,close:cleanup,focus:function(){if(w)try{w.focus()}catch(e){}}}},onOpen:function(cb){var o="*",msgTarget=isIE?function(){for(var frames=window.opener.frames,i=frames.length-1;i>=0;i--)try{if(frames[i].location.protocol===window.location.protocol&&frames[i].location.host===window.location.host&&"__winchan_relay_frame"===frames[i].name)return frames[i]}catch(e){}}():window.opener;if(!msgTarget)throw"can't find relay frame";function doPost(msg){msg=JSON.stringify(msg),isIE?msgTarget.doPost(msg,o):msgTarget.postMessage(msg,o)}function onDie(e){if("die"===e.data)try{window.close()}catch(o_O){}}addListener(isIE?msgTarget:window,"message",(function onMessage(e){var d;try{d=JSON.parse(e.data)}catch(err){}d&&"request"===d.a&&(removeListener(window,"message",onMessage),o=e.origin,cb&&setTimeout((function(){cb(o,d.d,(function(r){cb=void 0,doPost({a:"response",d:r})}))}),0))})),addListener(isIE?msgTarget:window,"message",onDie);try{doPost({a:"ready"})}catch(e){addListener(msgTarget,"load",(function(e){doPost({a:"ready"})}))}var onUnload=function(){try{removeListener(isIE?msgTarget:window,"message",onDie)}catch(ohWell){}cb&&doPost({a:"error",d:"client closed window"}),cb=void 0;try{window.close()}catch(e){}};return addListener(window,"unload",onUnload),{detach:function(){removeListener(window,"unload",onUnload)}}}}:{open:function(url,winopts,arg,cb){setTimeout((function(){cb("unsupported browser")}),0)},onOpen:function(cb){setTimeout((function(){cb("unsupported browser")}),0)}}}();module.exports&&(module.exports=WinChan)}));var urlHelper={extractOrigin:function(url){/^https?:\/\//.test(url)||(url=window.location.href);var m=/^(https?:\/\/[-_a-zA-Z.0-9:]+)/.exec(url);return m?m[1]:url}};function PopupHandler(){this._current_popup=null}function Popup(webAuth,options){this.baseOptions=options,this.baseOptions.popupOrigin=options.popupOrigin,this.client=webAuth.client,this.webAuth=webAuth,this.transactionManager=new TransactionManager(this.baseOptions),this.crossOriginAuthentication=new CrossOriginAuthentication(webAuth,this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings})}function SilentAuthenticationHandler(options){this.authenticationUrl=options.authenticationUrl,this.timeout=options.timeout||6e4,this.handler=null,this.postMessageDataType=options.postMessageDataType||!1,this.postMessageOrigin=options.postMessageOrigin||windowHelper.getWindow().location.origin||windowHelper.getWindow().location.protocol+"//"+windowHelper.getWindow().location.hostname+(windowHelper.getWindow().location.port?":"+windowHelper.getWindow().location.port:"")}function UsernamePassword(options){this.baseOptions=options,this.request=new RequestBuilder(options),this.transactionManager=new TransactionManager(this.baseOptions)}function HostedPages(client,options){this.baseOptions=options,this.client=client,this.baseOptions.universalLoginPage=!0,this.request=new RequestBuilder(this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings})}PopupHandler.prototype.calculatePosition=function(options){var width=options.width||500,height=options.height||600,_window=windowHelper.getWindow(),screenX=void 0!==_window.screenX?_window.screenX:_window.screenLeft,screenY=void 0!==_window.screenY?_window.screenY:_window.screenTop,outerWidth=void 0!==_window.outerWidth?_window.outerWidth:_window.document.body.clientWidth,outerHeight=void 0!==_window.outerHeight?_window.outerHeight:_window.document.body.clientHeight;return{width:width,height:height,left:options.left||screenX+(outerWidth-width)/2,top:options.top||screenY+(outerHeight-height)/2}},PopupHandler.prototype.preload=function(options){var _this=this,_window=windowHelper.getWindow(),popupPosition=this.calculatePosition(options.popupOptions||{}),popupOptions=objectHelper.merge(popupPosition).with(options.popupOptions),url=options.url||"about:blank",windowFeatures=lib.stringify(popupOptions,{encode:!1,delimiter:","});return this._current_popup&&!this._current_popup.closed||(this._current_popup=_window.open(url,"auth0_signup_popup",windowFeatures),this._current_popup.kill=function(){this.close(),_this._current_popup=null}),this._current_popup},PopupHandler.prototype.load=function(url,relayUrl,options,cb){var _this=this,popupPosition=this.calculatePosition(options.popupOptions||{}),popupOptions=objectHelper.merge(popupPosition).with(options.popupOptions),winchanOptions=objectHelper.merge({url:url,relay_url:relayUrl,window_features:lib.stringify(popupOptions,{delimiter:",",encode:!1}),popup:this._current_popup}).with(options),popup=winchan.open(winchanOptions,(function(err,data){if(!err||"SyntaxError"!==err.name)return _this._current_popup=null,cb(err,data)}));return popup.focus(),popup},Popup.prototype.buildPopupHandler=function(){var pluginHandler=this.baseOptions.plugins.get("popup.getPopupHandler");return pluginHandler?pluginHandler.getPopupHandler():new PopupHandler},Popup.prototype.preload=function(options){options=options||{};var popup=this.buildPopupHandler();return popup.preload(options),popup},Popup.prototype.getPopupHandler=function(options,preload){return options.popupHandler?options.popupHandler:preload?this.preload(options):this.buildPopupHandler()},Popup.prototype.callback=function(options){var _this=this,theWindow=windowHelper.getWindow(),originUrl=(options=options||{}).popupOrigin||this.baseOptions.popupOrigin||windowHelper.getOrigin();theWindow.opener?winchan.onOpen((function(popupOrigin,r,cb){if(popupOrigin!==originUrl)return cb({error:"origin_mismatch",error_description:"The popup's origin ("+popupOrigin+") should match the `popupOrigin` parameter ("+originUrl+")."});_this.webAuth.parseHash(options||{},(function(err,data){return cb(err||data)}))})):theWindow.doPost=function(msg){theWindow.parent&&theWindow.parent.postMessage(msg,originUrl)}},Popup.prototype.authorize=function(options,cb){var url,relayUrl,popOpts={},pluginHandler=this.baseOptions.plugins.get("popup.authorize"),params=objectHelper.merge(this.baseOptions,["clientID","scope","domain","audience","tenant","responseType","redirectUri","_csrf","state","_intstate","nonce","organization","invitation"]).with(objectHelper.blacklist(options,["popupHandler"]));return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),relayUrl=urlJoin(this.baseOptions.rootUrl,"relay.html"),options.owp?params.owp=!0:(popOpts.origin=urlHelper.extractOrigin(params.redirectUri),relayUrl=params.redirectUri),options.popupOptions&&(popOpts.popupOptions=objectHelper.pick(options.popupOptions,["width","height","top","left"])),pluginHandler&&(params=pluginHandler.processParams(params)),(params=this.transactionManager.process(params)).scope=params.scope||"openid profile email",delete params.domain,url=this.client.buildAuthorizeUrl(params),this.getPopupHandler(options).load(url,relayUrl,popOpts,wrapCallback(cb,{keepOriginalCasing:!0}))},Popup.prototype.loginWithCredentials=function(options,cb){options.realm=options.realm||options.connection,options.popup=!0,options=objectHelper.merge(this.baseOptions,["redirectUri","responseType","state","nonce","timeout"]).with(objectHelper.blacklist(options,["popupHandler","connection"])),options=this.transactionManager.process(options),this.crossOriginAuthentication.login(options,cb)},Popup.prototype.passwordlessVerify=function(options,cb){var _this=this;return this.client.passwordless.verify(objectHelper.blacklist(options,["popupHandler"]),(function(err){if(err)return cb(err);options.username=options.phoneNumber||options.email,options.password=options.verificationCode,delete options.email,delete options.phoneNumber,delete options.verificationCode,delete options.type,_this.client.loginWithResourceOwner(options,cb)}))},Popup.prototype.signupAndLogin=function(options,cb){var _this=this;return this.client.dbConnection.signup(options,(function(err){if(err)return cb(err);_this.loginWithCredentials(options,cb)}))},SilentAuthenticationHandler.create=function(options){return new SilentAuthenticationHandler(options)},SilentAuthenticationHandler.prototype.login=function(usePostMessage,callback){this.handler=new IframeHandler({auth0:this.auth0,url:this.authenticationUrl,eventListenerType:usePostMessage?"message":"load",callback:this.getCallbackHandler(callback,usePostMessage),timeout:this.timeout,eventValidator:this.getEventValidator(),timeoutCallback:function(){callback(null,"#error=timeout&error_description=Timeout+during+authentication+renew.")},usePostMessage:usePostMessage||!1}),this.handler.init()},SilentAuthenticationHandler.prototype.getEventValidator=function(){var _this=this;return{isValid:function(eventData){switch(eventData.event.type){case"message":return eventData.event.origin===_this.postMessageOrigin&&eventData.event.source===_this.handler.iframe.contentWindow&&(!1===_this.postMessageDataType||eventData.event.data.type&&eventData.event.data.type===_this.postMessageDataType);case"load":if("about:"===eventData.sourceObject.contentWindow.location.protocol)return!1;default:return!0}}}},SilentAuthenticationHandler.prototype.getCallbackHandler=function(callback,usePostMessage){return function(eventData){var callbackValue;callbackValue=usePostMessage?"object"==typeof eventData.event.data&&eventData.event.data.hash?eventData.event.data.hash:eventData.event.data:eventData.sourceObject.contentWindow.location.hash,callback(null,callbackValue)}},UsernamePassword.prototype.login=function(options,cb){var url,body;return url=urlJoin(this.baseOptions.rootUrl,"usernamepassword","login"),options.username=options.username||options.email,options=objectHelper.blacklist(options,["email","onRedirecting"]),body=objectHelper.merge(this.baseOptions,["clientID","redirectUri","tenant","responseType","responseMode","scope","audience"]).with(options),body=this.transactionManager.process(body),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},UsernamePassword.prototype.callback=function(formHtml){var div,_document=windowHelper.getDocument();(div=_document.createElement("div")).innerHTML=formHtml,_document.body.appendChild(div).children[0].submit()},HostedPages.prototype.login=function(options,cb){if(windowHelper.getWindow().location.host!==this.baseOptions.domain)throw new Error("This method is meant to be used only inside the Universal Login Page.");var usernamePassword,params=objectHelper.merge(this.baseOptions,["clientID","redirectUri","tenant","responseType","responseMode","scope","audience","_csrf","state","_intstate","nonce"]).with(options);return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),(usernamePassword=new UsernamePassword(this.baseOptions)).login(params,(function(err,data){if(err)return cb(err);function doAuth(){usernamePassword.callback(data)}if("function"==typeof options.onRedirecting)return options.onRedirecting((function(){doAuth()}));doAuth()}))},HostedPages.prototype.signupAndLogin=function(options,cb){var _this=this;return _this.client.client.dbConnection.signup(options,(function(err){return err?cb(err):_this.login(options,cb)}))},HostedPages.prototype.getSSOData=function(withActiveDirectories,cb){var url,params="";return"function"==typeof withActiveDirectories&&(cb=withActiveDirectories,withActiveDirectories=!1),assert.check(withActiveDirectories,{type:"boolean",message:"withActiveDirectories parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),withActiveDirectories&&(params="?"+lib.stringify({ldaps:1,client_id:this.baseOptions.clientID})),url=urlJoin(this.baseOptions.rootUrl,"user","ssodata",params),this.request.get(url,{noHeaders:!0}).withCredentials().end(wrapCallback(cb))};var noop=function(){},captchaSolved=noop,defaults$2={lang:"en",templates:{auth0:function(challenge){var message="code"===challenge.type?"Enter the code shown above":"Solve the formula shown above";return'
\n \n \n
\n'},recaptcha_v2:function(){return'
'},recaptcha_enterprise:function(){return'
'},hcaptcha:function(){return'
'},friendly_captcha:function(){return'
'},arkose:function(){return'
'},auth0_v2:function(){return'
'},error:function(){return'
Error getting the bot detection challenge. Please contact the system administrator.
'}}};function handleAuth0Provider(element,options,challenge,load){element.innerHTML=options.templates[challenge.provider](challenge),element.querySelector(".captcha-reload").addEventListener("click",(function(e){e.preventDefault(),load()}))}function globalForCaptchaProvider(provider){switch(provider){case"recaptcha_v2":return window.grecaptcha;case"recaptcha_enterprise":return window.grecaptcha.enterprise;case"hcaptcha":return window.hcaptcha;case"friendly_captcha":return window.friendlyChallenge;case"arkose":return window.arkose;case"auth0_v2":return window.turnstile;default:throw new Error("Unknown captcha provider")}}function loadScript(url,attributes){var script=window.document.createElement("script");for(var attr in attributes)attr.startsWith("data-")?script.dataset[attr.replace("data-","")]=attributes[attr]:script[attr]=attributes[attr];script.src=url,window.document.body.appendChild(script)}function removeScript(url){window.document.querySelectorAll('script[src="'+url+'"]').forEach((function(script){script.remove()}))}function injectCaptchaScript(element,opts,callback,setValue){var callbackName=opts.provider+"Callback_"+Math.floor(1000001*Math.random()),attributes={async:!0,defer:!0},scriptSrc=function(provider,lang,callback,clientSubdomain,siteKey){switch(provider){case"recaptcha_v2":return"https://www.recaptcha.net/recaptcha/api.js?hl="+lang+"&onload="+callback;case"recaptcha_enterprise":return"https://www.recaptcha.net/recaptcha/enterprise.js?render=explicit&hl="+lang+"&onload="+callback;case"hcaptcha":return"https://js.hcaptcha.com/1/api.js?hl="+lang+"&onload="+callback;case"friendly_captcha":return"https://cdn.jsdelivr.net/npm/friendly-challenge@0.9.12/widget.min.js";case"arkose":return"https://"+clientSubdomain+".arkoselabs.com/v2/"+siteKey+"/api.js";case"auth0_v2":return"https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload="+callback;default:throw new Error("Unknown captcha provider")}}(opts.provider,opts.lang,callbackName,opts.clientSubdomain,opts.siteKey);if("arkose"===opts.provider||"auth0_v2"===opts.provider){var retryCount=0;attributes["data-callback"]=callbackName,attributes.onerror=function(){if(retryCount<3)return removeScript(scriptSrc),loadScript(scriptSrc,attributes),void retryCount++;removeScript(scriptSrc),setValue("BYPASS_CAPTCHA")},window[callbackName]=function(arkose){window.arkose=arkose,callback(arkose)}}else window[callbackName]=function(){delete window[callbackName],callback()},"friendly_captcha"===opts.provider&&(attributes.onload=window[callbackName]);loadScript(scriptSrc,attributes)}function handleCaptchaProvider(element,options,challenge){var captchaClass,widgetId=element.hasAttribute("data-wid")&&element.getAttribute("data-wid");function setValue(value){element.querySelector('input[name="captcha"]').value=value||""}if("friendly_captcha"===challenge.provider&&window.auth0FCInstance)return setValue(),void window.auth0FCInstance.reset();if("arkose"===challenge.provider&&globalForCaptchaProvider(challenge.provider))return setValue(),void globalForCaptchaProvider(challenge.provider).reset();if(widgetId)return setValue(),void globalForCaptchaProvider(challenge.provider).reset(widgetId);switch(element.innerHTML=options.templates[challenge.provider](challenge),challenge.provider){case"recaptcha_enterprise":case"recaptcha_v2":captchaClass=".recaptcha";break;case"hcaptcha":captchaClass=".hcaptcha";break;case"friendly_captcha":captchaClass=".friendly-captcha";break;case"arkose":captchaClass=".arkose";break;case"auth0_v2":captchaClass=".auth0_v2"}var captchaDiv=element.querySelector(captchaClass);injectCaptchaScript(0,{lang:options.lang,provider:challenge.provider,clientSubdomain:challenge.clientSubdomain,siteKey:challenge.siteKey},(function(arkose){var global=globalForCaptchaProvider(challenge.provider);if("arkose"===challenge.provider){var retryCount=0;arkose.setConfig({onCompleted:function(response){setValue(response.token),captchaSolved()},onError:function(){retryCount<3?(setValue(),arkose.reset(),setTimeout((function(){arkose.run()}),500),retryCount++):setValue("BYPASS_CAPTCHA")}})}else if("friendly_captcha"===challenge.provider)window.auth0FCInstance=new global.WidgetInstance(captchaDiv,{sitekey:challenge.siteKey,language:options.lang,doneCallback:function(solution){setValue(solution)},errorCallback:function(){setValue()}});else{var renderParams={callback:setValue,"expired-callback":function(){setValue()},"error-callback":function(){setValue()},sitekey:challenge.siteKey};"auth0_v2"===challenge.provider&&(retryCount=0,renderParams.language=options.lang,renderParams.theme="light",renderParams.retry="never",renderParams["response-field"]=!1,renderParams["error-callback"]=function(){return retryCount<3?(setValue(),globalForCaptchaProvider(challenge.provider).reset(widgetId),retryCount++):setValue("BYPASS_CAPTCHA"),!0}),widgetId=global.render(captchaDiv,renderParams),element.setAttribute("data-wid",widgetId)}}),setValue)}var captcha={render:function(auth0Client,element,options,callback){function load(done){done=done||noop,auth0Client.getChallenge((function(err,challenge){return err?(element.innerHTML=options.templates.error(err),done(err)):challenge.required?(element.style.display="","auth0"===challenge.provider?handleAuth0Provider(element,options,challenge,load):"recaptcha_v2"!==challenge.provider&&"recaptcha_enterprise"!==challenge.provider&&"hcaptcha"!==challenge.provider&&"friendly_captcha"!==challenge.provider&&"arkose"!==challenge.provider&&"auth0_v2"!==challenge.provider||handleCaptchaProvider(element,options,challenge),void("arkose"===challenge.provider?done(null,{triggerCaptcha:function(solvedCallback){globalForCaptchaProvider(challenge.provider).run(),captchaSolved=solvedCallback}}):done())):(element.style.display="none",void(element.innerHTML=""))}))}return options=objectHelper.merge(defaults$2).with(options||{}),load(callback),{reload:load,getValue:function(){var captchaInput=element.querySelector('input[name="captcha"]');if(captchaInput)return captchaInput.value}}},renderPasswordless:function(auth0Client,element,options,callback){function load(done){done=done||noop,auth0Client.passwordless.getChallenge((function(err,challenge){return err?(element.innerHTML=options.templates.error(err),done(err)):challenge.required?(element.style.display="","auth0"===challenge.provider?handleAuth0Provider(element,options,challenge,load):"recaptcha_v2"!==challenge.provider&&"recaptcha_enterprise"!==challenge.provider&&"hcaptcha"!==challenge.provider&&"friendly_captcha"!==challenge.provider&&"arkose"!==challenge.provider&&"auth0_v2"!==challenge.provider||handleCaptchaProvider(element,options,challenge),void("arkose"===challenge.provider?done(null,{triggerCaptcha:function(solvedCallback){globalForCaptchaProvider(challenge.provider).run(),captchaSolved=solvedCallback}}):done())):(element.style.display="none",void(element.innerHTML=""))}))}return options=objectHelper.merge(defaults$2).with(options||{}),load(callback),{reload:load,getValue:function(){var captchaInput=element.querySelector('input[name="captcha"]');if(captchaInput)return captchaInput.value}}}};function defaultClock(){return new Date}function WebAuth(options){assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},clientID:{type:"string",message:"clientID option is required"},responseType:{optional:!0,type:"string",message:"responseType is not valid"},responseMode:{optional:!0,type:"string",message:"responseMode is not valid"},redirectUri:{optional:!0,type:"string",message:"redirectUri is not valid"},scope:{optional:!0,type:"string",message:"scope is not valid"},audience:{optional:!0,type:"string",message:"audience is not valid"},popupOrigin:{optional:!0,type:"string",message:"popupOrigin is not valid"},leeway:{optional:!0,type:"number",message:"leeway is not valid"},plugins:{optional:!0,type:"array",message:"plugins is not valid"},maxAge:{optional:!0,type:"number",message:"maxAge is not valid"},stateExpiration:{optional:!0,type:"number",message:"stateExpiration is not valid"},legacySameSiteCookie:{optional:!0,type:"boolean",message:"legacySameSiteCookie option is not valid"},_disableDeprecationWarnings:{optional:!0,type:"boolean",message:"_disableDeprecationWarnings option is not valid"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"},_timesToRetryFailedRequests:{optional:!0,type:"number",message:"_timesToRetryFailedRequests option is not valid"}}),options.overrides&&assert.check(options.overrides,{type:"object",message:"overrides option is not valid"},{__tenant:{optional:!0,type:"string",message:"__tenant option is required"},__token_issuer:{optional:!0,type:"string",message:"__token_issuer option is required"},__jwks_uri:{optional:!0,type:"string",message:"__jwks_uri is required"}}),this.baseOptions=options,this.baseOptions.plugins=new PluginHandler(this,this.baseOptions.plugins||[]),this.baseOptions._sendTelemetry=!1!==this.baseOptions._sendTelemetry||this.baseOptions._sendTelemetry,this.baseOptions._timesToRetryFailedRequests=options._timesToRetryFailedRequests?parseInt(options._timesToRetryFailedRequests):0,this.baseOptions.tenant=this.baseOptions.overrides&&this.baseOptions.overrides.__tenant||this.baseOptions.domain.split(".")[0],this.baseOptions.token_issuer=this.baseOptions.overrides&&this.baseOptions.overrides.__token_issuer||"https://"+this.baseOptions.domain+"/",this.baseOptions.jwksURI=this.baseOptions.overrides&&this.baseOptions.overrides.__jwks_uri,!1!==options.legacySameSiteCookie&&(this.baseOptions.legacySameSiteCookie=!0),this.transactionManager=new TransactionManager(this.baseOptions),this.client=new Authentication(this.baseOptions),this.redirect=new Redirect(this,this.baseOptions),this.popup=new Popup(this,this.baseOptions),this.crossOriginAuthentication=new CrossOriginAuthentication(this,this.baseOptions),this.webMessageHandler=new WebMessageHandler(this),this._universalLogin=new HostedPages(this,this.baseOptions),this.ssodataStorage=new SSODataStorage(this.baseOptions)}function PasswordlessAuthentication(request,options){this.baseOptions=options,this.request=request}function DBConnection(request,options){this.baseOptions=options,this.request=request}function Authentication(auth0,options){2===arguments.length?this.auth0=auth0:options=auth0,assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},clientID:{type:"string",message:"clientID option is required"},responseType:{optional:!0,type:"string",message:"responseType is not valid"},responseMode:{optional:!0,type:"string",message:"responseMode is not valid"},redirectUri:{optional:!0,type:"string",message:"redirectUri is not valid"},scope:{optional:!0,type:"string",message:"scope is not valid"},audience:{optional:!0,type:"string",message:"audience is not valid"},_disableDeprecationWarnings:{optional:!0,type:"boolean",message:"_disableDeprecationWarnings option is not valid"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"}}),this.baseOptions=options,this.baseOptions._sendTelemetry=!1!==this.baseOptions._sendTelemetry||this.baseOptions._sendTelemetry,this.baseOptions.rootUrl=this.baseOptions.domain&&0===this.baseOptions.domain.toLowerCase().indexOf("http")?this.baseOptions.domain:"https://"+this.baseOptions.domain,this.request=new RequestBuilder(this.baseOptions),this.passwordless=new PasswordlessAuthentication(this.request,this.baseOptions),this.dbConnection=new DBConnection(this.request,this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings}),this.ssodataStorage=new SSODataStorage(this.baseOptions)}function Management(options){assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},token:{type:"string",message:"token option is required"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"}}),this.baseOptions=options,this.baseOptions.headers={Authorization:"Bearer "+this.baseOptions.token},this.request=new RequestBuilder(this.baseOptions),this.baseOptions.rootUrl=urlJoin("https://"+this.baseOptions.domain,"api","v2")}WebAuth.prototype.parseHash=function(options,cb){var parsedQs,err;cb||"function"!=typeof options?options=options||{}:(cb=options,options={});var hashStr=void 0===options.hash?windowHelper.getWindow().location.hash:options.hash;if(hashStr=hashStr.replace(/^#?\/?/,""),(parsedQs=lib.parse(hashStr)).hasOwnProperty("error"))return err=error.buildResponse(parsedQs.error,parsedQs.error_description),parsedQs.state&&(err.state=parsedQs.state),cb(err);if(!parsedQs.hasOwnProperty("access_token")&&!parsedQs.hasOwnProperty("id_token")&&!parsedQs.hasOwnProperty("refresh_token"))return cb(null,null);var responseTypes=(this.baseOptions.responseType||options.responseType||"").split(" ");return responseTypes.length>0&&-1!==responseTypes.indexOf("token")&&!parsedQs.hasOwnProperty("access_token")?cb(error.buildResponse("invalid_hash","response_type contains `token`, but the parsed hash does not contain an `access_token` property")):responseTypes.length>0&&-1!==responseTypes.indexOf("id_token")&&!parsedQs.hasOwnProperty("id_token")?cb(error.buildResponse("invalid_hash","response_type contains `id_token`, but the parsed hash does not contain an `id_token` property")):this.validateAuthenticationResponse(options,parsedQs,cb)},WebAuth.prototype.validateAuthenticationResponse=function(options,parsedHash,cb){var _this=this;options.__enableIdPInitiatedLogin=options.__enableIdPInitiatedLogin||options.__enableImpersonation;var state=parsedHash.state,transaction=this.transactionManager.getStoredTransaction(state),transactionState=options.state||transaction&&transaction.state||null,transactionStateMatchesState=transactionState===state;if(!(!state&&!transactionState&&options.__enableIdPInitiatedLogin)&&!transactionStateMatchesState)return cb({error:"invalid_token",errorDescription:"`state` does not match."});var transactionNonce=options.nonce||transaction&&transaction.nonce||null,transactionOrganization=transaction&&transaction.organization,appState=options.state||transaction&&transaction.appState||null,callback=function(err,payload){if(err)return cb(err);var sub;transaction&&transaction.lastUsedConnection&&(payload&&(sub=payload.sub),_this.ssodataStorage.set(transaction.lastUsedConnection,sub));return cb(null,function(qsParams,appState,token){return{accessToken:qsParams.access_token||null,idToken:qsParams.id_token||null,idTokenPayload:token||null,appState:appState||null,refreshToken:qsParams.refresh_token||null,state:qsParams.state||null,expiresIn:qsParams.expires_in?parseInt(qsParams.expires_in,10):null,tokenType:qsParams.token_type||null,scope:qsParams.scope||null}}(parsedHash,appState,payload))};return parsedHash.id_token?this.validateToken(parsedHash.id_token,transactionNonce,(function(validationError,payload){if(!validationError){if(transactionOrganization)if(0===transactionOrganization.indexOf("org_")){if(!payload.org_id)return callback(error.invalidToken("Organization Id (org_id) claim must be a string present in the ID token"));if(payload.org_id!==transactionOrganization)return callback(error.invalidToken('Organization Id (org_id) claim value mismatch in the ID token; expected "'+transactionOrganization+'", found "'+payload.org_id+'"'))}else{if(!payload.org_name)return callback(error.invalidToken("Organization Name (org_name) claim must be a string present in the ID token"));if(payload.org_name!==transactionOrganization.toLowerCase())return callback(error.invalidToken('Organization Name (org_name) claim value mismatch in the ID token; expected "'+transactionOrganization+'", found "'+payload.org_name+'"'))}return parsedHash.access_token&&payload.at_hash?(new M).validateAccessToken(parsedHash.access_token,"RS256",payload.at_hash,(function(err){return err?callback(error.invalidToken(err.message)):callback(null,payload)})):callback(null,payload)}if("invalid_token"!==validationError.error||validationError.errorDescription&&validationError.errorDescription.indexOf("Nonce (nonce) claim value mismatch in the ID token")>-1)return callback(validationError);var decodedToken=(new M).decode(parsedHash.id_token);if("HS256"!==decodedToken.header.alg)return callback(validationError);if((decodedToken.payload.nonce||null)!==transactionNonce)return callback({error:"invalid_token",errorDescription:'Nonce (nonce) claim value mismatch in the ID token; expected "'+transactionNonce+'", found "'+decodedToken.payload.nonce+'"'});if(!parsedHash.access_token){return callback({error:"invalid_token",description:"The id_token cannot be validated because it was signed with the HS256 algorithm and public clients (like a browser) can’t store secrets. Please read the associated doc for possible ways to fix this. Read more: https://auth0.com/docs/errors/libraries/auth0-js/invalid-token#parsing-an-hs256-signed-id-token-without-an-access-token"})}return _this.client.userInfo(parsedHash.access_token,(function(errUserInfo,profile){return errUserInfo?callback(errUserInfo):callback(null,profile)}))})):callback(null,null)},WebAuth.prototype.validateToken=function(token,nonce,cb){new M({issuer:this.baseOptions.token_issuer,jwksURI:this.baseOptions.jwksURI,audience:this.baseOptions.clientID,leeway:this.baseOptions.leeway||60,maxAge:this.baseOptions.maxAge,__clock:this.baseOptions.__clock||defaultClock}).verify(token,nonce,(function(err,payload){if(err)return cb(error.invalidToken(err.message));cb(null,payload)}))},WebAuth.prototype.renewAuth=function(options,cb){var usePostMessage=!!options.usePostMessage,postMessageDataType=options.postMessageDataType||!1,postMessageOrigin=options.postMessageOrigin||windowHelper.getWindow().origin,timeout=options.timeout,_this=this,params=objectHelper.merge(this.baseOptions,["clientID","redirectUri","responseType","scope","audience","_csrf","state","_intstate","nonce"]).with(options);params.responseType=params.responseType||"token",params.responseMode=params.responseMode||"fragment",params=this.transactionManager.process(params),assert.check(params,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),params.prompt="none",params=objectHelper.blacklist(params,["usePostMessage","tenant","postMessageDataType","postMessageOrigin"]),SilentAuthenticationHandler.create({authenticationUrl:this.client.buildAuthorizeUrl(params),postMessageDataType:postMessageDataType,postMessageOrigin:postMessageOrigin,timeout:timeout}).login(usePostMessage,(function(err,hash){if("object"==typeof hash)return cb(err,hash);_this.parseHash({hash:hash},cb)}))},WebAuth.prototype.checkSession=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(options);return"code"===params.responseType?cb({error:"error",error_description:"responseType can't be `code`"}):(options.nonce||(params=this.transactionManager.process(params)),params.redirectUri?(assert.check(params,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),params=objectHelper.blacklist(params,["usePostMessage","tenant","postMessageDataType"]),void this.webMessageHandler.run(params,wrapCallback(cb,{forceLegacyError:!0,ignoreCasing:!0}))):cb({error:"error",error_description:"redirectUri can't be empty"}))},WebAuth.prototype.changePassword=function(options,cb){return this.client.dbConnection.changePassword(options,cb)},WebAuth.prototype.passwordlessStart=function(options,cb){var authParams=objectHelper.merge(this.baseOptions,["responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(options.authParams);return options.authParams=this.transactionManager.process(authParams),this.client.passwordless.start(options,cb)},WebAuth.prototype.signup=function(options,cb){return this.client.dbConnection.signup(options,cb)},WebAuth.prototype.authorize=function(options){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce","organization","invitation"]).with(options);assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),(params=this.transactionManager.process(params)).scope=params.scope||"openid profile email",windowHelper.redirect(this.client.buildAuthorizeUrl(params))},WebAuth.prototype.signupAndAuthorize=function(options,cb){var _this=this;return this.client.dbConnection.signup(objectHelper.blacklist(options,["popupHandler"]),(function(err){if(err)return cb(err);options.realm=options.connection,options.username||(options.username=options.email),_this.client.login(options,cb)}))},WebAuth.prototype.login=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting","organization","invitation"]).with(options);params=this.transactionManager.process(params),windowHelper.getWindow().location.host===this.baseOptions.domain?(params.connection=params.realm,delete params.realm,this._universalLogin.login(params,cb)):this.crossOriginAuthentication.login(params,cb)},WebAuth.prototype.passwordlessLogin=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting"]).with(options);if(params=this.transactionManager.process(params),windowHelper.getWindow().location.host===this.baseOptions.domain)this.passwordlessVerify(params,cb);else{var crossOriginOptions=objectHelper.extend({credentialType:"http://auth0.com/oauth/grant-type/passwordless/otp",realm:params.connection,username:params.email||params.phoneNumber,otp:params.verificationCode},objectHelper.blacklist(params,["connection","email","phoneNumber","verificationCode"]));this.crossOriginAuthentication.login(crossOriginOptions,cb)}},WebAuth.prototype.crossOriginAuthenticationCallback=function(){this.crossOriginVerification()},WebAuth.prototype.crossOriginVerification=function(){this.crossOriginAuthentication.callback()},WebAuth.prototype.logout=function(options){windowHelper.redirect(this.client.buildLogoutUrl(options))},WebAuth.prototype.passwordlessVerify=function(options,cb){var _this=this,params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting"]).with(options);return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),params=this.transactionManager.process(params),this.client.passwordless.verify(params,(function(err){if(err)return cb(err);function doAuth(){windowHelper.redirect(_this.client.passwordless.buildVerifyUrl(params))}if("function"==typeof options.onRedirecting)return options.onRedirecting((function(){doAuth()}));doAuth()}))},WebAuth.prototype.renderCaptcha=function(element,options,callback){return captcha.render(this.client,element,options,callback)},WebAuth.prototype.renderPasswordlessCaptcha=function(element,options,callback){return captcha.renderPasswordless(this.client,element,options,callback)},PasswordlessAuthentication.prototype.buildVerifyUrl=function(options){var params,qString;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},verificationCode:{type:"string",message:"verificationCode option is required"},phoneNumber:{optional:!1,type:"string",message:"phoneNumber option is required",condition:function(o){return!o.email}},email:{optional:!1,type:"string",message:"email option is required",condition:function(o){return!o.phoneNumber}}}),params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","protocol","nonce"]).with(options),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params=objectHelper.toSnakeCase(params,["auth0Client"]),qString=lib.stringify(params),urlJoin(this.baseOptions.rootUrl,"passwordless","verify_redirect","?"+qString)},PasswordlessAuthentication.prototype.start=function(options,cb){var url,body;assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},send:{type:"string",message:"send option is required",values:["link","code"],value_message:"send is not valid ([link, code])"},phoneNumber:{optional:!0,type:"string",message:"phoneNumber option is required",condition:function(o){return"code"===o.send||!o.email}},email:{optional:!0,type:"string",message:"email option is required",condition:function(o){return"link"===o.send||!o.phoneNumber}},authParams:{optional:!0,type:"object",message:"authParams option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"passwordless","start");var xRequestLanguage=options.xRequestLanguage;delete options.xRequestLanguage,(body=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope"]).with(options)).scope&&(body.authParams=body.authParams||{},body.authParams.scope=body.authParams.scope||body.scope),body.redirectUri&&(body.authParams=body.authParams||{},body.authParams.redirect_uri=body.authParams.redirectUri||body.redirectUri),body.responseType&&(body.authParams=body.authParams||{},body.authParams.response_type=body.authParams.responseType||body.responseType),delete body.redirectUri,delete body.responseType,delete body.scope,body=objectHelper.toSnakeCase(body,["auth0Client","authParams"]);var postOptions=xRequestLanguage?{xRequestLanguage:xRequestLanguage}:void 0;return this.request.post(url,postOptions).send(body).end(wrapCallback(cb))},PasswordlessAuthentication.prototype.verify=function(options,cb){var url,cleanOption;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},verificationCode:{type:"string",message:"verificationCode option is required"},phoneNumber:{optional:!1,type:"string",message:"phoneNumber option is required",condition:function(o){return!o.email}},email:{optional:!1,type:"string",message:"email option is required",condition:function(o){return!o.phoneNumber}}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),cleanOption=objectHelper.pick(options,["connection","verificationCode","phoneNumber","email","auth0Client","clientID"]),cleanOption=objectHelper.toSnakeCase(cleanOption,["auth0Client"]),url=urlJoin(this.baseOptions.rootUrl,"passwordless","verify"),this.request.post(url).send(cleanOption).end(wrapCallback(cb))},PasswordlessAuthentication.prototype.getChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"passwordless","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},DBConnection.prototype.signup=function(options,cb){var url,body,metadata;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},email:{type:"string",message:"email option is required"},password:{type:"string",message:"password option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"dbconnections","signup"),metadata=(body=objectHelper.merge(this.baseOptions,["clientID","state"]).with(options)).user_metadata||body.userMetadata,body=objectHelper.blacklist(body,["scope","userMetadata","user_metadata"]),body=objectHelper.toSnakeCase(body,["auth0Client"]),metadata&&(body.user_metadata=metadata),this.request.post(url).send(body).end(wrapCallback(cb))},DBConnection.prototype.changePassword=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},email:{type:"string",message:"email option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"dbconnections","change_password"),body=objectHelper.merge(this.baseOptions,["clientID","state"]).with(options,["email","connection","captcha"]),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},DBConnection.prototype.getChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"dbconnections","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.buildAuthorizeUrl=function(options){var params,qString;return assert.check(options,{type:"object",message:"options parameter is not valid"}),params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience"]).with(options),assert.check(params,{type:"object",message:"options parameter is not valid"},{clientID:{type:"string",message:"clientID option is required"},redirectUri:{optional:!0,type:"string",message:"redirectUri option is required"},responseType:{type:"string",message:"responseType option is required"},nonce:{type:"string",message:"nonce option is required",condition:function(o){return-1===o.responseType.indexOf("code")&&-1!==o.responseType.indexOf("id_token")}},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params.connection_scope&&assert.isArray(params.connection_scope)&&(params.connection_scope=params.connection_scope.join(",")),params=objectHelper.blacklist(params,["username","popupOptions","domain","tenant","timeout","appState"]),params=objectHelper.toSnakeCase(params,["auth0Client"]),params=parametersWhitelist.oauthAuthorizeParams(this.warn,params),qString=lib.stringify(params),urlJoin(this.baseOptions.rootUrl,"authorize","?"+qString)},Authentication.prototype.buildLogoutUrl=function(options){var params,qString;return assert.check(options,{optional:!0,type:"object",message:"options parameter is not valid"}),params=objectHelper.merge(this.baseOptions,["clientID"]).with(options||{}),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params=objectHelper.toSnakeCase(params,["auth0Client","returnTo"]),qString=lib.stringify(objectHelper.blacklist(params,["federated"])),options&&void 0!==options.federated&&!1!==options.federated&&"false"!==options.federated&&(qString+="&federated"),urlJoin(this.baseOptions.rootUrl,"v2","logout","?"+qString)},Authentication.prototype.loginWithDefaultDirectory=function(options,cb){return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),options.grantType="password",this.oauthToken(options,cb)},Authentication.prototype.login=function(options,cb){return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},realm:{type:"string",message:"realm option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),options.grantType="http://auth0.com/oauth/grant-type/password-realm",this.oauthToken(options,cb)},Authentication.prototype.oauthToken=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"oauth","token"),body=objectHelper.merge(this.baseOptions,["clientID","scope","audience"]).with(options),assert.check(body,{type:"object",message:"options parameter is not valid"},{clientID:{type:"string",message:"clientID option is required"},grantType:{type:"string",message:"grantType option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),body=objectHelper.toSnakeCase(body,["auth0Client"]),body=parametersWhitelist.oauthTokenParams(this.warn,body),this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.loginWithResourceOwner=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},connection:{type:"string",message:"connection option is required"},scope:{optional:!0,type:"string",message:"scope option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"oauth","ro"),body=objectHelper.merge(this.baseOptions,["clientID","scope"]).with(options,["username","password","scope","connection","device"]),(body=objectHelper.toSnakeCase(body,["auth0Client"])).grant_type=body.grant_type||"password",this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.getSSOData=function(withActiveDirectories,cb){if(this.auth0||(this.auth0=new WebAuth(this.baseOptions)),windowHelper.getWindow().location.host===this.baseOptions.domain)return this.auth0._universalLogin.getSSOData(withActiveDirectories,cb);"function"==typeof withActiveDirectories&&(cb=withActiveDirectories),assert.check(cb,{type:"function",message:"cb parameter is not valid"});var clientId=this.baseOptions.clientID,ssodataInformation=this.ssodataStorage.get()||{};this.auth0.checkSession({responseType:"token id_token",scope:"openid profile email",connection:ssodataInformation.lastUsedConnection,timeout:5e3},(function(err,result){return err?"login_required"===err.error?cb(null,{sso:!1}):("consent_required"===err.error&&(err.error_description="Consent required. When using `getSSOData`, the user has to be authenticated with the following scope: `openid profile email`."),cb(err,{sso:!1})):ssodataInformation.lastUsedSub&&ssodataInformation.lastUsedSub!==result.idTokenPayload.sub?cb(err,{sso:!1}):cb(null,{lastUsedConnection:{name:ssodataInformation.lastUsedConnection},lastUsedUserID:result.idTokenPayload.sub,lastUsedUsername:result.idTokenPayload.email||result.idTokenPayload.name,lastUsedClientID:clientId,sessionClients:[clientId],sso:!0})}))},Authentication.prototype.userInfo=function(accessToken,cb){var url;return assert.check(accessToken,{type:"string",message:"accessToken parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"userinfo"),this.request.get(url).set("Authorization","Bearer "+accessToken).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.getChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"usernamepassword","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.delegation=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{grant_type:{type:"string",message:"grant_type option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"delegation"),body=objectHelper.merge(this.baseOptions,["clientID"]).with(options),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.getUserCountry=function(cb){var url;return assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"user","geoloc","country"),this.request.get(url).end(wrapCallback(cb))},Management.prototype.getUser=function(userId,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.get(url).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.patchUserMetadata=function(userId,userMetadata,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(userMetadata,{type:"object",message:"userMetadata parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.patch(url).send({user_metadata:userMetadata}).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.patchUserAttributes=function(userId,user,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(user,{type:"object",message:"user parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.patch(url).send(user).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.linkUser=function(userId,secondaryUserToken,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(secondaryUserToken,{type:"string",message:"secondaryUserToken parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId,"identities"),this.request.post(url).send({link_with:secondaryUserToken}).end(wrapCallback(cb,{ignoreCasing:!0}))};var index={Authentication:Authentication,Management:Management,WebAuth:WebAuth,version:version};exports.Authentication=Authentication,exports.Management=Management,exports.WebAuth=WebAuth,exports.default=index,exports.version=version,Object.defineProperty(exports,"__esModule",{value:!0})})); +!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports):"function"==typeof define&&define.amd?define(["exports"],factory):factory((global=global||self).auth0={})}(this,(function(exports){"use strict";var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(fn,module){return fn(module={exports:{}},module.exports),module.exports}var urlJoin=createCommonjsModule((function(module){var context,definition;context=commonjsGlobal,definition=function(){function normalize(strArray){var resultArray=[];if(0===strArray.length)return"";if("string"!=typeof strArray[0])throw new TypeError("Url must be a string. Received "+strArray[0]);if(strArray[0].match(/^[^/:]+:\/*$/)&&strArray.length>1){var first=strArray.shift();strArray[0]=first+strArray[0]}strArray[0].match(/^file:\/\/\//)?strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1:///"):strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(component=component.replace(/^[\/]+/,"")),component=i0?"?":"")+parts.join("&")}return function(){return normalize("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},module.exports?module.exports=definition():context.urljoin=definition()})),origSymbol="undefined"!=typeof Symbol&&Symbol,test={foo:{}},$Object=Object,ERROR_MESSAGE="Function.prototype.bind called on incompatible ",toStr=Object.prototype.toString,max=Math.max,concatty=function(a,b){for(var arr=[],i=0;i1&&"boolean"!=typeof allowMissing)throw new $TypeError('"allowMissing" argument must be a boolean');if(null===$exec(/^%?[^%]*%?$/,name))throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var parts=stringToPath(name),intrinsicBaseName=parts.length>0?parts[0]:"",intrinsic=getBaseIntrinsic("%"+intrinsicBaseName+"%",allowMissing),intrinsicRealName=intrinsic.name,value=intrinsic.value,skipFurtherCaching=!1,alias=intrinsic.alias;alias&&(intrinsicBaseName=alias[0],$spliceApply(parts,$concat([0,1],alias)));for(var i=1,isOwn=!0;i=parts.length){var desc=$gOPD(value,part);value=(isOwn=!!desc)&&"get"in desc&&!("originalValue"in desc.get)?desc.get:value[part]}else isOwn=src(value,part),value=value[part];isOwn&&!skipFurtherCaching&&(INTRINSICS[intrinsicRealName]=value)}}return value},callBind=createCommonjsModule((function(module){var $apply=getIntrinsic("%Function.prototype.apply%"),$call=getIntrinsic("%Function.prototype.call%"),$reflectApply=getIntrinsic("%Reflect.apply%",!0)||functionBind.call($call,$apply),$gOPD=getIntrinsic("%Object.getOwnPropertyDescriptor%",!0),$defineProperty=getIntrinsic("%Object.defineProperty%",!0),$max=getIntrinsic("%Math.max%");if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=null}module.exports=function(originalFunction){var func=$reflectApply(functionBind,$call,arguments);if($gOPD&&$defineProperty){var desc=$gOPD(func,"length");desc.configurable&&$defineProperty(func,"length",{value:1+$max(0,originalFunction.length-(arguments.length-1))})}return func};var applyBind=function(){return $reflectApply(functionBind,$apply,arguments)};$defineProperty?$defineProperty(module.exports,"apply",{value:applyBind}):module.exports.apply=applyBind})),$indexOf=(callBind.apply,callBind(getIntrinsic("String.prototype.indexOf"))),callBound=function(name,allowMissing){var intrinsic=getIntrinsic(name,!!allowMissing);return"function"==typeof intrinsic&&$indexOf(name,".prototype.")>-1?callBind(intrinsic):intrinsic},semver=function(n){return n&&n.default||n}(Object.freeze({__proto__:null,default:{}})),hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,weakMapHas="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,weakSetHas="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,weakRefDeref="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,$match=String.prototype.match,$slice=String.prototype.slice,$replace$1=String.prototype.replace,$toUpperCase=String.prototype.toUpperCase,$toLowerCase=String.prototype.toLowerCase,$test=RegExp.prototype.test,$concat$1=Array.prototype.concat,$join=Array.prototype.join,$arrSlice=Array.prototype.slice,$floor=Math.floor,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,toStringTag="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===hasShammedSymbols||"symbol")?Symbol.toStringTag:null,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(O){return O.__proto__}:null);function addNumericSeparator(num,str){if(num===1/0||num===-1/0||num!=num||num&&num>-1e3&&num<1e3||$test.call(/e/,str))return str;var sepRegex=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof num){var int=num<0?-$floor(-num):$floor(num);if(int!==num){var intStr=String(int),dec=$slice.call(str,intStr.length+1);return $replace$1.call(intStr,sepRegex,"$&_")+"."+$replace$1.call($replace$1.call(dec,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace$1.call(str,sepRegex,"$&_")}var inspectCustom=semver.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null,objectInspect=function inspect_(obj,options,depth,seen){var opts=options||{};if(has(opts,"quoteStyle")&&"single"!==opts.quoteStyle&&"double"!==opts.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(opts,"maxStringLength")&&("number"==typeof opts.maxStringLength?opts.maxStringLength<0&&opts.maxStringLength!==1/0:null!==opts.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var customInspect=!has(opts,"customInspect")||opts.customInspect;if("boolean"!=typeof customInspect&&"symbol"!==customInspect)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(opts,"indent")&&null!==opts.indent&&"\t"!==opts.indent&&!(parseInt(opts.indent,10)===opts.indent&&opts.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(opts,"numericSeparator")&&"boolean"!=typeof opts.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var numericSeparator=opts.numericSeparator;if(void 0===obj)return"undefined";if(null===obj)return"null";if("boolean"==typeof obj)return obj?"true":"false";if("string"==typeof obj)return function inspectString(str,opts){if(str.length>opts.maxStringLength){var remaining=str.length-opts.maxStringLength,trailer="... "+remaining+" more character"+(remaining>1?"s":"");return inspectString($slice.call(str,0,opts.maxStringLength),opts)+trailer}return wrapQuotes($replace$1.call($replace$1.call(str,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",opts)}(obj,opts);if("number"==typeof obj){if(0===obj)return 1/0/obj>0?"0":"-0";var str=String(obj);return numericSeparator?addNumericSeparator(obj,str):str}if("bigint"==typeof obj){var bigIntStr=String(obj)+"n";return numericSeparator?addNumericSeparator(obj,bigIntStr):bigIntStr}var maxDepth=void 0===opts.depth?5:opts.depth;if(void 0===depth&&(depth=0),depth>=maxDepth&&maxDepth>0&&"object"==typeof obj)return isArray(obj)?"[Array]":"[Object]";var indent=function(opts,depth){var baseIndent;if("\t"===opts.indent)baseIndent="\t";else{if(!("number"==typeof opts.indent&&opts.indent>0))return null;baseIndent=$join.call(Array(opts.indent+1)," ")}return{base:baseIndent,prev:$join.call(Array(depth+1),baseIndent)}}(opts,depth);if(void 0===seen)seen=[];else if(indexOf(seen,obj)>=0)return"[Circular]";function inspect(value,from,noIndent){if(from&&(seen=$arrSlice.call(seen)).push(from),noIndent){var newOpts={depth:opts.depth};return has(opts,"quoteStyle")&&(newOpts.quoteStyle=opts.quoteStyle),inspect_(value,newOpts,depth+1,seen)}return inspect_(value,opts,depth+1,seen)}if("function"==typeof obj&&!isRegExp(obj)){var name=function(f){if(f.name)return f.name;var m=$match.call(functionToString.call(f),/^function\s*([\w$]+)/);if(m)return m[1];return null}(obj),keys=arrObjKeys(obj,inspect);return"[Function"+(name?": "+name:" (anonymous)")+"]"+(keys.length>0?" { "+$join.call(keys,", ")+" }":"")}if(isSymbol(obj)){var symString=hasShammedSymbols?$replace$1.call(String(obj),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(obj);return"object"!=typeof obj||hasShammedSymbols?symString:markBoxed(symString)}if(function(x){if(!x||"object"!=typeof x)return!1;if("undefined"!=typeof HTMLElement&&x instanceof HTMLElement)return!0;return"string"==typeof x.nodeName&&"function"==typeof x.getAttribute}(obj)){for(var s="<"+$toLowerCase.call(String(obj.nodeName)),attrs=obj.attributes||[],i=0;i"}if(isArray(obj)){if(0===obj.length)return"[]";var xs=arrObjKeys(obj,inspect);return indent&&!function(xs){for(var i=0;i=0)return!1;return!0}(xs)?"["+indentedJoin(xs,indent)+"]":"[ "+$join.call(xs,", ")+" ]"}if(function(obj){return!("[object Error]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)){var parts=arrObjKeys(obj,inspect);return"cause"in Error.prototype||!("cause"in obj)||isEnumerable.call(obj,"cause")?0===parts.length?"["+String(obj)+"]":"{ ["+String(obj)+"] "+$join.call(parts,", ")+" }":"{ ["+String(obj)+"] "+$join.call($concat$1.call("[cause]: "+inspect(obj.cause),parts),", ")+" }"}if("object"==typeof obj&&customInspect){if(inspectSymbol&&"function"==typeof obj[inspectSymbol]&&semver)return semver(obj,{depth:maxDepth-depth});if("symbol"!==customInspect&&"function"==typeof obj.inspect)return obj.inspect()}if(function(x){if(!mapSize||!x||"object"!=typeof x)return!1;try{mapSize.call(x);try{setSize.call(x)}catch(s){return!0}return x instanceof Map}catch(e){}return!1}(obj)){var mapParts=[];return mapForEach&&mapForEach.call(obj,(function(value,key){mapParts.push(inspect(key,obj,!0)+" => "+inspect(value,obj))})),collectionOf("Map",mapSize.call(obj),mapParts,indent)}if(function(x){if(!setSize||!x||"object"!=typeof x)return!1;try{setSize.call(x);try{mapSize.call(x)}catch(m){return!0}return x instanceof Set}catch(e){}return!1}(obj)){var setParts=[];return setForEach&&setForEach.call(obj,(function(value){setParts.push(inspect(value,obj))})),collectionOf("Set",setSize.call(obj),setParts,indent)}if(function(x){if(!weakMapHas||!x||"object"!=typeof x)return!1;try{weakMapHas.call(x,weakMapHas);try{weakSetHas.call(x,weakSetHas)}catch(s){return!0}return x instanceof WeakMap}catch(e){}return!1}(obj))return weakCollectionOf("WeakMap");if(function(x){if(!weakSetHas||!x||"object"!=typeof x)return!1;try{weakSetHas.call(x,weakSetHas);try{weakMapHas.call(x,weakMapHas)}catch(s){return!0}return x instanceof WeakSet}catch(e){}return!1}(obj))return weakCollectionOf("WeakSet");if(function(x){if(!weakRefDeref||!x||"object"!=typeof x)return!1;try{return weakRefDeref.call(x),!0}catch(e){}return!1}(obj))return weakCollectionOf("WeakRef");if(function(obj){return!("[object Number]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(Number(obj)));if(function(obj){if(!obj||"object"!=typeof obj||!bigIntValueOf)return!1;try{return bigIntValueOf.call(obj),!0}catch(e){}return!1}(obj))return markBoxed(inspect(bigIntValueOf.call(obj)));if(function(obj){return!("[object Boolean]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(booleanValueOf.call(obj));if(function(obj){return!("[object String]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(String(obj)));if(!function(obj){return!("[object Date]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)&&!isRegExp(obj)){var ys=arrObjKeys(obj,inspect),isPlainObject=gPO?gPO(obj)===Object.prototype:obj instanceof Object||obj.constructor===Object,protoTag=obj instanceof Object?"":"null prototype",stringTag=!isPlainObject&&toStringTag&&Object(obj)===obj&&toStringTag in obj?$slice.call(toStr$1(obj),8,-1):protoTag?"Object":"",tag=(isPlainObject||"function"!=typeof obj.constructor?"":obj.constructor.name?obj.constructor.name+" ":"")+(stringTag||protoTag?"["+$join.call($concat$1.call([],stringTag||[],protoTag||[]),": ")+"] ":"");return 0===ys.length?tag+"{}":indent?tag+"{"+indentedJoin(ys,indent)+"}":tag+"{ "+$join.call(ys,", ")+" }"}return String(obj)};function wrapQuotes(s,defaultStyle,opts){var quoteChar="double"===(opts.quoteStyle||defaultStyle)?'"':"'";return quoteChar+s+quoteChar}function quote(s){return $replace$1.call(String(s),/"/g,""")}function isArray(obj){return!("[object Array]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isRegExp(obj){return!("[object RegExp]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isSymbol(obj){if(hasShammedSymbols)return obj&&"object"==typeof obj&&obj instanceof Symbol;if("symbol"==typeof obj)return!0;if(!obj||"object"!=typeof obj||!symToString)return!1;try{return symToString.call(obj),!0}catch(e){}return!1}var hasOwn=Object.prototype.hasOwnProperty||function(key){return key in this};function has(obj,key){return hasOwn.call(obj,key)}function toStr$1(obj){return objectToString.call(obj)}function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0,l=xs.length;i1;){var item=queue.pop(),obj=item.obj[item.prop];if(isArray$1(obj)){for(var compacted=[],j=0;j=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||format===formats.RFC1738&&(40===c||41===c)?out+=string.charAt(i):c<128?out+=hexTable[c]:c<2048?out+=hexTable[192|c>>6]+hexTable[128|63&c]:c<55296||c>=57344?out+=hexTable[224|c>>12]+hexTable[128|c>>6&63]+hexTable[128|63&c]:(i+=1,c=65536+((1023&c)<<10|1023&string.charCodeAt(i)),out+=hexTable[240|c>>18]+hexTable[128|c>>12&63]+hexTable[128|c>>6&63]+hexTable[128|63&c])}return out},isBuffer:function(obj){return!(!obj||"object"!=typeof obj)&&!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj))},isRegExp:function(obj){return"[object RegExp]"===Object.prototype.toString.call(obj)},maybeMap:function(val,fn){if(isArray$1(val)){for(var mapped=[],i=0;i0?obj.join(",")||null:void 0}];else if(isArray$2(filter))objKeys=filter;else{var keys=Object.keys(obj);objKeys=sort?keys.sort(sort):keys}for(var adjustedPrefix=commaRoundTrip&&isArray$2(obj)&&1===obj.length?prefix+"[]":prefix,j=0;j-1?val.split(","):val},parseKeys=function(givenKey,val,options,valuesParsed){if(givenKey){var key=options.allowDots?givenKey.replace(/\.([^.[]+)/g,"[$1]"):givenKey,child=/(\[[^[\]]*])/g,segment=options.depth>0&&/(\[[^[\]]*])/.exec(key),parent=segment?key.slice(0,segment.index):key,keys=[];if(parent){if(!options.plainObjects&&has$3.call(Object.prototype,parent)&&!options.allowPrototypes)return;keys.push(parent)}for(var i=0;options.depth>0&&null!==(segment=child.exec(key))&&i=0;--i){var obj,root=chain[i];if("[]"===root&&options.parseArrays)obj=[].concat(leaf);else{obj=options.plainObjects?Object.create(null):{};var cleanRoot="["===root.charAt(0)&&"]"===root.charAt(root.length-1)?root.slice(1,-1):root,index=parseInt(cleanRoot,10);options.parseArrays||""!==cleanRoot?!isNaN(index)&&root!==cleanRoot&&String(index)===cleanRoot&&index>=0&&options.parseArrays&&index<=options.arrayLimit?(obj=[])[index]=leaf:"__proto__"!==cleanRoot&&(obj[cleanRoot]=leaf):obj={0:leaf}}leaf=obj}return leaf}(keys,val,options,valuesParsed)}},lib={formats:formats,parse:function(str,opts){var options=function(opts){if(!opts)return defaults$1;if(null!==opts.decoder&&void 0!==opts.decoder&&"function"!=typeof opts.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==opts.charset&&"utf-8"!==opts.charset&&"iso-8859-1"!==opts.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var charset=void 0===opts.charset?defaults$1.charset:opts.charset;return{allowDots:void 0===opts.allowDots?defaults$1.allowDots:!!opts.allowDots,allowPrototypes:"boolean"==typeof opts.allowPrototypes?opts.allowPrototypes:defaults$1.allowPrototypes,allowSparse:"boolean"==typeof opts.allowSparse?opts.allowSparse:defaults$1.allowSparse,arrayLimit:"number"==typeof opts.arrayLimit?opts.arrayLimit:defaults$1.arrayLimit,charset:charset,charsetSentinel:"boolean"==typeof opts.charsetSentinel?opts.charsetSentinel:defaults$1.charsetSentinel,comma:"boolean"==typeof opts.comma?opts.comma:defaults$1.comma,decoder:"function"==typeof opts.decoder?opts.decoder:defaults$1.decoder,delimiter:"string"==typeof opts.delimiter||utils.isRegExp(opts.delimiter)?opts.delimiter:defaults$1.delimiter,depth:"number"==typeof opts.depth||!1===opts.depth?+opts.depth:defaults$1.depth,ignoreQueryPrefix:!0===opts.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof opts.interpretNumericEntities?opts.interpretNumericEntities:defaults$1.interpretNumericEntities,parameterLimit:"number"==typeof opts.parameterLimit?opts.parameterLimit:defaults$1.parameterLimit,parseArrays:!1!==opts.parseArrays,plainObjects:"boolean"==typeof opts.plainObjects?opts.plainObjects:defaults$1.plainObjects,strictNullHandling:"boolean"==typeof opts.strictNullHandling?opts.strictNullHandling:defaults$1.strictNullHandling}}(opts);if(""===str||null==str)return options.plainObjects?Object.create(null):{};for(var tempObj="string"==typeof str?function(str,options){var i,obj={__proto__:null},cleanStr=options.ignoreQueryPrefix?str.replace(/^\?/,""):str,limit=options.parameterLimit===1/0?void 0:options.parameterLimit,parts=cleanStr.split(options.delimiter,limit),skipIndex=-1,charset=options.charset;if(options.charsetSentinel)for(i=0;i-1&&(val=isArray$3(val)?[val]:val),has$3.call(obj,key)?obj[key]=utils.combine(obj[key],val):obj[key]=val}return obj}(str,options):str,obj=options.plainObjects?Object.create(null):{},keys=Object.keys(tempObj),i=0;i0?prefix+joined:""}},componentEmitter=createCommonjsModule((function(module){function Emitter(obj){if(obj)return function(obj){for(var key in Emitter.prototype)obj[key]=Emitter.prototype[key];return obj}(obj)}module.exports=Emitter,Emitter.prototype.on=Emitter.prototype.addEventListener=function(event,fn){return this._callbacks=this._callbacks||{},(this._callbacks["$"+event]=this._callbacks["$"+event]||[]).push(fn),this},Emitter.prototype.once=function(event,fn){function on(){this.off(event,on),fn.apply(this,arguments)}return on.fn=fn,this.on(event,on),this},Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(event,fn){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var cb,callbacks=this._callbacks["$"+event];if(!callbacks)return this;if(1==arguments.length)return delete this._callbacks["$"+event],this;for(var i=0;ioptions.depthLimit)return void setReplace("[...]",val,k,parent);if(void 0!==options.edgesLimit&&edgeIndex+1>options.edgesLimit)return void setReplace("[...]",val,k,parent);if(stack.push(val),Array.isArray(val))for(i=0;ib?1:0}function deterministicStringify(obj,replacer,spacer,options){void 0===options&&(options=defaultOptions());var res,tmp=function deterministicDecirc(val,k,edgeIndex,stack,parent,depth,options){var i;if(depth+=1,"object"==typeof val&&null!==val){for(i=0;ioptions.depthLimit)return void setReplace("[...]",val,k,parent);if(void 0!==options.edgesLimit&&edgeIndex+1>options.edgesLimit)return void setReplace("[...]",val,k,parent);if(stack.push(val),Array.isArray(val))for(i=0;i0)for(var i=0;i=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i=this._maxRetries)return!1;if(this._retryCallback)try{var override=this._retryCallback(error,res);if(!0===override)return!0;if(!1===override)return!1}catch(err){console.error(err)}if(res&&res.status&&STATUS_CODES.has(res.status))return!0;if(error){if(error.code&&ERROR_CODES.has(error.code))return!0;if(error.timeout&&"ECONNABORTED"===error.code)return!0;if(error.crossDomain)return!0}return!1},RequestBase.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this.timedoutError=null,this._end()},RequestBase.prototype.then=function(resolve,reject){var _this=this;if(!this._fullfilledPromise){var self=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise((function(resolve,reject){self.on("abort",(function(){if(!(_this._maxRetries&&_this._maxRetries>_this._retries))if(_this.timedout&&_this.timedoutError)reject(_this.timedoutError);else{var error=new Error("Aborted");error.code="ABORTED",error.status=_this.status,error.method=_this.method,error.url=_this.url,reject(error)}})),self.end((function(error,res){error?reject(error):resolve(res)}))}))}return this._fullfilledPromise.then(resolve,reject)},RequestBase.prototype.catch=function(callback){return this.then(void 0,callback)},RequestBase.prototype.use=function(fn){return fn(this),this},RequestBase.prototype.ok=function(callback){if("function"!=typeof callback)throw new Error("Callback required");return this._okCallback=callback,this},RequestBase.prototype._isResponseOK=function(res){return!!res&&(this._okCallback?this._okCallback(res):res.status>=200&&res.status<300)},RequestBase.prototype.get=function(field){return this._header[field.toLowerCase()]},RequestBase.prototype.getHeader=RequestBase.prototype.get,RequestBase.prototype.set=function(field,value){if(isObject(field)){for(var key in field)hasOwn$1(field,key)&&this.set(key,field[key]);return this}return this._header[field.toLowerCase()]=value,this.header[field]=value,this},RequestBase.prototype.unset=function(field){return delete this._header[field.toLowerCase()],delete this.header[field],this},RequestBase.prototype.field=function(name,value,options){if(null==name)throw new Error(".field(name, val) name can not be empty");if(this._data)throw new Error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()");if(isObject(name)){for(var key in name)hasOwn$1(name,key)&&this.field(key,name[key]);return this}if(Array.isArray(value)){for(var i in value)hasOwn$1(value,i)&&this.field(name,value[i]);return this}if(null==value)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof value&&(value=String(value)),options?this._getFormData().append(name,value,options):this._getFormData().append(name,value),this},RequestBase.prototype.abort=function(){if(this._aborted)return this;if(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req){if(semver.gte(process.version,"v13.0.0")&&semver.lt(process.version,"v14.0.0"))throw new Error("Superagent does not work in v13 properly with abort() due to Node.js core changes");semver.gte(process.version,"v14.0.0")&&(this.req.destroyed=!0),this.req.abort()}return this.clearTimeout(),this.emit("abort"),this},RequestBase.prototype._auth=function(user,pass,options,base64Encoder){switch(options.type){case"basic":this.set("Authorization","Basic ".concat(base64Encoder("".concat(user,":").concat(pass))));break;case"auto":this.username=user,this.password=pass;break;case"bearer":this.set("Authorization","Bearer ".concat(user))}return this},RequestBase.prototype.withCredentials=function(on){return void 0===on&&(on=!0),this._withCredentials=on,this},RequestBase.prototype.redirects=function(n){return this._maxRedirects=n,this},RequestBase.prototype.maxResponseSize=function(n){if("number"!=typeof n)throw new TypeError("Invalid argument");return this._maxResponseSize=n,this},RequestBase.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},RequestBase.prototype.send=function(data){var isObject_=isObject(data),type=this._header["content-type"];if(this._formData)throw new Error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()");if(isObject_&&!this._data)Array.isArray(data)?this._data=[]:this._isHost(data)||(this._data={});else if(data&&this._data&&this._isHost(this._data))throw new Error("Can't merge these send calls");if(isObject_&&isObject(this._data))for(var key in data)hasOwn$1(data,key)&&(this._data[key]=data[key]);else"string"==typeof data?(type||this.type("form"),(type=this._header["content-type"])&&(type=type.toLowerCase().trim()),this._data="application/x-www-form-urlencoded"===type?this._data?"".concat(this._data,"&").concat(data):data:(this._data||"")+data):this._data=data;return!isObject_||this._isHost(data)||type||this.type("json"),this},RequestBase.prototype.sortQuery=function(sort){return this._sort=void 0===sort||sort,this},RequestBase.prototype._finalizeQueryString=function(){var query=this._query.join("&");if(query&&(this.url+=(this.url.includes("?")?"&":"?")+query),this._query.length=0,this._sort){var index=this.url.indexOf("?");if(index>=0){var queryArray=this.url.slice(index+1).split("&");"function"==typeof this._sort?queryArray.sort(this._sort):queryArray.sort(),this.url=this.url.slice(0,index)+"?"+queryArray.join("&")}}},RequestBase.prototype._appendQueryString=function(){console.warn("Unsupported")},RequestBase.prototype._timeoutError=function(reason,timeout,errno){if(!this._aborted){var error=new Error("".concat(reason+timeout,"ms exceeded"));error.timeout=timeout,error.code="ECONNABORTED",error.errno=errno,this.timedout=!0,this.timedoutError=error,this.abort(),this.callback(error)}},RequestBase.prototype._setTimeouts=function(){var self=this;this._timeout&&!this._timer&&(this._timer=setTimeout((function(){self._timeoutError("Timeout of ",self._timeout,"ETIME")}),this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout((function(){self._timeoutError("Response timeout of ",self._responseTimeout,"ETIMEDOUT")}),this._responseTimeout))};var responseBase=ResponseBase;function ResponseBase(){}function _toConsumableArray(arr){return function(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr)}(arr)||function(iter){if("undefined"!=typeof Symbol&&null!=iter[Symbol.iterator]||null!=iter["@@iterator"])return Array.from(iter)}(arr)||_unsupportedIterableToArray(arr)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _unsupportedIterableToArray(o,minLen){if(o){if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(o):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(o,minLen):void 0}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}(this._defaults);try{for(_iterator.s();!(_step=_iterator.n()).done;){var def=_step.value;request[def.fn].apply(request,_toConsumableArray(def.args))}}catch(err){_iterator.e(err)}finally{_iterator.f()}};for(var agentBase=Agent,client=createCommonjsModule((function(module,exports){function _typeof(obj){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj})(obj)}function _createForOfIteratorHelper(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(!it){if(Array.isArray(o)||(it=function(o,minLen){if(!o)return;if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);"Object"===n&&o.constructor&&(n=o.constructor.name);if("Map"===n||"Set"===n)return Array.from(o);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}(o))||allowArrayLike&&o&&"number"==typeof o.length){it&&(o=it);var i=0,F=function(){};return{s:F,n:function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}},e:function(_e){throw _e},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var err,normalCompletion=!0,didErr=!1;return{s:function(){it=it.call(o)},n:function(){var step=it.next();return normalCompletion=step.done,step},e:function(_e2){didErr=!0,err=_e2},f:function(){try{normalCompletion||null==it.return||it.return()}finally{if(didErr)throw err}}}}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i0||string_ instanceof Object)?parse(string_):null)},Response.prototype.toError=function(){var req=this.req,method=req.method,url=req.url,message="cannot ".concat(method," ").concat(url," (").concat(this.status,")"),error=new Error(message);return error.status=this.status,error.method=method,error.url=url,error},request.Response=Response,componentEmitter(Request.prototype),mixin(Request.prototype,requestBase.prototype),Request.prototype.type=function(type){return this.set("Content-Type",request.types[type]||type),this},Request.prototype.accept=function(type){return this.set("Accept",request.types[type]||type),this},Request.prototype.auth=function(user,pass,options){1===arguments.length&&(pass=""),"object"===_typeof(pass)&&null!==pass&&(options=pass,pass=""),options||(options={type:"function"==typeof btoa?"basic":"auto"});var encoder=options.encoder?options.encoder:function(string){if("function"==typeof btoa)return btoa(string);throw new Error("Cannot use basic auth, btoa is not a function")};return this._auth(user,pass,options,encoder)},Request.prototype.query=function(value){return"string"!=typeof value&&(value=serialize(value)),value&&this._query.push(value),this},Request.prototype.attach=function(field,file,options){if(file){if(this._data)throw new Error("superagent can't mix .send() and .attach()");this._getFormData().append(field,file,options||file.name)}return this},Request.prototype._getFormData=function(){return this._formData||(this._formData=new root.FormData),this._formData},Request.prototype.callback=function(error,res){if(this._shouldRetry(error,res))return this._retry();var fn=this._callback;this.clearTimeout(),error&&(this._maxRetries&&(error.retries=this._retries-1),this.emit("error",error)),fn(error,res)},Request.prototype.crossDomainError=function(){var error=new Error("Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.");error.crossDomain=!0,error.status=this.status,error.method=this.method,error.url=this.url,this.callback(error)},Request.prototype.agent=function(){return console.warn("This is not supported in browser version of superagent"),this},Request.prototype.ca=Request.prototype.agent,Request.prototype.buffer=Request.prototype.ca,Request.prototype.write=function(){throw new Error("Streaming is not supported in browser version of superagent")},Request.prototype.pipe=Request.prototype.write,Request.prototype._isHost=function(object){return object&&"object"===_typeof(object)&&!Array.isArray(object)&&"[object Object]"!==Object.prototype.toString.call(object)},Request.prototype.end=function(fn){this._endCalled&&console.warn("Warning: .end() was called twice. This is not supported in superagent"),this._endCalled=!0,this._callback=fn||noop,this._finalizeQueryString(),this._end()},Request.prototype._setUploadTimeout=function(){var self=this;this._uploadTimeout&&!this._uploadTimeoutTimer&&(this._uploadTimeoutTimer=setTimeout((function(){self._timeoutError("Upload timeout of ",self._uploadTimeout,"ETIMEDOUT")}),this._uploadTimeout))},Request.prototype._end=function(){if(this._aborted)return this.callback(new Error("The request has been aborted even before .end() was called"));var self=this;this.xhr=request.getXHR();var xhr=this.xhr,data=this._formData||this._data;this._setTimeouts(),xhr.addEventListener("readystatechange",(function(){var readyState=xhr.readyState;if(readyState>=2&&self._responseTimeoutTimer&&clearTimeout(self._responseTimeoutTimer),4===readyState){var status;try{status=xhr.status}catch(_unused5){status=0}if(!status){if(self.timedout||self._aborted)return;return self.crossDomainError()}self.emit("end")}}));var handleProgress=function(direction,e){e.total>0&&(e.percent=e.loaded/e.total*100,100===e.percent&&clearTimeout(self._uploadTimeoutTimer)),e.direction=direction,self.emit("progress",e)};if(this.hasListeners("progress"))try{xhr.addEventListener("progress",handleProgress.bind(null,"download")),xhr.upload&&xhr.upload.addEventListener("progress",handleProgress.bind(null,"upload"))}catch(_unused6){}xhr.upload&&this._setUploadTimeout();try{this.username&&this.password?xhr.open(this.method,this.url,!0,this.username,this.password):xhr.open(this.method,this.url,!0)}catch(err){return this.callback(err)}if(this._withCredentials&&(xhr.withCredentials=!0),!this._formData&&"GET"!==this.method&&"HEAD"!==this.method&&"string"!=typeof data&&!this._isHost(data)){var contentType=this._header["content-type"],_serialize=this._serializer||request.serialize[contentType?contentType.split(";")[0]:""];!_serialize&&isJSON(contentType)&&(_serialize=request.serialize["application/json"]),_serialize&&(data=_serialize(data))}for(var field in this.header)null!==this.header[field]&&hasOwn(this.header,field)&&xhr.setRequestHeader(field,this.header[field]);this._responseType&&(xhr.responseType=this._responseType),this.emit("request",this),xhr.send(void 0===data?null:data)},request.agent=function(){return new agentBase};for(var _loop=function(){var method=_arr[_i];agentBase.prototype[method.toLowerCase()]=function(url,fn){var request_=new request.Request(method,url);return this._setDefaults(request_),fn&&request_.end(fn),request_}},_i=0,_arr=["GET","POST","OPTIONS","PATCH","PUT","DELETE"];_i<_arr.length;_i++)_loop();function del(url,data,fn){var request_=request("DELETE",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_}agentBase.prototype.del=agentBase.prototype.delete,request.get=function(url,data,fn){var request_=request("GET",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.query(data),fn&&request_.end(fn),request_},request.head=function(url,data,fn){var request_=request("HEAD",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.query(data),fn&&request_.end(fn),request_},request.options=function(url,data,fn){var request_=request("OPTIONS",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.del=del,request.delete=del,request.patch=function(url,data,fn){var request_=request("PATCH",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.post=function(url,data,fn){var request_=request("POST",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_},request.put=function(url,data,fn){var request_=request("PUT",url);return"function"==typeof data&&(fn=data,data=null),data&&request_.send(data),fn&&request_.end(fn),request_}})),byteLength_1=(client.Request,function(b64){var lens=getLens(b64),validLen=lens[0],placeHoldersLen=lens[1];return 3*(validLen+placeHoldersLen)/4-placeHoldersLen}),toByteArray_1=function(b64){var tmp,i,lens=getLens(b64),validLen=lens[0],placeHoldersLen=lens[1],arr=new Arr(function(b64,validLen,placeHoldersLen){return 3*(validLen+placeHoldersLen)/4-placeHoldersLen}(0,validLen,placeHoldersLen)),curByte=0,len=placeHoldersLen>0?validLen-4:validLen;for(i=0;i>16&255,arr[curByte++]=tmp>>8&255,arr[curByte++]=255&tmp;2===placeHoldersLen&&(tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4,arr[curByte++]=255&tmp);1===placeHoldersLen&&(tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2,arr[curByte++]=tmp>>8&255,arr[curByte++]=255&tmp);return arr},fromByteArray_1=function(uint8){for(var tmp,len=uint8.length,extraBytes=len%3,parts=[],i=0,len2=len-extraBytes;ilen2?len2:i+16383));1===extraBytes?(tmp=uint8[len-1],parts.push(lookup[tmp>>2]+lookup[tmp<<4&63]+"==")):2===extraBytes&&(tmp=(uint8[len-2]<<8)+uint8[len-1],parts.push(lookup[tmp>>10]+lookup[tmp>>4&63]+lookup[tmp<<2&63]+"="));return parts.join("")},lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,len=code.length;i0)throw new Error("Invalid string. Length must be a multiple of 4");var validLen=b64.indexOf("=");return-1===validLen&&(validLen=len),[validLen,validLen===len?0:4-validLen%4]}function encodeChunk(uint8,start,end){for(var tmp,num,output=[],i=start;i>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[63&num]);return output.join("")}revLookup["-".charCodeAt(0)]=62,revLookup["_".charCodeAt(0)]=63;var base64Js={byteLength:byteLength_1,toByteArray:toByteArray_1,fromByteArray:fromByteArray_1};var base64Url={encode:function(str){return base64Js.fromByteArray(function(str){for(var arr=new Array(str.length),a=0;a=65&&code<=90||!wasPrevNumber&&code>=48&&code<=57?(newKey+="_",newKey+=str[index].toLowerCase()):newKey+=str[index].toLowerCase(),wasPrevNumber=code>=48&&code<=57,wasPrevUppercase=code>=65&&code<=90,index++;return newKey}(key):key]=toSnakeCase(object[key]),p}),{}))},toCamelCase:function toCamelCase(object,exceptions,options){return"object"!=typeof object||assert.isArray(object)||null===object?object:(exceptions=exceptions||[],options=options||{},Object.keys(object).reduce((function(p,key){var parts,newKey=-1===exceptions.indexOf(key)?(parts=key.split("_")).reduce((function(p,c){return p+c.charAt(0).toUpperCase()+c.slice(1)}),parts.shift()):key;return p[newKey]=toCamelCase(object[newKey]||object[key],[],options),options.keepOriginal&&(p[key]=toCamelCase(object[key],[],options)),p}),{}))},blacklist:function(object,blacklistedKeys){return Object.keys(object).reduce((function(p,key){return-1===blacklistedKeys.indexOf(key)&&(p[key]=object[key]),p}),{})},merge:function(object,keys){return{base:keys?pick(object,keys):object,with:function(object2,keys2){return object2=keys2?pick(object2,keys2):object2,extend(this.base,object2)}}},pick:pick,getKeysNotIn:function(obj,allowedKeys){var notAllowed=[];for(var key in obj)-1===allowedKeys.indexOf(key)&¬Allowed.push(key);return notAllowed},extend:extend,getOriginFromUrl:function(url){if(url){var parsed=getLocationFromUrl(url);if(!parsed)return null;var origin=parsed.protocol+"//"+parsed.hostname;return parsed.port&&(origin+=":"+parsed.port),origin}},getLocationFromUrl:getLocationFromUrl,trimUserDetails:function(options){return function(options,keys){return keys.reduce(trim,options)}(options,["username","email","phoneNumber"])},updatePropertyOn:function updatePropertyOn(obj,path,value){"string"==typeof path&&(path=path.split("."));var next=path[0];obj.hasOwnProperty(next)&&(1===path.length?obj[next]=value:updatePropertyOn(obj[next],path.slice(1),value))}};function RequestWrapper(req){this.request=req,this.method=req.method,this.url=req.url,this.body=req._data,this.headers=req._header}function RequestObj(req){this.request=req}function RequestBuilder(options){this._sendTelemetry=!1!==options._sendTelemetry||options._sendTelemetry,this._telemetryInfo=options._telemetryInfo||null,this._timesToRetryFailedRequests=options._timesToRetryFailedRequests,this.headers=options.headers||{},this._universalLoginPage=options.universalLoginPage}function getWindow(){return window}RequestWrapper.prototype.abort=function(){this.request.abort()},RequestWrapper.prototype.getMethod=function(){return this.method},RequestWrapper.prototype.getBody=function(){return this.body},RequestWrapper.prototype.getUrl=function(){return this.url},RequestWrapper.prototype.getHeaders=function(){return this.headers},RequestObj.prototype.set=function(key,value){return this.request=this.request.set(key,value),this},RequestObj.prototype.send=function(body){return this.request=this.request.send(objectHelper.trimUserDetails(body)),this},RequestObj.prototype.withCredentials=function(){return this.request=this.request.withCredentials(),this},RequestObj.prototype.end=function(cb){return this.request.end(cb),new RequestWrapper(this.request)},RequestBuilder.prototype.setCommonConfiguration=function(ongoingRequest,options){if(options=options||{},this._timesToRetryFailedRequests>0&&(ongoingRequest=ongoingRequest.retry(this._timesToRetryFailedRequests)),options.noHeaders)return ongoingRequest;var headers=this.headers;ongoingRequest=ongoingRequest.set("Content-Type","application/json"),options.xRequestLanguage&&(ongoingRequest=ongoingRequest.set("X-Request-Language",options.xRequestLanguage));for(var keys=Object.keys(this.headers),a=0;a0&&warn.warning("Following parameters are not allowed on the `/authorize` endpoint: ["+notAllowed.join(",")+"]"),params}},t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r=e((function(e,r){e.exports=function(){function e(t){return"function"==typeof t}var r=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},i=0,n=void 0,o=void 0,s=function(t,e){l[i]=t,l[i+1]=e,2===(i+=2)&&(o?o(d):w())},h="undefined"!=typeof window?window:void 0,u=h||{},a=u.MutationObserver||u.WebKitMutationObserver,f="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),c="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function p(){var t=setTimeout;return function(){return t(d,1)}}var l=new Array(1e3);function d(){for(var t=0;t>>2]|=(r[o>>>2]>>>24-o%4*8&255)<<24-(i+o)%4*8;else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new f.init(r,e/2)}},l=c.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255));return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new f.init(r,e)}},d=c.Utf8={stringify:function(t){try{return decodeURIComponent(escape(l.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return l.parse(unescape(encodeURIComponent(t)))}},m=u.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new f.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,h=o/(4*s),u=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*s,a=e.min(4*u,o);if(u){for(var c=0;c>>7)^(d<<14|d>>>18)^d>>>3)+a[l-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+a[l-16]}var v=i&n^i&o^n&o,y=p+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&f^~h&c)+u[l]+a[l];p=c,c=f,f=h,h=s+y|0,s=o,o=n,n=i,i=y+(((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+v)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+h|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+p|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(f),e.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)})),s=e((function(t,e){var r,i;t.exports=(i=(r=n).lib.WordArray,r.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,h=0;h<4&&o+.75*h>>6*(3-h)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join("")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=(h|u)<<24-o%4*8,o++}return i.create(n,o)}(t,e,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},r.enc.Base64)})),h=e((function(t,e){t.exports=n.enc.Hex})),u=e((function(e,r){(function(){var t;function r(t,e,r){null!=t&&("number"==typeof t?this.fromNumber(t,e,r):this.fromString(t,null==e&&"string"!=typeof t?256:e))}function i(){return new r(null)}var n="undefined"!=typeof navigator;n&&"Microsoft Internet Explorer"==navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(var s=32767&e,h=e>>15;--o>=0;){var u=32767&this[t],a=this[t++]>>15,f=h*u+a*s;n=((u=s*u+((32767&f)<<15)+r[i]+(1073741823&n))>>>30)+(f>>>15)+h*a+(n>>>30),r[i++]=1073741823&u}return n},t=30):n&&"Netscape"!=navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(;--o>=0;){var s=e*this[t++]+r[i]+n;n=Math.floor(s/67108864),r[i++]=67108863&s}return n},t=26):(r.prototype.am=function(t,e,r,i,n,o){for(var s=16383&e,h=e>>14;--o>=0;){var u=16383&this[t],a=this[t++]>>14,f=h*u+a*s;n=((u=s*u+((16383&f)<<14)+r[i]+n)>>28)+(f>>14)+h*a,r[i++]=268435455&u}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function p(t){this.m=t}function l(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function w(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function T(){}function b(t){return t}function _(t){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}p.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},p.prototype.revert=function(t){return t},p.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},p.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},p.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},l.prototype.convert=function(t){var e=i();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(r.ZERO)>0&&this.m.subTo(e,e),e},l.prototype.revert=function(t){var e=i();return t.copyTo(e),this.reduce(e),e},l.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,i,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},l.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},l.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},r.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},r.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},r.prototype.fromString=function(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else{if(4!=e)return void this.fromRadix(t,e);i=2}this.t=0,this.s=0;for(var n=t.length,o=!1,s=0;--n>=0;){var h=8==i?255&t[n]:a(t,n);h<0?"-"==t.charAt(n)&&(o=!0):(o=!1,0==s?this[this.t++]=h:s+i>this.DB?(this[this.t-1]|=(h&(1<>this.DB-s):this[this.t-1]|=h<=this.DB&&(s-=this.DB))}8==i&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},r.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},r.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>n|h,h=(this[r]&o)<=0;--r)e[r]=0;e[s]=h,e.t=this.t+s+1,e.s=this.s,e.clamp()},r.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var i=t%this.DB,n=this.DB-i,o=(1<>i;for(var s=r+1;s>i;i>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i-=t.s}e.s=i<0?-1:0,i<-1?e[r++]=this.DV+i:i>0&&(e[r++]=i),e.t=r,e.clamp()},r.prototype.multiplyTo=function(t,e){var i=this.abs(),n=t.abs(),o=i.t;for(e.t=o+n.t;--o>=0;)e[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},r.prototype.divRemTo=function(t,e,n){var o=t.abs();if(!(o.t<=0)){var s=this.abs();if(s.t0?(o.lShiftTo(f,h),s.lShiftTo(f,n)):(o.copyTo(h),s.copyTo(n));var p=h.t,l=h[p-1];if(0!=l){var d=l*(1<1?h[p-2]>>this.F2:0),m=this.FV/d,v=(1<=0&&(n[n.t++]=1,n.subTo(T,n)),r.ONE.dlShiftTo(p,T),T.subTo(h,h);h.t=0;){var b=n[--g]==l?this.DM:Math.floor(n[g]*m+(n[g-1]+y)*v);if((n[g]+=h.am(0,b,n,w,0,p))0&&n.rShiftTo(f,n),u<0&&r.ZERO.subTo(n,n)}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(t,e){if(t>4294967295||t<1)return r.ONE;var n=i(),o=i(),s=e.convert(this),h=c(t)-1;for(s.copyTo(n);--h>=0;)if(e.sqrTo(n,o),(t&1<0)e.mulTo(o,s,n);else{var u=n;n=o,o=u}return e.revert(n)},r.prototype.toString=function(t){if(this.s<0)return"-"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,i=(1<0)for(h>h)>0&&(n=!0,o=u(r));s>=0;)h>(h+=this.DB-e)):(r=this[s]>>(h-=e)&i,h<=0&&(h+=this.DB,--s)),r>0&&(n=!0),n&&(o+=u(r));return n?o:"0"},r.prototype.negate=function(){var t=i();return r.ZERO.subTo(this,t),t},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+c(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(t){var e=i();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(r.ZERO)>0&&t.subTo(e,e),e},r.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new p(e):new l(e),this.exp(t,r)},r.ZERO=f(0),r.ONE=f(1),T.prototype.convert=b,T.prototype.revert=b,T.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},T.prototype.sqrTo=function(t,e){t.squareTo(e)},_.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=i();return t.copyTo(e),this.reduce(e),e},_.prototype.revert=function(t){return t},_.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},_.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},_.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var S,A,D,B=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],x=(1<<26)/B[B.length-1];function E(){var t;t=(new Date).getTime(),A[D++]^=255&t,A[D++]^=t>>8&255,A[D++]^=t>>16&255,A[D++]^=t>>24&255,D>=j&&(D-=j)}if(r.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},r.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return"0";var e=this.chunkSize(t),r=Math.pow(t,e),n=f(r),o=i(),s=i(),h="";for(this.divRemTo(n,o,s);o.signum()>0;)h=(r+s.intValue()).toString(t).substr(1)+h,o.divRemTo(n,o,s);return s.intValue().toString(t)+h},r.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var i=this.chunkSize(e),n=Math.pow(e,i),o=!1,s=0,h=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(h,0),s=0,h=0))}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(h,0)),o&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(t,e,i){if("number"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(r.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(r.ONE.shiftLeft(t-1),this);else{var n=new Array,o=7&t;n.length=1+(t>>3),e.nextBytes(n),o>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i+=t.s}e.s=i<0?-1:0,i>0?e[r++]=i:i<-1&&(e[r++]=this.DV+i),e.t=r,e.clamp()},r.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},r.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},r.prototype.multiplyLowerTo=function(t,e,r){var i,n=Math.min(this.t+t.t,e);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(e-this.t,0);i0)if(0==e)r=this[0]%t;else for(var i=this.t-1;i>=0;--i)r=(e*r+this[i])%t;return r},r.prototype.millerRabin=function(t){var e=this.subtract(r.ONE),n=e.getLowestSetBit();if(n<=0)return!1;var o=e.shiftRight(n);(t=t+1>>1)>B.length&&(t=B.length);for(var s=i(),h=0;h>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,i=this.DB-t*this.DB%8,n=0;if(t-- >0)for(i>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<=0;)i<8?(r=(this[t]&(1<>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,i<=0&&(i+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(e[n++]=r);return e},r.prototype.equals=function(t){return 0==this.compareTo(t)},r.prototype.min=function(t){return this.compareTo(t)<0?this:t},r.prototype.max=function(t){return this.compareTo(t)>0?this:t},r.prototype.and=function(t){var e=i();return this.bitwiseTo(t,d,e),e},r.prototype.or=function(t){var e=i();return this.bitwiseTo(t,m,e),e},r.prototype.xor=function(t){var e=i();return this.bitwiseTo(t,v,e),e},r.prototype.andNot=function(t){var e=i();return this.bitwiseTo(t,y,e),e},r.prototype.not=function(){for(var t=i(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var m=i();for(n.sqrTo(h[1],m);u<=d;)h[u]=i(),n.mulTo(m,h[u-2],h[u]),u+=2}var v,y,g=t.t-1,w=!0,T=i();for(o=c(t[g])-1;g>=0;){for(o>=a?v=t[g]>>o-a&d:(v=(t[g]&(1<0&&(v|=t[g-1]>>this.DB+o-a)),u=r;0==(1&v);)v>>=1,--u;if((o-=u)<0&&(o+=this.DB,--g),w)h[v].copyTo(s),w=!1;else{for(;u>1;)n.sqrTo(s,T),n.sqrTo(T,s),u-=2;u>0?n.sqrTo(s,T):(y=s,s=T,T=y),n.mulTo(T,h[v],s)}for(;g>=0&&0==(t[g]&1<=0?(i.subTo(n,i),e&&o.subTo(h,o),s.subTo(u,s)):(n.subTo(i,n),e&&h.subTo(o,h),u.subTo(s,u))}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(t)>=0?u.subtract(t):u.signum()<0?(u.addTo(t,u),u.signum()<0?u.add(t):u):u},r.prototype.pow=function(t){return this.exp(t,new T)},r.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var i=e;e=r,r=i}var n=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(n0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},r.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=B[B.length-1]){for(e=0;e>>8,A[D++]=255&k;D=0,E()}function C(){if(null==S){for(E(),(S=new O).init(A),D=0;D0&&e.length>0))throw new Error("Invalid key data");this.n=new u.BigInteger(t,16),this.e=parseInt(e,16)}c.prototype.verify=function(t,e){e=e.replace(/[^0-9a-f]|[\s\n]]/gi,"");var r=new u.BigInteger(e,16);if(r.bitLength()>this.n.bitLength())throw new Error("Signature does not match with the key modulus.");var i=function(t){for(var e in a){var r=a[e],i=r.length;if(t.substring(0,i)===r)return{alg:e,hash:t.substring(i)}}return[]}(r.modPowInt(this.e,this.n).toString(16).replace(/^1f+00/,""));if(0===i.length)return!1;if(!f.hasOwnProperty(i.alg))throw new Error("Hashing algorithm is not supported.");var n=f[i.alg](t).toString();return i.hash===n};for(var p=[],l=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0;v<64;++v)p[v]=m[v],l[m.charCodeAt(v)]=v;l["-".charCodeAt(0)]=62,l["_".charCodeAt(0)]=63;var y=function(t){var e,r,i=function(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}(t),n=i[0],o=i[1],s=new d(function(t,e,r){return 3*(e+r)/4-r}(0,n,o)),h=0,u=o>0?n-4:n;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;return 2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,s[h++]=255&e),1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e),s};function g(t){var e=t.length%4;return 0===e?t:t+new Array(4-e+1).join("=")}function w(t){return t=g(t).replace(/\-/g,"+").replace(/_/g,"/"),decodeURIComponent(function(t){for(var e="",r=0;r1){var r=t.shift();t[0]=r+t[0]}t[0]=t[0].match(/^file:\/\/\//)?t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(n=n.replace(/^[\/]+/,"")),n=n.replace(/[\/]+$/,i0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():r.urljoin=i()}));function _(t,e){return e=e||{},new Promise((function(r,i){var n=new XMLHttpRequest,o=[],s=[],h={},u=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:u,headers:{keys:function(){return o},entries:function(){return s},get:function(t){return h[t.toLowerCase()]},has:function(t){return t.toLowerCase()in h}}}};for(var a in n.open(e.method||"get",t,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(t,e,r){o.push(e=e.toLowerCase()),s.push([e,r]),h[e]=h[e]?h[e]+","+r:r})),r(u())},n.onerror=i,n.withCredentials="include"==e.credentials,e.headers)n.setRequestHeader(a,e.headers[a]);n.send(e.body||null)}))}function S(t){if(t.ok)return t.json();var e=new Error(t.statusText);return e.response=t,Promise.reject(e)}function A(t){this.name="ConfigurationError",this.message=t||""}function D(t){this.name="TokenValidationError",this.message=t||""}A.prototype=Error.prototype,D.prototype=Error.prototype;var B=function(){function t(){}var e=t.prototype;return e.get=function(){return null},e.has=function(){return null},e.set=function(){return null},t}();r.polyfill();var x="RS256",E=function(t){return"number"==typeof t},k=function(){return new Date};function I(t){var e=t||{};if(this.jwksCache=e.jwksCache||new B,this.expectedAlg=e.expectedAlg||"RS256",this.issuer=e.issuer,this.audience=e.audience,this.leeway=0===e.leeway?0:e.leeway||60,this.jwksURI=e.jwksURI,this.maxAge=e.maxAge,this.__clock="function"==typeof e.__clock?e.__clock:k,this.leeway<0||this.leeway>300)throw new A("The leeway should be positive and lower than five minutes.");if(x!==this.expectedAlg)throw new A('Signature algorithm of "'+this.expectedAlg+'" is not supported. Expected the ID token to be signed with "'+x+'".')}function PluginHandler(webAuth,plugins){this.plugins=plugins;for(var a=0;a1){if(!d||"string"!=typeof d)return r(new D("Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values"),null);if(d!==g.audience)return r(new D('Authorized Party (azp) claim mismatch in the ID token; expected "'+g.audience+'", found "'+d+'"'),null)}if(!c||!E(c))return r(new D("Expiration Time (exp) claim must be a number present in the ID token"),null);if(!l||!E(l))return r(new D("Issued At (iat) claim must be a number present in the ID token"),null);var h=c+g.leeway,w=new Date(0);if(w.setUTCSeconds(h),y>w)return r(new D('Expiration Time (exp) claim error in the ID token; current time "'+y+'" is after expiration time "'+w+'"'),null);if(p&&E(p)){var T=p-g.leeway,b=new Date(0);if(b.setUTCSeconds(T),yS)return r(new D('Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time "'+y+'" is after last auth time at "'+S+'"'),null)}return r(null,i.payload)}))},I.prototype.getRsaVerifier=function(t,e,r){var i=this,n=t+e;Promise.resolve(this.jwksCache.has(n)).then((function(r){return r?i.jwksCache.get(n):(s=(o={jwksURI:i.jwksURI,iss:t,kid:e}).jwksURI||b(o.iss,".well-known","jwks.json"),("undefined"==fetch?_:fetch)(s).then(S).then((function(t){var e,r,i,n=null;for(e=0;e-1){null!==new RegExp("rv:([0-9]{2,2}[.0-9]{0,})").exec(ua)&&(rv=parseFloat(RegExp.$1))}return rv>=8}();return"undefined"!=typeof window&&window.JSON&&window.JSON.stringify&&window.JSON.parse&&window.postMessage?{open:function(opts,cb){if(!cb)throw"missing required callback argument";var err,iframe;opts.url||(err="missing required 'url' parameter"),opts.relay_url||(err="missing required 'relay_url' parameter"),err&&setTimeout((function(){cb(err)}),0),opts.window_name||(opts.window_name=null),opts.window_features&&!function(){try{var userAgent=navigator.userAgent;return-1!=userAgent.indexOf("Fennec/")||-1!=userAgent.indexOf("Firefox/")&&-1!=userAgent.indexOf("Android")}catch(e){}return!1}()||(opts.window_features=void 0);var messageTarget,origin=opts.origin||extractOrigin(opts.url);if(origin!==extractOrigin(opts.relay_url))return setTimeout((function(){cb("invalid arguments: origin of url and relay_url must match")}),0);isIE&&((iframe=document.createElement("iframe")).setAttribute("src",opts.relay_url),iframe.style.display="none",iframe.setAttribute("name","__winchan_relay_frame"),document.body.appendChild(iframe),messageTarget=iframe.contentWindow);var w=opts.popup||window.open(opts.url,opts.window_name,opts.window_features);opts.popup&&(w.location.href=opts.url),messageTarget||(messageTarget=w);var closeInterval=setInterval((function(){w&&w.closed&&(cleanup(),cb&&(cb("User closed the popup window"),cb=null))}),500),req=JSON.stringify({a:"request",d:opts.params});function cleanup(){if(iframe&&document.body.removeChild(iframe),iframe=void 0,closeInterval&&(closeInterval=clearInterval(closeInterval)),removeListener(window,"message",onMessage),removeListener(window,"unload",cleanup),w)try{w.close()}catch(securityViolation){messageTarget.postMessage("die",origin)}w=messageTarget=void 0}function onMessage(e){if(e.origin===origin){try{var d=JSON.parse(e.data)}catch(err){if(cb)return cb(err);throw err}"ready"===d.a?messageTarget.postMessage(req,origin):"error"===d.a?(cleanup(),cb&&(cb(d.d),cb=null)):"response"===d.a&&(cleanup(),cb&&(cb(null,d.d),cb=null))}}return addListener(window,"unload",cleanup),addListener(window,"message",onMessage),{originalPopup:w,close:cleanup,focus:function(){if(w)try{w.focus()}catch(e){}}}},onOpen:function(cb){var o="*",msgTarget=isIE?function(){for(var frames=window.opener.frames,i=frames.length-1;i>=0;i--)try{if(frames[i].location.protocol===window.location.protocol&&frames[i].location.host===window.location.host&&"__winchan_relay_frame"===frames[i].name)return frames[i]}catch(e){}}():window.opener;if(!msgTarget)throw"can't find relay frame";function doPost(msg){msg=JSON.stringify(msg),isIE?msgTarget.doPost(msg,o):msgTarget.postMessage(msg,o)}function onDie(e){if("die"===e.data)try{window.close()}catch(o_O){}}addListener(isIE?msgTarget:window,"message",(function onMessage(e){var d;try{d=JSON.parse(e.data)}catch(err){}d&&"request"===d.a&&(removeListener(window,"message",onMessage),o=e.origin,cb&&setTimeout((function(){cb(o,d.d,(function(r){cb=void 0,doPost({a:"response",d:r})}))}),0))})),addListener(isIE?msgTarget:window,"message",onDie);try{doPost({a:"ready"})}catch(e){addListener(msgTarget,"load",(function(e){doPost({a:"ready"})}))}var onUnload=function(){try{removeListener(isIE?msgTarget:window,"message",onDie)}catch(ohWell){}cb&&doPost({a:"error",d:"client closed window"}),cb=void 0;try{window.close()}catch(e){}};return addListener(window,"unload",onUnload),{detach:function(){removeListener(window,"unload",onUnload)}}}}:{open:function(url,winopts,arg,cb){setTimeout((function(){cb("unsupported browser")}),0)},onOpen:function(cb){setTimeout((function(){cb("unsupported browser")}),0)}}}();module.exports&&(module.exports=WinChan)}));var urlHelper={extractOrigin:function(url){/^https?:\/\//.test(url)||(url=window.location.href);var m=/^(https?:\/\/[-_a-zA-Z.0-9:]+)/.exec(url);return m?m[1]:url}};function PopupHandler(){this._current_popup=null}function Popup(webAuth,options){this.baseOptions=options,this.baseOptions.popupOrigin=options.popupOrigin,this.client=webAuth.client,this.webAuth=webAuth,this.transactionManager=new TransactionManager(this.baseOptions),this.crossOriginAuthentication=new CrossOriginAuthentication(webAuth,this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings})}function SilentAuthenticationHandler(options){this.authenticationUrl=options.authenticationUrl,this.timeout=options.timeout||6e4,this.handler=null,this.postMessageDataType=options.postMessageDataType||!1,this.postMessageOrigin=options.postMessageOrigin||windowHelper.getWindow().location.origin||windowHelper.getWindow().location.protocol+"//"+windowHelper.getWindow().location.hostname+(windowHelper.getWindow().location.port?":"+windowHelper.getWindow().location.port:"")}function UsernamePassword(options){this.baseOptions=options,this.request=new RequestBuilder(options),this.transactionManager=new TransactionManager(this.baseOptions)}function HostedPages(client,options){this.baseOptions=options,this.client=client,this.baseOptions.universalLoginPage=!0,this.request=new RequestBuilder(this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings})}PopupHandler.prototype.calculatePosition=function(options){var width=options.width||500,height=options.height||600,_window=windowHelper.getWindow(),screenX=void 0!==_window.screenX?_window.screenX:_window.screenLeft,screenY=void 0!==_window.screenY?_window.screenY:_window.screenTop,outerWidth=void 0!==_window.outerWidth?_window.outerWidth:_window.document.body.clientWidth,outerHeight=void 0!==_window.outerHeight?_window.outerHeight:_window.document.body.clientHeight;return{width:width,height:height,left:options.left||screenX+(outerWidth-width)/2,top:options.top||screenY+(outerHeight-height)/2}},PopupHandler.prototype.preload=function(options){var _this=this,_window=windowHelper.getWindow(),popupPosition=this.calculatePosition(options.popupOptions||{}),popupOptions=objectHelper.merge(popupPosition).with(options.popupOptions),url=options.url||"about:blank",windowFeatures=lib.stringify(popupOptions,{encode:!1,delimiter:","});return this._current_popup&&!this._current_popup.closed||(this._current_popup=_window.open(url,"auth0_signup_popup",windowFeatures),this._current_popup.kill=function(){this.close(),_this._current_popup=null}),this._current_popup},PopupHandler.prototype.load=function(url,relayUrl,options,cb){var _this=this,popupPosition=this.calculatePosition(options.popupOptions||{}),popupOptions=objectHelper.merge(popupPosition).with(options.popupOptions),winchanOptions=objectHelper.merge({url:url,relay_url:relayUrl,window_features:lib.stringify(popupOptions,{delimiter:",",encode:!1}),popup:this._current_popup}).with(options),popup=winchan.open(winchanOptions,(function(err,data){if(!err||"SyntaxError"!==err.name)return _this._current_popup=null,cb(err,data)}));return popup.focus(),popup},Popup.prototype.buildPopupHandler=function(){var pluginHandler=this.baseOptions.plugins.get("popup.getPopupHandler");return pluginHandler?pluginHandler.getPopupHandler():new PopupHandler},Popup.prototype.preload=function(options){options=options||{};var popup=this.buildPopupHandler();return popup.preload(options),popup},Popup.prototype.getPopupHandler=function(options,preload){return options.popupHandler?options.popupHandler:preload?this.preload(options):this.buildPopupHandler()},Popup.prototype.callback=function(options){var _this=this,theWindow=windowHelper.getWindow(),originUrl=(options=options||{}).popupOrigin||this.baseOptions.popupOrigin||windowHelper.getOrigin();theWindow.opener?winchan.onOpen((function(popupOrigin,r,cb){if(popupOrigin!==originUrl)return cb({error:"origin_mismatch",error_description:"The popup's origin ("+popupOrigin+") should match the `popupOrigin` parameter ("+originUrl+")."});_this.webAuth.parseHash(options||{},(function(err,data){return cb(err||data)}))})):theWindow.doPost=function(msg){theWindow.parent&&theWindow.parent.postMessage(msg,originUrl)}},Popup.prototype.authorize=function(options,cb){var url,relayUrl,popOpts={},pluginHandler=this.baseOptions.plugins.get("popup.authorize"),params=objectHelper.merge(this.baseOptions,["clientID","scope","domain","audience","tenant","responseType","redirectUri","_csrf","state","_intstate","nonce","organization","invitation"]).with(objectHelper.blacklist(options,["popupHandler"]));return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),relayUrl=urlJoin(this.baseOptions.rootUrl,"relay.html"),options.owp?params.owp=!0:(popOpts.origin=urlHelper.extractOrigin(params.redirectUri),relayUrl=params.redirectUri),options.popupOptions&&(popOpts.popupOptions=objectHelper.pick(options.popupOptions,["width","height","top","left"])),pluginHandler&&(params=pluginHandler.processParams(params)),(params=this.transactionManager.process(params)).scope=params.scope||"openid profile email",delete params.domain,url=this.client.buildAuthorizeUrl(params),this.getPopupHandler(options).load(url,relayUrl,popOpts,wrapCallback(cb,{keepOriginalCasing:!0}))},Popup.prototype.loginWithCredentials=function(options,cb){options.realm=options.realm||options.connection,options.popup=!0,options=objectHelper.merge(this.baseOptions,["redirectUri","responseType","state","nonce","timeout"]).with(objectHelper.blacklist(options,["popupHandler","connection"])),options=this.transactionManager.process(options),this.crossOriginAuthentication.login(options,cb)},Popup.prototype.passwordlessVerify=function(options,cb){var _this=this;return this.client.passwordless.verify(objectHelper.blacklist(options,["popupHandler"]),(function(err){if(err)return cb(err);options.username=options.phoneNumber||options.email,options.password=options.verificationCode,delete options.email,delete options.phoneNumber,delete options.verificationCode,delete options.type,_this.client.loginWithResourceOwner(options,cb)}))},Popup.prototype.signupAndLogin=function(options,cb){var _this=this;return this.client.dbConnection.signup(options,(function(err){if(err)return cb(err);_this.loginWithCredentials(options,cb)}))},SilentAuthenticationHandler.create=function(options){return new SilentAuthenticationHandler(options)},SilentAuthenticationHandler.prototype.login=function(usePostMessage,callback){this.handler=new IframeHandler({auth0:this.auth0,url:this.authenticationUrl,eventListenerType:usePostMessage?"message":"load",callback:this.getCallbackHandler(callback,usePostMessage),timeout:this.timeout,eventValidator:this.getEventValidator(),timeoutCallback:function(){callback(null,"#error=timeout&error_description=Timeout+during+authentication+renew.")},usePostMessage:usePostMessage||!1}),this.handler.init()},SilentAuthenticationHandler.prototype.getEventValidator=function(){var _this=this;return{isValid:function(eventData){switch(eventData.event.type){case"message":return eventData.event.origin===_this.postMessageOrigin&&eventData.event.source===_this.handler.iframe.contentWindow&&(!1===_this.postMessageDataType||eventData.event.data.type&&eventData.event.data.type===_this.postMessageDataType);case"load":if("about:"===eventData.sourceObject.contentWindow.location.protocol)return!1;default:return!0}}}},SilentAuthenticationHandler.prototype.getCallbackHandler=function(callback,usePostMessage){return function(eventData){var callbackValue;callbackValue=usePostMessage?"object"==typeof eventData.event.data&&eventData.event.data.hash?eventData.event.data.hash:eventData.event.data:eventData.sourceObject.contentWindow.location.hash,callback(null,callbackValue)}},UsernamePassword.prototype.login=function(options,cb){var url,body;return url=urlJoin(this.baseOptions.rootUrl,"usernamepassword","login"),options.username=options.username||options.email,options=objectHelper.blacklist(options,["email","onRedirecting"]),body=objectHelper.merge(this.baseOptions,["clientID","redirectUri","tenant","responseType","responseMode","scope","audience"]).with(options),body=this.transactionManager.process(body),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},UsernamePassword.prototype.callback=function(formHtml){var div,_document=windowHelper.getDocument();(div=_document.createElement("div")).innerHTML=formHtml,_document.body.appendChild(div).children[0].submit()},HostedPages.prototype.login=function(options,cb){if(windowHelper.getWindow().location.host!==this.baseOptions.domain)throw new Error("This method is meant to be used only inside the Universal Login Page.");var usernamePassword,params=objectHelper.merge(this.baseOptions,["clientID","redirectUri","tenant","responseType","responseMode","scope","audience","_csrf","state","_intstate","nonce"]).with(options);return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),(usernamePassword=new UsernamePassword(this.baseOptions)).login(params,(function(err,data){if(err)return cb(err);function doAuth(){usernamePassword.callback(data)}if("function"==typeof options.onRedirecting)return options.onRedirecting((function(){doAuth()}));doAuth()}))},HostedPages.prototype.signupAndLogin=function(options,cb){var _this=this;return _this.client.client.dbConnection.signup(options,(function(err){return err?cb(err):_this.login(options,cb)}))},HostedPages.prototype.getSSOData=function(withActiveDirectories,cb){var url,params="";return"function"==typeof withActiveDirectories&&(cb=withActiveDirectories,withActiveDirectories=!1),assert.check(withActiveDirectories,{type:"boolean",message:"withActiveDirectories parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),withActiveDirectories&&(params="?"+lib.stringify({ldaps:1,client_id:this.baseOptions.clientID})),url=urlJoin(this.baseOptions.rootUrl,"user","ssodata",params),this.request.get(url,{noHeaders:!0}).withCredentials().end(wrapCallback(cb))};var noop=function(){},captchaSolved=noop,Flow={DEFAULT:"default",PASSWORDLESS:"passwordless",PASSWORD_RESET:"password_reset"},defaults$2={lang:"en",templates:{auth0:function(challenge){var message="code"===challenge.type?"Enter the code shown above":"Solve the formula shown above";return'
\n \n \n
\n'},recaptcha_v2:function(){return'
'},recaptcha_enterprise:function(){return'
'},hcaptcha:function(){return'
'},friendly_captcha:function(){return'
'},arkose:function(){return'
'},auth0_v2:function(){return'
'},error:function(){return'
Error getting the bot detection challenge. Please contact the system administrator.
'}}};function globalForCaptchaProvider(provider){switch(provider){case"recaptcha_v2":return window.grecaptcha;case"recaptcha_enterprise":return window.grecaptcha.enterprise;case"hcaptcha":return window.hcaptcha;case"friendly_captcha":return window.friendlyChallenge;case"arkose":return window.arkose;case"auth0_v2":return window.turnstile;default:throw new Error("Unknown captcha provider")}}function loadScript(url,attributes){var script=window.document.createElement("script");for(var attr in attributes)attr.startsWith("data-")?script.dataset[attr.replace("data-","")]=attributes[attr]:script[attr]=attributes[attr];script.src=url,window.document.body.appendChild(script)}function removeScript(url){window.document.querySelectorAll('script[src="'+url+'"]').forEach((function(script){script.remove()}))}function injectCaptchaScript(element,opts,callback,setValue){var callbackName=opts.provider+"Callback_"+Math.floor(1000001*Math.random()),attributes={async:!0,defer:!0},scriptSrc=function(provider,lang,callback,clientSubdomain,siteKey){switch(provider){case"recaptcha_v2":return"https://www.recaptcha.net/recaptcha/api.js?hl="+lang+"&onload="+callback;case"recaptcha_enterprise":return"https://www.recaptcha.net/recaptcha/enterprise.js?render=explicit&hl="+lang+"&onload="+callback;case"hcaptcha":return"https://js.hcaptcha.com/1/api.js?hl="+lang+"&onload="+callback;case"friendly_captcha":return"https://cdn.jsdelivr.net/npm/friendly-challenge@0.9.12/widget.min.js";case"arkose":return"https://"+clientSubdomain+".arkoselabs.com/v2/"+siteKey+"/api.js";case"auth0_v2":return"https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload="+callback;default:throw new Error("Unknown captcha provider")}}(opts.provider,opts.lang,callbackName,opts.clientSubdomain,opts.siteKey);if("arkose"===opts.provider||"auth0_v2"===opts.provider){var retryCount=0;attributes["data-callback"]=callbackName,attributes.onerror=function(){if(retryCount<3)return removeScript(scriptSrc),loadScript(scriptSrc,attributes),void retryCount++;removeScript(scriptSrc),setValue("BYPASS_CAPTCHA")},window[callbackName]=function(arkose){window.arkose=arkose,callback(arkose)}}else window[callbackName]=function(){delete window[callbackName],callback()},"friendly_captcha"===opts.provider&&(attributes.onload=window[callbackName]);loadScript(scriptSrc,attributes)}var captcha={render:function(auth0Client,flow,element,options,callback){function load(done){function challengeCallback(err,challenge){return err?(element.innerHTML=options.templates.error(err),done(err)):challenge.required?(element.style.display="","auth0"===challenge.provider?function(element,options,challenge,load){element.innerHTML=options.templates[challenge.provider](challenge),element.querySelector(".captcha-reload").addEventListener("click",(function(e){e.preventDefault(),load()}))}(element,options,challenge,load):"recaptcha_v2"!==challenge.provider&&"recaptcha_enterprise"!==challenge.provider&&"hcaptcha"!==challenge.provider&&"friendly_captcha"!==challenge.provider&&"arkose"!==challenge.provider&&"auth0_v2"!==challenge.provider||function(element,options,challenge){var captchaClass,widgetId=element.hasAttribute("data-wid")&&element.getAttribute("data-wid");function setValue(value){element.querySelector('input[name="captcha"]').value=value||""}if("friendly_captcha"===challenge.provider&&window.auth0FCInstance)return setValue(),void window.auth0FCInstance.reset();if("arkose"===challenge.provider&&globalForCaptchaProvider(challenge.provider))return setValue(),void globalForCaptchaProvider(challenge.provider).reset();if(widgetId)return setValue(),void globalForCaptchaProvider(challenge.provider).reset(widgetId);switch(element.innerHTML=options.templates[challenge.provider](challenge),challenge.provider){case"recaptcha_enterprise":case"recaptcha_v2":captchaClass=".recaptcha";break;case"hcaptcha":captchaClass=".hcaptcha";break;case"friendly_captcha":captchaClass=".friendly-captcha";break;case"arkose":captchaClass=".arkose";break;case"auth0_v2":captchaClass=".auth0_v2"}var captchaDiv=element.querySelector(captchaClass);injectCaptchaScript(0,{lang:options.lang,provider:challenge.provider,clientSubdomain:challenge.clientSubdomain,siteKey:challenge.siteKey},(function(arkose){var global=globalForCaptchaProvider(challenge.provider);if("arkose"===challenge.provider){var retryCount=0;arkose.setConfig({onCompleted:function(response){setValue(response.token),captchaSolved()},onError:function(){retryCount<3?(setValue(),arkose.reset(),setTimeout((function(){arkose.run()}),500),retryCount++):setValue("BYPASS_CAPTCHA")}})}else if("friendly_captcha"===challenge.provider)window.auth0FCInstance=new global.WidgetInstance(captchaDiv,{sitekey:challenge.siteKey,language:options.lang,doneCallback:function(solution){setValue(solution)},errorCallback:function(){setValue()}});else{var renderParams={callback:setValue,"expired-callback":function(){setValue()},"error-callback":function(){setValue()},sitekey:challenge.siteKey};"auth0_v2"===challenge.provider&&(retryCount=0,renderParams.language=options.lang,renderParams.theme="light",renderParams.retry="never",renderParams["response-field"]=!1,renderParams["error-callback"]=function(){return retryCount<3?(setValue(),globalForCaptchaProvider(challenge.provider).reset(widgetId),retryCount++):setValue("BYPASS_CAPTCHA"),!0}),widgetId=global.render(captchaDiv,renderParams),element.setAttribute("data-wid",widgetId)}}),setValue)}(element,options,challenge),void("arkose"===challenge.provider?done(null,{triggerCaptcha:function(solvedCallback){globalForCaptchaProvider(challenge.provider).run(),captchaSolved=solvedCallback}}):done())):(element.style.display="none",void(element.innerHTML=""))}done=done||noop,flow===Flow.PASSWORDLESS?auth0Client.passwordless.getChallenge(challengeCallback):flow===Flow.PASSWORD_RESET?auth0Client.dbConnection.getPasswordResetChallenge(challengeCallback):auth0Client.getChallenge(challengeCallback)}return options=objectHelper.merge(defaults$2).with(options||{}),load(callback),{reload:load,getValue:function(){var captchaInput=element.querySelector('input[name="captcha"]');if(captchaInput)return captchaInput.value}}},Flow:Flow};function defaultClock(){return new Date}function WebAuth(options){assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},clientID:{type:"string",message:"clientID option is required"},responseType:{optional:!0,type:"string",message:"responseType is not valid"},responseMode:{optional:!0,type:"string",message:"responseMode is not valid"},redirectUri:{optional:!0,type:"string",message:"redirectUri is not valid"},scope:{optional:!0,type:"string",message:"scope is not valid"},audience:{optional:!0,type:"string",message:"audience is not valid"},popupOrigin:{optional:!0,type:"string",message:"popupOrigin is not valid"},leeway:{optional:!0,type:"number",message:"leeway is not valid"},plugins:{optional:!0,type:"array",message:"plugins is not valid"},maxAge:{optional:!0,type:"number",message:"maxAge is not valid"},stateExpiration:{optional:!0,type:"number",message:"stateExpiration is not valid"},legacySameSiteCookie:{optional:!0,type:"boolean",message:"legacySameSiteCookie option is not valid"},_disableDeprecationWarnings:{optional:!0,type:"boolean",message:"_disableDeprecationWarnings option is not valid"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"},_timesToRetryFailedRequests:{optional:!0,type:"number",message:"_timesToRetryFailedRequests option is not valid"}}),options.overrides&&assert.check(options.overrides,{type:"object",message:"overrides option is not valid"},{__tenant:{optional:!0,type:"string",message:"__tenant option is required"},__token_issuer:{optional:!0,type:"string",message:"__token_issuer option is required"},__jwks_uri:{optional:!0,type:"string",message:"__jwks_uri is required"}}),this.baseOptions=options,this.baseOptions.plugins=new PluginHandler(this,this.baseOptions.plugins||[]),this.baseOptions._sendTelemetry=!1!==this.baseOptions._sendTelemetry||this.baseOptions._sendTelemetry,this.baseOptions._timesToRetryFailedRequests=options._timesToRetryFailedRequests?parseInt(options._timesToRetryFailedRequests):0,this.baseOptions.tenant=this.baseOptions.overrides&&this.baseOptions.overrides.__tenant||this.baseOptions.domain.split(".")[0],this.baseOptions.token_issuer=this.baseOptions.overrides&&this.baseOptions.overrides.__token_issuer||"https://"+this.baseOptions.domain+"/",this.baseOptions.jwksURI=this.baseOptions.overrides&&this.baseOptions.overrides.__jwks_uri,!1!==options.legacySameSiteCookie&&(this.baseOptions.legacySameSiteCookie=!0),this.transactionManager=new TransactionManager(this.baseOptions),this.client=new Authentication(this.baseOptions),this.redirect=new Redirect(this,this.baseOptions),this.popup=new Popup(this,this.baseOptions),this.crossOriginAuthentication=new CrossOriginAuthentication(this,this.baseOptions),this.webMessageHandler=new WebMessageHandler(this),this._universalLogin=new HostedPages(this,this.baseOptions),this.ssodataStorage=new SSODataStorage(this.baseOptions)}function PasswordlessAuthentication(request,options){this.baseOptions=options,this.request=request}function DBConnection(request,options){this.baseOptions=options,this.request=request}function Authentication(auth0,options){2===arguments.length?this.auth0=auth0:options=auth0,assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},clientID:{type:"string",message:"clientID option is required"},responseType:{optional:!0,type:"string",message:"responseType is not valid"},responseMode:{optional:!0,type:"string",message:"responseMode is not valid"},redirectUri:{optional:!0,type:"string",message:"redirectUri is not valid"},scope:{optional:!0,type:"string",message:"scope is not valid"},audience:{optional:!0,type:"string",message:"audience is not valid"},_disableDeprecationWarnings:{optional:!0,type:"boolean",message:"_disableDeprecationWarnings option is not valid"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"}}),this.baseOptions=options,this.baseOptions._sendTelemetry=!1!==this.baseOptions._sendTelemetry||this.baseOptions._sendTelemetry,this.baseOptions.rootUrl=this.baseOptions.domain&&0===this.baseOptions.domain.toLowerCase().indexOf("http")?this.baseOptions.domain:"https://"+this.baseOptions.domain,this.request=new RequestBuilder(this.baseOptions),this.passwordless=new PasswordlessAuthentication(this.request,this.baseOptions),this.dbConnection=new DBConnection(this.request,this.baseOptions),this.warn=new Warn({disableWarnings:!!options._disableDeprecationWarnings}),this.ssodataStorage=new SSODataStorage(this.baseOptions)}function Management(options){assert.check(options,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},token:{type:"string",message:"token option is required"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"}}),this.baseOptions=options,this.baseOptions.headers={Authorization:"Bearer "+this.baseOptions.token},this.request=new RequestBuilder(this.baseOptions),this.baseOptions.rootUrl=urlJoin("https://"+this.baseOptions.domain,"api","v2")}WebAuth.prototype.parseHash=function(options,cb){var parsedQs,err;cb||"function"!=typeof options?options=options||{}:(cb=options,options={});var hashStr=void 0===options.hash?windowHelper.getWindow().location.hash:options.hash;if(hashStr=hashStr.replace(/^#?\/?/,""),(parsedQs=lib.parse(hashStr)).hasOwnProperty("error"))return err=error.buildResponse(parsedQs.error,parsedQs.error_description),parsedQs.state&&(err.state=parsedQs.state),cb(err);if(!parsedQs.hasOwnProperty("access_token")&&!parsedQs.hasOwnProperty("id_token")&&!parsedQs.hasOwnProperty("refresh_token"))return cb(null,null);var responseTypes=(this.baseOptions.responseType||options.responseType||"").split(" ");return responseTypes.length>0&&-1!==responseTypes.indexOf("token")&&!parsedQs.hasOwnProperty("access_token")?cb(error.buildResponse("invalid_hash","response_type contains `token`, but the parsed hash does not contain an `access_token` property")):responseTypes.length>0&&-1!==responseTypes.indexOf("id_token")&&!parsedQs.hasOwnProperty("id_token")?cb(error.buildResponse("invalid_hash","response_type contains `id_token`, but the parsed hash does not contain an `id_token` property")):this.validateAuthenticationResponse(options,parsedQs,cb)},WebAuth.prototype.validateAuthenticationResponse=function(options,parsedHash,cb){var _this=this;options.__enableIdPInitiatedLogin=options.__enableIdPInitiatedLogin||options.__enableImpersonation;var state=parsedHash.state,transaction=this.transactionManager.getStoredTransaction(state),transactionState=options.state||transaction&&transaction.state||null,transactionStateMatchesState=transactionState===state;if(!(!state&&!transactionState&&options.__enableIdPInitiatedLogin)&&!transactionStateMatchesState)return cb({error:"invalid_token",errorDescription:"`state` does not match."});var transactionNonce=options.nonce||transaction&&transaction.nonce||null,transactionOrganization=transaction&&transaction.organization,appState=options.state||transaction&&transaction.appState||null,callback=function(err,payload){if(err)return cb(err);var sub;transaction&&transaction.lastUsedConnection&&(payload&&(sub=payload.sub),_this.ssodataStorage.set(transaction.lastUsedConnection,sub));return cb(null,function(qsParams,appState,token){return{accessToken:qsParams.access_token||null,idToken:qsParams.id_token||null,idTokenPayload:token||null,appState:appState||null,refreshToken:qsParams.refresh_token||null,state:qsParams.state||null,expiresIn:qsParams.expires_in?parseInt(qsParams.expires_in,10):null,tokenType:qsParams.token_type||null,scope:qsParams.scope||null}}(parsedHash,appState,payload))};return parsedHash.id_token?this.validateToken(parsedHash.id_token,transactionNonce,(function(validationError,payload){if(!validationError){if(transactionOrganization)if(0===transactionOrganization.indexOf("org_")){if(!payload.org_id)return callback(error.invalidToken("Organization Id (org_id) claim must be a string present in the ID token"));if(payload.org_id!==transactionOrganization)return callback(error.invalidToken('Organization Id (org_id) claim value mismatch in the ID token; expected "'+transactionOrganization+'", found "'+payload.org_id+'"'))}else{if(!payload.org_name)return callback(error.invalidToken("Organization Name (org_name) claim must be a string present in the ID token"));if(payload.org_name!==transactionOrganization.toLowerCase())return callback(error.invalidToken('Organization Name (org_name) claim value mismatch in the ID token; expected "'+transactionOrganization+'", found "'+payload.org_name+'"'))}return parsedHash.access_token&&payload.at_hash?(new I).validateAccessToken(parsedHash.access_token,"RS256",payload.at_hash,(function(err){return err?callback(error.invalidToken(err.message)):callback(null,payload)})):callback(null,payload)}if("invalid_token"!==validationError.error||validationError.errorDescription&&validationError.errorDescription.indexOf("Nonce (nonce) claim value mismatch in the ID token")>-1)return callback(validationError);var decodedToken=(new I).decode(parsedHash.id_token);if("HS256"!==decodedToken.header.alg)return callback(validationError);if((decodedToken.payload.nonce||null)!==transactionNonce)return callback({error:"invalid_token",errorDescription:'Nonce (nonce) claim value mismatch in the ID token; expected "'+transactionNonce+'", found "'+decodedToken.payload.nonce+'"'});if(!parsedHash.access_token){return callback({error:"invalid_token",description:"The id_token cannot be validated because it was signed with the HS256 algorithm and public clients (like a browser) can’t store secrets. Please read the associated doc for possible ways to fix this. Read more: https://auth0.com/docs/errors/libraries/auth0-js/invalid-token#parsing-an-hs256-signed-id-token-without-an-access-token"})}return _this.client.userInfo(parsedHash.access_token,(function(errUserInfo,profile){return errUserInfo?callback(errUserInfo):callback(null,profile)}))})):callback(null,null)},WebAuth.prototype.validateToken=function(token,nonce,cb){new I({issuer:this.baseOptions.token_issuer,jwksURI:this.baseOptions.jwksURI,audience:this.baseOptions.clientID,leeway:this.baseOptions.leeway||60,maxAge:this.baseOptions.maxAge,__clock:this.baseOptions.__clock||defaultClock}).verify(token,nonce,(function(err,payload){if(err)return cb(error.invalidToken(err.message));cb(null,payload)}))},WebAuth.prototype.renewAuth=function(options,cb){var usePostMessage=!!options.usePostMessage,postMessageDataType=options.postMessageDataType||!1,postMessageOrigin=options.postMessageOrigin||windowHelper.getWindow().origin,timeout=options.timeout,_this=this,params=objectHelper.merge(this.baseOptions,["clientID","redirectUri","responseType","scope","audience","_csrf","state","_intstate","nonce"]).with(options);params.responseType=params.responseType||"token",params.responseMode=params.responseMode||"fragment",params=this.transactionManager.process(params),assert.check(params,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),params.prompt="none",params=objectHelper.blacklist(params,["usePostMessage","tenant","postMessageDataType","postMessageOrigin"]),SilentAuthenticationHandler.create({authenticationUrl:this.client.buildAuthorizeUrl(params),postMessageDataType:postMessageDataType,postMessageOrigin:postMessageOrigin,timeout:timeout}).login(usePostMessage,(function(err,hash){if("object"==typeof hash)return cb(err,hash);_this.parseHash({hash:hash},cb)}))},WebAuth.prototype.checkSession=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(options);return"code"===params.responseType?cb({error:"error",error_description:"responseType can't be `code`"}):(options.nonce||(params=this.transactionManager.process(params)),params.redirectUri?(assert.check(params,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),params=objectHelper.blacklist(params,["usePostMessage","tenant","postMessageDataType"]),void this.webMessageHandler.run(params,wrapCallback(cb,{forceLegacyError:!0,ignoreCasing:!0}))):cb({error:"error",error_description:"redirectUri can't be empty"}))},WebAuth.prototype.changePassword=function(options,cb){return this.client.dbConnection.changePassword(options,cb)},WebAuth.prototype.passwordlessStart=function(options,cb){var authParams=objectHelper.merge(this.baseOptions,["responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(options.authParams);return options.authParams=this.transactionManager.process(authParams),this.client.passwordless.start(options,cb)},WebAuth.prototype.signup=function(options,cb){return this.client.dbConnection.signup(options,cb)},WebAuth.prototype.authorize=function(options){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce","organization","invitation"]).with(options);assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),(params=this.transactionManager.process(params)).scope=params.scope||"openid profile email",windowHelper.redirect(this.client.buildAuthorizeUrl(params))},WebAuth.prototype.signupAndAuthorize=function(options,cb){var _this=this;return this.client.dbConnection.signup(objectHelper.blacklist(options,["popupHandler"]),(function(err){if(err)return cb(err);options.realm=options.connection,options.username||(options.username=options.email),_this.client.login(options,cb)}))},WebAuth.prototype.login=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting","organization","invitation"]).with(options);params=this.transactionManager.process(params),windowHelper.getWindow().location.host===this.baseOptions.domain?(params.connection=params.realm,delete params.realm,this._universalLogin.login(params,cb)):this.crossOriginAuthentication.login(params,cb)},WebAuth.prototype.passwordlessLogin=function(options,cb){var params=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting"]).with(options);if(params=this.transactionManager.process(params),windowHelper.getWindow().location.host===this.baseOptions.domain)this.passwordlessVerify(params,cb);else{var crossOriginOptions=objectHelper.extend({credentialType:"http://auth0.com/oauth/grant-type/passwordless/otp",realm:params.connection,username:params.email||params.phoneNumber,otp:params.verificationCode},objectHelper.blacklist(params,["connection","email","phoneNumber","verificationCode"]));this.crossOriginAuthentication.login(crossOriginOptions,cb)}},WebAuth.prototype.crossOriginAuthenticationCallback=function(){this.crossOriginVerification()},WebAuth.prototype.crossOriginVerification=function(){this.crossOriginAuthentication.callback()},WebAuth.prototype.logout=function(options){windowHelper.redirect(this.client.buildLogoutUrl(options))},WebAuth.prototype.passwordlessVerify=function(options,cb){var _this=this,params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce","onRedirecting"]).with(options);return assert.check(params,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),params=this.transactionManager.process(params),this.client.passwordless.verify(params,(function(err){if(err)return cb(err);function doAuth(){windowHelper.redirect(_this.client.passwordless.buildVerifyUrl(params))}if("function"==typeof options.onRedirecting)return options.onRedirecting((function(){doAuth()}));doAuth()}))},WebAuth.prototype.renderCaptcha=function(element,options,callback){return captcha.render(this.client,captcha.Flow.DEFAULT,element,options,callback)},WebAuth.prototype.renderPasswordlessCaptcha=function(element,options,callback){return captcha.render(this.client,captcha.Flow.PASSWORDLESS,element,options,callback)},WebAuth.prototype.renderPasswordResetCaptcha=function(element,options,callback){return captcha.render(this.client,captcha.Flow.PASSWORD_RESET,element,options,callback)},PasswordlessAuthentication.prototype.buildVerifyUrl=function(options){var params,qString;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},verificationCode:{type:"string",message:"verificationCode option is required"},phoneNumber:{optional:!1,type:"string",message:"phoneNumber option is required",condition:function(o){return!o.email}},email:{optional:!1,type:"string",message:"email option is required",condition:function(o){return!o.phoneNumber}}}),params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","protocol","nonce"]).with(options),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params=objectHelper.toSnakeCase(params,["auth0Client"]),qString=lib.stringify(params),urlJoin(this.baseOptions.rootUrl,"passwordless","verify_redirect","?"+qString)},PasswordlessAuthentication.prototype.start=function(options,cb){var url,body;assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},send:{type:"string",message:"send option is required",values:["link","code"],value_message:"send is not valid ([link, code])"},phoneNumber:{optional:!0,type:"string",message:"phoneNumber option is required",condition:function(o){return"code"===o.send||!o.email}},email:{optional:!0,type:"string",message:"email option is required",condition:function(o){return"link"===o.send||!o.phoneNumber}},authParams:{optional:!0,type:"object",message:"authParams option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"passwordless","start");var xRequestLanguage=options.xRequestLanguage;delete options.xRequestLanguage,(body=objectHelper.merge(this.baseOptions,["clientID","responseType","redirectUri","scope"]).with(options)).scope&&(body.authParams=body.authParams||{},body.authParams.scope=body.authParams.scope||body.scope),body.redirectUri&&(body.authParams=body.authParams||{},body.authParams.redirect_uri=body.authParams.redirectUri||body.redirectUri),body.responseType&&(body.authParams=body.authParams||{},body.authParams.response_type=body.authParams.responseType||body.responseType),delete body.redirectUri,delete body.responseType,delete body.scope,body=objectHelper.toSnakeCase(body,["auth0Client","authParams"]);var postOptions=xRequestLanguage?{xRequestLanguage:xRequestLanguage}:void 0;return this.request.post(url,postOptions).send(body).end(wrapCallback(cb))},PasswordlessAuthentication.prototype.verify=function(options,cb){var url,cleanOption;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},verificationCode:{type:"string",message:"verificationCode option is required"},phoneNumber:{optional:!1,type:"string",message:"phoneNumber option is required",condition:function(o){return!o.email}},email:{optional:!1,type:"string",message:"email option is required",condition:function(o){return!o.phoneNumber}}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),cleanOption=objectHelper.pick(options,["connection","verificationCode","phoneNumber","email","auth0Client","clientID"]),cleanOption=objectHelper.toSnakeCase(cleanOption,["auth0Client"]),url=urlJoin(this.baseOptions.rootUrl,"passwordless","verify"),this.request.post(url).send(cleanOption).end(wrapCallback(cb))},PasswordlessAuthentication.prototype.getChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"passwordless","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},DBConnection.prototype.signup=function(options,cb){var url,body,metadata;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},email:{type:"string",message:"email option is required"},password:{type:"string",message:"password option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"dbconnections","signup"),metadata=(body=objectHelper.merge(this.baseOptions,["clientID","state"]).with(options)).user_metadata||body.userMetadata,body=objectHelper.blacklist(body,["scope","userMetadata","user_metadata"]),body=objectHelper.toSnakeCase(body,["auth0Client"]),metadata&&(body.user_metadata=metadata),this.request.post(url).send(body).end(wrapCallback(cb))},DBConnection.prototype.changePassword=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},email:{type:"string",message:"email option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"dbconnections","change_password"),body=objectHelper.merge(this.baseOptions,["clientID","state"]).with(options,["email","connection","captcha"]),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},DBConnection.prototype.getPasswordResetChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"dbconnections","change_password","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.buildAuthorizeUrl=function(options){var params,qString;return assert.check(options,{type:"object",message:"options parameter is not valid"}),params=objectHelper.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience"]).with(options),assert.check(params,{type:"object",message:"options parameter is not valid"},{clientID:{type:"string",message:"clientID option is required"},redirectUri:{optional:!0,type:"string",message:"redirectUri option is required"},responseType:{type:"string",message:"responseType option is required"},nonce:{type:"string",message:"nonce option is required",condition:function(o){return-1===o.responseType.indexOf("code")&&-1!==o.responseType.indexOf("id_token")}},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params.connection_scope&&assert.isArray(params.connection_scope)&&(params.connection_scope=params.connection_scope.join(",")),params=objectHelper.blacklist(params,["username","popupOptions","domain","tenant","timeout","appState"]),params=objectHelper.toSnakeCase(params,["auth0Client"]),params=parametersWhitelist.oauthAuthorizeParams(this.warn,params),qString=lib.stringify(params),urlJoin(this.baseOptions.rootUrl,"authorize","?"+qString)},Authentication.prototype.buildLogoutUrl=function(options){var params,qString;return assert.check(options,{optional:!0,type:"object",message:"options parameter is not valid"}),params=objectHelper.merge(this.baseOptions,["clientID"]).with(options||{}),this.baseOptions._sendTelemetry&&(params.auth0Client=this.request.getTelemetryData()),params=objectHelper.toSnakeCase(params,["auth0Client","returnTo"]),qString=lib.stringify(objectHelper.blacklist(params,["federated"])),options&&void 0!==options.federated&&!1!==options.federated&&"false"!==options.federated&&(qString+="&federated"),urlJoin(this.baseOptions.rootUrl,"v2","logout","?"+qString)},Authentication.prototype.loginWithDefaultDirectory=function(options,cb){return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),options.grantType="password",this.oauthToken(options,cb)},Authentication.prototype.login=function(options,cb){return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},realm:{type:"string",message:"realm option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),options.grantType="http://auth0.com/oauth/grant-type/password-realm",this.oauthToken(options,cb)},Authentication.prototype.oauthToken=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"oauth","token"),body=objectHelper.merge(this.baseOptions,["clientID","scope","audience"]).with(options),assert.check(body,{type:"object",message:"options parameter is not valid"},{clientID:{type:"string",message:"clientID option is required"},grantType:{type:"string",message:"grantType option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),body=objectHelper.toSnakeCase(body,["auth0Client"]),body=parametersWhitelist.oauthTokenParams(this.warn,body),this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.loginWithResourceOwner=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},connection:{type:"string",message:"connection option is required"},scope:{optional:!0,type:"string",message:"scope option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"oauth","ro"),body=objectHelper.merge(this.baseOptions,["clientID","scope"]).with(options,["username","password","scope","connection","device"]),(body=objectHelper.toSnakeCase(body,["auth0Client"])).grant_type=body.grant_type||"password",this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.getSSOData=function(withActiveDirectories,cb){if(this.auth0||(this.auth0=new WebAuth(this.baseOptions)),windowHelper.getWindow().location.host===this.baseOptions.domain)return this.auth0._universalLogin.getSSOData(withActiveDirectories,cb);"function"==typeof withActiveDirectories&&(cb=withActiveDirectories),assert.check(cb,{type:"function",message:"cb parameter is not valid"});var clientId=this.baseOptions.clientID,ssodataInformation=this.ssodataStorage.get()||{};this.auth0.checkSession({responseType:"token id_token",scope:"openid profile email",connection:ssodataInformation.lastUsedConnection,timeout:5e3},(function(err,result){return err?"login_required"===err.error?cb(null,{sso:!1}):("consent_required"===err.error&&(err.error_description="Consent required. When using `getSSOData`, the user has to be authenticated with the following scope: `openid profile email`."),cb(err,{sso:!1})):ssodataInformation.lastUsedSub&&ssodataInformation.lastUsedSub!==result.idTokenPayload.sub?cb(err,{sso:!1}):cb(null,{lastUsedConnection:{name:ssodataInformation.lastUsedConnection},lastUsedUserID:result.idTokenPayload.sub,lastUsedUsername:result.idTokenPayload.email||result.idTokenPayload.name,lastUsedClientID:clientId,sessionClients:[clientId],sso:!0})}))},Authentication.prototype.userInfo=function(accessToken,cb){var url;return assert.check(accessToken,{type:"string",message:"accessToken parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"userinfo"),this.request.get(url).set("Authorization","Bearer "+accessToken).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.getChallenge=function(cb){if(assert.check(cb,{type:"function",message:"cb parameter is not valid"}),!this.baseOptions.state)return cb();var url=urlJoin(this.baseOptions.rootUrl,"usernamepassword","challenge");return this.request.post(url).send({state:this.baseOptions.state}).end(wrapCallback(cb,{ignoreCasing:!0}))},Authentication.prototype.delegation=function(options,cb){var url,body;return assert.check(options,{type:"object",message:"options parameter is not valid"},{grant_type:{type:"string",message:"grant_type option is required"}}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"delegation"),body=objectHelper.merge(this.baseOptions,["clientID"]).with(options),body=objectHelper.toSnakeCase(body,["auth0Client"]),this.request.post(url).send(body).end(wrapCallback(cb))},Authentication.prototype.getUserCountry=function(cb){var url;return assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"user","geoloc","country"),this.request.get(url).end(wrapCallback(cb))},Management.prototype.getUser=function(userId,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.get(url).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.patchUserMetadata=function(userId,userMetadata,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(userMetadata,{type:"object",message:"userMetadata parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.patch(url).send({user_metadata:userMetadata}).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.patchUserAttributes=function(userId,user,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(user,{type:"object",message:"user parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId),this.request.patch(url).send(user).end(wrapCallback(cb,{ignoreCasing:!0}))},Management.prototype.linkUser=function(userId,secondaryUserToken,cb){var url;return assert.check(userId,{type:"string",message:"userId parameter is not valid"}),assert.check(secondaryUserToken,{type:"string",message:"secondaryUserToken parameter is not valid"}),assert.check(cb,{type:"function",message:"cb parameter is not valid"}),url=urlJoin(this.baseOptions.rootUrl,"users",userId,"identities"),this.request.post(url).send({link_with:secondaryUserToken}).end(wrapCallback(cb,{ignoreCasing:!0}))};var index={Authentication:Authentication,Management:Management,WebAuth:WebAuth,version:version};exports.Authentication=Authentication,exports.Management=Management,exports.WebAuth=WebAuth,exports.default=index,exports.version=version,Object.defineProperty(exports,"__esModule",{value:!0})})); //# sourceMappingURL=auth0.min.js.map diff --git a/dist/auth0.min.js.map b/dist/auth0.min.js.map index b424021b..38c49e1d 100644 --- a/dist/auth0.min.js.map +++ b/dist/auth0.min.js.map @@ -1 +1 @@ -{"version":3,"file":"auth0.min.js","sources":["../node_modules/url-join/lib/url-join.js","../node_modules/has-symbols/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-symbols/shams.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/index.js","../node_modules/component-emitter/index.js","../node_modules/fast-safe-stringify/index.js","../node_modules/superagent/lib/utils.js","../node_modules/superagent/lib/request-base.js","../node_modules/superagent/lib/response-base.js","../node_modules/superagent/lib/agent-base.js","../node_modules/base64-js/index.js","../node_modules/superagent/lib/client.js","../src/helper/base64_url.js","../src/version.js","../src/helper/assert.js","../src/helper/object-assign.js","../src/helper/object.js","../src/helper/request-builder.js","../src/helper/window.js","../src/helper/storage/dummy.js","../node_modules/js-cookie/src/js.cookie.js","../src/helper/storage/cookie.js","../src/helper/warn.js","../src/helper/storage/handler.js","../src/helper/storage.js","../src/helper/ssodata.js","../src/helper/error.js","../src/helper/response-handler.js","../src/helper/parameters-whitelist.js","../node_modules/idtoken-verifier/build/idtoken-verifier.esm.js","../src/helper/plugins.js","../src/helper/random.js","../src/web-auth/transaction-manager.js","../src/helper/times.js","../src/helper/iframe-handler.js","../src/web-auth/web-message-handler.js","../src/web-auth/cross-origin-authentication.js","../src/web-auth/redirect.js","../node_modules/winchan/winchan.js","../src/helper/url.js","../src/helper/popup-handler.js","../src/web-auth/popup.js","../src/web-auth/silent-authentication-handler.js","../src/web-auth/username-password.js","../src/web-auth/hosted-pages.js","../src/web-auth/captcha.js","../src/web-auth/index.js","../src/authentication/passwordless-authentication.js","../src/authentication/db-connection.js","../src/authentication/index.js","../src/management/index.js","../src/index.js"],"sourcesContent":["(function (name, context, definition) {\n if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n else if (typeof define === 'function' && define.amd) define(definition);\n else context[name] = definition();\n})('urljoin', this, function () {\n\n function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n }\n\n return function () {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n };\n\n});\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\ntry {\n\tnull.error; // eslint-disable-line no-unused-expressions\n} catch (e) {\n\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\tvar errorProto = getProto(getProto(e));\n\tINTRINSICS['%Error.prototype%'] = errorProto;\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\nexports.type = function (string_) {\n return string_.split(/ *; */).shift();\n};\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\n\nexports.params = function (value) {\n var object = {};\n\n var _iterator = _createForOfIteratorHelper(value.split(/ *; */)),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var string_ = _step.value;\n var parts = string_.split(/ *= */);\n var key = parts.shift();\n\n var _value = parts.shift();\n\n if (key && _value) object[key] = _value;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return object;\n};\n/**\n * Parse Link header fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\n\nexports.parseLinks = function (value) {\n var object = {};\n\n var _iterator2 = _createForOfIteratorHelper(value.split(/ *, */)),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var string_ = _step2.value;\n var parts = string_.split(/ *; */);\n var url = parts[0].slice(1, -1);\n var rel = parts[1].split(/ *= */)[1].slice(1, -1);\n object[rel] = url;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return object;\n};\n/**\n * Strip content related fields from `header`.\n *\n * @param {Object} header\n * @return {Object} header\n * @api private\n */\n\n\nexports.cleanHeader = function (header, changesOrigin) {\n delete header['content-type'];\n delete header['content-length'];\n delete header['transfer-encoding'];\n delete header.host; // secuirty\n\n if (changesOrigin) {\n delete header.authorization;\n delete header.cookie;\n }\n\n return header;\n};\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} object\n * @return {Boolean}\n * @api private\n */\n\n\nexports.isObject = function (object) {\n return object !== null && _typeof(object) === 'object';\n};\n/**\n * Object.hasOwn fallback/polyfill.\n *\n * @type {(object: object, property: string) => boolean} object\n * @api private\n */\n\n\nexports.hasOwn = Object.hasOwn || function (object, property) {\n if (object == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n return Object.prototype.hasOwnProperty.call(new Object(object), property);\n};\n\nexports.mixin = function (target, source) {\n for (var key in source) {\n if (exports.hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHBvcnRzIiwidHlwZSIsInN0cmluZ18iLCJzcGxpdCIsInNoaWZ0IiwicGFyYW1zIiwidmFsdWUiLCJvYmplY3QiLCJwYXJ0cyIsImtleSIsInBhcnNlTGlua3MiLCJ1cmwiLCJzbGljZSIsInJlbCIsImNsZWFuSGVhZGVyIiwiaGVhZGVyIiwiY2hhbmdlc09yaWdpbiIsImhvc3QiLCJhdXRob3JpemF0aW9uIiwiY29va2llIiwiaXNPYmplY3QiLCJoYXNPd24iLCJPYmplY3QiLCJwcm9wZXJ0eSIsIlR5cGVFcnJvciIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm1peGluIiwidGFyZ2V0Iiwic291cmNlIl0sInNvdXJjZXMiOlsiLi4vc3JjL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJuIHRoZSBtaW1lIHR5cGUgZm9yIHRoZSBnaXZlbiBgc3RyYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnR5cGUgPSAoc3RyaW5nXykgPT4gc3RyaW5nXy5zcGxpdCgvICo7ICovKS5zaGlmdCgpO1xuXG4vKipcbiAqIFJldHVybiBoZWFkZXIgZmllbGQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnBhcmFtcyA9ICh2YWx1ZSkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7fTtcbiAgZm9yIChjb25zdCBzdHJpbmdfIG9mIHZhbHVlLnNwbGl0KC8gKjsgKi8pKSB7XG4gICAgY29uc3QgcGFydHMgPSBzdHJpbmdfLnNwbGl0KC8gKj0gKi8pO1xuICAgIGNvbnN0IGtleSA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJ0cy5zaGlmdCgpO1xuXG4gICAgaWYgKGtleSAmJiB2YWx1ZSkgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG4vKipcbiAqIFBhcnNlIExpbmsgaGVhZGVyIGZpZWxkcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnBhcnNlTGlua3MgPSAodmFsdWUpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge307XG4gIGZvciAoY29uc3Qgc3RyaW5nXyBvZiB2YWx1ZS5zcGxpdCgvICosICovKSkge1xuICAgIGNvbnN0IHBhcnRzID0gc3RyaW5nXy5zcGxpdCgvICo7ICovKTtcbiAgICBjb25zdCB1cmwgPSBwYXJ0c1swXS5zbGljZSgxLCAtMSk7XG4gICAgY29uc3QgcmVsID0gcGFydHNbMV0uc3BsaXQoLyAqPSAqLylbMV0uc2xpY2UoMSwgLTEpO1xuICAgIG9iamVjdFtyZWxdID0gdXJsO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cbi8qKlxuICogU3RyaXAgY29udGVudCByZWxhdGVkIGZpZWxkcyBmcm9tIGBoZWFkZXJgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBoZWFkZXJcbiAqIEByZXR1cm4ge09iamVjdH0gaGVhZGVyXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLmNsZWFuSGVhZGVyID0gKGhlYWRlciwgY2hhbmdlc09yaWdpbikgPT4ge1xuICBkZWxldGUgaGVhZGVyWydjb250ZW50LXR5cGUnXTtcbiAgZGVsZXRlIGhlYWRlclsnY29udGVudC1sZW5ndGgnXTtcbiAgZGVsZXRlIGhlYWRlclsndHJhbnNmZXItZW5jb2RpbmcnXTtcbiAgZGVsZXRlIGhlYWRlci5ob3N0O1xuICAvLyBzZWN1aXJ0eVxuICBpZiAoY2hhbmdlc09yaWdpbikge1xuICAgIGRlbGV0ZSBoZWFkZXIuYXV0aG9yaXphdGlvbjtcbiAgICBkZWxldGUgaGVhZGVyLmNvb2tpZTtcbiAgfVxuXG4gIHJldHVybiBoZWFkZXI7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGBvYmpgIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cbmV4cG9ydHMuaXNPYmplY3QgPSAob2JqZWN0KSA9PiB7XG4gIHJldHVybiBvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCc7XG59O1xuXG4vKipcbiAqIE9iamVjdC5oYXNPd24gZmFsbGJhY2svcG9seWZpbGwuXG4gKlxuICogQHR5cGUgeyhvYmplY3Q6IG9iamVjdCwgcHJvcGVydHk6IHN0cmluZykgPT4gYm9vbGVhbn0gb2JqZWN0XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZXhwb3J0cy5oYXNPd24gPVxuICBPYmplY3QuaGFzT3duIHx8XG4gIGZ1bmN0aW9uIChvYmplY3QsIHByb3BlcnR5KSB7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ldyBPYmplY3Qob2JqZWN0KSwgcHJvcGVydHkpO1xuICB9O1xuXG5leHBvcnRzLm1peGluID0gKHRhcmdldCwgc291cmNlKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIGlmIChleHBvcnRzLmhhc093bihzb3VyY2UsIGtleSkpIHtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQUEsT0FBTyxDQUFDQyxJQUFSLEdBQWUsVUFBQ0MsT0FBRDtFQUFBLE9B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","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar semver = require('semver');\n/**\n * Module of mixed-in functions shared between node and client code\n */\n\n\nvar _require = require('./utils'),\n isObject = _require.isObject,\n hasOwn = _require.hasOwn;\n/**\n * Expose `RequestBase`.\n */\n\n\nmodule.exports = RequestBase;\n/**\n * Initialize a new `RequestBase`.\n *\n * @api public\n */\n\nfunction RequestBase() {}\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.clearTimeout = function () {\n clearTimeout(this._timer);\n clearTimeout(this._responseTimeoutTimer);\n clearTimeout(this._uploadTimeoutTimer);\n delete this._timer;\n delete this._responseTimeoutTimer;\n delete this._uploadTimeoutTimer;\n return this;\n};\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\n\nRequestBase.prototype.parse = function (fn) {\n this._parser = fn;\n return this;\n};\n/**\n * Set format of binary response body.\n * In browser valid formats are 'blob' and 'arraybuffer',\n * which return Blob and ArrayBuffer, respectively.\n *\n * In Node all values result in Buffer.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.responseType = function (value) {\n this._responseType = value;\n return this;\n};\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\n\nRequestBase.prototype.serialize = function (fn) {\n this._serializer = fn;\n return this;\n};\n/**\n * Set timeouts.\n *\n * - response timeout is time between sending request and receiving the first byte of the response. Includes DNS and connection time.\n * - deadline is the time from start of the request to receiving response body in full. If the deadline is too short large files may not load at all on slow connections.\n * - upload is the time since last bit of data was sent or received. This timeout works only if deadline timeout is off\n *\n * Value of 0 or false means no timeout.\n *\n * @param {Number|Object} ms or {response, deadline}\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.timeout = function (options) {\n if (!options || _typeof(options) !== 'object') {\n this._timeout = options;\n this._responseTimeout = 0;\n this._uploadTimeout = 0;\n return this;\n }\n\n for (var option in options) {\n if (hasOwn(options, option)) {\n switch (option) {\n case 'deadline':\n this._timeout = options.deadline;\n break;\n\n case 'response':\n this._responseTimeout = options.response;\n break;\n\n case 'upload':\n this._uploadTimeout = options.upload;\n break;\n\n default:\n console.warn('Unknown timeout option', option);\n }\n }\n }\n\n return this;\n};\n/**\n * Set number of retry attempts on error.\n *\n * Failed requests will be retried 'count' times if timeout or err.code >= 500.\n *\n * @param {Number} count\n * @param {Function} [fn]\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.retry = function (count, fn) {\n // Default to 1 if no count passed or true\n if (arguments.length === 0 || count === true) count = 1;\n if (count <= 0) count = 0;\n this._maxRetries = count;\n this._retries = 0;\n this._retryCallback = fn;\n return this;\n}; //\n// NOTE: we do not include ESOCKETTIMEDOUT because that is from `request` package\n// \n//\n// NOTE: we do not include EADDRINFO because it was removed from libuv in 2014\n// \n// \n//\n//\n// TODO: expose these as configurable defaults\n//\n\n\nvar ERROR_CODES = new Set(['ETIMEDOUT', 'ECONNRESET', 'EADDRINUSE', 'ECONNREFUSED', 'EPIPE', 'ENOTFOUND', 'ENETUNREACH', 'EAI_AGAIN']);\nvar STATUS_CODES = new Set([408, 413, 429, 500, 502, 503, 504, 521, 522, 524]); // TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n// const METHODS = new Set(['GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE']);\n\n/**\n * Determine if a request should be retried.\n * (Inspired by https://github.com/sindresorhus/got#retry)\n *\n * @param {Error} err an error\n * @param {Response} [res] response\n * @returns {Boolean} if segment should be retried\n */\n\nRequestBase.prototype._shouldRetry = function (error, res) {\n if (!this._maxRetries || this._retries++ >= this._maxRetries) {\n return false;\n }\n\n if (this._retryCallback) {\n try {\n var override = this._retryCallback(error, res);\n\n if (override === true) return true;\n if (override === false) return false; // undefined falls back to defaults\n } catch (err) {\n console.error(err);\n }\n } // TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n\n /*\n if (\n this.req &&\n this.req.method &&\n !METHODS.has(this.req.method.toUpperCase())\n )\n return false;\n */\n\n\n if (res && res.status && STATUS_CODES.has(res.status)) return true;\n\n if (error) {\n if (error.code && ERROR_CODES.has(error.code)) return true; // Superagent timeout\n\n if (error.timeout && error.code === 'ECONNABORTED') return true;\n if (error.crossDomain) return true;\n }\n\n return false;\n};\n/**\n * Retry request\n *\n * @return {Request} for chaining\n * @api private\n */\n\n\nRequestBase.prototype._retry = function () {\n this.clearTimeout(); // node\n\n if (this.req) {\n this.req = null;\n this.req = this.request();\n }\n\n this._aborted = false;\n this.timedout = false;\n this.timedoutError = null;\n return this._end();\n};\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} [reject]\n * @return {Request}\n */\n\n\nRequestBase.prototype.then = function (resolve, reject) {\n var _this = this;\n\n if (!this._fullfilledPromise) {\n var self = this;\n\n if (this._endCalled) {\n console.warn('Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises');\n }\n\n this._fullfilledPromise = new Promise(function (resolve, reject) {\n self.on('abort', function () {\n if (_this._maxRetries && _this._maxRetries > _this._retries) {\n return;\n }\n\n if (_this.timedout && _this.timedoutError) {\n reject(_this.timedoutError);\n return;\n }\n\n var error = new Error('Aborted');\n error.code = 'ABORTED';\n error.status = _this.status;\n error.method = _this.method;\n error.url = _this.url;\n reject(error);\n });\n self.end(function (error, res) {\n if (error) reject(error);else resolve(res);\n });\n });\n }\n\n return this._fullfilledPromise.then(resolve, reject);\n};\n\nRequestBase.prototype.catch = function (callback) {\n return this.then(undefined, callback);\n};\n/**\n * Allow for extension\n */\n\n\nRequestBase.prototype.use = function (fn) {\n fn(this);\n return this;\n};\n\nRequestBase.prototype.ok = function (callback) {\n if (typeof callback !== 'function') throw new Error('Callback required');\n this._okCallback = callback;\n return this;\n};\n\nRequestBase.prototype._isResponseOK = function (res) {\n if (!res) {\n return false;\n }\n\n if (this._okCallback) {\n return this._okCallback(res);\n }\n\n return res.status >= 200 && res.status < 300;\n};\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\n\nRequestBase.prototype.get = function (field) {\n return this._header[field.toLowerCase()];\n};\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\n\nRequestBase.prototype.getHeader = RequestBase.prototype.get;\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.set = function (field, value) {\n if (isObject(field)) {\n for (var key in field) {\n if (hasOwn(field, key)) this.set(key, field[key]);\n }\n\n return this;\n }\n\n this._header[field.toLowerCase()] = value;\n this.header[field] = value;\n return this;\n};\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field field name\n */\n\n\nRequestBase.prototype.unset = function (field) {\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n *\n * request.post('/upload')\n * .field({ foo: 'bar', baz: 'qux' })\n * .end(callback);\n * ```\n *\n * @param {String|Object} name name of field\n * @param {String|Blob|File|Buffer|fs.ReadStream} val value of field\n * @param {String} options extra options, e.g. 'blob'\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.field = function (name, value, options) {\n // name should be either a string or an object.\n if (name === null || undefined === name) {\n throw new Error('.field(name, val) name can not be empty');\n }\n\n if (this._data) {\n throw new Error(\".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()\");\n }\n\n if (isObject(name)) {\n for (var key in name) {\n if (hasOwn(name, key)) this.field(key, name[key]);\n }\n\n return this;\n }\n\n if (Array.isArray(value)) {\n for (var i in value) {\n if (hasOwn(value, i)) this.field(name, value[i]);\n }\n\n return this;\n } // val should be defined now\n\n\n if (value === null || undefined === value) {\n throw new Error('.field(name, val) val can not be empty');\n }\n\n if (typeof value === 'boolean') {\n value = String(value);\n } //fix https://github.com/visionmedia/superagent/issues/1680\n\n\n if (options) this._getFormData().append(name, value, options);else this._getFormData().append(name, value);\n return this;\n};\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request} request\n * @api public\n */\n\n\nRequestBase.prototype.abort = function () {\n if (this._aborted) {\n return this;\n }\n\n this._aborted = true;\n if (this.xhr) this.xhr.abort(); // browser\n\n if (this.req) {\n // Node v13 has major differences in `abort()`\n // https://github.com/nodejs/node/blob/v12.x/lib/internal/streams/end-of-stream.js\n // https://github.com/nodejs/node/blob/v13.x/lib/internal/streams/end-of-stream.js\n // https://github.com/nodejs/node/blob/v14.x/lib/internal/streams/end-of-stream.js\n // (if you run a diff across these you will see the differences)\n //\n // References:\n // \n // \n //\n // Thanks to @shadowgate15 and @niftylettuce\n if (semver.gte(process.version, 'v13.0.0') && semver.lt(process.version, 'v14.0.0')) {\n // Note that the reason this doesn't work is because in v13 as compared to v14\n // there is no `callback = nop` set in end-of-stream.js above\n throw new Error('Superagent does not work in v13 properly with abort() due to Node.js core changes');\n } else if (semver.gte(process.version, 'v14.0.0')) {\n // We have to manually set `destroyed` to `true` in order for this to work\n // (see core internals of end-of-stream.js above in v14 branch as compared to v12)\n this.req.destroyed = true;\n }\n\n this.req.abort(); // node\n }\n\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\nRequestBase.prototype._auth = function (user, pass, options, base64Encoder) {\n switch (options.type) {\n case 'basic':\n this.set('Authorization', \"Basic \".concat(base64Encoder(\"\".concat(user, \":\").concat(pass))));\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n\n case 'bearer':\n // usage would be .auth(accessToken, { type: 'bearer' })\n this.set('Authorization', \"Bearer \".concat(user));\n break;\n\n default:\n break;\n }\n\n return this;\n};\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\n\nRequestBase.prototype.withCredentials = function (on) {\n // This is browser-only functionality. Node side is no-op.\n if (on === undefined) on = true;\n this._withCredentials = on;\n return this;\n};\n/**\n * Set the max redirects to `n`. Does nothing in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.redirects = function (n) {\n this._maxRedirects = n;\n return this;\n};\n/**\n * Maximum size of buffered response body, in bytes. Counts uncompressed size.\n * Default 200MB.\n *\n * @param {Number} n number of bytes\n * @return {Request} for chaining\n */\n\n\nRequestBase.prototype.maxResponseSize = function (n) {\n if (typeof n !== 'number') {\n throw new TypeError('Invalid argument');\n }\n\n this._maxResponseSize = n;\n return this;\n};\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\n\nRequestBase.prototype.toJSON = function () {\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header\n };\n};\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n// eslint-disable-next-line complexity\n\n\nRequestBase.prototype.send = function (data) {\n var isObject_ = isObject(data);\n var type = this._header['content-type'];\n\n if (this._formData) {\n throw new Error(\".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()\");\n }\n\n if (isObject_ && !this._data) {\n if (Array.isArray(data)) {\n this._data = [];\n } else if (!this._isHost(data)) {\n this._data = {};\n }\n } else if (data && this._data && this._isHost(this._data)) {\n throw new Error(\"Can't merge these send calls\");\n } // merge\n\n\n if (isObject_ && isObject(this._data)) {\n for (var key in data) {\n if (hasOwn(data, key)) this._data[key] = data[key];\n }\n } else if (typeof data === 'string') {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if (type) type = type.toLowerCase().trim();\n\n if (type === 'application/x-www-form-urlencoded') {\n this._data = this._data ? \"\".concat(this._data, \"&\").concat(data) : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!isObject_ || this._isHost(data)) {\n return this;\n } // default to json\n\n\n if (!type) this.type('json');\n return this;\n};\n/**\n * Sort `querystring` by the sort function\n *\n *\n * Examples:\n *\n * // default order\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery()\n * .end(callback)\n *\n * // customized sort function\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery(function(a, b){\n * return a.length - b.length;\n * })\n * .end(callback)\n *\n *\n * @param {Function} sort\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.sortQuery = function (sort) {\n // _sort default to true but otherwise can be a function or boolean\n this._sort = typeof sort === 'undefined' ? true : sort;\n return this;\n};\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\n\n\nRequestBase.prototype._finalizeQueryString = function () {\n var query = this._query.join('&');\n\n if (query) {\n this.url += (this.url.includes('?') ? '&' : '?') + query;\n }\n\n this._query.length = 0; // Makes the call idempotent\n\n if (this._sort) {\n var index = this.url.indexOf('?');\n\n if (index >= 0) {\n var queryArray = this.url.slice(index + 1).split('&');\n\n if (typeof this._sort === 'function') {\n queryArray.sort(this._sort);\n } else {\n queryArray.sort();\n }\n\n this.url = this.url.slice(0, index) + '?' + queryArray.join('&');\n }\n }\n}; // For backwards compat only\n\n\nRequestBase.prototype._appendQueryString = function () {\n console.warn('Unsupported');\n};\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\n\nRequestBase.prototype._timeoutError = function (reason, timeout, errno) {\n if (this._aborted) {\n return;\n }\n\n var error = new Error(\"\".concat(reason + timeout, \"ms exceeded\"));\n error.timeout = timeout;\n error.code = 'ECONNABORTED';\n error.errno = errno;\n this.timedout = true;\n this.timedoutError = error;\n this.abort();\n this.callback(error);\n};\n\nRequestBase.prototype._setTimeouts = function () {\n var self = this; // deadline\n\n if (this._timeout && !this._timer) {\n this._timer = setTimeout(function () {\n self._timeoutError('Timeout of ', self._timeout, 'ETIME');\n }, this._timeout);\n } // response timeout\n\n\n if (this._responseTimeout && !this._responseTimeoutTimer) {\n this._responseTimeoutTimer = setTimeout(function () {\n self._timeoutError('Response timeout of ', self._responseTimeout, 'ETIMEDOUT');\n }, this._responseTimeout);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZW12ZXIiLCJyZXF1aXJlIiwiaXNPYmplY3QiLCJoYXNPd24iLCJtb2R1bGUiLCJleHBvcnRzIiwiUmVxdWVzdEJhc2UiLCJwcm90b3R5cGUiLCJjbGVhclRpbWVvdXQiLCJfdGltZXIiLCJfcmVzcG9uc2VUaW1lb3V0VGltZXIiLCJfdXBsb2FkVGltZW91dFRpbWVyIiwicGFyc2UiLCJmbiIsIl9wYXJzZXIiLCJyZXNwb25zZVR5cGUiLCJ2YWx1ZSIsIl9yZXNwb25zZVR5cGUiLCJzZXJpYWxpemUiLCJfc2VyaWFsaXplciIsInRpbWVvdXQiLCJvcHRpb25zIiwiX3RpbWVvdXQiLCJfcmVzcG9uc2VUaW1lb3V0IiwiX3VwbG9hZFRpbWVvdXQiLCJvcHRpb24iLCJkZWFkbGluZSIsInJlc3BvbnNlIiwidXBsb2FkIiwiY29uc29sZSIsIndhcm4iLCJyZXRyeSIsImNvdW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiX21heFJldHJpZXMiLCJfcmV0cmllcyIsIl9yZXRyeUNhbGxiYWNrIiwiRVJST1JfQ09ERVMiLCJTZXQiLCJTVEFUVVNfQ09ERVMiLCJfc2hvdWxkUmV0cnkiLCJlcnJvciIsInJlcyIsIm92ZXJyaWRlIiwiZXJyIiwic3RhdHVzIiwiaGFzIiwiY29kZSIsImNyb3NzRG9tYWluIiwiX3JldHJ5IiwicmVxIiwicmVxdWVzdCIsIl9hYm9ydGVkIiwidGltZWRvdXQiLCJ0aW1lZG91dEVycm9yIiwiX2VuZCIsInRoZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX2Z1bGxmaWxsZWRQcm9taXNlIiwic2VsZiIsIl9lbmRDYWxsZWQiLCJQcm9taXNlIiwib24iLCJFcnJvciIsIm1ldGhvZCIsInVybCIsImVuZCIsImNhdGNoIiwiY2FsbGJhY2siLCJ1bmRlZmluZWQiLCJ1c2UiLCJvayIsIl9va0NhbGxiYWNrIiwiX2lzUmVzcG9uc2VPSyIsImdldCIsImZpZWxkIiwiX2hlYWRlciIsInRvTG93ZXJDYXNlIiwiZ2V0SGVhZGVyIiwic2V0Iiwia2V5IiwiaGVhZGVyIiwidW5zZXQiLCJuYW1lIiwiX2RhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJpIiwiU3RyaW5nIiwiX2dldEZvcm1EYXRhIiwiYXBwZW5kIiwiYWJvcnQiLCJ4aHIiLCJndGUiLCJwcm9jZXNzIiwidmVyc2lvbiIsImx0IiwiZGVzdHJveWVkIiwiZW1pdCIsIl9hdXRoIiwidXNlciIsInBhc3MiLCJiYXNlNjRFbmNvZGVyIiwidHlwZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJ3aXRoQ3JlZGVudGlhbHMiLCJfd2l0aENyZWRlbnRpYWxzIiwicmVkaXJlY3RzIiwibiIsIl9tYXhSZWRpcmVjdHMiLCJtYXhSZXNwb25zZVNpemUiLCJUeXBlRXJyb3IiLCJfbWF4UmVzcG9uc2VTaXplIiwidG9KU09OIiwiZGF0YSIsImhlYWRlcnMiLCJzZW5kIiwiaXNPYmplY3RfIiwiX2Zvcm1EYXRhIiwiX2lzSG9zdCIsInRyaW0iLCJzb3J0UXVlcnkiLCJzb3J0IiwiX3NvcnQiLCJfZmluYWxpemVRdWVyeVN0cmluZyIsInF1ZXJ5IiwiX3F1ZXJ5Iiwiam9pbiIsImluY2x1ZGVzIiwiaW5kZXgiLCJpbmRleE9mIiwicXVlcnlBcnJheSIsInNsaWNlIiwic3BsaXQiLCJfYXBwZW5kUXVlcnlTdHJpbmciLCJfdGltZW91dEVycm9yIiwicmVhc29uIiwiZXJybm8iLCJfc2V0VGltZW91dHMiLCJzZXRUaW1lb3V0Il0sInNvdXJjZXMiOlsiLi4vc3JjL3JlcXVlc3QtYmFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZW12ZXIgPSByZXF1aXJlKCdzZW12ZXInKTtcblxuLyoqXG4gKiBNb2R1bGUgb2YgbWl4ZWQtaW4gZnVuY3Rpb25zIHNoYXJlZCBiZXR3ZWVuIG5vZGUgYW5kIGNsaWVudCBjb2RlXG4gKi9cbmNvbnN0IHsgaXNPYmplY3QsIGhhc093biB9ID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG4vKipcbiAqIEV4cG9zZSBgUmVxdWVzdEJhc2VgLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVxdWVzdEJhc2U7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVxdWVzdEJhc2VgLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUmVxdWVzdEJhc2UoKSB7IH1cblxuLyoqXG4gKiBDbGVhciBwcmV2aW91cyB0aW1lb3V0LlxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuY2xlYXJUaW1lb3V0ID0gZnVuY3Rpb24gKCkge1xuICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xuICBjbGVhclRpbWVvdXQodGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXIpO1xuICBjbGVhclRpbWVvdXQodGhpcy5fdXBsb2FkVGltZW91dFRpbWVyKTtcbiAgZGVsZXRlIHRoaXMuX3RpbWVyO1xuICBkZWxldGUgdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXI7XG4gIGRlbGV0ZSB0aGlzLl91cGxvYWRUaW1lb3V0VGltZXI7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBPdmVycmlkZSBkZWZhdWx0IHJlc3BvbnNlIGJvZHkgcGFyc2VyXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBjb252ZXJ0IGluY29taW5nIGRhdGEgaW50byByZXF1ZXN0LmJvZHlcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAoZm4pIHtcbiAgdGhpcy5fcGFyc2VyID0gZm47XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgZm9ybWF0IG9mIGJpbmFyeSByZXNwb25zZSBib2R5LlxuICogSW4gYnJvd3NlciB2YWxpZCBmb3JtYXRzIGFyZSAnYmxvYicgYW5kICdhcnJheWJ1ZmZlcicsXG4gKiB3aGljaCByZXR1cm4gQmxvYiBhbmQgQXJyYXlCdWZmZXIsIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBJbiBOb2RlIGFsbCB2YWx1ZXMgcmVzdWx0IGluIEJ1ZmZlci5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5yZXNwb25zZVR5cGUoJ2Jsb2InKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUucmVzcG9uc2VUeXBlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHRoaXMuX3Jlc3BvbnNlVHlwZSA9IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogT3ZlcnJpZGUgZGVmYXVsdCByZXF1ZXN0IGJvZHkgc2VyaWFsaXplclxuICpcbiAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgdG8gY29udmVydCBkYXRhIHNldCB2aWEgLnNlbmQgb3IgLmF0dGFjaCBpbnRvIHBheWxvYWQgdG8gc2VuZFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXJpYWxpemUgPSBmdW5jdGlvbiAoZm4pIHtcbiAgdGhpcy5fc2VyaWFsaXplciA9IGZuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRpbWVvdXRzLlxuICpcbiAqIC0gcmVzcG9uc2UgdGltZW91dCBpcyB0aW1lIGJldHdlZW4gc2VuZGluZyByZXF1ZXN0IGFuZCByZWNlaXZpbmcgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHJlc3BvbnNlLiBJbmNsdWRlcyBETlMgYW5kIGNvbm5lY3Rpb24gdGltZS5cbiAqIC0gZGVhZGxpbmUgaXMgdGhlIHRpbWUgZnJvbSBzdGFydCBvZiB0aGUgcmVxdWVzdCB0byByZWNlaXZpbmcgcmVzcG9uc2UgYm9keSBpbiBmdWxsLiBJZiB0aGUgZGVhZGxpbmUgaXMgdG9vIHNob3J0IGxhcmdlIGZpbGVzIG1heSBub3QgbG9hZCBhdCBhbGwgb24gc2xvdyBjb25uZWN0aW9ucy5cbiAqIC0gdXBsb2FkIGlzIHRoZSB0aW1lICBzaW5jZSBsYXN0IGJpdCBvZiBkYXRhIHdhcyBzZW50IG9yIHJlY2VpdmVkLiBUaGlzIHRpbWVvdXQgd29ya3Mgb25seSBpZiBkZWFkbGluZSB0aW1lb3V0IGlzIG9mZlxuICpcbiAqIFZhbHVlIG9mIDAgb3IgZmFsc2UgbWVhbnMgbm8gdGltZW91dC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcnxPYmplY3R9IG1zIG9yIHtyZXNwb25zZSwgZGVhZGxpbmV9XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRpbWVvdXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMgfHwgdHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhpcy5fdGltZW91dCA9IG9wdGlvbnM7XG4gICAgdGhpcy5fcmVzcG9uc2VUaW1lb3V0ID0gMDtcbiAgICB0aGlzLl91cGxvYWRUaW1lb3V0ID0gMDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZvciAoY29uc3Qgb3B0aW9uIGluIG9wdGlvbnMpIHtcbiAgICBpZiAoaGFzT3duKG9wdGlvbnMsIG9wdGlvbikpIHtcbiAgICAgIHN3aXRjaCAob3B0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2RlYWRsaW5lJzpcbiAgICAgICAgICB0aGlzLl90aW1lb3V0ID0gb3B0aW9ucy5kZWFkbGluZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmVzcG9uc2UnOlxuICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlVGltZW91dCA9IG9wdGlvbnMucmVzcG9uc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3VwbG9hZCc6XG4gICAgICAgICAgdGhpcy5fdXBsb2FkVGltZW91dCA9IG9wdGlvbnMudXBsb2FkO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybignVW5rbm93biB0aW1lb3V0IG9wdGlvbicsIG9wdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCBudW1iZXIgb2YgcmV0cnkgYXR0ZW1wdHMgb24gZXJyb3IuXG4gKlxuICogRmFpbGVkIHJlcXVlc3RzIHdpbGwgYmUgcmV0cmllZCAnY291bnQnIHRpbWVzIGlmIHRpbWVvdXQgb3IgZXJyLmNvZGUgPj0gNTAwLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb3VudFxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZXRyeSA9IGZ1bmN0aW9uIChjb3VudCwgZm4pIHtcbiAgLy8gRGVmYXVsdCB0byAxIGlmIG5vIGNvdW50IHBhc3NlZCBvciB0cnVlXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwIHx8IGNvdW50ID09PSB0cnVlKSBjb3VudCA9IDE7XG4gIGlmIChjb3VudCA8PSAwKSBjb3VudCA9IDA7XG4gIHRoaXMuX21heFJldHJpZXMgPSBjb3VudDtcbiAgdGhpcy5fcmV0cmllcyA9IDA7XG4gIHRoaXMuX3JldHJ5Q2FsbGJhY2sgPSBmbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vL1xuLy8gTk9URTogd2UgZG8gbm90IGluY2x1ZGUgRVNPQ0tFVFRJTUVET1VUIGJlY2F1c2UgdGhhdCBpcyBmcm9tIGByZXF1ZXN0YCBwYWNrYWdlXG4vLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9nb3QvcHVsbC81Mzc+XG4vL1xuLy8gTk9URTogd2UgZG8gbm90IGluY2x1ZGUgRUFERFJJTkZPIGJlY2F1c2UgaXQgd2FzIHJlbW92ZWQgZnJvbSBsaWJ1diBpbiAyMDE0XG4vLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2L2NvbW1pdC8wMmUxZWJkNDBiODA3YmU1YWY0NjM0M2VhODczMzMxYjJlZTRlOWMxPlxuLy8gICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9yZXF1ZXN0L3JlcXVlc3Qvc2VhcmNoP3E9RVNPQ0tFVFRJTUVET1VUJnVuc2NvcGVkX3E9RVNPQ0tFVFRJTUVET1VUPlxuLy9cbi8vXG4vLyBUT0RPOiBleHBvc2UgdGhlc2UgYXMgY29uZmlndXJhYmxlIGRlZmF1bHRzXG4vL1xuY29uc3QgRVJST1JfQ09ERVMgPSBuZXcgU2V0KFtcbiAgJ0VUSU1FRE9VVCcsXG4gICdFQ09OTlJFU0VUJyxcbiAgJ0VBRERSSU5VU0UnLFxuICAnRUNPTk5SRUZVU0VEJyxcbiAgJ0VQSVBFJyxcbiAgJ0VOT1RGT1VORCcsXG4gICdFTkVUVU5SRUFDSCcsXG4gICdFQUlfQUdBSU4nXG5dKTtcblxuY29uc3QgU1RBVFVTX0NPREVTID0gbmV3IFNldChbXG4gIDQwOCwgNDEzLCA0MjksIDUwMCwgNTAyLCA1MDMsIDUwNCwgNTIxLCA1MjIsIDUyNFxuXSk7XG5cbi8vIFRPRE86IHdlIHdvdWxkIG5lZWQgdG8gbWFrZSB0aGlzIGVhc2lseSBjb25maWd1cmFibGUgYmVmb3JlIGFkZGluZyBpdCBpbiAoZS5nLiBzb21lIG1pZ2h0IHdhbnQgdG8gYWRkIFBPU1QpXG4vLyBjb25zdCBNRVRIT0RTID0gbmV3IFNldChbJ0dFVCcsICdQVVQnLCAnSEVBRCcsICdERUxFVEUnLCAnT1BUSU9OUycsICdUUkFDRSddKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSByZXF1ZXN0IHNob3VsZCBiZSByZXRyaWVkLlxuICogKEluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvZ290I3JldHJ5KVxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVyciBhbiBlcnJvclxuICogQHBhcmFtIHtSZXNwb25zZX0gW3Jlc10gcmVzcG9uc2VcbiAqIEByZXR1cm5zIHtCb29sZWFufSBpZiBzZWdtZW50IHNob3VsZCBiZSByZXRyaWVkXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2hvdWxkUmV0cnkgPSBmdW5jdGlvbiAoZXJyb3IsIHJlcykge1xuICBpZiAoIXRoaXMuX21heFJldHJpZXMgfHwgdGhpcy5fcmV0cmllcysrID49IHRoaXMuX21heFJldHJpZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fcmV0cnlDYWxsYmFjaykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvdmVycmlkZSA9IHRoaXMuX3JldHJ5Q2FsbGJhY2soZXJyb3IsIHJlcyk7XG4gICAgICBpZiAob3ZlcnJpZGUgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKG92ZXJyaWRlID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgLy8gdW5kZWZpbmVkIGZhbGxzIGJhY2sgdG8gZGVmYXVsdHNcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiB3ZSB3b3VsZCBuZWVkIHRvIG1ha2UgdGhpcyBlYXNpbHkgY29uZmlndXJhYmxlIGJlZm9yZSBhZGRpbmcgaXQgaW4gKGUuZy4gc29tZSBtaWdodCB3YW50IHRvIGFkZCBQT1NUKVxuICAvKlxuICBpZiAoXG4gICAgdGhpcy5yZXEgJiZcbiAgICB0aGlzLnJlcS5tZXRob2QgJiZcbiAgICAhTUVUSE9EUy5oYXModGhpcy5yZXEubWV0aG9kLnRvVXBwZXJDYXNlKCkpXG4gIClcbiAgICByZXR1cm4gZmFsc2U7XG4gICovXG4gIGlmIChyZXMgJiYgcmVzLnN0YXR1cyAmJiBTVEFUVVNfQ09ERVMuaGFzKHJlcy5zdGF0dXMpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGVycm9yKSB7XG4gICAgaWYgKGVycm9yLmNvZGUgJiYgRVJST1JfQ09ERVMuaGFzKGVycm9yLmNvZGUpKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBTdXBlcmFnZW50IHRpbWVvdXRcbiAgICBpZiAoZXJyb3IudGltZW91dCAmJiBlcnJvci5jb2RlID09PSAnRUNPTk5BQk9SVEVEJykgcmV0dXJuIHRydWU7XG4gICAgaWYgKGVycm9yLmNyb3NzRG9tYWluKSByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0cnkgcmVxdWVzdFxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9yZXRyeSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jbGVhclRpbWVvdXQoKTtcblxuICAvLyBub2RlXG4gIGlmICh0aGlzLnJlcSkge1xuICAgIHRoaXMucmVxID0gbnVsbDtcbiAgICB0aGlzLnJlcSA9IHRoaXMucmVxdWVzdCgpO1xuICB9XG5cbiAgdGhpcy5fYWJvcnRlZCA9IGZhbHNlO1xuICB0aGlzLnRpbWVkb3V0ID0gZmFsc2U7XG4gIHRoaXMudGltZWRvdXRFcnJvciA9IG51bGw7XG5cbiAgcmV0dXJuIHRoaXMuX2VuZCgpO1xufTtcblxuLyoqXG4gKiBQcm9taXNlIHN1cHBvcnRcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVqZWN0XVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgaWYgKCF0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICh0aGlzLl9lbmRDYWxsZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1dhcm5pbmc6IHN1cGVyYWdlbnQgcmVxdWVzdCB3YXMgc2VudCB0d2ljZSwgYmVjYXVzZSBib3RoIC5lbmQoKSBhbmQgLnRoZW4oKSB3ZXJlIGNhbGxlZC4gTmV2ZXIgY2FsbCAuZW5kKCkgaWYgeW91IHVzZSBwcm9taXNlcydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fZnVsbGZpbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzZWxmLm9uKCdhYm9ydCcsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX21heFJldHJpZXMgJiYgdGhpcy5fbWF4UmV0cmllcyA+IHRoaXMuX3JldHJpZXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50aW1lZG91dCAmJiB0aGlzLnRpbWVkb3V0RXJyb3IpIHtcbiAgICAgICAgICByZWplY3QodGhpcy50aW1lZG91dEVycm9yKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignQWJvcnRlZCcpO1xuICAgICAgICBlcnJvci5jb2RlID0gJ0FCT1JURUQnO1xuICAgICAgICBlcnJvci5zdGF0dXMgPSB0aGlzLnN0YXR1cztcbiAgICAgICAgZXJyb3IubWV0aG9kID0gdGhpcy5tZXRob2Q7XG4gICAgICAgIGVycm9yLnVybCA9IHRoaXMudXJsO1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgICBzZWxmLmVuZCgoZXJyb3IsIHJlcykgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHJlamVjdChlcnJvcik7XG4gICAgICAgIGVsc2UgcmVzb2x2ZShyZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fZnVsbGZpbGxlZFByb21pc2UudGhlbihyZXNvbHZlLCByZWplY3QpO1xufTtcblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmNhdGNoID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEFsbG93IGZvciBleHRlbnNpb25cbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gKGZuKSB7XG4gIGZuKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5vayA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxiYWNrIHJlcXVpcmVkJyk7XG4gIHRoaXMuX29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2lzUmVzcG9uc2VPSyA9IGZ1bmN0aW9uIChyZXMpIHtcbiAgaWYgKCFyZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fb2tDYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLl9va0NhbGxiYWNrKHJlcyk7XG4gIH1cblxuICByZXR1cm4gcmVzLnN0YXR1cyA+PSAyMDAgJiYgcmVzLnN0YXR1cyA8IDMwMDtcbn07XG5cbi8qKlxuICogR2V0IHJlcXVlc3QgaGVhZGVyIGBmaWVsZGAuXG4gKiBDYXNlLWluc2Vuc2l0aXZlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIHJldHVybiB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG59O1xuXG4vKipcbiAqIEdldCBjYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBgZmllbGRgIHZhbHVlLlxuICogVGhpcyBpcyBhIGRlcHJlY2F0ZWQgaW50ZXJuYWwgQVBJLiBVc2UgYC5nZXQoZmllbGQpYCBpbnN0ZWFkLlxuICpcbiAqIChnZXRIZWFkZXIgaXMgbm8gbG9uZ2VyIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgc3VwZXJhZ2VudCBjb2RlIGJhc2UpXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqIEBkZXByZWNhdGVkXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmdldEhlYWRlciA9IFJlcXVlc3RCYXNlLnByb3RvdHlwZS5nZXQ7XG5cbi8qKlxuICogU2V0IGhlYWRlciBgZmllbGRgIHRvIGB2YWxgLCBvciBtdWx0aXBsZSBmaWVsZHMgd2l0aCBvbmUgb2JqZWN0LlxuICogQ2FzZS1pbnNlbnNpdGl2ZS5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuc2V0KCdYLUFQSS1LZXknLCAnZm9vYmFyJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoeyBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJywgJ1gtQVBJLUtleSc6ICdmb29iYXInIH0pXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoZmllbGQsIHZhbHVlKSB7XG4gIGlmIChpc09iamVjdChmaWVsZCkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZCkge1xuICAgICAgaWYgKGhhc093bihmaWVsZCwga2V5KSkgdGhpcy5zZXQoa2V5LCBmaWVsZFtrZXldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX2hlYWRlcltmaWVsZC50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlO1xuICB0aGlzLmhlYWRlcltmaWVsZF0gPSB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBoZWFkZXIgYGZpZWxkYC5cbiAqIENhc2UtaW5zZW5zaXRpdmUuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC51bnNldCgnVXNlci1BZ2VudCcpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkIGZpZWxkIG5hbWVcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIGRlbGV0ZSB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG4gIGRlbGV0ZSB0aGlzLmhlYWRlcltmaWVsZF07XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXcml0ZSB0aGUgZmllbGQgYG5hbWVgIGFuZCBgdmFsYCwgb3IgbXVsdGlwbGUgZmllbGRzIHdpdGggb25lIG9iamVjdFxuICogZm9yIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIHJlcXVlc3QgYm9kaWVzLlxuICpcbiAqIGBgYCBqc1xuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKCdmb28nLCAnYmFyJylcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKHsgZm9vOiAnYmFyJywgYmF6OiAncXV4JyB9KVxuICogICAuZW5kKGNhbGxiYWNrKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gbmFtZSBuYW1lIG9mIGZpZWxkXG4gKiBAcGFyYW0ge1N0cmluZ3xCbG9ifEZpbGV8QnVmZmVyfGZzLlJlYWRTdHJlYW19IHZhbCB2YWx1ZSBvZiBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbnMgZXh0cmEgb3B0aW9ucywgZS5nLiAnYmxvYidcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLmZpZWxkID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcHRpb25zKSB7XG4gIC8vIG5hbWUgc2hvdWxkIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvYmplY3QuXG4gIGlmIChuYW1lID09PSBudWxsIHx8IHVuZGVmaW5lZCA9PT0gbmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignLmZpZWxkKG5hbWUsIHZhbCkgbmFtZSBjYW4gbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICBpZiAodGhpcy5fZGF0YSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiLmZpZWxkKCkgY2FuJ3QgYmUgdXNlZCBpZiAuc2VuZCgpIGlzIHVzZWQuIFBsZWFzZSB1c2Ugb25seSAuc2VuZCgpIG9yIG9ubHkgLmZpZWxkKCkgJiAuYXR0YWNoKClcIlxuICAgICk7XG4gIH1cblxuICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBuYW1lKSB7XG4gICAgICBpZiAoaGFzT3duKG5hbWUsIGtleSkpIHRoaXMuZmllbGQoa2V5LCBuYW1lW2tleV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgZm9yIChjb25zdCBpIGluIHZhbHVlKSB7XG4gICAgICBpZiAoaGFzT3duKHZhbHVlLCBpKSkgdGhpcy5maWVsZChuYW1lLCB2YWx1ZVtpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB2YWwgc2hvdWxkIGJlIGRlZmluZWQgbm93XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB1bmRlZmluZWQgPT09IHZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCcuZmllbGQobmFtZSwgdmFsKSB2YWwgY2FuIG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgLy9maXggaHR0cHM6Ly9naXRodWIuY29tL3Zpc2lvbm1lZGlhL3N1cGVyYWdlbnQvaXNzdWVzLzE2ODBcbiAgaWYgKG9wdGlvbnMpIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKG5hbWUsIHZhbHVlLCBvcHRpb25zKTtcbiAgZWxzZSB0aGlzLl9nZXRGb3JtRGF0YSgpLmFwcGVuZChuYW1lLCB2YWx1ZSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEFib3J0IHRoZSByZXF1ZXN0LCBhbmQgY2xlYXIgcG90ZW50aWFsIHRpbWVvdXQuXG4gKlxuICogQHJldHVybiB7UmVxdWVzdH0gcmVxdWVzdFxuICogQGFwaSBwdWJsaWNcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLmFib3J0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5fYWJvcnRlZCA9IHRydWU7XG4gIGlmICh0aGlzLnhocikgdGhpcy54aHIuYWJvcnQoKTsgLy8gYnJvd3NlclxuICBpZiAodGhpcy5yZXEpIHtcbiAgICAvLyBOb2RlIHYxMyBoYXMgbWFqb3IgZGlmZmVyZW5jZXMgaW4gYGFib3J0KClgXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvdjEyLngvbGliL2ludGVybmFsL3N0cmVhbXMvZW5kLW9mLXN0cmVhbS5qc1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxMy54L2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanNcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi92MTQueC9saWIvaW50ZXJuYWwvc3RyZWFtcy9lbmQtb2Ytc3RyZWFtLmpzXG4gICAgLy8gKGlmIHlvdSBydW4gYSBkaWZmIGFjcm9zcyB0aGVzZSB5b3Ugd2lsbCBzZWUgdGhlIGRpZmZlcmVuY2VzKVxuICAgIC8vXG4gICAgLy8gUmVmZXJlbmNlczpcbiAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2lzc3Vlcy8zMTYzMD5cbiAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL3Zpc2lvbm1lZGlhL3N1cGVyYWdlbnQvcHVsbC8xMDg0L2NvbW1pdHMvZGMxODY3OWE3YzVjY2ZjNjA0NmQ4ODIwMTVlNTEyNjg4ODk3M2JjOD5cbiAgICAvL1xuICAgIC8vIFRoYW5rcyB0byBAc2hhZG93Z2F0ZTE1IGFuZCBAbmlmdHlsZXR0dWNlXG4gICAgaWYgKFxuICAgICAgc2VtdmVyLmd0ZShwcm9jZXNzLnZlcnNpb24sICd2MTMuMC4wJykgJiZcbiAgICAgIHNlbXZlci5sdChwcm9jZXNzLnZlcnNpb24sICd2MTQuMC4wJylcbiAgICApIHtcbiAgICAgIC8vIE5vdGUgdGhhdCB0aGUgcmVhc29uIHRoaXMgZG9lc24ndCB3b3JrIGlzIGJlY2F1c2UgaW4gdjEzIGFzIGNvbXBhcmVkIHRvIHYxNFxuICAgICAgLy8gdGhlcmUgaXMgbm8gYGNhbGxiYWNrID0gbm9wYCBzZXQgaW4gZW5kLW9mLXN0cmVhbS5qcyBhYm92ZVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnU3VwZXJhZ2VudCBkb2VzIG5vdCB3b3JrIGluIHYxMyBwcm9wZXJseSB3aXRoIGFib3J0KCkgZHVlIHRvIE5vZGUuanMgY29yZSBjaGFuZ2VzJ1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHNlbXZlci5ndGUocHJvY2Vzcy52ZXJzaW9uLCAndjE0LjAuMCcpKSB7XG4gICAgICAvLyBXZSBoYXZlIHRvIG1hbnVhbGx5IHNldCBgZGVzdHJveWVkYCB0byBgdHJ1ZWAgaW4gb3JkZXIgZm9yIHRoaXMgdG8gd29ya1xuICAgICAgLy8gKHNlZSBjb3JlIGludGVybmFscyBvZiBlbmQtb2Ytc3RyZWFtLmpzIGFib3ZlIGluIHYxNCBicmFuY2ggYXMgY29tcGFyZWQgdG8gdjEyKVxuICAgICAgdGhpcy5yZXEuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnJlcS5hYm9ydCgpOyAvLyBub2RlXG4gIH1cblxuICB0aGlzLmNsZWFyVGltZW91dCgpO1xuICB0aGlzLmVtaXQoJ2Fib3J0Jyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9hdXRoID0gZnVuY3Rpb24gKHVzZXIsIHBhc3MsIG9wdGlvbnMsIGJhc2U2NEVuY29kZXIpIHtcbiAgc3dpdGNoIChvcHRpb25zLnR5cGUpIHtcbiAgICBjYXNlICdiYXNpYyc6XG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsIGBCYXNpYyAke2Jhc2U2NEVuY29kZXIoYCR7dXNlcn06JHtwYXNzfWApfWApO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdhdXRvJzpcbiAgICAgIHRoaXMudXNlcm5hbWUgPSB1c2VyO1xuICAgICAgdGhpcy5wYXNzd29yZCA9IHBhc3M7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2JlYXJlcic6IC8vIHVzYWdlIHdvdWxkIGJlIC5hdXRoKGFjY2Vzc1Rva2VuLCB7IHR5cGU6ICdiZWFyZXInIH0pXG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsIGBCZWFyZXIgJHt1c2VyfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEVuYWJsZSB0cmFuc21pc3Npb24gb2YgY29va2llcyB3aXRoIHgtZG9tYWluIHJlcXVlc3RzLlxuICpcbiAqIE5vdGUgdGhhdCBmb3IgdGhpcyB0byB3b3JrIHRoZSBvcmlnaW4gbXVzdCBub3QgYmVcbiAqIHVzaW5nIFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXCIgd2l0aCBhIHdpbGRjYXJkLFxuICogYW5kIGFsc28gbXVzdCBzZXQgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1wiXG4gKiB0byBcInRydWVcIi5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS53aXRoQ3JlZGVudGlhbHMgPSBmdW5jdGlvbiAob24pIHtcbiAgLy8gVGhpcyBpcyBicm93c2VyLW9ubHkgZnVuY3Rpb25hbGl0eS4gTm9kZSBzaWRlIGlzIG5vLW9wLlxuICBpZiAob24gPT09IHVuZGVmaW5lZCkgb24gPSB0cnVlO1xuICB0aGlzLl93aXRoQ3JlZGVudGlhbHMgPSBvbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgbWF4IHJlZGlyZWN0cyB0byBgbmAuIERvZXMgbm90aGluZyBpbiBicm93c2VyIFhIUiBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gblxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZWRpcmVjdHMgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLl9tYXhSZWRpcmVjdHMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogTWF4aW11bSBzaXplIG9mIGJ1ZmZlcmVkIHJlc3BvbnNlIGJvZHksIGluIGJ5dGVzLiBDb3VudHMgdW5jb21wcmVzc2VkIHNpemUuXG4gKiBEZWZhdWx0IDIwME1CLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBuIG51bWJlciBvZiBieXRlc1xuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5tYXhSZXNwb25zZVNpemUgPSBmdW5jdGlvbiAobikge1xuICBpZiAodHlwZW9mIG4gIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBhcmd1bWVudCcpO1xuICB9XG5cbiAgdGhpcy5fbWF4UmVzcG9uc2VTaXplID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENvbnZlcnQgdG8gYSBwbGFpbiBqYXZhc2NyaXB0IG9iamVjdCAobm90IEpTT04gc3RyaW5nKSBvZiBzY2FsYXIgcHJvcGVydGllcy5cbiAqIE5vdGUgYXMgdGhpcyBtZXRob2QgaXMgZGVzaWduZWQgdG8gcmV0dXJuIGEgdXNlZnVsIG5vbi10aGlzIHZhbHVlLFxuICogaXQgY2Fubm90IGJlIGNoYWluZWQuXG4gKlxuICogQHJldHVybiB7T2JqZWN0fSBkZXNjcmliaW5nIG1ldGhvZCwgdXJsLCBhbmQgZGF0YSBvZiB0aGlzIHJlcXVlc3RcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHtcbiAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgIHVybDogdGhpcy51cmwsXG4gICAgZGF0YTogdGhpcy5fZGF0YSxcbiAgICBoZWFkZXJzOiB0aGlzLl9oZWFkZXJcbiAgfTtcbn07XG5cbi8qKlxuICogU2VuZCBgZGF0YWAgYXMgdGhlIHJlcXVlc3QgYm9keSwgZGVmYXVsdGluZyB0aGUgYC50eXBlKClgIHRvIFwianNvblwiIHdoZW5cbiAqIGFuIG9iamVjdCBpcyBnaXZlbi5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgICAvLyBtYW51YWwganNvblxuICogICAgICAgcmVxdWVzdC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgIC50eXBlKCdqc29uJylcbiAqICAgICAgICAgLnNlbmQoJ3tcIm5hbWVcIjpcInRqXCJ9JylcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBhdXRvIGpzb25cbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAuc2VuZCh7IG5hbWU6ICd0aicgfSlcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBtYW51YWwgeC13d3ctZm9ybS11cmxlbmNvZGVkXG4gKiAgICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAgLnR5cGUoJ2Zvcm0nKVxuICogICAgICAgICAuc2VuZCgnbmFtZT10aicpXG4gKiAgICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogICAgICAgLy8gYXV0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAudHlwZSgnZm9ybScpXG4gKiAgICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqICAgICAgIC8vIGRlZmF1bHRzIHRvIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxuICogICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAuc2VuZCgnbmFtZT10b2JpJylcbiAqICAgICAgICAuc2VuZCgnc3BlY2llcz1mZXJyZXQnKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBkYXRhXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZW5kID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgaXNPYmplY3RfID0gaXNPYmplY3QoZGF0YSk7XG4gIGxldCB0eXBlID0gdGhpcy5faGVhZGVyWydjb250ZW50LXR5cGUnXTtcblxuICBpZiAodGhpcy5fZm9ybURhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIi5zZW5kKCkgY2FuJ3QgYmUgdXNlZCBpZiAuYXR0YWNoKCkgb3IgLmZpZWxkKCkgaXMgdXNlZC4gUGxlYXNlIHVzZSBvbmx5IC5zZW5kKCkgb3Igb25seSAuZmllbGQoKSAmIC5hdHRhY2goKVwiXG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc09iamVjdF8gJiYgIXRoaXMuX2RhdGEpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgdGhpcy5fZGF0YSA9IFtdO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX2lzSG9zdChkYXRhKSkge1xuICAgICAgdGhpcy5fZGF0YSA9IHt9O1xuICAgIH1cbiAgfSBlbHNlIGlmIChkYXRhICYmIHRoaXMuX2RhdGEgJiYgdGhpcy5faXNIb3N0KHRoaXMuX2RhdGEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgbWVyZ2UgdGhlc2Ugc2VuZCBjYWxsc1wiKTtcbiAgfVxuXG4gIC8vIG1lcmdlXG4gIGlmIChpc09iamVjdF8gJiYgaXNPYmplY3QodGhpcy5fZGF0YSkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICBpZiAoaGFzT3duKGRhdGEsIGtleSkpIHRoaXMuX2RhdGFba2V5XSA9IGRhdGFba2V5XTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZGVmYXVsdCB0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAgICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnZm9ybScpO1xuICAgIHR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIGlmICh0eXBlKSB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBpZiAodHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLl9kYXRhID8gYCR7dGhpcy5fZGF0YX0mJHtkYXRhfWAgOiBkYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kYXRhID0gKHRoaXMuX2RhdGEgfHwgJycpICsgZGF0YTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gIH1cblxuICBpZiAoIWlzT2JqZWN0XyB8fCB0aGlzLl9pc0hvc3QoZGF0YSkpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGRlZmF1bHQgdG8ganNvblxuICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnanNvbicpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU29ydCBgcXVlcnlzdHJpbmdgIGJ5IHRoZSBzb3J0IGZ1bmN0aW9uXG4gKlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgIC8vIGRlZmF1bHQgb3JkZXJcbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KClcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBjdXN0b21pemVkIHNvcnQgZnVuY3Rpb25cbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KGZ1bmN0aW9uKGEsIGIpe1xuICogICAgICAgICAgIHJldHVybiBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICogICAgICAgICB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzb3J0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnNvcnRRdWVyeSA9IGZ1bmN0aW9uIChzb3J0KSB7XG4gIC8vIF9zb3J0IGRlZmF1bHQgdG8gdHJ1ZSBidXQgb3RoZXJ3aXNlIGNhbiBiZSBhIGZ1bmN0aW9uIG9yIGJvb2xlYW5cbiAgdGhpcy5fc29ydCA9IHR5cGVvZiBzb3J0ID09PSAndW5kZWZpbmVkJyA/IHRydWUgOiBzb3J0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ29tcG9zZSBxdWVyeXN0cmluZyB0byBhcHBlbmQgdG8gcmVxLnVybFxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2ZpbmFsaXplUXVlcnlTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHF1ZXJ5ID0gdGhpcy5fcXVlcnkuam9pbignJicpO1xuICBpZiAocXVlcnkpIHtcbiAgICB0aGlzLnVybCArPSAodGhpcy51cmwuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/JykgKyBxdWVyeTtcbiAgfVxuXG4gIHRoaXMuX3F1ZXJ5Lmxlbmd0aCA9IDA7IC8vIE1ha2VzIHRoZSBjYWxsIGlkZW1wb3RlbnRcblxuICBpZiAodGhpcy5fc29ydCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cmwuaW5kZXhPZignPycpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBxdWVyeUFycmF5ID0gdGhpcy51cmwuc2xpY2UoaW5kZXggKyAxKS5zcGxpdCgnJicpO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zb3J0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHF1ZXJ5QXJyYXkuc29ydCh0aGlzLl9zb3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXJ5QXJyYXkuc29ydCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnNsaWNlKDAsIGluZGV4KSArICc/JyArIHF1ZXJ5QXJyYXkuam9pbignJicpO1xuICAgIH1cbiAgfVxufTtcblxuLy8gRm9yIGJhY2t3YXJkcyBjb21wYXQgb25seVxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9hcHBlbmRRdWVyeVN0cmluZyA9ICgpID0+IHtcbiAgY29uc29sZS53YXJuKCdVbnN1cHBvcnRlZCcpO1xufTtcblxuLyoqXG4gKiBJbnZva2UgY2FsbGJhY2sgd2l0aCB0aW1lb3V0IGVycm9yLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fdGltZW91dEVycm9yID0gZnVuY3Rpb24gKHJlYXNvbiwgdGltZW91dCwgZXJybm8pIHtcbiAgaWYgKHRoaXMuX2Fib3J0ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgJHtyZWFzb24gKyB0aW1lb3V0fW1zIGV4Y2VlZGVkYCk7XG4gIGVycm9yLnRpbWVvdXQgPSB0aW1lb3V0O1xuICBlcnJvci5jb2RlID0gJ0VDT05OQUJPUlRFRCc7XG4gIGVycm9yLmVycm5vID0gZXJybm87XG4gIHRoaXMudGltZWRvdXQgPSB0cnVlO1xuICB0aGlzLnRpbWVkb3V0RXJyb3IgPSBlcnJvcjtcbiAgdGhpcy5hYm9ydCgpO1xuICB0aGlzLmNhbGxiYWNrKGVycm9yKTtcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2V0VGltZW91dHMgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gIC8vIGRlYWRsaW5lXG4gIGlmICh0aGlzLl90aW1lb3V0ICYmICF0aGlzLl90aW1lcikge1xuICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZWxmLl90aW1lb3V0RXJyb3IoJ1RpbWVvdXQgb2YgJywgc2VsZi5fdGltZW91dCwgJ0VUSU1FJyk7XG4gICAgfSwgdGhpcy5fdGltZW91dCk7XG4gIH1cblxuICAvLyByZXNwb25zZSB0aW1lb3V0XG4gIGlmICh0aGlzLl9yZXNwb25zZVRpbWVvdXQgJiYgIXRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyKSB7XG4gICAgdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNlbGYuX3RpbWVvdXRFcnJvcihcbiAgICAgICAgJ1Jlc3BvbnNlIHRpbWVvdXQgb2YgJyxcbiAgICAgICAgc2VsZi5fcmVzcG9uc2VUaW1lb3V0LFxuICAgICAgICAnRVRJTUVET1VUJ1xuICAgICAgKTtcbiAgICB9LCB0aGlzLl9yZXNwb25zZVRpbWVvdXQpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBTUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUF0QjtBQUVBO0FBQ0E7QUFDQTs7O0FBQ0EsZUFBNkJBLE9BQU8sQ0FBQyxTQUFELENBQXBDO0FBQUEsSUFBUUMsUUFBUixZQUFRQSxRQUFSO0FBQUEsSUFBa0JDLE1BQWxCLFlBQWtCQSxNQUFsQjtBQUVBO0FBQ0E7QUFDQTs7O0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkMsV0FBakI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVNBLFdBQVQsR0FBdUIsQ0FBRztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBQSxXQUFXLENBQUNDLFNBQVosQ0FBc0JDLFlBQXRCLEdBQXFDLFlBQVk7RUFDL0NBLFlBQVksQ0FBQyxLQUFLQyxNQUFOLENBQVo7RUFDQUQsWUFBWSxDQUFDLEtBQUtFLHFCQUFOLENBQVo7RUFDQUYsWUFBWSxDQUFDLEtBQUtHLG1CQUFOLENBQVo7RUFDQSxPQUFPLEtBQUtGLE1BQVo7RUFDQSxPQUFPLEtBQUtDLHFCQUFaO0VBQ0EsT0FBTyxLQUFLQyxtQkFBWjtFQUNBLE9BQU8sSUFBUDtBQUNELENBUkQ7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQUwsV0FBVyxDQUFDQyxTQUFaLENBQXNCSyxLQUF0QixHQUE4QixVQUFVQyxFQUFWLEVBQWM7RUFDMUMsS0FBS0MsT0FBTCxHQUFlRCxFQUFmO0VBQ0EsT0FBTyxJQUFQO0FBQ0QsQ0FIRDtB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","\"use strict\";\n\n/**\n * Module dependencies.\n */\nvar utils = require('./utils');\n/**\n * Expose `ResponseBase`.\n */\n\n\nmodule.exports = ResponseBase;\n/**\n * Initialize a new `ResponseBase`.\n *\n * @api public\n */\n\nfunction ResponseBase() {}\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\n\nResponseBase.prototype.get = function (field) {\n return this.header[field.toLowerCase()];\n};\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\n\nResponseBase.prototype._setHeaderProperties = function (header) {\n // TODO: moar!\n // TODO: make this a util\n // content-type\n var ct = header['content-type'] || '';\n this.type = utils.type(ct); // params\n\n var parameters = utils.params(ct);\n\n for (var key in parameters) {\n if (Object.prototype.hasOwnProperty.call(parameters, key)) this[key] = parameters[key];\n }\n\n this.links = {}; // links\n\n try {\n if (header.link) {\n this.links = utils.parseLinks(header.link);\n }\n } catch (_unused) {// ignore\n }\n};\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\n\nResponseBase.prototype._setStatusProperties = function (status) {\n var type = Math.trunc(status / 100); // status / class\n\n this.statusCode = status;\n this.status = this.statusCode;\n this.statusType = type; // basics\n\n this.info = type === 1;\n this.ok = type === 2;\n this.redirect = type === 3;\n this.clientError = type === 4;\n this.serverError = type === 5;\n this.error = type === 4 || type === 5 ? this.toError() : false; // sugar\n\n this.created = status === 201;\n this.accepted = status === 202;\n this.noContent = status === 204;\n this.badRequest = status === 400;\n this.unauthorized = status === 401;\n this.notAcceptable = status === 406;\n this.forbidden = status === 403;\n this.notFound = status === 404;\n this.unprocessableEntity = status === 422;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1dGlscyIsInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIiwiUmVzcG9uc2VCYXNlIiwicHJvdG90eXBlIiwiZ2V0IiwiZmllbGQiLCJoZWFkZXIiLCJ0b0xvd2VyQ2FzZSIsIl9zZXRIZWFkZXJQcm9wZXJ0aWVzIiwiY3QiLCJ0eXBlIiwicGFyYW1ldGVycyIsInBhcmFtcyIsImtleSIsIk9iamVjdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImxpbmtzIiwibGluayIsInBhcnNlTGlua3MiLCJfc2V0U3RhdHVzUHJvcGVydGllcyIsInN0YXR1cyIsIk1hdGgiLCJ0cnVuYyIsInN0YXR1c0NvZGUiLCJzdGF0dXNUeXBlIiwiaW5mbyIsIm9rIiwicmVkaXJlY3QiLCJjbGllbnRFcnJvciIsInNlcnZlckVycm9yIiwiZXJyb3IiLCJ0b0Vycm9yIiwiY3JlYXRlZCIsImFjY2VwdGVkIiwibm9Db250ZW50IiwiYmFkUmVxdWVzdCIsInVuYXV0aG9yaXplZCIsIm5vdEFjY2VwdGFibGUiLCJmb3JiaWRkZW4iLCJub3RGb3VuZCIsInVucHJvY2Vzc2FibGVFbnRpdHkiXSwic291cmNlcyI6WyIuLi9zcmMvcmVzcG9uc2UtYmFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbi8qKlxuICogRXhwb3NlIGBSZXNwb25zZUJhc2VgLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVzcG9uc2VCYXNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJlc3BvbnNlQmFzZWAuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBSZXNwb25zZUJhc2UoKSB7fVxuXG4vKipcbiAqIEdldCBjYXNlLWluc2Vuc2l0aXZlIGBmaWVsZGAgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlc3BvbnNlQmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIHJldHVybiB0aGlzLmhlYWRlcltmaWVsZC50b0xvd2VyQ2FzZSgpXTtcbn07XG5cbi8qKlxuICogU2V0IGhlYWRlciByZWxhdGVkIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGAudHlwZWAgdGhlIGNvbnRlbnQgdHlwZSB3aXRob3V0IHBhcmFtc1xuICpcbiAqIEEgcmVzcG9uc2Ugb2YgXCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLThcIlxuICogd2lsbCBwcm92aWRlIHlvdSB3aXRoIGEgYC50eXBlYCBvZiBcInRleHQvcGxhaW5cIi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaGVhZGVyXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXNwb25zZUJhc2UucHJvdG90eXBlLl9zZXRIZWFkZXJQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGhlYWRlcikge1xuICAvLyBUT0RPOiBtb2FyIVxuICAvLyBUT0RPOiBtYWtlIHRoaXMgYSB1dGlsXG5cbiAgLy8gY29udGVudC10eXBlXG4gIGNvbnN0IGN0ID0gaGVhZGVyWydjb250ZW50LXR5cGUnXSB8fCAnJztcbiAgdGhpcy50eXBlID0gdXRpbHMudHlwZShjdCk7XG5cbiAgLy8gcGFyYW1zXG4gIGNvbnN0IHBhcmFtZXRlcnMgPSB1dGlscy5wYXJhbXMoY3QpO1xuICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbWV0ZXJzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJhbWV0ZXJzLCBrZXkpKVxuICAgICAgdGhpc1trZXldID0gcGFyYW1ldGVyc1trZXldO1xuICB9XG5cbiAgdGhpcy5saW5rcyA9IHt9O1xuXG4gIC8vIGxpbmtzXG4gIHRyeSB7XG4gICAgaWYgKGhlYWRlci5saW5rKSB7XG4gICAgICB0aGlzLmxpbmtzID0gdXRpbHMucGFyc2VMaW5rcyhoZWFkZXIubGluayk7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBpZ25vcmVcbiAgfVxufTtcblxuLyoqXG4gKiBTZXQgZmxhZ3Mgc3VjaCBhcyBgLm9rYCBiYXNlZCBvbiBgc3RhdHVzYC5cbiAqXG4gKiBGb3IgZXhhbXBsZSBhIDJ4eCByZXNwb25zZSB3aWxsIGdpdmUgeW91IGEgYC5va2Agb2YgX190cnVlX19cbiAqIHdoZXJlYXMgNXh4IHdpbGwgYmUgX19mYWxzZV9fIGFuZCBgLmVycm9yYCB3aWxsIGJlIF9fdHJ1ZV9fLiBUaGVcbiAqIGAuY2xpZW50RXJyb3JgIGFuZCBgLnNlcnZlckVycm9yYCBhcmUgYWxzbyBhdmFpbGFibGUgdG8gYmUgbW9yZVxuICogc3BlY2lmaWMsIGFuZCBgLnN0YXR1c1R5cGVgIGlzIHRoZSBjbGFzcyBvZiBlcnJvciByYW5naW5nIGZyb20gMS4uNVxuICogc29tZXRpbWVzIHVzZWZ1bCBmb3IgbWFwcGluZyByZXNwb25kIGNvbG9ycyBldGMuXG4gKlxuICogXCJzdWdhclwiIHByb3BlcnRpZXMgYXJlIGFsc28gZGVmaW5lZCBmb3IgY29tbW9uIGNhc2VzLiBDdXJyZW50bHkgcHJvdmlkaW5nOlxuICpcbiAqICAgLSAubm9Db250ZW50XG4gKiAgIC0gLmJhZFJlcXVlc3RcbiAqICAgLSAudW5hdXRob3JpemVkXG4gKiAgIC0gLm5vdEFjY2VwdGFibGVcbiAqICAgLSAubm90Rm91bmRcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gc3RhdHVzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXNwb25zZUJhc2UucHJvdG90eXBlLl9zZXRTdGF0dXNQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHN0YXR1cykge1xuICBjb25zdCB0eXBlID0gTWF0aC50cnVuYyhzdGF0dXMgLyAxMDApO1xuXG4gIC8vIHN0YXR1cyAvIGNsYXNzXG4gIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1cztcbiAgdGhpcy5zdGF0dXMgPSB0aGlzLnN0YXR1c0NvZGU7XG4gIHRoaXMuc3RhdHVzVHlwZSA9IHR5cGU7XG5cbiAgLy8gYmFzaWNzXG4gIHRoaXMuaW5mbyA9IHR5cGUgPT09IDE7XG4gIHRoaXMub2sgPSB0eXBlID09PSAyO1xuICB0aGlzLnJlZGlyZWN0ID0gdHlwZSA9PT0gMztcbiAgdGhpcy5jbGllbnRFcnJvciA9IHR5cGUgPT09IDQ7XG4gIHRoaXMuc2VydmVyRXJyb3IgPSB0eXBlID09PSA1O1xuICB0aGlzLmVycm9yID0gdHlwZSA9PT0gNCB8fCB0eXBlID09PSA1ID8gdGhpcy50b0Vycm9yKCkgOiBmYWxzZTtcblxuICAvLyBzdWdhclxuICB0aGlzLmNyZWF0ZWQgPSBzdGF0dXMgPT09IDIwMTtcbiAgdGhpcy5hY2NlcHRlZCA9IHN0YXR1cyA9PT0gMjAyO1xuICB0aGlzLm5vQ29udGVudCA9IHN0YXR1cyA9PT0gMjA0O1xuICB0aGlzLmJhZFJlcXVlc3QgPSBzdGF0dXMgPT09IDQwMDtcbiAgdGhpcy51bmF1dGhvcml6ZWQgPSBzdGF0dXMgPT09IDQwMTtcbiAgdGhpcy5ub3RBY2NlcHRhYmxlID0gc3RhdHVzID09PSA0MDY7XG4gIHRoaXMuZm9yYmlkZGVuID0gc3RhdHVzID09PSA0MDM7XG4gIHRoaXMubm90Rm91bmQgPSBzdGF0dXMgPT09IDQwNDtcbiAgdGhpcy51bnByb2Nlc3NhYmxlRW50aXR5ID0gc3RhdHVzID09PSA0MjI7XG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUVBLElBQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7QUFFQTtBQUNBO0FBQ0E7OztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLFlBQWpCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTQSxZQUFULEdBQXdCLENBQUU7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBQSxZQUFZLENBQUNDLFNBQWIsQ0FBdUJDLEdBQXZCLEdBQTZCLFVBQVVDLEtBQVYsRUFBaUI7RUFDNUMsT0FBTyxL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","\"use strict\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction Agent() {\n this._defaults = [];\n}\n\nvar _loop = function _loop() {\n var fn = _arr[_i];\n\n // Default setting for all requests from this agent\n Agent.prototype[fn] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this._defaults.push({\n fn: fn,\n args: args\n });\n\n return this;\n };\n};\n\nfor (var _i = 0, _arr = ['use', 'on', 'once', 'set', 'query', 'type', 'accept', 'auth', 'withCredentials', 'sortQuery', 'retry', 'ok', 'redirects', 'timeout', 'buffer', 'serialize', 'parse', 'ca', 'key', 'pfx', 'cert', 'disableTLSCerts']; _i < _arr.length; _i++) {\n _loop();\n}\n\nAgent.prototype._setDefaults = function (request) {\n var _iterator = _createForOfIteratorHelper(this._defaults),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var def = _step.value;\n request[def.fn].apply(request, _toConsumableArray(def.args));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n};\n\nmodule.exports = Agent;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBZ2VudCIsIl9kZWZhdWx0cyIsImZuIiwicHJvdG90eXBlIiwiYXJncyIsInB1c2giLCJfc2V0RGVmYXVsdHMiLCJyZXF1ZXN0IiwiZGVmIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hZ2VudC1iYXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIEFnZW50KCkge1xuICB0aGlzLl9kZWZhdWx0cyA9IFtdO1xufVxuXG5mb3IgKGNvbnN0IGZuIG9mIFtcbiAgJ3VzZScsXG4gICdvbicsXG4gICdvbmNlJyxcbiAgJ3NldCcsXG4gICdxdWVyeScsXG4gICd0eXBlJyxcbiAgJ2FjY2VwdCcsXG4gICdhdXRoJyxcbiAgJ3dpdGhDcmVkZW50aWFscycsXG4gICdzb3J0UXVlcnknLFxuICAncmV0cnknLFxuICAnb2snLFxuICAncmVkaXJlY3RzJyxcbiAgJ3RpbWVvdXQnLFxuICAnYnVmZmVyJyxcbiAgJ3NlcmlhbGl6ZScsXG4gICdwYXJzZScsXG4gICdjYScsXG4gICdrZXknLFxuICAncGZ4JyxcbiAgJ2NlcnQnLFxuICAnZGlzYWJsZVRMU0NlcnRzJ1xuXSkge1xuICAvLyBEZWZhdWx0IHNldHRpbmcgZm9yIGFsbCByZXF1ZXN0cyBmcm9tIHRoaXMgYWdlbnRcbiAgQWdlbnQucHJvdG90eXBlW2ZuXSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgdGhpcy5fZGVmYXVsdHMucHVzaCh7IGZuLCBhcmdzIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG5BZ2VudC5wcm90b3R5cGUuX3NldERlZmF1bHRzID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgZm9yIChjb25zdCBkZWYgb2YgdGhpcy5fZGVmYXVsdHMpIHtcbiAgICByZXF1ZXN0W2RlZi5mbl0oLi4uZGVmLmFyZ3MpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFnZW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsS0FBVCxHQUFpQjtFQUNmLEtBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDRDs7O0VBRUksSUFBTUMsRUFBRSxXQUFSOztFQXdCSDtFQUNBRixLQUFLLENBQUNHLFNBQU4sQ0FBZ0JELEVBQWhCLElBQXNCLFlBQW1CO0lBQUEsa0NBQU5FLElBQU07TUFBTkEsSUFBTTtJQUFBOztJQUN2QyxLQUFLSCxTQUFMLENBQWVJLElBQWYsQ0FBb0I7TUFBRUgsRUFBRSxFQUFGQSxFQUFGO01BQU1FLElBQUksRUFBSkE7SUFBTixDQUFwQjs7SUFDQSxPQUFPLElBQVA7RUFDRCxDQUhEOzs7QUF6QkYsd0JBQWlCLENBQ2YsS0FEZSxFQUVmLElBRmUsRUFHZixNQUhlLEVBSWYsS0FKZSxFQUtmLE9BTGUsRUFNZixNQU5lLEVBT2YsUUFQZSxFQVFmLE1BUmUsRUFTZixpQkFUZSxFQVVmLFdBVmUsRUFXZixPQVhlLEVBWWYsSUFaZSxFQWFmLFdBYmUsRUFjZixTQWRlLEVBZWYsUUFmZSxFQWdCZixXQWhCZSxFQWlCZixPQWpCZSxFQWtCZixJQWxCZSxFQW1CZixLQW5CZSxFQW9CZixLQXBCZSxFQXFCZixNQXJCZSxFQXNCZixpQkF0QmUsQ0FBakIsMEJBdUJHO0VBQUE7QUFNRjs7QUFFREosS0FBSyxDQUFDRyxTQUFOLENBQWdCRyxZQUFoQixHQUErQixVQUFVQyxPQUFWLEVBQW1CO0VBQUEsMkNBQzlCLEtBQUtOLFNBRHlCO0VBQUE7O0VBQUE7SUFDaEQsb0RBQWtDO01BQUEsSUFBdkJPLEdBQXVCO01BQ2hDRCxPQUFPLENBQUNDLEdBQUcsQ0FBQ04sRUFBTCxDQUFQLE9BQUFLLE9BQU8scUJBQVlDLEdBQUcsQ0FBQ0osSUFBaEIsRUFBUDtJQUNEO0VBSCtDO0lBQUE7RUFBQTtJQUFBO0VBQUE7QUFJakQsQ0FKRDs7QUFNQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCVixLQUFqQiJ9","'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","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Root reference for iframes.\n */\nvar root;\n\nif (typeof window !== 'undefined') {\n // Browser window\n root = window;\n} else if (typeof self === 'undefined') {\n // Other environments\n console.warn('Using browser-only version of superagent in non-browser environment');\n root = void 0;\n} else {\n // Web Worker\n root = self;\n}\n\nvar Emitter = require('component-emitter');\n\nvar safeStringify = require('fast-safe-stringify');\n\nvar qs = require('qs');\n\nvar RequestBase = require('./request-base');\n\nvar _require = require('./utils'),\n isObject = _require.isObject,\n mixin = _require.mixin,\n hasOwn = _require.hasOwn;\n\nvar ResponseBase = require('./response-base');\n\nvar Agent = require('./agent-base');\n/**\n * Noop.\n */\n\n\nfunction noop() {}\n/**\n * Expose `request`.\n */\n\n\nmodule.exports = function (method, url) {\n // callback\n if (typeof url === 'function') {\n return new exports.Request('GET', method).end(url);\n } // url first\n\n\n if (arguments.length === 1) {\n return new exports.Request('GET', method);\n }\n\n return new exports.Request(method, url);\n};\n\nexports = module.exports;\nvar request = exports;\nexports.Request = Request;\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest && (!root.location || root.location.protocol !== 'file:' || !root.ActiveXObject)) {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject('Microsoft.XMLHTTP');\n } catch (_unused) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.6.0');\n } catch (_unused2) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.3.0');\n } catch (_unused3) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP');\n } catch (_unused4) {\n /**/\n }\n\n throw new Error('Browser-only version of superagent could not find XHR');\n};\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\n\nvar trim = ''.trim ? function (s) {\n return s.trim();\n} : function (s) {\n return s.replace(/(^\\s*|\\s*$)/g, '');\n};\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(object) {\n if (!isObject(object)) return object;\n var pairs = [];\n\n for (var key in object) {\n if (hasOwn(object, key)) pushEncodedKeyValuePair(pairs, key, object[key]);\n }\n\n return pairs.join('&');\n}\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\n\nfunction pushEncodedKeyValuePair(pairs, key, value) {\n if (value === undefined) return;\n\n if (value === null) {\n pairs.push(encodeURI(key));\n return;\n }\n\n if (Array.isArray(value)) {\n var _iterator = _createForOfIteratorHelper(value),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var v = _step.value;\n pushEncodedKeyValuePair(pairs, key, v);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else if (isObject(value)) {\n for (var subkey in value) {\n if (hasOwn(value, subkey)) pushEncodedKeyValuePair(pairs, \"\".concat(key, \"[\").concat(subkey, \"]\"), value[subkey]);\n }\n } else {\n pairs.push(encodeURI(key) + '=' + encodeURIComponent(value));\n }\n}\n/**\n * Expose serialization method.\n */\n\n\nrequest.serializeObject = serialize;\n/**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(string_) {\n var object = {};\n var pairs = string_.split('&');\n var pair;\n var pos;\n\n for (var i = 0, length_ = pairs.length; i < length_; ++i) {\n pair = pairs[i];\n pos = pair.indexOf('=');\n\n if (pos === -1) {\n object[decodeURIComponent(pair)] = '';\n } else {\n object[decodeURIComponent(pair.slice(0, pos))] = decodeURIComponent(pair.slice(pos + 1));\n }\n }\n\n return object;\n}\n/**\n * Expose parser.\n */\n\n\nrequest.parseString = parseString;\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'text/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n form: 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\nrequest.serialize = {\n 'application/x-www-form-urlencoded': qs.stringify,\n 'application/json': safeStringify\n};\n/**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(string_) {\n var lines = string_.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var value;\n\n for (var i = 0, length_ = lines.length; i < length_; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n\n if (index === -1) {\n // could be empty line, just skip it\n continue;\n }\n\n field = line.slice(0, index).toLowerCase();\n value = trim(line.slice(index + 1));\n fields[field] = value;\n }\n\n return fields;\n}\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\n\nfunction isJSON(mime) {\n // should match /json or +json\n // but not /json-seq\n return /[/+]json($|[^-\\w])/i.test(mime);\n}\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\n\nfunction Response(request_) {\n this.req = request_;\n this.xhr = this.req.xhr; // responseText is accessible only if responseType is '' or 'text' and on older browsers\n\n this.text = this.req.method !== 'HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text') || typeof this.xhr.responseType === 'undefined' ? this.xhr.responseText : null;\n this.statusText = this.req.xhr.statusText;\n var status = this.xhr.status; // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n\n if (status === 1223) {\n status = 204;\n }\n\n this._setStatusProperties(status);\n\n this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n this.header = this.headers; // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n\n this._setHeaderProperties(this.header);\n\n if (this.text === null && request_._responseType) {\n this.body = this.xhr.response;\n } else {\n this.body = this.req.method === 'HEAD' ? null : this._parseBody(this.text ? this.text : this.xhr.response);\n }\n}\n\nmixin(Response.prototype, ResponseBase.prototype);\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function (string_) {\n var parse = request.parse[this.type];\n\n if (this.req._parser) {\n return this.req._parser(this, string_);\n }\n\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n\n return parse && string_ && (string_.length > 0 || string_ instanceof Object) ? parse(string_) : null;\n};\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\n\nResponse.prototype.toError = function () {\n var req = this.req;\n var method = req.method;\n var url = req.url;\n var message = \"cannot \".concat(method, \" \").concat(url, \" (\").concat(this.status, \")\");\n var error = new Error(message);\n error.status = this.status;\n error.method = method;\n error.url = url;\n return error;\n};\n/**\n * Expose `Response`.\n */\n\n\nrequest.Response = Response;\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n\n this._header = {}; // coerces header names to lowercase\n\n this.on('end', function () {\n var error = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch (err) {\n error = new Error('Parser is unable to parse the response');\n error.parse = true;\n error.original = err; // issue #675: return the raw response if the response parsing fails\n\n if (self.xhr) {\n // ie9 doesn't have 'response' property\n error.rawResponse = typeof self.xhr.responseType === 'undefined' ? self.xhr.responseText : self.xhr.response; // issue #876: return the http status code if the response parsing fails\n\n error.status = self.xhr.status ? self.xhr.status : null;\n error.statusCode = error.status; // backwards-compat only\n } else {\n error.rawResponse = null;\n error.status = null;\n }\n\n return self.callback(error);\n }\n\n self.emit('response', res);\n var new_error;\n\n try {\n if (!self._isResponseOK(res)) {\n new_error = new Error(res.statusText || res.text || 'Unsuccessful HTTP response');\n }\n } catch (err) {\n new_error = err; // ok() callback can throw\n } // #1000 don't catch errors from the callback to avoid double calling it\n\n\n if (new_error) {\n new_error.original = error;\n new_error.response = res;\n new_error.status = res.status;\n self.callback(new_error, res);\n } else {\n self.callback(null, res);\n }\n });\n}\n/**\n * Mixin `Emitter` and `RequestBase`.\n */\n// eslint-disable-next-line new-cap\n\n\nEmitter(Request.prototype);\nmixin(Request.prototype, RequestBase.prototype);\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function (type) {\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.accept = function (type) {\n this.set('Accept', request.types[type] || type);\n return this;\n};\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} [pass] optional in case of using 'bearer' as type\n * @param {Object} options with 'type' property 'auto', 'basic' or 'bearer' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.auth = function (user, pass, options) {\n if (arguments.length === 1) pass = '';\n\n if (_typeof(pass) === 'object' && pass !== null) {\n // pass is optional and can be replaced with options\n options = pass;\n pass = '';\n }\n\n if (!options) {\n options = {\n type: typeof btoa === 'function' ? 'basic' : 'auto'\n };\n }\n\n var encoder = options.encoder ? options.encoder : function (string) {\n if (typeof btoa === 'function') {\n return btoa(string);\n }\n\n throw new Error('Cannot use basic auth, btoa is not a function');\n };\n return this._auth(user, pass, options, encoder);\n};\n/**\n * Add query-string `val`.\n *\n * Examples:\n *\n * request.get('/shoes')\n * .query('size=10')\n * .query({ color: 'blue' })\n *\n * @param {Object|String} val\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.query = function (value) {\n if (typeof value !== 'string') value = serialize(value);\n if (value) this._query.push(value);\n return this;\n};\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `options` (or filename).\n *\n * ``` js\n * request.post('/upload')\n * .attach('content', new Blob(['hey!'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String|Object} options\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.attach = function (field, file, options) {\n if (file) {\n if (this._data) {\n throw new Error(\"superagent can't mix .send() and .attach()\");\n }\n\n this._getFormData().append(field, file, options || file.name);\n }\n\n return this;\n};\n\nRequest.prototype._getFormData = function () {\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n\n return this._formData;\n};\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\n\nRequest.prototype.callback = function (error, res) {\n if (this._shouldRetry(error, res)) {\n return this._retry();\n }\n\n var fn = this._callback;\n this.clearTimeout();\n\n if (error) {\n if (this._maxRetries) error.retries = this._retries - 1;\n this.emit('error', error);\n }\n\n fn(error, res);\n};\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\n\nRequest.prototype.crossDomainError = function () {\n var error = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n error.crossDomain = true;\n error.status = this.status;\n error.method = this.method;\n error.url = this.url;\n this.callback(error);\n}; // This only warns, because the request is still likely to work\n\n\nRequest.prototype.agent = function () {\n console.warn('This is not supported in browser version of superagent');\n return this;\n};\n\nRequest.prototype.ca = Request.prototype.agent;\nRequest.prototype.buffer = Request.prototype.ca; // This throws, because it can't send/receive data as expected\n\nRequest.prototype.write = function () {\n throw new Error('Streaming is not supported in browser version of superagent');\n};\n\nRequest.prototype.pipe = Request.prototype.write;\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * @param {Object} obj host object\n * @return {Boolean} is a host object\n * @api private\n */\n\nRequest.prototype._isHost = function (object) {\n // Native objects stringify to [object File], [object Blob], [object FormData], etc.\n return object && _typeof(object) === 'object' && !Array.isArray(object) && Object.prototype.toString.call(object) !== '[object Object]';\n};\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.end = function (fn) {\n if (this._endCalled) {\n console.warn('Warning: .end() was called twice. This is not supported in superagent');\n }\n\n this._endCalled = true; // store callback\n\n this._callback = fn || noop; // querystring\n\n this._finalizeQueryString();\n\n this._end();\n};\n\nRequest.prototype._setUploadTimeout = function () {\n var self = this; // upload timeout it's wokrs only if deadline timeout is off\n\n if (this._uploadTimeout && !this._uploadTimeoutTimer) {\n this._uploadTimeoutTimer = setTimeout(function () {\n self._timeoutError('Upload timeout of ', self._uploadTimeout, 'ETIMEDOUT');\n }, this._uploadTimeout);\n }\n}; // eslint-disable-next-line complexity\n\n\nRequest.prototype._end = function () {\n if (this._aborted) return this.callback(new Error('The request has been aborted even before .end() was called'));\n var self = this;\n this.xhr = request.getXHR();\n var xhr = this.xhr;\n var data = this._formData || this._data;\n\n this._setTimeouts(); // state change\n\n\n xhr.addEventListener('readystatechange', function () {\n var readyState = xhr.readyState;\n\n if (readyState >= 2 && self._responseTimeoutTimer) {\n clearTimeout(self._responseTimeoutTimer);\n }\n\n if (readyState !== 4) {\n return;\n } // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n\n\n var status;\n\n try {\n status = xhr.status;\n } catch (_unused5) {\n status = 0;\n }\n\n if (!status) {\n if (self.timedout || self._aborted) return;\n return self.crossDomainError();\n }\n\n self.emit('end');\n }); // progress\n\n var handleProgress = function handleProgress(direction, e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n\n if (e.percent === 100) {\n clearTimeout(self._uploadTimeoutTimer);\n }\n }\n\n e.direction = direction;\n self.emit('progress', e);\n };\n\n if (this.hasListeners('progress')) {\n try {\n xhr.addEventListener('progress', handleProgress.bind(null, 'download'));\n\n if (xhr.upload) {\n xhr.upload.addEventListener('progress', handleProgress.bind(null, 'upload'));\n }\n } catch (_unused6) {// Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n }\n\n if (xhr.upload) {\n this._setUploadTimeout();\n } // initiate request\n\n\n try {\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n } catch (err) {\n // see #1149\n return this.callback(err);\n } // CORS\n\n\n if (this._withCredentials) xhr.withCredentials = true; // body\n\n if (!this._formData && this.method !== 'GET' && this.method !== 'HEAD' && typeof data !== 'string' && !this._isHost(data)) {\n // serialize stuff\n var contentType = this._header['content-type'];\n\n var _serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : ''];\n\n if (!_serialize && isJSON(contentType)) {\n _serialize = request.serialize['application/json'];\n }\n\n if (_serialize) data = _serialize(data);\n } // set header fields\n\n\n for (var field in this.header) {\n if (this.header[field] === null) continue;\n if (hasOwn(this.header, field)) xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n } // send stuff\n\n\n this.emit('request', this); // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n\n xhr.send(typeof data === 'undefined' ? null : data);\n};\n\nrequest.agent = function () {\n return new Agent();\n};\n\nvar _loop = function _loop() {\n var method = _arr[_i];\n\n Agent.prototype[method.toLowerCase()] = function (url, fn) {\n var request_ = new request.Request(method, url);\n\n this._setDefaults(request_);\n\n if (fn) {\n request_.end(fn);\n }\n\n return request_;\n };\n};\n\nfor (var _i = 0, _arr = ['GET', 'POST', 'OPTIONS', 'PATCH', 'PUT', 'DELETE']; _i < _arr.length; _i++) {\n _loop();\n}\n\nAgent.prototype.del = Agent.prototype.delete;\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = function (url, data, fn) {\n var request_ = request('GET', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.query(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.head = function (url, data, fn) {\n var request_ = request('HEAD', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.query(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.options = function (url, data, fn) {\n var request_ = request('OPTIONS', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * DELETE `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nfunction del(url, data, fn) {\n var request_ = request('DELETE', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n}\n\nrequest.del = del;\nrequest.delete = del;\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function (url, data, fn) {\n var request_ = request('PATCH', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.post = function (url, data, fn) {\n var request_ = request('POST', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.put = function (url, data, fn) {\n var request_ = request('PUT', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb290Iiwid2luZG93Iiwic2VsZiIsImNvbnNvbGUiLCJ3YXJuIiwiRW1pdHRlciIsInJlcXVpcmUiLCJzYWZlU3RyaW5naWZ5IiwicXMiLCJSZXF1ZXN0QmFzZSIsImlzT2JqZWN0IiwibWl4aW4iLCJoYXNPd24iLCJSZXNwb25zZUJhc2UiLCJBZ2VudCIsIm5vb3AiLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0aG9kIiwidXJsIiwiUmVxdWVzdCIsImVuZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInJlcXVlc3QiLCJnZXRYSFIiLCJYTUxIdHRwUmVxdWVzdCIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJBY3RpdmVYT2JqZWN0IiwiRXJyb3IiLCJ0cmltIiwicyIsInJlcGxhY2UiLCJzZXJpYWxpemUiLCJvYmplY3QiLCJwYWlycyIsImtleSIsInB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyIiwiam9pbiIsInZhbHVlIiwidW5kZWZpbmVkIiwicHVzaCIsImVuY29kZVVSSSIsIkFycmF5IiwiaXNBcnJheSIsInYiLCJzdWJrZXkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemVPYmplY3QiLCJwYXJzZVN0cmluZyIsInN0cmluZ18iLCJzcGxpdCIsInBhaXIiLCJwb3MiLCJpIiwibGVuZ3RoXyIsImluZGV4T2YiLCJkZWNvZGVVUklDb21wb25lbnQiLCJzbGljZSIsInR5cGVzIiwiaHRtbCIsImpzb24iLCJ4bWwiLCJ1cmxlbmNvZGVkIiwiZm9ybSIsInN0cmluZ2lmeSIsInBhcnNlIiwiSlNPTiIsInBhcnNlSGVhZGVyIiwibGluZXMiLCJmaWVsZHMiLCJpbmRleCIsImxpbmUiLCJmaWVsZCIsInRvTG93ZXJDYXNlIiwiaXNKU09OIiwibWltZSIsInRlc3QiLCJSZXNwb25zZSIsInJlcXVlc3RfIiwicmVxIiwieGhyIiwidGV4dCIsInJlc3BvbnNlVHlwZSIsInJlc3BvbnNlVGV4dCIsInN0YXR1c1RleHQiLCJzdGF0dXMiLCJfc2V0U3RhdHVzUHJvcGVydGllcyIsImhlYWRlcnMiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJoZWFkZXIiLCJnZXRSZXNwb25zZUhlYWRlciIsIl9zZXRIZWFkZXJQcm9wZXJ0aWVzIiwiX3Jlc3BvbnNlVHlwZSIsImJvZHkiLCJyZXNwb25zZSIsIl9wYXJzZUJvZHkiLCJwcm90b3R5cGUiLCJ0eXBlIiwiX3BhcnNlciIsIk9iamVjdCIsInRvRXJyb3IiLCJtZXNzYWdlIiwiZXJyb3IiLCJfcXVlcnkiLCJfaGVhZGVyIiwib24iLCJyZXMiLCJlcnIiLCJvcmlnaW5hbCIsInJhd1Jlc3BvbnNlIiwic3RhdHVzQ29kZSIsImNhbGxiYWNrIiwiZW1pdCIsIm5ld19lcnJvciIsIl9pc1Jlc3BvbnNlT0siLCJzZXQiLCJhY2NlcHQiLCJhdXRoIiwidXNlciIsInBhc3MiLCJvcHRpb25zIiwiYnRvYSIsImVuY29kZXIiLCJzdHJpbmciLCJfYXV0aCIsInF1ZXJ5IiwiYXR0YWNoIiwiZmlsZSIsIl9kYXRhIiwiX2dldEZvcm1EYXRhIiwiYXBwZW5kIiwibmFtZSIsIl9mb3JtRGF0YSIsIkZvcm1EYXRhIiwiX3Nob3VsZFJldHJ5IiwiX3JldHJ5IiwiZm4iLCJfY2FsbGJhY2siLCJjbGVhclRpbWVvdXQiLCJfbWF4UmV0cmllcyIsInJldHJpZXMiLCJfcmV0cmllcyIsImNyb3NzRG9tYWluRXJyb3IiLCJjcm9zc0RvbWFpbiIsImFnZW50IiwiY2EiLCJidWZmZXIiLCJ3cml0ZSIsInBpcGUiLCJfaXNIb3N0IiwidG9TdHJpbmciLCJjYWxsIiwiX2VuZENhbGxlZCIsIl9maW5hbGl6ZVF1ZXJ5U3RyaW5nIiwiX2VuZCIsIl9zZXRVcGxvYWRUaW1lb3V0IiwiX3VwbG9hZFRpbWVvdXQiLCJfdXBsb2FkVGltZW91dFRpbWVyIiwic2V0VGltZW91dCIsIl90aW1lb3V0RXJyb3IiLCJfYWJvcnRlZCIsImRhdGEiLCJfc2V0VGltZW91dHMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVhZHlTdGF0ZSIsIl9yZXNwb25zZVRpbWVvdXRUaW1lciIsInRpbWVkb3V0IiwiaGFuZGxlUHJvZ3Jlc3MiLCJkaXJlY3Rpb24iLCJlIiwidG90YWwiLCJwZXJjZW50IiwibG9hZGVkIiwiaGFzTGlzdGVuZXJzIiwiYmluZCIsInVwbG9hZCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJvcGVuIiwiX3dpdGhDcmVkZW50aWFscyIsIndpdGhDcmVkZW50aWFscyIsImNvbnRlbnRUeXBlIiwiX3NlcmlhbGl6ZXIiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsIl9zZXREZWZhdWx0cyIsImRlbCIsImRlbGV0ZSIsImdldCIsImhlYWQiLCJwYXRjaCIsInBvc3QiLCJwdXQiXSwic291cmNlcyI6WyIuLi9zcmMvY2xpZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUm9vdCByZWZlcmVuY2UgZm9yIGlmcmFtZXMuXG4gKi9cblxubGV0IHJvb3Q7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gQnJvd3NlciB3aW5kb3dcbiAgcm9vdCA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIHNlbGYgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIE90aGVyIGVudmlyb25tZW50c1xuICBjb25zb2xlLndhcm4oXG4gICAgJ1VzaW5nIGJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQnXG4gICk7XG4gIHJvb3QgPSB0aGlzO1xufSBlbHNlIHtcbiAgLy8gV2ViIFdvcmtlclxuICByb290ID0gc2VsZjtcbn1cblxuY29uc3QgRW1pdHRlciA9IHJlcXVpcmUoJ2NvbXBvbmVudC1lbWl0dGVyJyk7XG5jb25zdCBzYWZlU3RyaW5naWZ5ID0gcmVxdWlyZSgnZmFzdC1zYWZlLXN0cmluZ2lmeScpO1xuY29uc3QgcXMgPSByZXF1aXJlKCdxcycpO1xuY29uc3QgUmVxdWVzdEJhc2UgPSByZXF1aXJlKCcuL3JlcXVlc3QtYmFzZScpO1xuY29uc3QgeyBpc09iamVjdCwgbWl4aW4sIGhhc093biB9ID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3QgUmVzcG9uc2VCYXNlID0gcmVxdWlyZSgnLi9yZXNwb25zZS1iYXNlJyk7XG5jb25zdCBBZ2VudCA9IHJlcXVpcmUoJy4vYWdlbnQtYmFzZScpO1xuXG4vKipcbiAqIE5vb3AuXG4gKi9cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbi8qKlxuICogRXhwb3NlIGByZXF1ZXN0YC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtZXRob2QsIHVybCkge1xuICAvLyBjYWxsYmFja1xuICBpZiAodHlwZW9mIHVybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBuZXcgZXhwb3J0cy5SZXF1ZXN0KCdHRVQnLCBtZXRob2QpLmVuZCh1cmwpO1xuICB9XG5cbiAgLy8gdXJsIGZpcnN0XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIG5ldyBleHBvcnRzLlJlcXVlc3QoJ0dFVCcsIG1ldGhvZCk7XG4gIH1cblxuICByZXR1cm4gbmV3IGV4cG9ydHMuUmVxdWVzdChtZXRob2QsIHVybCk7XG59O1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHM7XG5cbmNvbnN0IHJlcXVlc3QgPSBleHBvcnRzO1xuXG5leHBvcnRzLlJlcXVlc3QgPSBSZXF1ZXN0O1xuXG4vKipcbiAqIERldGVybWluZSBYSFIuXG4gKi9cblxucmVxdWVzdC5nZXRYSFIgPSAoKSA9PiB7XG4gIGlmIChcbiAgICByb290LlhNTEh0dHBSZXF1ZXN0ICYmXG4gICAgKCFyb290LmxvY2F0aW9uIHx8XG4gICAgICByb290LmxvY2F0aW9uLnByb3RvY29sICE9PSAnZmlsZTonIHx8XG4gICAgICAhcm9vdC5BY3RpdmVYT2JqZWN0KVxuICApIHtcbiAgICByZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTWljcm9zb2Z0LlhNTEhUVFAnKTtcbiAgfSBjYXRjaCB7XG4gICAgLyoqL1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQLjYuMCcpO1xuICB9IGNhdGNoIHtcbiAgICAvKiovXG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTXN4bWwyLlhNTEhUVFAuMy4wJyk7XG4gIH0gY2F0Y2gge1xuICAgIC8qKi9cbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNc3htbDIuWE1MSFRUUCcpO1xuICB9IGNhdGNoIHtcbiAgICAvKiovXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0Jyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgY291bGQgbm90IGZpbmQgWEhSJyk7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYWRkZWQgdG8gc3VwcG9ydCBJRS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuY29uc3QgdHJpbSA9ICcnLnRyaW0gPyAocykgPT4gcy50cmltKCkgOiAocykgPT4gcy5yZXBsYWNlKC8oXlxccyp8XFxzKiQpL2csICcnKTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGdpdmVuIGBvYmpgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZShvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSByZXR1cm4gb2JqZWN0O1xuICBjb25zdCBwYWlycyA9IFtdO1xuICBmb3IgKGNvbnN0IGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoaGFzT3duKG9iamVjdCwga2V5KSkgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGtleSwgb2JqZWN0W2tleV0pO1xuICB9XG5cbiAgcmV0dXJuIHBhaXJzLmpvaW4oJyYnKTtcbn1cblxuLyoqXG4gKiBIZWxwcyAnc2VyaWFsaXplJyB3aXRoIHNlcmlhbGl6aW5nIGFycmF5cy5cbiAqIE11dGF0ZXMgdGhlIHBhaXJzIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzXG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5XG4gKiBAcGFyYW0ge01peGVkfSB2YWxcbiAqL1xuXG5mdW5jdGlvbiBwdXNoRW5jb2RlZEtleVZhbHVlUGFpcihwYWlycywga2V5LCB2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICBwYWlycy5wdXNoKGVuY29kZVVSSShrZXkpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWUpIHtcbiAgICAgIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIHYpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICBmb3IgKGNvbnN0IHN1YmtleSBpbiB2YWx1ZSkge1xuICAgICAgaWYgKGhhc093bih2YWx1ZSwgc3Via2V5KSlcbiAgICAgICAgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGAke2tleX1bJHtzdWJrZXl9XWAsIHZhbHVlW3N1YmtleV0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwYWlycy5wdXNoKGVuY29kZVVSSShrZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHBvc2Ugc2VyaWFsaXphdGlvbiBtZXRob2QuXG4gKi9cblxucmVxdWVzdC5zZXJpYWxpemVPYmplY3QgPSBzZXJpYWxpemU7XG5cbi8qKlxuICogUGFyc2UgdGhlIGdpdmVuIHgtd3d3LWZvcm0tdXJsZW5jb2RlZCBgc3RyYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZVN0cmluZyhzdHJpbmdfKSB7XG4gIGNvbnN0IG9iamVjdCA9IHt9O1xuICBjb25zdCBwYWlycyA9IHN0cmluZ18uc3BsaXQoJyYnKTtcbiAgbGV0IHBhaXI7XG4gIGxldCBwb3M7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aF8gPSBwYWlycy5sZW5ndGg7IGkgPCBsZW5ndGhfOyArK2kpIHtcbiAgICBwYWlyID0gcGFpcnNbaV07XG4gICAgcG9zID0gcGFpci5pbmRleE9mKCc9Jyk7XG4gICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgIG9iamVjdFtkZWNvZGVVUklDb21wb25lbnQocGFpcildID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9iamVjdFtkZWNvZGVVUklDb21wb25lbnQocGFpci5zbGljZSgwLCBwb3MpKV0gPSBkZWNvZGVVUklDb21wb25lbnQoXG4gICAgICAgIHBhaXIuc2xpY2UocG9zICsgMSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuLyoqXG4gKiBFeHBvc2UgcGFyc2VyLlxuICovXG5cbnJlcXVlc3QucGFyc2VTdHJpbmcgPSBwYXJzZVN0cmluZztcblxuLyoqXG4gKiBEZWZhdWx0IE1JTUUgdHlwZSBtYXAuXG4gKlxuICogICAgIHN1cGVyYWdlbnQudHlwZXMueG1sID0gJ2FwcGxpY2F0aW9uL3htbCc7XG4gKlxuICovXG5cbnJlcXVlc3QudHlwZXMgPSB7XG4gIGh0bWw6ICd0ZXh0L2h0bWwnLFxuICBqc29uOiAnYXBwbGljYXRpb24vanNvbicsXG4gIHhtbDogJ3RleHQveG1sJyxcbiAgdXJsZW5jb2RlZDogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gIGZvcm06ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAnZm9ybS1kYXRhJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBzZXJpYWxpemF0aW9uIG1hcC5cbiAqXG4gKiAgICAgc3VwZXJhZ2VudC5zZXJpYWxpemVbJ2FwcGxpY2F0aW9uL3htbCddID0gZnVuY3Rpb24ob2JqKXtcbiAqICAgICAgIHJldHVybiAnZ2VuZXJhdGVkIHhtbCBoZXJlJztcbiAqICAgICB9O1xuICpcbiAqL1xuXG5yZXF1ZXN0LnNlcmlhbGl6ZSA9IHtcbiAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc6IHFzLnN0cmluZ2lmeSxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nOiBzYWZlU3RyaW5naWZ5XG59O1xuXG4vKipcbiAqIERlZmF1bHQgcGFyc2Vycy5cbiAqXG4gKiAgICAgc3VwZXJhZ2VudC5wYXJzZVsnYXBwbGljYXRpb24veG1sJ10gPSBmdW5jdGlvbihzdHIpe1xuICogICAgICAgcmV0dXJuIHsgb2JqZWN0IHBhcnNlZCBmcm9tIHN0ciB9O1xuICogICAgIH07XG4gKlxuICovXG5cbnJlcXVlc3QucGFyc2UgPSB7XG4gICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOiBwYXJzZVN0cmluZyxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nOiBKU09OLnBhcnNlXG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBoZWFkZXIgYHN0cmAgaW50b1xuICogYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG1hcHBlZCBmaWVsZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXIoc3RyaW5nXykge1xuICBjb25zdCBsaW5lcyA9IHN0cmluZ18uc3BsaXQoL1xccj9cXG4vKTtcbiAgY29uc3QgZmllbGRzID0ge307XG4gIGxldCBpbmRleDtcbiAgbGV0IGxpbmU7XG4gIGxldCBmaWVsZDtcbiAgbGV0IHZhbHVlO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW5ndGhfID0gbGluZXMubGVuZ3RoOyBpIDwgbGVuZ3RoXzsgKytpKSB7XG4gICAgbGluZSA9IGxpbmVzW2ldO1xuICAgIGluZGV4ID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgLy8gY291bGQgYmUgZW1wdHkgbGluZSwganVzdCBza2lwIGl0XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmaWVsZCA9IGxpbmUuc2xpY2UoMCwgaW5kZXgpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsdWUgPSB0cmltKGxpbmUuc2xpY2UoaW5kZXggKyAxKSk7XG4gICAgZmllbGRzW2ZpZWxkXSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkcztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBgbWltZWAgaXMganNvbiBvciBoYXMgK2pzb24gc3RydWN0dXJlZCBzeW50YXggc3VmZml4LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBtaW1lXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gaXNKU09OKG1pbWUpIHtcbiAgLy8gc2hvdWxkIG1hdGNoIC9qc29uIG9yICtqc29uXG4gIC8vIGJ1dCBub3QgL2pzb24tc2VxXG4gIHJldHVybiAvWy8rXWpzb24oJHxbXi1cXHddKS9pLnRlc3QobWltZSk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVzcG9uc2VgIHdpdGggdGhlIGdpdmVuIGB4aHJgLlxuICpcbiAqICAtIHNldCBmbGFncyAoLm9rLCAuZXJyb3IsIGV0YylcbiAqICAtIHBhcnNlIGhlYWRlclxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICBBbGlhc2luZyBgc3VwZXJhZ2VudGAgYXMgYHJlcXVlc3RgIGlzIG5pY2U6XG4gKlxuICogICAgICByZXF1ZXN0ID0gc3VwZXJhZ2VudDtcbiAqXG4gKiAgV2UgY2FuIHVzZSB0aGUgcHJvbWlzZS1saWtlIEFQSSwgb3IgcGFzcyBjYWxsYmFja3M6XG4gKlxuICogICAgICByZXF1ZXN0LmdldCgnLycpLmVuZChmdW5jdGlvbihyZXMpe30pO1xuICogICAgICByZXF1ZXN0LmdldCgnLycsIGZ1bmN0aW9uKHJlcyl7fSk7XG4gKlxuICogIFNlbmRpbmcgZGF0YSBjYW4gYmUgY2hhaW5lZDpcbiAqXG4gKiAgICAgIHJlcXVlc3RcbiAqICAgICAgICAucG9zdCgnL3VzZXInKVxuICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiAgT3IgcGFzc2VkIHRvIGAuc2VuZCgpYDpcbiAqXG4gKiAgICAgIHJlcXVlc3RcbiAqICAgICAgICAucG9zdCgnL3VzZXInKVxuICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqICBPciBwYXNzZWQgdG8gYC5wb3N0KClgOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiBPciBmdXJ0aGVyIHJlZHVjZWQgdG8gYSBzaW5nbGUgY2FsbCBmb3Igc2ltcGxlIGNhc2VzOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqIEBwYXJhbSB7WE1MSFRUUFJlcXVlc3R9IHhoclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIFJlc3BvbnNlKHJlcXVlc3RfKSB7XG4gIHRoaXMucmVxID0gcmVxdWVzdF87XG4gIHRoaXMueGhyID0gdGhpcy5yZXEueGhyO1xuICAvLyByZXNwb25zZVRleHQgaXMgYWNjZXNzaWJsZSBvbmx5IGlmIHJlc3BvbnNlVHlwZSBpcyAnJyBvciAndGV4dCcgYW5kIG9uIG9sZGVyIGJyb3dzZXJzXG4gIHRoaXMudGV4dCA9XG4gICAgKHRoaXMucmVxLm1ldGhvZCAhPT0gJ0hFQUQnICYmXG4gICAgICAodGhpcy54aHIucmVzcG9uc2VUeXBlID09PSAnJyB8fCB0aGlzLnhoci5yZXNwb25zZVR5cGUgPT09ICd0ZXh0JykpIHx8XG4gICAgdHlwZW9mIHRoaXMueGhyLnJlc3BvbnNlVHlwZSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgID8gdGhpcy54aHIucmVzcG9uc2VUZXh0XG4gICAgICA6IG51bGw7XG4gIHRoaXMuc3RhdHVzVGV4dCA9IHRoaXMucmVxLnhoci5zdGF0dXNUZXh0O1xuICBsZXQgeyBzdGF0dXMgfSA9IHRoaXMueGhyO1xuICAvLyBoYW5kbGUgSUU5IGJ1ZzogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDA0Njk3Mi9tc2llLXJldHVybnMtc3RhdHVzLWNvZGUtb2YtMTIyMy1mb3ItYWpheC1yZXF1ZXN0XG4gIGlmIChzdGF0dXMgPT09IDEyMjMpIHtcbiAgICBzdGF0dXMgPSAyMDQ7XG4gIH1cblxuICB0aGlzLl9zZXRTdGF0dXNQcm9wZXJ0aWVzKHN0YXR1cyk7XG4gIHRoaXMuaGVhZGVycyA9IHBhcnNlSGVhZGVyKHRoaXMueGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTtcbiAgdGhpcy5oZWFkZXIgPSB0aGlzLmhlYWRlcnM7XG4gIC8vIGdldEFsbFJlc3BvbnNlSGVhZGVycyBzb21ldGltZXMgZmFsc2VseSByZXR1cm5zIFwiXCIgZm9yIENPUlMgcmVxdWVzdHMsIGJ1dFxuICAvLyBnZXRSZXNwb25zZUhlYWRlciBzdGlsbCB3b3Jrcy4gc28gd2UgZ2V0IGNvbnRlbnQtdHlwZSBldmVuIGlmIGdldHRpbmdcbiAgLy8gb3RoZXIgaGVhZGVycyBmYWlscy5cbiAgdGhpcy5oZWFkZXJbJ2NvbnRlbnQtdHlwZSddID0gdGhpcy54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ2NvbnRlbnQtdHlwZScpO1xuICB0aGlzLl9zZXRIZWFkZXJQcm9wZXJ0aWVzKHRoaXMuaGVhZGVyKTtcblxuICBpZiAodGhpcy50ZXh0ID09PSBudWxsICYmIHJlcXVlc3RfLl9yZXNwb25zZVR5cGUpIHtcbiAgICB0aGlzLmJvZHkgPSB0aGlzLnhoci5yZXNwb25zZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmJvZHkgPVxuICAgICAgdGhpcy5yZXEubWV0aG9kID09PSAnSEVBRCdcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogdGhpcy5fcGFyc2VCb2R5KHRoaXMudGV4dCA/IHRoaXMudGV4dCA6IHRoaXMueGhyLnJlc3BvbnNlKTtcbiAgfVxufVxuXG5taXhpbihSZXNwb25zZS5wcm90b3R5cGUsIFJlc3BvbnNlQmFzZS5wcm90b3R5cGUpO1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBib2R5IGBzdHJgLlxuICpcbiAqIFVzZWQgZm9yIGF1dG8tcGFyc2luZyBvZiBib2RpZXMuIFBhcnNlcnNcbiAqIGFyZSBkZWZpbmVkIG9uIHRoZSBgc3VwZXJhZ2VudC5wYXJzZWAgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge01peGVkfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVzcG9uc2UucHJvdG90eXBlLl9wYXJzZUJvZHkgPSBmdW5jdGlvbiAoc3RyaW5nXykge1xuICBsZXQgcGFyc2UgPSByZXF1ZXN0LnBhcnNlW3RoaXMudHlwZV07XG4gIGlmICh0aGlzLnJlcS5fcGFyc2VyKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxLl9wYXJzZXIodGhpcywgc3RyaW5nXyk7XG4gIH1cblxuICBpZiAoIXBhcnNlICYmIGlzSlNPTih0aGlzLnR5cGUpKSB7XG4gICAgcGFyc2UgPSByZXF1ZXN0LnBhcnNlWydhcHBsaWNhdGlvbi9qc29uJ107XG4gIH1cblxuICByZXR1cm4gcGFyc2UgJiYgc3RyaW5nXyAmJiAoc3RyaW5nXy5sZW5ndGggPiAwIHx8IHN0cmluZ18gaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgPyBwYXJzZShzdHJpbmdfKVxuICAgIDogbnVsbDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGFuIGBFcnJvcmAgcmVwcmVzZW50YXRpdmUgb2YgdGhpcyByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJuIHtFcnJvcn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVzcG9uc2UucHJvdG90eXBlLnRvRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHsgcmVxIH0gPSB0aGlzO1xuICBjb25zdCB7IG1ldGhvZCB9ID0gcmVxO1xuICBjb25zdCB7IHVybCB9ID0gcmVxO1xuXG4gIGNvbnN0IG1lc3NhZ2UgPSBgY2Fubm90ICR7bWV0aG9kfSAke3VybH0gKCR7dGhpcy5zdGF0dXN9KWA7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICBlcnJvci5zdGF0dXMgPSB0aGlzLnN0YXR1cztcbiAgZXJyb3IubWV0aG9kID0gbWV0aG9kO1xuICBlcnJvci51cmwgPSB1cmw7XG5cbiAgcmV0dXJuIGVycm9yO1xufTtcblxuLyoqXG4gKiBFeHBvc2UgYFJlc3BvbnNlYC5cbiAqL1xuXG5yZXF1ZXN0LlJlc3BvbnNlID0gUmVzcG9uc2U7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVxdWVzdGAgd2l0aCB0aGUgZ2l2ZW4gYG1ldGhvZGAgYW5kIGB1cmxgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBtZXRob2RcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUmVxdWVzdChtZXRob2QsIHVybCkge1xuICBjb25zdCBzZWxmID0gdGhpcztcbiAgdGhpcy5fcXVlcnkgPSB0aGlzLl9xdWVyeSB8fCBbXTtcbiAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gIHRoaXMudXJsID0gdXJsO1xuICB0aGlzLmhlYWRlciA9IHt9OyAvLyBwcmVzZXJ2ZXMgaGVhZGVyIG5hbWUgY2FzZVxuICB0aGlzLl9oZWFkZXIgPSB7fTsgLy8gY29lcmNlcyBoZWFkZXIgbmFtZXMgdG8gbG93ZXJjYXNlXG4gIHRoaXMub24oJ2VuZCcsICgpID0+IHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGxldCByZXMgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlcyA9IG5ldyBSZXNwb25zZShzZWxmKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKCdQYXJzZXIgaXMgdW5hYmxlIHRvIHBhcnNlIHRoZSByZXNwb25zZScpO1xuICAgICAgZXJyb3IucGFyc2UgPSB0cnVlO1xuICAgICAgZXJyb3Iub3JpZ2luYWwgPSBlcnI7XG4gICAgICAvLyBpc3N1ZSAjNjc1OiByZXR1cm4gdGhlIHJhdyByZXNwb25zZSBpZiB0aGUgcmVzcG9uc2UgcGFyc2luZyBmYWlsc1xuICAgICAgaWYgKHNlbGYueGhyKSB7XG4gICAgICAgIC8vIGllOSBkb2Vzbid0IGhhdmUgJ3Jlc3BvbnNlJyBwcm9wZXJ0eVxuICAgICAgICBlcnJvci5yYXdSZXNwb25zZSA9XG4gICAgICAgICAgdHlwZW9mIHNlbGYueGhyLnJlc3BvbnNlVHlwZSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gc2VsZi54aHIucmVzcG9uc2VUZXh0XG4gICAgICAgICAgICA6IHNlbGYueGhyLnJlc3BvbnNlO1xuICAgICAgICAvLyBpc3N1ZSAjODc2OiByZXR1cm4gdGhlIGh0dHAgc3RhdHVzIGNvZGUgaWYgdGhlIHJlc3BvbnNlIHBhcnNpbmcgZmFpbHNcbiAgICAgICAgZXJyb3Iuc3RhdHVzID0gc2VsZi54aHIuc3RhdHVzID8gc2VsZi54aHIuc3RhdHVzIDogbnVsbDtcbiAgICAgICAgZXJyb3Iuc3RhdHVzQ29kZSA9IGVycm9yLnN0YXR1czsgLy8gYmFja3dhcmRzLWNvbXBhdCBvbmx5XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvci5yYXdSZXNwb25zZSA9IG51bGw7XG4gICAgICAgIGVycm9yLnN0YXR1cyA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxmLmNhbGxiYWNrKGVycm9yKTtcbiAgICB9XG5cbiAgICBzZWxmLmVtaXQoJ3Jlc3BvbnNlJywgcmVzKTtcblxuICAgIGxldCBuZXdfZXJyb3I7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2VsZi5faXNSZXNwb25zZU9LKHJlcykpIHtcbiAgICAgICAgbmV3X2Vycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgIHJlcy5zdGF0dXNUZXh0IHx8IHJlcy50ZXh0IHx8ICdVbnN1Y2Nlc3NmdWwgSFRUUCByZXNwb25zZSdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIG5ld19lcnJvciA9IGVycjsgLy8gb2soKSBjYWxsYmFjayBjYW4gdGhyb3dcbiAgICB9XG5cbiAgICAvLyAjMTAwMCBkb24ndCBjYXRjaCBlcnJvcnMgZnJvbSB0aGUgY2FsbGJhY2sgdG8gYXZvaWQgZG91YmxlIGNhbGxpbmcgaXRcbiAgICBpZiAobmV3X2Vycm9yKSB7XG4gICAgICBuZXdfZXJyb3Iub3JpZ2luYWwgPSBlcnJvcjtcbiAgICAgIG5ld19lcnJvci5yZXNwb25zZSA9IHJlcztcbiAgICAgIG5ld19lcnJvci5zdGF0dXMgPSByZXMuc3RhdHVzO1xuICAgICAgc2VsZi5jYWxsYmFjayhuZXdfZXJyb3IsIHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYuY2FsbGJhY2sobnVsbCwgcmVzKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIE1peGluIGBFbWl0dGVyYCBhbmQgYFJlcXVlc3RCYXNlYC5cbiAqL1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuRW1pdHRlcihSZXF1ZXN0LnByb3RvdHlwZSk7XG5cbm1peGluKFJlcXVlc3QucHJvdG90eXBlLCBSZXF1ZXN0QmFzZS5wcm90b3R5cGUpO1xuXG4vKipcbiAqIFNldCBDb250ZW50LVR5cGUgdG8gYHR5cGVgLCBtYXBwaW5nIHZhbHVlcyBmcm9tIGByZXF1ZXN0LnR5cGVzYC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHN1cGVyYWdlbnQudHlwZXMueG1sID0gJ2FwcGxpY2F0aW9uL3htbCc7XG4gKlxuICogICAgICByZXF1ZXN0LnBvc3QoJy8nKVxuICogICAgICAgIC50eXBlKCd4bWwnKVxuICogICAgICAgIC5zZW5kKHhtbHN0cmluZylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiAgICAgIHJlcXVlc3QucG9zdCgnLycpXG4gKiAgICAgICAgLnR5cGUoJ2FwcGxpY2F0aW9uL3htbCcpXG4gKiAgICAgICAgLnNlbmQoeG1sc3RyaW5nKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUudHlwZSA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHRoaXMuc2V0KCdDb250ZW50LVR5cGUnLCByZXF1ZXN0LnR5cGVzW3R5cGVdIHx8IHR5cGUpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IEFjY2VwdCB0byBgdHlwZWAsIG1hcHBpbmcgdmFsdWVzIGZyb20gYHJlcXVlc3QudHlwZXNgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgc3VwZXJhZ2VudC50eXBlcy5qc29uID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICpcbiAqICAgICAgcmVxdWVzdC5nZXQoJy9hZ2VudCcpXG4gKiAgICAgICAgLmFjY2VwdCgnanNvbicpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogICAgICByZXF1ZXN0LmdldCgnL2FnZW50JylcbiAqICAgICAgICAuYWNjZXB0KCdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWNjZXB0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgdGhpcy5zZXQoJ0FjY2VwdCcsIHJlcXVlc3QudHlwZXNbdHlwZV0gfHwgdHlwZSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgQXV0aG9yaXphdGlvbiBmaWVsZCB2YWx1ZSB3aXRoIGB1c2VyYCBhbmQgYHBhc3NgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1c2VyXG4gKiBAcGFyYW0ge1N0cmluZ30gW3Bhc3NdIG9wdGlvbmFsIGluIGNhc2Ugb2YgdXNpbmcgJ2JlYXJlcicgYXMgdHlwZVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgd2l0aCAndHlwZScgcHJvcGVydHkgJ2F1dG8nLCAnYmFzaWMnIG9yICdiZWFyZXInIChkZWZhdWx0ICdiYXNpYycpXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYXV0aCA9IGZ1bmN0aW9uICh1c2VyLCBwYXNzLCBvcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSBwYXNzID0gJyc7XG4gIGlmICh0eXBlb2YgcGFzcyA9PT0gJ29iamVjdCcgJiYgcGFzcyAhPT0gbnVsbCkge1xuICAgIC8vIHBhc3MgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZXBsYWNlZCB3aXRoIG9wdGlvbnNcbiAgICBvcHRpb25zID0gcGFzcztcbiAgICBwYXNzID0gJyc7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgdHlwZTogdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicgPyAnYmFzaWMnIDogJ2F1dG8nXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGVuY29kZXIgPSBvcHRpb25zLmVuY29kZXJcbiAgICA/IG9wdGlvbnMuZW5jb2RlclxuICAgIDogKHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gYnRvYShzdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIGJhc2ljIGF1dGgsIGJ0b2EgaXMgbm90IGEgZnVuY3Rpb24nKTtcbiAgICAgIH07XG5cbiAgcmV0dXJuIHRoaXMuX2F1dGgodXNlciwgcGFzcywgb3B0aW9ucywgZW5jb2Rlcik7XG59O1xuXG4vKipcbiAqIEFkZCBxdWVyeS1zdHJpbmcgYHZhbGAuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICByZXF1ZXN0LmdldCgnL3Nob2VzJylcbiAqICAgICAucXVlcnkoJ3NpemU9MTAnKVxuICogICAgIC5xdWVyeSh7IGNvbG9yOiAnYmx1ZScgfSlcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB2YWx1ZSA9IHNlcmlhbGl6ZSh2YWx1ZSk7XG4gIGlmICh2YWx1ZSkgdGhpcy5fcXVlcnkucHVzaCh2YWx1ZSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBRdWV1ZSB0aGUgZ2l2ZW4gYGZpbGVgIGFzIGFuIGF0dGFjaG1lbnQgdG8gdGhlIHNwZWNpZmllZCBgZmllbGRgLFxuICogd2l0aCBvcHRpb25hbCBgb3B0aW9uc2AgKG9yIGZpbGVuYW1lKS5cbiAqXG4gKiBgYGAganNcbiAqIHJlcXVlc3QucG9zdCgnL3VwbG9hZCcpXG4gKiAgIC5hdHRhY2goJ2NvbnRlbnQnLCBuZXcgQmxvYihbJzxhIGlkPVwiYVwiPjxiIGlkPVwiYlwiPmhleSE8L2I+PC9hPiddLCB7IHR5cGU6IFwidGV4dC9odG1sXCJ9KSlcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZmllbGRcbiAqIEBwYXJhbSB7QmxvYnxGaWxlfSBmaWxlXG4gKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbiAoZmllbGQsIGZpbGUsIG9wdGlvbnMpIHtcbiAgaWYgKGZpbGUpIHtcbiAgICBpZiAodGhpcy5fZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3VwZXJhZ2VudCBjYW4ndCBtaXggLnNlbmQoKSBhbmQgLmF0dGFjaCgpXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKGZpZWxkLCBmaWxlLCBvcHRpb25zIHx8IGZpbGUubmFtZSk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3QucHJvdG90eXBlLl9nZXRGb3JtRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLl9mb3JtRGF0YSkge1xuICAgIHRoaXMuX2Zvcm1EYXRhID0gbmV3IHJvb3QuRm9ybURhdGEoKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9mb3JtRGF0YTtcbn07XG5cbi8qKlxuICogSW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIGBlcnJgIGFuZCBgcmVzYFxuICogYW5kIGhhbmRsZSBhcml0eSBjaGVjay5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEBwYXJhbSB7UmVzcG9uc2V9IHJlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuY2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyb3IsIHJlcykge1xuICBpZiAodGhpcy5fc2hvdWxkUmV0cnkoZXJyb3IsIHJlcykpIHtcbiAgICByZXR1cm4gdGhpcy5fcmV0cnkoKTtcbiAgfVxuXG4gIGNvbnN0IGZuID0gdGhpcy5fY2FsbGJhY2s7XG4gIHRoaXMuY2xlYXJUaW1lb3V0KCk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgaWYgKHRoaXMuX21heFJldHJpZXMpIGVycm9yLnJldHJpZXMgPSB0aGlzLl9yZXRyaWVzIC0gMTtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICB9XG5cbiAgZm4oZXJyb3IsIHJlcyk7XG59O1xuXG4vKipcbiAqIEludm9rZSBjYWxsYmFjayB3aXRoIHgtZG9tYWluIGVycm9yLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmNyb3NzRG9tYWluRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICdSZXF1ZXN0IGhhcyBiZWVuIHRlcm1pbmF0ZWRcXG5Qb3NzaWJsZSBjYXVzZXM6IHRoZSBuZXR3b3JrIGlzIG9mZmxpbmUsIE9yaWdpbiBpcyBub3QgYWxsb3dlZCBieSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4sIHRoZSBwYWdlIGlzIGJlaW5nIHVubG9hZGVkLCBldGMuJ1xuICApO1xuICBlcnJvci5jcm9zc0RvbWFpbiA9IHRydWU7XG5cbiAgZXJyb3Iuc3RhdHVzID0gdGhpcy5zdGF0dXM7XG4gIGVycm9yLm1ldGhvZCA9IHRoaXMubWV0aG9kO1xuICBlcnJvci51cmwgPSB0aGlzLnVybDtcblxuICB0aGlzLmNhbGxiYWNrKGVycm9yKTtcbn07XG5cbi8vIFRoaXMgb25seSB3YXJucywgYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBzdGlsbCBsaWtlbHkgdG8gd29ya1xuUmVxdWVzdC5wcm90b3R5cGUuYWdlbnQgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnNvbGUud2FybignVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGluIGJyb3dzZXIgdmVyc2lvbiBvZiBzdXBlcmFnZW50Jyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUmVxdWVzdC5wcm90b3R5cGUuY2EgPSBSZXF1ZXN0LnByb3RvdHlwZS5hZ2VudDtcblJlcXVlc3QucHJvdG90eXBlLmJ1ZmZlciA9IFJlcXVlc3QucHJvdG90eXBlLmNhO1xuXG4vLyBUaGlzIHRocm93cywgYmVjYXVzZSBpdCBjYW4ndCBzZW5kL3JlY2VpdmUgZGF0YSBhcyBleHBlY3RlZFxuUmVxdWVzdC5wcm90b3R5cGUud3JpdGUgPSAoKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnU3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYnJvd3NlciB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQnXG4gICk7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5waXBlID0gUmVxdWVzdC5wcm90b3R5cGUud3JpdGU7XG5cbi8qKlxuICogQ2hlY2sgaWYgYG9iamAgaXMgYSBob3N0IG9iamVjdCxcbiAqIHdlIGRvbid0IHdhbnQgdG8gc2VyaWFsaXplIHRoZXNlIDopXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBob3N0IG9iamVjdFxuICogQHJldHVybiB7Qm9vbGVhbn0gaXMgYSBob3N0IG9iamVjdFxuICogQGFwaSBwcml2YXRlXG4gKi9cblJlcXVlc3QucHJvdG90eXBlLl9pc0hvc3QgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gIC8vIE5hdGl2ZSBvYmplY3RzIHN0cmluZ2lmeSB0byBbb2JqZWN0IEZpbGVdLCBbb2JqZWN0IEJsb2JdLCBbb2JqZWN0IEZvcm1EYXRhXSwgZXRjLlxuICByZXR1cm4gKFxuICAgIG9iamVjdCAmJlxuICAgIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG4gICAgIUFycmF5LmlzQXJyYXkob2JqZWN0KSAmJlxuICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpICE9PSAnW29iamVjdCBPYmplY3RdJ1xuICApO1xufTtcblxuLyoqXG4gKiBJbml0aWF0ZSByZXF1ZXN0LCBpbnZva2luZyBjYWxsYmFjayBgZm4ocmVzKWBcbiAqIHdpdGggYW4gaW5zdGFuY2VvZiBgUmVzcG9uc2VgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGZuKSB7XG4gIGlmICh0aGlzLl9lbmRDYWxsZWQpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICAnV2FybmluZzogLmVuZCgpIHdhcyBjYWxsZWQgdHdpY2UuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCBpbiBzdXBlcmFnZW50J1xuICAgICk7XG4gIH1cblxuICB0aGlzLl9lbmRDYWxsZWQgPSB0cnVlO1xuXG4gIC8vIHN0b3JlIGNhbGxiYWNrXG4gIHRoaXMuX2NhbGxiYWNrID0gZm4gfHwgbm9vcDtcblxuICAvLyBxdWVyeXN0cmluZ1xuICB0aGlzLl9maW5hbGl6ZVF1ZXJ5U3RyaW5nKCk7XG5cbiAgdGhpcy5fZW5kKCk7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5fc2V0VXBsb2FkVGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgLy8gdXBsb2FkIHRpbWVvdXQgaXQncyB3b2tycyBvbmx5IGlmIGRlYWRsaW5lIHRpbWVvdXQgaXMgb2ZmXG4gIGlmICh0aGlzLl91cGxvYWRUaW1lb3V0ICYmICF0aGlzLl91cGxvYWRUaW1lb3V0VGltZXIpIHtcbiAgICB0aGlzLl91cGxvYWRUaW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNlbGYuX3RpbWVvdXRFcnJvcihcbiAgICAgICAgJ1VwbG9hZCB0aW1lb3V0IG9mICcsXG4gICAgICAgIHNlbGYuX3VwbG9hZFRpbWVvdXQsXG4gICAgICAgICdFVElNRURPVVQnXG4gICAgICApO1xuICAgIH0sIHRoaXMuX3VwbG9hZFRpbWVvdXQpO1xuICB9XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuUmVxdWVzdC5wcm90b3R5cGUuX2VuZCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuX2Fib3J0ZWQpXG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2soXG4gICAgICBuZXcgRXJyb3IoJ1RoZSByZXF1ZXN0IGhhcyBiZWVuIGFib3J0ZWQgZXZlbiBiZWZvcmUgLmVuZCgpIHdhcyBjYWxsZWQnKVxuICAgICk7XG5cbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gIHRoaXMueGhyID0gcmVxdWVzdC5nZXRYSFIoKTtcbiAgY29uc3QgeyB4aHIgfSA9IHRoaXM7XG4gIGxldCBkYXRhID0gdGhpcy5fZm9ybURhdGEgfHwgdGhpcy5fZGF0YTtcblxuICB0aGlzLl9zZXRUaW1lb3V0cygpO1xuXG4gIC8vIHN0YXRlIGNoYW5nZVxuICB4aHIuYWRkRXZlbnRMaXN0ZW5lcigncmVhZHlzdGF0ZWNoYW5nZScsICgpID0+IHtcbiAgICBjb25zdCB7IHJlYWR5U3RhdGUgfSA9IHhocjtcbiAgICBpZiAocmVhZHlTdGF0ZSA+PSAyICYmIHNlbGYuX3Jlc3BvbnNlVGltZW91dFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQoc2VsZi5fcmVzcG9uc2VUaW1lb3V0VGltZXIpO1xuICAgIH1cblxuICAgIGlmIChyZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSW4gSUU5LCByZWFkcyB0byBhbnkgcHJvcGVydHkgKGUuZy4gc3RhdHVzKSBvZmYgb2YgYW4gYWJvcnRlZCBYSFIgd2lsbFxuICAgIC8vIHJlc3VsdCBpbiB0aGUgZXJyb3IgXCJDb3VsZCBub3QgY29tcGxldGUgdGhlIG9wZXJhdGlvbiBkdWUgdG8gZXJyb3IgYzAwYzAyM2ZcIlxuICAgIGxldCBzdGF0dXM7XG4gICAgdHJ5IHtcbiAgICAgIHN0YXR1cyA9IHhoci5zdGF0dXM7XG4gICAgfSBjYXRjaCB7XG4gICAgICBzdGF0dXMgPSAwO1xuICAgIH1cblxuICAgIGlmICghc3RhdHVzKSB7XG4gICAgICBpZiAoc2VsZi50aW1lZG91dCB8fCBzZWxmLl9hYm9ydGVkKSByZXR1cm47XG4gICAgICByZXR1cm4gc2VsZi5jcm9zc0RvbWFpbkVycm9yKCk7XG4gICAgfVxuXG4gICAgc2VsZi5lbWl0KCdlbmQnKTtcbiAgfSk7XG5cbiAgLy8gcHJvZ3Jlc3NcbiAgY29uc3QgaGFuZGxlUHJvZ3Jlc3MgPSAoZGlyZWN0aW9uLCBlKSA9PiB7XG4gICAgaWYgKGUudG90YWwgPiAwKSB7XG4gICAgICBlLnBlcmNlbnQgPSAoZS5sb2FkZWQgLyBlLnRvdGFsKSAqIDEwMDtcblxuICAgICAgaWYgKGUucGVyY2VudCA9PT0gMTAwKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChzZWxmLl91cGxvYWRUaW1lb3V0VGltZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGUuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgIHNlbGYuZW1pdCgncHJvZ3Jlc3MnLCBlKTtcbiAgfTtcblxuICBpZiAodGhpcy5oYXNMaXN0ZW5lcnMoJ3Byb2dyZXNzJykpIHtcbiAgICB0cnkge1xuICAgICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgaGFuZGxlUHJvZ3Jlc3MuYmluZChudWxsLCAnZG93bmxvYWQnKSk7XG4gICAgICBpZiAoeGhyLnVwbG9hZCkge1xuICAgICAgICB4aHIudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICBoYW5kbGVQcm9ncmVzcy5iaW5kKG51bGwsICd1cGxvYWQnKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQWNjZXNzaW5nIHhoci51cGxvYWQgZmFpbHMgaW4gSUUgZnJvbSBhIHdlYiB3b3JrZXIsIHNvIGp1c3QgcHJldGVuZCBpdCBkb2Vzbid0IGV4aXN0LlxuICAgICAgLy8gUmVwb3J0ZWQgaGVyZTpcbiAgICAgIC8vIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvODM3MjQ1L3htbGh0dHByZXF1ZXN0LXVwbG9hZC10aHJvd3MtaW52YWxpZC1hcmd1bWVudC13aGVuLXVzZWQtZnJvbS13ZWItd29ya2VyLWNvbnRleHRcbiAgICB9XG4gIH1cblxuICBpZiAoeGhyLnVwbG9hZCkge1xuICAgIHRoaXMuX3NldFVwbG9hZFRpbWVvdXQoKTtcbiAgfVxuXG4gIC8vIGluaXRpYXRlIHJlcXVlc3RcbiAgdHJ5IHtcbiAgICBpZiAodGhpcy51c2VybmFtZSAmJiB0aGlzLnBhc3N3b3JkKSB7XG4gICAgICB4aHIub3Blbih0aGlzLm1ldGhvZCwgdGhpcy51cmwsIHRydWUsIHRoaXMudXNlcm5hbWUsIHRoaXMucGFzc3dvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB4aHIub3Blbih0aGlzLm1ldGhvZCwgdGhpcy51cmwsIHRydWUpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gc2VlICMxMTQ5XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2soZXJyKTtcbiAgfVxuXG4gIC8vIENPUlNcbiAgaWYgKHRoaXMuX3dpdGhDcmVkZW50aWFscykgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG5cbiAgLy8gYm9keVxuICBpZiAoXG4gICAgIXRoaXMuX2Zvcm1EYXRhICYmXG4gICAgdGhpcy5tZXRob2QgIT09ICdHRVQnICYmXG4gICAgdGhpcy5tZXRob2QgIT09ICdIRUFEJyAmJlxuICAgIHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJyAmJlxuICAgICF0aGlzLl9pc0hvc3QoZGF0YSlcbiAgKSB7XG4gICAgLy8gc2VyaWFsaXplIHN0dWZmXG4gICAgY29uc3QgY29udGVudFR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIGxldCBzZXJpYWxpemUgPVxuICAgICAgdGhpcy5fc2VyaWFsaXplciB8fFxuICAgICAgcmVxdWVzdC5zZXJpYWxpemVbY29udGVudFR5cGUgPyBjb250ZW50VHlwZS5zcGxpdCgnOycpWzBdIDogJyddO1xuICAgIGlmICghc2VyaWFsaXplICYmIGlzSlNPTihjb250ZW50VHlwZSkpIHtcbiAgICAgIHNlcmlhbGl6ZSA9IHJlcXVlc3Quc2VyaWFsaXplWydhcHBsaWNhdGlvbi9qc29uJ107XG4gICAgfVxuXG4gICAgaWYgKHNlcmlhbGl6ZSkgZGF0YSA9IHNlcmlhbGl6ZShkYXRhKTtcbiAgfVxuXG4gIC8vIHNldCBoZWFkZXIgZmllbGRzXG4gIGZvciAoY29uc3QgZmllbGQgaW4gdGhpcy5oZWFkZXIpIHtcbiAgICBpZiAodGhpcy5oZWFkZXJbZmllbGRdID09PSBudWxsKSBjb250aW51ZTtcblxuICAgIGlmIChoYXNPd24odGhpcy5oZWFkZXIsIGZpZWxkKSlcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGZpZWxkLCB0aGlzLmhlYWRlcltmaWVsZF0pO1xuICB9XG5cbiAgaWYgKHRoaXMuX3Jlc3BvbnNlVHlwZSkge1xuICAgIHhoci5yZXNwb25zZVR5cGUgPSB0aGlzLl9yZXNwb25zZVR5cGU7XG4gIH1cblxuICAvLyBzZW5kIHN0dWZmXG4gIHRoaXMuZW1pdCgncmVxdWVzdCcsIHRoaXMpO1xuXG4gIC8vIElFMTEgeGhyLnNlbmQodW5kZWZpbmVkKSBzZW5kcyAndW5kZWZpbmVkJyBzdHJpbmcgYXMgUE9TVCBwYXlsb2FkIChpbnN0ZWFkIG9mIG5vdGhpbmcpXG4gIC8vIFdlIG5lZWQgbnVsbCBoZXJlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gIHhoci5zZW5kKHR5cGVvZiBkYXRhID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiBkYXRhKTtcbn07XG5cbnJlcXVlc3QuYWdlbnQgPSAoKSA9PiBuZXcgQWdlbnQoKTtcblxuZm9yIChjb25zdCBtZXRob2Qgb2YgWydHRVQnLCAnUE9TVCcsICdPUFRJT05TJywgJ1BBVENIJywgJ1BVVCcsICdERUxFVEUnXSkge1xuICBBZ2VudC5wcm90b3R5cGVbbWV0aG9kLnRvTG93ZXJDYXNlKCldID0gZnVuY3Rpb24gKHVybCwgZm4pIHtcbiAgICBjb25zdCByZXF1ZXN0XyA9IG5ldyByZXF1ZXN0LlJlcXVlc3QobWV0aG9kLCB1cmwpO1xuICAgIHRoaXMuX3NldERlZmF1bHRzKHJlcXVlc3RfKTtcbiAgICBpZiAoZm4pIHtcbiAgICAgIHJlcXVlc3RfLmVuZChmbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3RfO1xuICB9O1xufVxuXG5BZ2VudC5wcm90b3R5cGUuZGVsID0gQWdlbnQucHJvdG90eXBlLmRlbGV0ZTtcblxuLyoqXG4gKiBHRVQgYHVybGAgd2l0aCBvcHRpb25hbCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LmdldCA9ICh1cmwsIGRhdGEsIGZuKSA9PiB7XG4gIGNvbnN0IHJlcXVlc3RfID0gcmVxdWVzdCgnR0VUJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcXVlc3RfLnF1ZXJ5KGRhdGEpO1xuICBpZiAoZm4pIHJlcXVlc3RfLmVuZChmbik7XG4gIHJldHVybiByZXF1ZXN0Xztcbn07XG5cbi8qKlxuICogSEVBRCBgdXJsYCB3aXRoIG9wdGlvbmFsIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfEZ1bmN0aW9ufSBbZGF0YV0gb3IgZm5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QuaGVhZCA9ICh1cmwsIGRhdGEsIGZuKSA9PiB7XG4gIGNvbnN0IHJlcXVlc3RfID0gcmVxdWVzdCgnSEVBRCcsIHVybCk7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gZGF0YTtcbiAgICBkYXRhID0gbnVsbDtcbiAgfVxuXG4gIGlmIChkYXRhKSByZXF1ZXN0Xy5xdWVyeShkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIE9QVElPTlMgcXVlcnkgdG8gYHVybGAgd2l0aCBvcHRpb25hbCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0Lm9wdGlvbnMgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ09QVElPTlMnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIERFTEVURSBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR9IFtkYXRhXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVsKHVybCwgZGF0YSwgZm4pIHtcbiAgY29uc3QgcmVxdWVzdF8gPSByZXF1ZXN0KCdERUxFVEUnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59XG5cbnJlcXVlc3QuZGVsID0gZGVsO1xucmVxdWVzdC5kZWxldGUgPSBkZWw7XG5cbi8qKlxuICogUEFUQ0ggYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfSBbZGF0YV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QucGF0Y2ggPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BBVENIJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcXVlc3RfLnNlbmQoZGF0YSk7XG4gIGlmIChmbikgcmVxdWVzdF8uZW5kKGZuKTtcbiAgcmV0dXJuIHJlcXVlc3RfO1xufTtcblxuLyoqXG4gKiBQT1NUIGB1cmxgIHdpdGggb3B0aW9uYWwgYGRhdGFgIGFuZCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZH0gW2RhdGFdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LnBvc3QgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BPU1QnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIFBVVCBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5wdXQgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BVVCcsIHVybCk7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gZGF0YTtcbiAgICBkYXRhID0gbnVsbDtcbiAgfVxuXG4gIGlmIChkYXRhKSByZXF1ZXN0Xy5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcXVlc3RfLmVuZChmbik7XG4gIHJldHVybiByZXF1ZXN0Xztcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxJQUFKOztBQUNBLElBQUksT0FBT0MsTUFBUCxLQUFrQixXQUF0QixFQUFtQztFQUNqQztFQUNBRCxJQUFJLEdBQUdDLE1BQVA7QUFDRCxDQUhELE1BR08sSUFBSSxPQUFPQyxJQUFQLEtBQWdCLFdBQXBCLEVBQWlDO0VBQ3RDO0VB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","import base64 from 'base64-js';\n\nfunction padding(str) {\n var mod = str.length % 4;\n var pad = 4 - mod;\n\n if (mod === 0) {\n return str;\n }\n\n return str + new Array(1 + pad).join('=');\n}\n\nfunction stringToByteArray(str) {\n var arr = new Array(str.length);\n for (var a = 0; a < str.length; a++) {\n arr[a] = str.charCodeAt(a);\n }\n return arr;\n}\n\nfunction byteArrayToString(array) {\n var result = '';\n for (var i = 0; i < array.length; i++) {\n result += String.fromCharCode(array[i]);\n }\n return result;\n}\n\nfunction encode(str) {\n return base64\n .fromByteArray(stringToByteArray(str))\n .replace(/\\+/g, '-') // Convert '+' to '-'\n .replace(/\\//g, '_'); // Convert '/' to '_'\n}\n\nfunction decode(str) {\n str = padding(str)\n .replace(/-/g, '+') // Convert '-' to '+'\n .replace(/_/g, '/'); // Convert '_' to '/'\n\n return byteArrayToString(base64.toByteArray(str));\n}\n\nexport default {\n encode: encode,\n decode: decode\n};\n","module.exports = { raw: '9.25.0' };\n","var toString = Object.prototype.toString;\n\nfunction attribute(o, attr, type, text) {\n type = type === 'array' ? 'object' : type;\n if (o && typeof o[attr] !== type) {\n throw new Error(text);\n }\n}\n\nfunction variable(o, type, text) {\n if (typeof o !== type) {\n throw new Error(text);\n }\n}\n\nfunction value(o, values, text) {\n if (values.indexOf(o) === -1) {\n throw new Error(text);\n }\n}\n\nfunction check(o, config, attributes) {\n if (!config.optional || o) {\n variable(o, config.type, config.message);\n }\n if (config.type === 'object' && attributes) {\n var keys = Object.keys(attributes);\n\n for (var index = 0; index < keys.length; index++) {\n var a = keys[index];\n if (!attributes[a].optional || o[a]) {\n if (!attributes[a].condition || attributes[a].condition(o)) {\n attribute(o, a, attributes[a].type, attributes[a].message);\n if (attributes[a].values) {\n value(o[a], attributes[a].values, attributes[a].value_message);\n }\n }\n }\n }\n }\n}\n\n/**\n * Wrap `Array.isArray` Polyfill for IE9\n * source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\n *\n * @param {Array} array\n * @private\n */\nfunction isArray(array) {\n if (this.supportsIsArray()) {\n return Array.isArray(array);\n }\n\n return toString.call(array) === '[object Array]';\n}\n\nfunction supportsIsArray() {\n return Array.isArray != null;\n}\n\nexport default {\n check: check,\n attribute: attribute,\n variable: variable,\n value: value,\n isArray: isArray,\n supportsIsArray: supportsIsArray\n};\n","/* eslint-disable no-continue */\n\nfunction get() {\n if (!Object.assign) {\n return objectAssignPolyfill;\n }\n\n return Object.assign;\n}\n\nfunction objectAssignPolyfill(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (\n var nextIndex = 0, len = keysArray.length;\n nextIndex < len;\n nextIndex++\n ) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nexport default {\n get: get,\n objectAssignPolyfill: objectAssignPolyfill\n};\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\n\nimport assert from './assert';\nimport objectAssign from './object-assign';\n\nfunction pick(object, keys) {\n return keys.reduce(function(prev, key) {\n if (object[key]) {\n prev[key] = object[key];\n }\n return prev;\n }, {});\n}\n\nfunction getKeysNotIn(obj, allowedKeys) {\n var notAllowed = [];\n for (var key in obj) {\n if (allowedKeys.indexOf(key) === -1) {\n notAllowed.push(key);\n }\n }\n return notAllowed;\n}\n\nfunction objectValues(obj) {\n var values = [];\n for (var key in obj) {\n values.push(obj[key]);\n }\n return values;\n}\n\nfunction extend() {\n var params = objectValues(arguments);\n params.unshift({});\n return objectAssign.get().apply(undefined, params);\n}\n\nfunction merge(object, keys) {\n return {\n base: keys ? pick(object, keys) : object,\n with: function(object2, keys2) {\n object2 = keys2 ? pick(object2, keys2) : object2;\n return extend(this.base, object2);\n }\n };\n}\n\nfunction blacklist(object, blacklistedKeys) {\n return Object.keys(object).reduce(function(p, key) {\n if (blacklistedKeys.indexOf(key) === -1) {\n p[key] = object[key];\n }\n return p;\n }, {});\n}\n\nfunction camelToSnake(str) {\n var newKey = '';\n var index = 0;\n var code;\n var wasPrevNumber = true;\n var wasPrevUppercase = true;\n\n while (index < str.length) {\n code = str.charCodeAt(index);\n if (\n (!wasPrevUppercase && code >= 65 && code <= 90) ||\n (!wasPrevNumber && code >= 48 && code <= 57)\n ) {\n newKey += '_';\n newKey += str[index].toLowerCase();\n } else {\n newKey += str[index].toLowerCase();\n }\n wasPrevNumber = code >= 48 && code <= 57;\n wasPrevUppercase = code >= 65 && code <= 90;\n index++;\n }\n\n return newKey;\n}\n\nfunction snakeToCamel(str) {\n var parts = str.split('_');\n return parts.reduce(function(p, c) {\n return p + c.charAt(0).toUpperCase() + c.slice(1);\n }, parts.shift());\n}\n\nfunction toSnakeCase(object, exceptions) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n exceptions = exceptions || [];\n\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? camelToSnake(key) : key;\n p[newKey] = toSnakeCase(object[key]);\n return p;\n }, {});\n}\n\nfunction toCamelCase(object, exceptions, options) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n\n exceptions = exceptions || [];\n options = options || {};\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? snakeToCamel(key) : key;\n\n p[newKey] = toCamelCase(object[newKey] || object[key], [], options);\n\n if (options.keepOriginal) {\n p[key] = toCamelCase(object[key], [], options);\n }\n return p;\n }, {});\n}\n\nfunction getLocationFromUrl(href) {\n var match = href.match(\n /^(https?:|file:|chrome-extension:)\\/\\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\\?[^#]*|)(#.*|)$/\n );\n return (\n match && {\n href: href,\n protocol: match[1],\n host: match[2],\n hostname: match[3],\n port: match[4],\n pathname: match[5],\n search: match[6],\n hash: match[7]\n }\n );\n}\n\nfunction getOriginFromUrl(url) {\n if (!url) {\n return undefined;\n }\n var parsed = getLocationFromUrl(url);\n if (!parsed) {\n return null;\n }\n var origin = parsed.protocol + '//' + parsed.hostname;\n if (parsed.port) {\n origin += ':' + parsed.port;\n }\n return origin;\n}\n\nfunction trim(options, key) {\n var trimmed = extend(options);\n if (options[key]) {\n trimmed[key] = options[key].trim();\n }\n return trimmed;\n}\n\nfunction trimMultiple(options, keys) {\n return keys.reduce(trim, options);\n}\n\nfunction trimUserDetails(options) {\n return trimMultiple(options, ['username', 'email', 'phoneNumber']);\n}\n\n/**\n * Updates the value of a property on the given object, using a deep path selector.\n * @param {object} obj The object to set the property value on\n * @param {string|array} path The path to the property that should have its value updated. e.g. 'prop1.prop2.prop3' or ['prop1', 'prop2', 'prop3']\n * @param {any} value The value to set\n * @ignore\n */\nfunction updatePropertyOn(obj, path, value) {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n\n var next = path[0];\n\n if (obj.hasOwnProperty(next)) {\n if (path.length === 1) {\n obj[next] = value;\n } else {\n updatePropertyOn(obj[next], path.slice(1), value);\n }\n }\n}\n\nexport default {\n toSnakeCase: toSnakeCase,\n toCamelCase: toCamelCase,\n blacklist: blacklist,\n merge: merge,\n pick: pick,\n getKeysNotIn: getKeysNotIn,\n extend: extend,\n getOriginFromUrl: getOriginFromUrl,\n getLocationFromUrl: getLocationFromUrl,\n trimUserDetails: trimUserDetails,\n updatePropertyOn: updatePropertyOn\n};\n","/* eslint-disable no-param-reassign */\nimport request from 'superagent';\nimport base64Url from './base64_url';\nimport version from '../version';\nimport objectHelper from './object';\n\n// ------------------------------------------------ RequestWrapper\n\nfunction RequestWrapper(req) {\n this.request = req;\n this.method = req.method;\n this.url = req.url;\n this.body = req._data;\n this.headers = req._header;\n}\n\nRequestWrapper.prototype.abort = function() {\n this.request.abort();\n};\n\nRequestWrapper.prototype.getMethod = function() {\n return this.method;\n};\n\nRequestWrapper.prototype.getBody = function() {\n return this.body;\n};\n\nRequestWrapper.prototype.getUrl = function() {\n return this.url;\n};\n\nRequestWrapper.prototype.getHeaders = function() {\n return this.headers;\n};\n\n// ------------------------------------------------ RequestObj\n\nfunction RequestObj(req) {\n this.request = req;\n}\n\nRequestObj.prototype.set = function(key, value) {\n this.request = this.request.set(key, value);\n return this;\n};\n\nRequestObj.prototype.send = function(body) {\n this.request = this.request.send(objectHelper.trimUserDetails(body));\n return this;\n};\n\nRequestObj.prototype.withCredentials = function() {\n this.request = this.request.withCredentials();\n return this;\n};\n\nRequestObj.prototype.end = function(cb) {\n this.request.end(cb);\n return new RequestWrapper(this.request);\n};\n\n// ------------------------------------------------ RequestBuilder\n\nfunction RequestBuilder(options) {\n this._sendTelemetry =\n options._sendTelemetry === false ? options._sendTelemetry : true;\n this._telemetryInfo = options._telemetryInfo || null;\n this._timesToRetryFailedRequests = options._timesToRetryFailedRequests;\n this.headers = options.headers || {};\n this._universalLoginPage = options.universalLoginPage;\n}\n\nRequestBuilder.prototype.setCommonConfiguration = function(\n ongoingRequest,\n options\n) {\n options = options || {};\n\n if (this._timesToRetryFailedRequests > 0) {\n ongoingRequest = ongoingRequest.retry(this._timesToRetryFailedRequests);\n }\n\n if (options.noHeaders) {\n return ongoingRequest;\n }\n\n var headers = this.headers;\n ongoingRequest = ongoingRequest.set('Content-Type', 'application/json');\n\n if (options.xRequestLanguage) {\n ongoingRequest = ongoingRequest.set(\n 'X-Request-Language',\n options.xRequestLanguage\n );\n }\n\n var keys = Object.keys(this.headers);\n\n for (var a = 0; a < keys.length; a++) {\n ongoingRequest = ongoingRequest.set(keys[a], headers[keys[a]]);\n }\n\n if (this._sendTelemetry) {\n ongoingRequest = ongoingRequest.set(\n 'Auth0-Client',\n this.getTelemetryData()\n );\n }\n\n return ongoingRequest;\n};\n\nRequestBuilder.prototype.getTelemetryData = function() {\n var telemetryName = this._universalLoginPage ? 'auth0.js-ulp' : 'auth0.js';\n var clientInfo = { name: telemetryName, version: version.raw };\n if (this._telemetryInfo) {\n clientInfo = objectHelper.extend({}, this._telemetryInfo);\n clientInfo.env = objectHelper.extend({}, this._telemetryInfo.env);\n clientInfo.env[telemetryName] = version.raw;\n }\n var jsonClientInfo = JSON.stringify(clientInfo);\n return base64Url.encode(jsonClientInfo);\n};\n\nRequestBuilder.prototype.get = function(url, options) {\n return new RequestObj(this.setCommonConfiguration(request.get(url), options));\n};\n\nRequestBuilder.prototype.post = function(url, options) {\n return new RequestObj(\n this.setCommonConfiguration(request.post(url), options)\n );\n};\n\nRequestBuilder.prototype.patch = function(url, options) {\n return new RequestObj(\n this.setCommonConfiguration(request.patch(url), options)\n );\n};\n\nexport default RequestBuilder;\n","import objectHelper from './object';\n\nfunction redirect(url) {\n getWindow().location = url;\n}\n\nfunction getDocument() {\n return getWindow().document;\n}\n\nfunction getWindow() {\n return window;\n}\n\nfunction getOrigin() {\n var location = getWindow().location;\n var origin = location.origin;\n\n if (!origin) {\n origin = objectHelper.getOriginFromUrl(location.href);\n }\n\n return origin;\n}\n\nexport default {\n redirect: redirect,\n getDocument: getDocument,\n getWindow: getWindow,\n getOrigin: getOrigin\n};\n","function DummyStorage() {}\n\nDummyStorage.prototype.getItem = function() {\n return null;\n};\n\nDummyStorage.prototype.removeItem = function() {};\n\nDummyStorage.prototype.setItem = function() {};\n\nexport default DummyStorage;\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","import Cookie from 'js-cookie';\nimport objectHelper from '../object';\nimport windowHandler from '../window';\n\nfunction buildCompatCookieKey(key) {\n return '_' + key + '_compat';\n}\n\nfunction CookieStorage(options) {\n this._options = options || {};\n}\n\nCookieStorage.prototype.getItem = function (key) {\n var cookie = Cookie.get(key);\n\n return cookie || Cookie.get(buildCompatCookieKey(key));\n};\n\nCookieStorage.prototype.removeItem = function (key) {\n var params = {};\n if (this._options.cookieDomain) {\n params.domain = this._options.cookieDomain;\n }\n Cookie.remove(key, params);\n Cookie.remove(buildCompatCookieKey(key), params);\n};\n\nCookieStorage.prototype.setItem = function (key, value, options) {\n var params = objectHelper.extend(\n {\n expires: 1 // 1 day\n },\n options\n );\n\n if (windowHandler.getWindow().location.protocol === 'https:') {\n params.secure = true;\n params.sameSite = 'none';\n\n if (this._options.legacySameSiteCookie) {\n // Save a compatibility cookie without sameSite='none' for browsers that don't support it.\n var legacyOptions = objectHelper.blacklist(params, ['sameSite']);\n Cookie.set(buildCompatCookieKey(key), value, legacyOptions);\n }\n }\n\n if (this._options.cookieDomain) {\n params.domain = this._options.cookieDomain;\n }\n\n Cookie.set(key, value, params);\n};\n\nexport default CookieStorage;\n","/* eslint-disable no-console */\n\nfunction Warn(options) {\n this.disableWarnings = options.disableWarnings;\n}\n\nWarn.prototype.warning = function(message) {\n if (this.disableWarnings) {\n return;\n }\n\n console.warn(message);\n};\n\nexport default Warn;\n","import windowHandler from '../window';\nimport DummyStorage from './dummy';\nimport CookieStorage from './cookie';\nimport Warn from '../warn';\n\nfunction StorageHandler(options) {\n this.warn = new Warn({});\n this.storage = new CookieStorage(options);\n\n if (options.__tryLocalStorageFirst !== true) {\n return;\n }\n\n try {\n // some browsers throw an error when trying to access localStorage\n // when localStorage is disabled.\n var localStorage = windowHandler.getWindow().localStorage;\n if (localStorage) {\n this.storage = localStorage;\n }\n } catch (e) {\n this.warn.warning(e);\n this.warn.warning(\"Can't use localStorage. Using CookieStorage instead.\");\n }\n}\n\nStorageHandler.prototype.failover = function () {\n if (this.storage instanceof DummyStorage) {\n this.warn.warning('DummyStorage: ignore failover');\n return;\n } else if (this.storage instanceof CookieStorage) {\n this.warn.warning('CookieStorage: failing over DummyStorage');\n this.storage = new DummyStorage();\n } else {\n this.warn.warning('LocalStorage: failing over CookieStorage');\n this.storage = new CookieStorage();\n }\n};\n\nStorageHandler.prototype.getItem = function (key) {\n try {\n return this.storage.getItem(key);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.getItem(key);\n }\n};\n\nStorageHandler.prototype.removeItem = function (key) {\n try {\n return this.storage.removeItem(key);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.removeItem(key);\n }\n};\n\nStorageHandler.prototype.setItem = function (key, value, options) {\n try {\n return this.storage.setItem(key, value, options);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.setItem(key, value, options);\n }\n};\n\nexport default StorageHandler;\n","import StorageHandler from './storage/handler';\n\nfunction Storage(options) {\n this.handler = new StorageHandler(options);\n}\n\nStorage.prototype.getItem = function(key) {\n var value = this.handler.getItem(key);\n try {\n return JSON.parse(value);\n } catch (_) {\n return value;\n }\n};\nStorage.prototype.removeItem = function(key) {\n return this.handler.removeItem(key);\n};\nStorage.prototype.setItem = function(key, value, options) {\n var json = JSON.stringify(value);\n return this.handler.setItem(key, json, options);\n};\n\nexport default Storage;\n","import Storage from './storage';\n\nfunction SSODataStorage(options) {\n this.storage = new Storage(options);\n}\n\nSSODataStorage.prototype.set = function(connection, sub) {\n var ssodata = {\n lastUsedConnection: connection,\n lastUsedSub: sub\n };\n this.storage.setItem('auth0.ssodata', JSON.stringify(ssodata));\n};\nSSODataStorage.prototype.get = function() {\n var ssodata = this.storage.getItem('auth0.ssodata');\n if (!ssodata) {\n return;\n }\n return JSON.parse(ssodata);\n};\n\nexport default SSODataStorage;\n","function buildResponse(error, description) {\n return {\n error: error,\n errorDescription: description\n };\n}\n\nfunction invalidToken(description) {\n return buildResponse('invalid_token', description);\n}\n\nexport default {\n buildResponse: buildResponse,\n invalidToken: invalidToken\n};\n","import error from './error';\nimport objectHelper from './object';\n\nfunction wrapCallback(cb, options) {\n options = options || {};\n options.ignoreCasing = options.ignoreCasing ? options.ignoreCasing : false;\n\n return function(err, data) {\n var errObj;\n\n if (!err && !data) {\n return cb(error.buildResponse('generic_error', 'Something went wrong'));\n }\n\n if (!err && data.err) {\n err = data.err;\n data = null;\n }\n\n if (!err && data.error) {\n err = data;\n data = null;\n }\n\n if (err) {\n errObj = {\n original: err\n };\n\n objectHelper.updatePropertyOn(\n errObj,\n 'original.response.req._data.password',\n '*****'\n );\n\n if (err.response && err.response.statusCode) {\n errObj.statusCode = err.response.statusCode;\n }\n\n if (err.response && err.response.statusText) {\n errObj.statusText = err.response.statusText;\n }\n\n if (err.response && err.response.body) {\n err = err.response.body;\n }\n\n if (err.err) {\n err = err.err;\n }\n\n errObj.code =\n err.code || err.error || err.error_code || err.status || null;\n\n errObj.description =\n err.errorDescription ||\n err.error_description ||\n err.description ||\n err.error ||\n err.details ||\n err.err ||\n null;\n\n if (options.forceLegacyError) {\n errObj.error = errObj.code;\n errObj.error_description = errObj.description;\n }\n\n if (err.error_codes && err.error_details) {\n errObj.errorDetails = {\n codes: err.error_codes,\n details: err.error_details\n };\n }\n\n if (err.name) {\n errObj.name = err.name;\n }\n\n if (err.policy) {\n errObj.policy = err.policy;\n }\n\n return cb(errObj);\n }\n\n if (\n data.type &&\n (data.type === 'text/html' || data.type === 'text/plain')\n ) {\n return cb(null, data.text);\n }\n\n if (options.ignoreCasing) {\n return cb(null, data.body || data);\n }\n\n return cb(\n null,\n objectHelper.toCamelCase(data.body || data, [], {\n keepOriginal: options.keepOriginalCasing\n })\n );\n };\n}\n\nexport default wrapCallback;\n","// For future reference:,\n// The only parameters that should be allowed are parameters\n// defined by the specification, or existing parameters that we\n// need for compatibility\n\nimport objectHelper from './object';\n\nvar tokenParams = [\n // auth0\n 'realm',\n 'audience',\n 'otp',\n // oauth2\n 'client_id',\n 'client_secret',\n 'redirect_uri',\n 'scope',\n 'code',\n 'grant_type',\n 'username',\n 'password',\n 'refresh_token',\n 'assertion',\n 'client_assertion',\n 'client_assertion_type',\n 'code_verifier'\n];\n\nvar authorizeParams = [\n // auth0\n 'connection',\n 'connection_scope',\n 'auth0Client',\n 'owp',\n 'device',\n 'realm',\n 'organization',\n 'invitation',\n\n 'protocol',\n '_csrf',\n '_intstate',\n 'login_ticket',\n\n // oauth2\n 'client_id',\n 'response_type',\n 'response_mode',\n 'redirect_uri',\n 'audience',\n 'scope',\n 'state',\n 'nonce',\n 'display',\n 'prompt',\n 'screen_hint',\n 'max_age',\n 'ui_locales',\n 'claims_locales',\n 'id_token_hint',\n 'login_hint',\n 'acr_values',\n 'claims',\n 'registration',\n 'request',\n 'request_uri',\n 'code_challenge',\n 'code_challenge_method',\n\n // ADDITIONAL_PARAMETERS:\n // https://auth0.com/docs/api/authentication?javascript#social\n 'access_type',\n 'display'\n];\n\nfunction oauthAuthorizeParams(warn, params) {\n var notAllowed = objectHelper.getKeysNotIn(params, authorizeParams);\n\n if (notAllowed.length > 0) {\n warn.warning(\n 'Following parameters are not allowed on the `/authorize` endpoint: [' +\n notAllowed.join(',') +\n ']'\n );\n }\n\n return params;\n}\n\nfunction oauthTokenParams(warn, params) {\n return objectHelper.pick(params, tokenParams);\n}\n\nexport default {\n oauthTokenParams: oauthTokenParams,\n oauthAuthorizeParams: oauthAuthorizeParams\n};\n","var t=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r=e(function(e,r){e.exports=function(){function e(t){return\"function\"==typeof t}var r=Array.isArray?Array.isArray:function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},i=0,n=void 0,o=void 0,s=function(t,e){l[i]=t,l[i+1]=e,2===(i+=2)&&(o?o(d):w())},h=\"undefined\"!=typeof window?window:void 0,u=h||{},a=u.MutationObserver||u.WebKitMutationObserver,f=\"undefined\"==typeof self&&\"undefined\"!=typeof process&&\"[object process]\"==={}.toString.call(process),c=\"undefined\"!=typeof Uint8ClampedArray&&\"undefined\"!=typeof importScripts&&\"undefined\"!=typeof MessageChannel;function p(){var t=setTimeout;return function(){return t(d,1)}}var l=new Array(1e3);function d(){for(var t=0;t>>2]|=(r[o>>>2]>>>24-o%4*8&255)<<24-(i+o)%4*8;else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join(\"\")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new f.init(r,e/2)}},l=c.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255));return i.join(\"\")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new f.init(r,e)}},d=c.Utf8={stringify:function(t){try{return decodeURIComponent(escape(l.stringify(t)))}catch(t){throw new Error(\"Malformed UTF-8 data\")}},parse:function(t){return l.parse(unescape(encodeURIComponent(t)))}},m=u.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new f.init,this._nDataBytes=0},_append:function(t){\"string\"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,h=o/(4*s),u=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*s,a=e.min(4*u,o);if(u){for(var c=0;c>>7)^(d<<14|d>>>18)^d>>>3)+a[l-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+a[l-16]}var v=i&n^i&o^n&o,y=p+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&f^~h&c)+u[l]+a[l];p=c,c=f,f=h,h=s+y|0,s=o,o=n,n=i,i=y+(((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+v)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+h|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+p|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(f),e.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)}),s=e(function(t,e){var r,i;t.exports=(i=(r=n).lib.WordArray,r.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,h=0;h<4&&o+.75*h>>6*(3-h)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join(\"\")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=(h|u)<<24-o%4*8,o++}return i.create(n,o)}(t,e,n)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"},r.enc.Base64)}),h=e(function(t,e){t.exports=n.enc.Hex}),u=e(function(e,r){(function(){var t;function r(t,e,r){null!=t&&(\"number\"==typeof t?this.fromNumber(t,e,r):this.fromString(t,null==e&&\"string\"!=typeof t?256:e))}function i(){return new r(null)}var n=\"undefined\"!=typeof navigator;n&&\"Microsoft Internet Explorer\"==navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(var s=32767&e,h=e>>15;--o>=0;){var u=32767&this[t],a=this[t++]>>15,f=h*u+a*s;n=((u=s*u+((32767&f)<<15)+r[i]+(1073741823&n))>>>30)+(f>>>15)+h*a+(n>>>30),r[i++]=1073741823&u}return n},t=30):n&&\"Netscape\"!=navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(;--o>=0;){var s=e*this[t++]+r[i]+n;n=Math.floor(s/67108864),r[i++]=67108863&s}return n},t=26):(r.prototype.am=function(t,e,r,i,n,o){for(var s=16383&e,h=e>>14;--o>=0;){var u=16383&this[t],a=this[t++]>>14,f=h*u+a*s;n=((u=s*u+((16383&f)<<14)+r[i]+n)>>28)+(f>>14)+h*a,r[i++]=268435455&u}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function p(t){this.m=t}function l(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function w(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function T(){}function b(t){return t}function _(t){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}p.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},p.prototype.revert=function(t){return t},p.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},p.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},p.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},l.prototype.convert=function(t){var e=i();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(r.ZERO)>0&&this.m.subTo(e,e),e},l.prototype.revert=function(t){var e=i();return t.copyTo(e),this.reduce(e),e},l.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,i,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},l.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},l.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},r.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},r.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},r.prototype.fromString=function(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else{if(4!=e)return void this.fromRadix(t,e);i=2}this.t=0,this.s=0;for(var n=t.length,o=!1,s=0;--n>=0;){var h=8==i?255&t[n]:a(t,n);h<0?\"-\"==t.charAt(n)&&(o=!0):(o=!1,0==s?this[this.t++]=h:s+i>this.DB?(this[this.t-1]|=(h&(1<>this.DB-s):this[this.t-1]|=h<=this.DB&&(s-=this.DB))}8==i&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},r.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},r.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>n|h,h=(this[r]&o)<=0;--r)e[r]=0;e[s]=h,e.t=this.t+s+1,e.s=this.s,e.clamp()},r.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var i=t%this.DB,n=this.DB-i,o=(1<>i;for(var s=r+1;s>i;i>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i-=t.s}e.s=i<0?-1:0,i<-1?e[r++]=this.DV+i:i>0&&(e[r++]=i),e.t=r,e.clamp()},r.prototype.multiplyTo=function(t,e){var i=this.abs(),n=t.abs(),o=i.t;for(e.t=o+n.t;--o>=0;)e[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},r.prototype.divRemTo=function(t,e,n){var o=t.abs();if(!(o.t<=0)){var s=this.abs();if(s.t0?(o.lShiftTo(f,h),s.lShiftTo(f,n)):(o.copyTo(h),s.copyTo(n));var p=h.t,l=h[p-1];if(0!=l){var d=l*(1<1?h[p-2]>>this.F2:0),m=this.FV/d,v=(1<=0&&(n[n.t++]=1,n.subTo(T,n)),r.ONE.dlShiftTo(p,T),T.subTo(h,h);h.t=0;){var b=n[--g]==l?this.DM:Math.floor(n[g]*m+(n[g-1]+y)*v);if((n[g]+=h.am(0,b,n,w,0,p))0&&n.rShiftTo(f,n),u<0&&r.ZERO.subTo(n,n)}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(t,e){if(t>4294967295||t<1)return r.ONE;var n=i(),o=i(),s=e.convert(this),h=c(t)-1;for(s.copyTo(n);--h>=0;)if(e.sqrTo(n,o),(t&1<0)e.mulTo(o,s,n);else{var u=n;n=o,o=u}return e.revert(n)},r.prototype.toString=function(t){if(this.s<0)return\"-\"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,i=(1<0)for(h>h)>0&&(n=!0,o=u(r));s>=0;)h>(h+=this.DB-e)):(r=this[s]>>(h-=e)&i,h<=0&&(h+=this.DB,--s)),r>0&&(n=!0),n&&(o+=u(r));return n?o:\"0\"},r.prototype.negate=function(){var t=i();return r.ZERO.subTo(this,t),t},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+c(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(t){var e=i();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(r.ZERO)>0&&t.subTo(e,e),e},r.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new p(e):new l(e),this.exp(t,r)},r.ZERO=f(0),r.ONE=f(1),T.prototype.convert=b,T.prototype.revert=b,T.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},T.prototype.sqrTo=function(t,e){t.squareTo(e)},_.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=i();return t.copyTo(e),this.reduce(e),e},_.prototype.revert=function(t){return t},_.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},_.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},_.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var S,A,D,B=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],x=(1<<26)/B[B.length-1];function E(){var t;t=(new Date).getTime(),A[D++]^=255&t,A[D++]^=t>>8&255,A[D++]^=t>>16&255,A[D++]^=t>>24&255,D>=j&&(D-=j)}if(r.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},r.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return\"0\";var e=this.chunkSize(t),r=Math.pow(t,e),n=f(r),o=i(),s=i(),h=\"\";for(this.divRemTo(n,o,s);o.signum()>0;)h=(r+s.intValue()).toString(t).substr(1)+h,o.divRemTo(n,o,s);return s.intValue().toString(t)+h},r.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var i=this.chunkSize(e),n=Math.pow(e,i),o=!1,s=0,h=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(h,0),s=0,h=0))}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(h,0)),o&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(t,e,i){if(\"number\"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(r.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(r.ONE.shiftLeft(t-1),this);else{var n=new Array,o=7&t;n.length=1+(t>>3),e.nextBytes(n),o>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i+=t.s}e.s=i<0?-1:0,i>0?e[r++]=i:i<-1&&(e[r++]=this.DV+i),e.t=r,e.clamp()},r.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},r.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},r.prototype.multiplyLowerTo=function(t,e,r){var i,n=Math.min(this.t+t.t,e);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(e-this.t,0);i0)if(0==e)r=this[0]%t;else for(var i=this.t-1;i>=0;--i)r=(e*r+this[i])%t;return r},r.prototype.millerRabin=function(t){var e=this.subtract(r.ONE),n=e.getLowestSetBit();if(n<=0)return!1;var o=e.shiftRight(n);(t=t+1>>1)>B.length&&(t=B.length);for(var s=i(),h=0;h>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,i=this.DB-t*this.DB%8,n=0;if(t-- >0)for(i>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<=0;)i<8?(r=(this[t]&(1<>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,i<=0&&(i+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(e[n++]=r);return e},r.prototype.equals=function(t){return 0==this.compareTo(t)},r.prototype.min=function(t){return this.compareTo(t)<0?this:t},r.prototype.max=function(t){return this.compareTo(t)>0?this:t},r.prototype.and=function(t){var e=i();return this.bitwiseTo(t,d,e),e},r.prototype.or=function(t){var e=i();return this.bitwiseTo(t,m,e),e},r.prototype.xor=function(t){var e=i();return this.bitwiseTo(t,v,e),e},r.prototype.andNot=function(t){var e=i();return this.bitwiseTo(t,y,e),e},r.prototype.not=function(){for(var t=i(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var m=i();for(n.sqrTo(h[1],m);u<=d;)h[u]=i(),n.mulTo(m,h[u-2],h[u]),u+=2}var v,y,g=t.t-1,w=!0,T=i();for(o=c(t[g])-1;g>=0;){for(o>=a?v=t[g]>>o-a&d:(v=(t[g]&(1<0&&(v|=t[g-1]>>this.DB+o-a)),u=r;0==(1&v);)v>>=1,--u;if((o-=u)<0&&(o+=this.DB,--g),w)h[v].copyTo(s),w=!1;else{for(;u>1;)n.sqrTo(s,T),n.sqrTo(T,s),u-=2;u>0?n.sqrTo(s,T):(y=s,s=T,T=y),n.mulTo(T,h[v],s)}for(;g>=0&&0==(t[g]&1<=0?(i.subTo(n,i),e&&o.subTo(h,o),s.subTo(u,s)):(n.subTo(i,n),e&&h.subTo(o,h),u.subTo(s,u))}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(t)>=0?u.subtract(t):u.signum()<0?(u.addTo(t,u),u.signum()<0?u.add(t):u):u},r.prototype.pow=function(t){return this.exp(t,new T)},r.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var i=e;e=r,r=i}var n=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(n0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},r.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=B[B.length-1]){for(e=0;e>>8,A[D++]=255&k;D=0,E()}function C(){if(null==S){for(E(),(S=new O).init(A),D=0;D0&&e.length>0))throw new Error(\"Invalid key data\");this.n=new u.BigInteger(t,16),this.e=parseInt(e,16)}c.prototype.verify=function(t,e){e=e.replace(/[^0-9a-f]|[\\s\\n]]/gi,\"\");var r=new u.BigInteger(e,16);if(r.bitLength()>this.n.bitLength())throw new Error(\"Signature does not match with the key modulus.\");var i=function(t){for(var e in a){var r=a[e],i=r.length;if(t.substring(0,i)===r)return{alg:e,hash:t.substring(i)}}return[]}(r.modPowInt(this.e,this.n).toString(16).replace(/^1f+00/,\"\"));if(0===i.length)return!1;if(!f.hasOwnProperty(i.alg))throw new Error(\"Hashing algorithm is not supported.\");var n=f[i.alg](t).toString();return i.hash===n};for(var p=[],l=[],d=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,m=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",v=0,y=m.length;v0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}(t),n=i[0],o=i[1],s=new d(function(t,e,r){return 3*(e+r)/4-r}(0,n,o)),h=0,u=o>0?n-4:n;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;return 2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,s[h++]=255&e),1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e),s};function w(t){var e=t.length%4;return 0===e?t:t+new Array(4-e+1).join(\"=\")}function T(t){return t=w(t).replace(/\\-/g,\"+\").replace(/_/g,\"/\"),decodeURIComponent(function(t){for(var e=\"\",r=0;r1){var r=t.shift();t[0]=r+t[0]}t[0]=t[0].match(/^file:\\/\\/\\//)?t[0].replace(/^([^/:]+):\\/*/,\"$1:///\"):t[0].replace(/^([^/:]+):\\/*/,\"$1://\");for(var i=0;i0&&(n=n.replace(/^[\\/]+/,\"\")),n=n.replace(/[\\/]+$/,i0?\"?\":\"\")+s.join(\"&\")}return function(){return t(\"object\"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():r.urljoin=i()});function S(t,e){return e=e||{},new Promise(function(r,i){var n=new XMLHttpRequest,o=[],s=[],h={},u=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:u,headers:{keys:function(){return o},entries:function(){return s},get:function(t){return h[t.toLowerCase()]},has:function(t){return t.toLowerCase()in h}}}};for(var a in n.open(e.method||\"get\",t,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(t,e,r){o.push(e=e.toLowerCase()),s.push([e,r]),h[e]=h[e]?h[e]+\",\"+r:r}),r(u())},n.onerror=i,n.withCredentials=\"include\"==e.credentials,e.headers)n.setRequestHeader(a,e.headers[a]);n.send(e.body||null)})}function A(t){if(t.ok)return t.json();var e=new Error(t.statusText);return e.response=t,Promise.reject(e)}function D(t){this.name=\"ConfigurationError\",this.message=t||\"\"}function B(t){this.name=\"TokenValidationError\",this.message=t||\"\"}D.prototype=Error.prototype,B.prototype=Error.prototype;var x=function(){function t(){}var e=t.prototype;return e.get=function(){return null},e.has=function(){return null},e.set=function(){return null},t}();r.polyfill();var E=\"RS256\",k=function(t){return\"number\"==typeof t},I=function(){return new Date};function M(t){var e=t||{};if(this.jwksCache=e.jwksCache||new x,this.expectedAlg=e.expectedAlg||\"RS256\",this.issuer=e.issuer,this.audience=e.audience,this.leeway=0===e.leeway?0:e.leeway||60,this.jwksURI=e.jwksURI,this.maxAge=e.maxAge,this.__clock=\"function\"==typeof e.__clock?e.__clock:I,this.leeway<0||this.leeway>300)throw new D(\"The leeway should be positive and lower than five minutes.\");if(E!==this.expectedAlg)throw new D('Signature algorithm of \"'+this.expectedAlg+'\" is not supported. Expected the ID token to be signed with \"'+E+'\".')}M.prototype.verify=function(t,e,r){if(!r&&e&&\"function\"==typeof e&&(r=e,e=void 0),!t)return r(new B(\"ID token is required but missing\"),null);var i=this.decode(t);if(i instanceof Error)return r(new B(\"ID token could not be decoded\"),null);var n=i.encoded.header+\".\"+i.encoded.payload,o=b(i.encoded.signature),s=i.header.alg,h=i.header.kid,u=i.payload.aud,a=i.payload.sub,f=i.payload.iss,c=i.payload.exp,p=i.payload.nbf,l=i.payload.iat,d=i.payload.azp,m=i.payload.auth_time,v=i.payload.nonce,y=this.__clock(),g=this;if(g.expectedAlg!==s)return r(new B('Signature algorithm of \"'+s+'\" is not supported. Expected the ID token to be signed with \"'+E+'\".'),null);this.getRsaVerifier(f,h,function(t,s){if(t)return r(t,null);if(!s.verify(n,o))return r(new B(\"Invalid ID token signature.\"),null);if(!f||\"string\"!=typeof f)return r(new B(\"Issuer (iss) claim must be a string present in the ID token\"),null);if(g.issuer!==f)return r(new B('Issuer (iss) claim mismatch in the ID token, expected \"'+g.issuer+'\", found \"'+f+'\"'),null);if(!a||\"string\"!=typeof a)return r(new B(\"Subject (sub) claim must be a string present in the ID token\"),null);if(!u||\"string\"!=typeof u&&!Array.isArray(u))return r(new B(\"Audience (aud) claim must be a string or array of strings present in the ID token\"),null);if(Array.isArray(u)&&!u.includes(g.audience))return r(new B('Audience (aud) claim mismatch in the ID token; expected \"'+g.audience+'\" but was not one of \"'+u.join(\", \")+'\"'),null);if(\"string\"==typeof u&&g.audience!==u)return r(new B('Audience (aud) claim mismatch in the ID token; expected \"'+g.audience+'\" but found \"'+u+'\"'),null);if(e){if(!v||\"string\"!=typeof v)return r(new B(\"Nonce (nonce) claim must be a string present in the ID token\"),null);if(v!==e)return r(new B('Nonce (nonce) claim value mismatch in the ID token; expected \"'+e+'\", found \"'+v+'\"'),null)}if(Array.isArray(u)&&u.length>1){if(!d||\"string\"!=typeof d)return r(new B(\"Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values\"),null);if(d!==g.audience)return r(new B('Authorized Party (azp) claim mismatch in the ID token; expected \"'+g.audience+'\", found \"'+d+'\"'),null)}if(!c||!k(c))return r(new B(\"Expiration Time (exp) claim must be a number present in the ID token\"),null);if(!l||!k(l))return r(new B(\"Issued At (iat) claim must be a number present in the ID token\"),null);var h=c+g.leeway,w=new Date(0);if(w.setUTCSeconds(h),y>w)return r(new B('Expiration Time (exp) claim error in the ID token; current time \"'+y+'\" is after expiration time \"'+w+'\"'),null);if(p&&k(p)){var T=p-g.leeway,b=new Date(0);if(b.setUTCSeconds(T),yS)return r(new B('Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time \"'+y+'\" is after last auth time at \"'+S+'\"'),null)}return r(null,i.payload)})},M.prototype.getRsaVerifier=function(t,e,r){var i=this,n=t+e;Promise.resolve(this.jwksCache.has(n)).then(function(r){return r?i.jwksCache.get(n):(o={jwksURI:i.jwksURI,iss:t,kid:e},(\"undefined\"==typeof fetch?S:fetch)(o.jwksURI||_(o.iss,\".well-known\",\"jwks.json\")).then(A).then(function(t){var e,r,i,n=null;for(e=0;e 11\n else if (ua.indexOf(\"Trident\") > -1) {\n var re = new RegExp(\"rv:([0-9]{2,2}[\\.0-9]{0,})\");\n if (re.exec(ua) !== null) {\n rv = parseFloat(RegExp.$1);\n }\n }\n\n return rv >= 8;\n }\n\n // checking Mobile Firefox (Fennec)\n function isFennec() {\n try {\n // We must check for both XUL and Java versions of Fennec. Both have\n // distinct UA strings.\n var userAgent = navigator.userAgent;\n return (userAgent.indexOf('Fennec/') != -1) || // XUL\n (userAgent.indexOf('Firefox/') != -1 && userAgent.indexOf('Android') != -1); // Java\n } catch(e) {}\n return false;\n }\n\n // feature checking to see if this platform is supported at all\n function isSupported() {\n return (typeof window !== 'undefined' && window.JSON && window.JSON.stringify &&\n window.JSON.parse && window.postMessage);\n }\n\n // given a URL, extract the origin. Taken from: https://github.com/firebase/firebase-simple-login/blob/d2cb95b9f812d8488bdbfba51c3a7c153ba1a074/js/src/simple-login/transports/WinChan.js#L25-L30\n function extractOrigin(url) {\n if (!/^https?:\\/\\//.test(url)) url = window.location.href;\n var m = /^(https?:\\/\\/[\\-_a-zA-Z\\.0-9:]+)/.exec(url);\n if (m) return m[1];\n return url;\n }\n\n // find the relay iframe in the opener\n function findRelay() {\n var loc = window.location;\n var frames = window.opener.frames;\n for (var i = frames.length - 1; i >= 0; i--) {\n try {\n if (frames[i].location.protocol === window.location.protocol &&\n frames[i].location.host === window.location.host &&\n frames[i].name === RELAY_FRAME_NAME)\n {\n return frames[i];\n }\n } catch(e) { }\n }\n return;\n }\n\n var isIE = isInternetExplorer();\n\n if (isSupported()) {\n /* General flow:\n * 0. user clicks\n * (IE SPECIFIC) 1. caller adds relay iframe (served from trusted domain) to DOM\n * 2. caller opens window (with content from trusted domain)\n * 3. window on opening adds a listener to 'message'\n * (IE SPECIFIC) 4. window on opening finds iframe\n * 5. window checks if iframe is \"loaded\" - has a 'doPost' function yet\n * (IE SPECIFIC5) 5a. if iframe.doPost exists, window uses it to send ready event to caller\n * (IE SPECIFIC5) 5b. if iframe.doPost doesn't exist, window waits for frame ready\n * (IE SPECIFIC5) 5bi. once ready, window calls iframe.doPost to send ready event\n * 6. caller upon reciept of 'ready', sends args\n */\n return {\n open: function(opts, cb) {\n if (!cb) throw \"missing required callback argument\";\n\n // test required options\n var err;\n if (!opts.url) err = \"missing required 'url' parameter\";\n if (!opts.relay_url) err = \"missing required 'relay_url' parameter\";\n if (err) setTimeout(function() { cb(err); }, 0);\n\n // supply default options\n if (!opts.window_name) opts.window_name = null;\n if (!opts.window_features || isFennec()) opts.window_features = undefined;\n\n // opts.params may be undefined\n\n var iframe;\n\n // sanity check, are url and relay_url the same origin?\n var origin = opts.origin || extractOrigin(opts.url);\n if (origin !== extractOrigin(opts.relay_url)) {\n return setTimeout(function() {\n cb('invalid arguments: origin of url and relay_url must match');\n }, 0);\n }\n\n var messageTarget;\n\n if (isIE) {\n // first we need to add a \"relay\" iframe to the document that's served\n // from the target domain. We can postmessage into a iframe, but not a\n // window\n iframe = document.createElement(\"iframe\");\n // iframe.setAttribute('name', framename);\n iframe.setAttribute('src', opts.relay_url);\n iframe.style.display = \"none\";\n iframe.setAttribute('name', RELAY_FRAME_NAME);\n document.body.appendChild(iframe);\n messageTarget = iframe.contentWindow;\n }\n\n var w = opts.popup || window.open(opts.url, opts.window_name, opts.window_features);\n if (opts.popup) {\n w.location.href = opts.url;\n }\n\n if (!messageTarget) messageTarget = w;\n\n // lets listen in case the window blows up before telling us\n var closeInterval = setInterval(function() {\n if (w && w.closed) {\n cleanup();\n if (cb) {\n cb('User closed the popup window');\n cb = null;\n }\n }\n }, 500);\n\n var req = JSON.stringify({a: 'request', d: opts.params});\n\n // cleanup on unload\n function cleanup() {\n if (iframe) document.body.removeChild(iframe);\n iframe = undefined;\n if (closeInterval) closeInterval = clearInterval(closeInterval);\n removeListener(window, 'message', onMessage);\n removeListener(window, 'unload', cleanup);\n if (w) {\n try {\n w.close();\n } catch (securityViolation) {\n // This happens in Opera 12 sometimes\n // see https://github.com/mozilla/browserid/issues/1844\n messageTarget.postMessage(CLOSE_CMD, origin);\n }\n }\n w = messageTarget = undefined;\n }\n\n addListener(window, 'unload', cleanup);\n\n function onMessage(e) {\n if (e.origin !== origin) { return; }\n try {\n var d = JSON.parse(e.data);\n } catch(err) {\n if (cb) {\n return cb(err);\n } else {\n throw err;\n }\n }\n\n if (d.a === 'ready') {\n messageTarget.postMessage(req, origin);\n } else if (d.a === 'error') {\n cleanup();\n if (cb) {\n cb(d.d);\n cb = null;\n }\n } else if (d.a === 'response') {\n cleanup();\n if (cb) {\n cb(null, d.d);\n cb = null;\n }\n }\n }\n\n addListener(window, 'message', onMessage);\n\n return {\n originalPopup: w,\n close: cleanup,\n focus: function() {\n if (w) {\n try {\n w.focus();\n } catch (e) {\n // IE7 blows up here, do nothing\n }\n }\n }\n };\n },\n onOpen: function(cb) {\n var o = \"*\";\n var msgTarget = isIE ? findRelay() : window.opener;\n if (!msgTarget) throw \"can't find relay frame\";\n function doPost(msg) {\n msg = JSON.stringify(msg);\n if (isIE) msgTarget.doPost(msg, o);\n else msgTarget.postMessage(msg, o);\n }\n\n function onMessage(e) {\n // only one message gets through, but let's make sure it's actually\n // the message we're looking for (other code may be using\n // postmessage) - we do this by ensuring the payload can\n // be parsed, and it's got an 'a' (action) value of 'request'.\n var d;\n try {\n d = JSON.parse(e.data);\n } catch(err) { }\n if (!d || d.a !== 'request') return;\n removeListener(window, 'message', onMessage);\n o = e.origin;\n if (cb) {\n // this setTimeout is critically important for IE8 -\n // in ie8 sometimes addListener for 'message' can synchronously\n // cause your callback to be invoked. awesome.\n setTimeout(function() {\n cb(o, d.d, function(r) {\n cb = undefined;\n doPost({a: 'response', d: r});\n });\n }, 0);\n }\n }\n\n function onDie(e) {\n if (e.data === CLOSE_CMD) {\n try { window.close(); } catch (o_O) {}\n }\n }\n addListener(isIE ? msgTarget : window, 'message', onMessage);\n addListener(isIE ? msgTarget : window, 'message', onDie);\n\n // we cannot post to our parent that we're ready before the iframe\n // is loaded. (IE specific possible failure)\n try {\n doPost({a: \"ready\"});\n } catch(e) {\n // this code should never be exectued outside IE\n addListener(msgTarget, 'load', function(e) {\n doPost({a: \"ready\"});\n });\n }\n\n // if window is unloaded and the client hasn't called cb, it's an error\n var onUnload = function() {\n try {\n // IE8 doesn't like this...\n removeListener(isIE ? msgTarget : window, 'message', onDie);\n } catch (ohWell) { }\n if (cb) doPost({ a: 'error', d: 'client closed window' });\n cb = undefined;\n // explicitly close the window, in case the client is trying to reload or nav\n try { window.close(); } catch (e) { }\n };\n addListener(window, 'unload', onUnload);\n return {\n detach: function() {\n removeListener(window, 'unload', onUnload);\n }\n };\n }\n };\n } else {\n return {\n open: function(url, winopts, arg, cb) {\n setTimeout(function() { cb(\"unsupported browser\"); }, 0);\n },\n onOpen: function(cb) {\n setTimeout(function() { cb(\"unsupported browser\"); }, 0);\n }\n };\n }\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = WinChan;\n}\n","// given a URL, extract the origin. Taken from: https://github.com/firebase/firebase-simple-login/blob/d2cb95b9f812d8488bdbfba51c3a7c153ba1a074/js/src/simple-login/transports/WinChan.js#L25-L30\nfunction extractOrigin(url) {\n if (!/^https?:\\/\\//.test(url)) url = window.location.href;\n var m = /^(https?:\\/\\/[-_a-zA-Z.0-9:]+)/.exec(url);\n if (m) return m[1];\n return url;\n}\n\nexport default {\n extractOrigin: extractOrigin\n};\n","/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\nimport WinChan from 'winchan';\n\nimport windowHandler from './window';\nimport objectHelper from './object';\nimport qs from 'qs';\n\nfunction PopupHandler() {\n this._current_popup = null;\n}\n\nPopupHandler.prototype.calculatePosition = function(options) {\n var width = options.width || 500;\n var height = options.height || 600;\n var _window = windowHandler.getWindow();\n\n var screenX =\n typeof _window.screenX !== 'undefined'\n ? _window.screenX\n : _window.screenLeft;\n var screenY =\n typeof _window.screenY !== 'undefined'\n ? _window.screenY\n : _window.screenTop;\n\n var outerWidth =\n typeof _window.outerWidth !== 'undefined'\n ? _window.outerWidth\n : _window.document.body.clientWidth;\n\n var outerHeight =\n typeof _window.outerHeight !== 'undefined'\n ? _window.outerHeight\n : _window.document.body.clientHeight;\n\n var left = options.left || screenX + (outerWidth - width) / 2;\n var top = options.top || screenY + (outerHeight - height) / 2;\n\n return { width: width, height: height, left: left, top: top };\n};\n\nPopupHandler.prototype.preload = function(options) {\n var _this = this;\n var _window = windowHandler.getWindow();\n var popupPosition = this.calculatePosition(options.popupOptions || {});\n var popupOptions = objectHelper\n .merge(popupPosition)\n .with(options.popupOptions);\n var url = options.url || 'about:blank';\n var windowFeatures = qs.stringify(popupOptions, {\n encode: false,\n delimiter: ','\n });\n\n if (this._current_popup && !this._current_popup.closed) {\n return this._current_popup;\n }\n\n this._current_popup = _window.open(url, 'auth0_signup_popup', windowFeatures);\n\n this._current_popup.kill = function() {\n this.close();\n _this._current_popup = null;\n };\n\n return this._current_popup;\n};\n\nPopupHandler.prototype.load = function(url, relayUrl, options, cb) {\n var _this = this;\n var popupPosition = this.calculatePosition(options.popupOptions || {});\n var popupOptions = objectHelper\n .merge(popupPosition)\n .with(options.popupOptions);\n\n var winchanOptions = objectHelper\n .merge({\n url: url,\n relay_url: relayUrl,\n window_features: qs.stringify(popupOptions, {\n delimiter: ',',\n encode: false\n }),\n popup: this._current_popup\n })\n .with(options);\n\n var popup = WinChan.open(winchanOptions, function(err, data) {\n // Ignores messages sent by browser extensions.\n if (err && err.name === 'SyntaxError') {\n return;\n }\n _this._current_popup = null;\n return cb(err, data);\n });\n\n popup.focus();\n\n return popup;\n};\n\nexport default PopupHandler;\n","import urljoin from 'url-join';\nimport WinChan from 'winchan';\n\nimport urlHelper from '../helper/url';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\nimport PopupHandler from '../helper/popup-handler';\nimport objectHelper from '../helper/object';\nimport windowHelper from '../helper/window';\nimport Warn from '../helper/warn';\nimport TransactionManager from './transaction-manager';\nimport CrossOriginAuthentication from './cross-origin-authentication';\n\n/**\n * @class\n * @classdesc This class cannot be instantiated directly. Instead, use WebAuth.popup\n * @hideconstructor\n */\nfunction Popup(webAuth, options) {\n this.baseOptions = options;\n this.baseOptions.popupOrigin = options.popupOrigin;\n this.client = webAuth.client;\n this.webAuth = webAuth;\n\n this.transactionManager = new TransactionManager(this.baseOptions);\n this.crossOriginAuthentication = new CrossOriginAuthentication(\n webAuth,\n this.baseOptions\n );\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n}\n\n/**\n * Returns a new instance of the popup handler\n *\n * @method buildPopupHandler\n * @private\n */\nPopup.prototype.buildPopupHandler = function() {\n var pluginHandler = this.baseOptions.plugins.get('popup.getPopupHandler');\n\n if (pluginHandler) {\n return pluginHandler.getPopupHandler();\n }\n\n return new PopupHandler();\n};\n\n/**\n * Initializes the popup window and returns the instance to be used later in order to avoid being blocked by the browser.\n *\n * @method preload\n * @param {Object} options receives the window height and width and any other window feature to be sent to window.open\n * @memberof Popup.prototype\n */\nPopup.prototype.preload = function(options) {\n options = options || {};\n\n var popup = this.buildPopupHandler();\n\n popup.preload(options);\n return popup;\n};\n\n/**\n * Internal use.\n *\n * @method getPopupHandler\n * @private\n */\nPopup.prototype.getPopupHandler = function(options, preload) {\n if (options.popupHandler) {\n return options.popupHandler;\n }\n\n if (preload) {\n return this.preload(options);\n }\n\n return this.buildPopupHandler();\n};\n\n/**\n * Handles the popup logic for the callback page.\n *\n * @method callback\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @see {@link parseHash}\n * @memberof Popup.prototype\n */\nPopup.prototype.callback = function(options) {\n var _this = this;\n var theWindow = windowHelper.getWindow();\n options = options || {};\n var originUrl =\n options.popupOrigin ||\n this.baseOptions.popupOrigin ||\n windowHelper.getOrigin();\n\n /*\n in IE 11, there's a bug that makes window.opener return undefined.\n The callback page will still call `popup.callback()` which will run this method\n in the relay page. WinChan expects the relay page to have a global `doPost` function,\n which will be called with the response.\n\n IE11 Bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/110920/\n */\n if (!theWindow.opener) {\n theWindow.doPost = function(msg) {\n if (theWindow.parent) {\n theWindow.parent.postMessage(msg, originUrl);\n }\n };\n return;\n }\n\n WinChan.onOpen(function(popupOrigin, r, cb) {\n if (popupOrigin !== originUrl) {\n return cb({\n error: 'origin_mismatch',\n error_description:\n \"The popup's origin (\" +\n popupOrigin +\n ') should match the `popupOrigin` parameter (' +\n originUrl +\n ').'\n });\n }\n _this.webAuth.parseHash(options || {}, function(err, data) {\n return cb(err || data);\n });\n });\n};\n\n/**\n * Shows inside a new window the hosted login page (`/authorize`) in order to start a new authN/authZ transaction and post its result using `postMessage`.\n *\n * @method authorize\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.organization] the Id of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Boolean} [options.owp] determines if Auth0 should render the relay page or not and the caller is responsible of handling the response.\n * @param {authorizeCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof Popup.prototype\n */\nPopup.prototype.authorize = function(options, cb) {\n var popup;\n var url;\n var relayUrl;\n var popOpts = {};\n\n var pluginHandler = this.baseOptions.plugins.get('popup.authorize');\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'scope',\n 'domain',\n 'audience',\n 'tenant',\n 'responseType',\n 'redirectUri',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'organization',\n 'invitation'\n ])\n .with(objectHelper.blacklist(options, ['popupHandler']));\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n // the relay page should not be necessary as long it happens in the same domain\n // (a redirectUri shoul be provided). It is necessary when using OWP\n relayUrl = urljoin(this.baseOptions.rootUrl, 'relay.html');\n\n // if a owp is enabled, it should use the owp flag\n if (options.owp) {\n // used by server to render the relay page instead of sending the chunk in the\n // url to the callback\n params.owp = true;\n } else {\n popOpts.origin = urlHelper.extractOrigin(params.redirectUri);\n relayUrl = params.redirectUri;\n }\n\n if (options.popupOptions) {\n popOpts.popupOptions = objectHelper.pick(options.popupOptions, [\n 'width',\n 'height',\n 'top',\n 'left'\n ]);\n }\n\n if (pluginHandler) {\n params = pluginHandler.processParams(params);\n }\n\n params = this.transactionManager.process(params);\n params.scope = params.scope || 'openid profile email';\n delete params.domain;\n\n url = this.client.buildAuthorizeUrl(params);\n\n popup = this.getPopupHandler(options);\n\n return popup.load(\n url,\n relayUrl,\n popOpts,\n responseHandler(cb, { keepOriginalCasing: true })\n );\n};\n\n/**\n * Performs authentication with username/email and password with a database connection inside a new window\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link login}.\n *\n * @method loginWithCredentials\n * @param {Object} options\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used. It can be any of the values `code` and `token`\n * @param {String} [options.responseMode] how the AuthN response is encoded and redirected back to the client. Supported values are `query` and `fragment`. The `query` value is only supported when `responseType` is `code`.\n * @param {String} [options.scope] scopes to be requested during AuthN. e.g. `openid email`\n * @param {credentialsCallback} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.loginWithCredentials = function (options, cb) {\n options.realm = options.realm || options.connection;\n options.popup = true;\n options = objectHelper\n .merge(this.baseOptions, [\n 'redirectUri',\n 'responseType',\n 'state',\n 'nonce',\n 'timeout'\n ])\n .with(objectHelper.blacklist(options, ['popupHandler', 'connection']));\n\n options = this.transactionManager.process(options);\n this.crossOriginAuthentication.login(options, cb);\n};\n\n/**\n * Verifies the passwordless TOTP and redirects to finish the passwordless transaction\n *\n * @method passwordlessVerify\n * @param {Object} options\n * @param {String} options.type `sms` or `email`\n * @param {String} options.phoneNumber only if type = sms\n * @param {String} options.email only if type = email\n * @param {String} options.connection the connection name\n * @param {String} options.verificationCode the TOTP code\n * @param {Function} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.passwordlessVerify = function(options, cb) {\n var _this = this;\n return this.client.passwordless.verify(\n objectHelper.blacklist(options, ['popupHandler']),\n function(err) {\n if (err) {\n return cb(err);\n }\n\n options.username = options.phoneNumber || options.email;\n options.password = options.verificationCode;\n\n delete options.email;\n delete options.phoneNumber;\n delete options.verificationCode;\n delete options.type;\n\n _this.client.loginWithResourceOwner(options, cb);\n }\n );\n};\n\n/**\n * Signs up a new user and automatically logs the user in after the signup.\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link signupAndAuthorize}.\n *\n * @method signupAndLogin\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {credentialsCallback} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.signupAndLogin = function(options, cb) {\n var _this = this;\n\n return this.client.dbConnection.signup(options, function(err) {\n if (err) {\n return cb(err);\n }\n _this.loginWithCredentials(options, cb);\n });\n};\n\nexport default Popup;\n","import IframeHandler from '../helper/iframe-handler';\nimport windowHelper from '../helper/window';\n\nfunction SilentAuthenticationHandler(options) {\n this.authenticationUrl = options.authenticationUrl;\n this.timeout = options.timeout || 60 * 1000;\n this.handler = null;\n this.postMessageDataType = options.postMessageDataType || false;\n\n // prefer origin from options, fallback to origin from browser, and some browsers (for example MS Edge) don't support origin; fallback to construct origin manually\n this.postMessageOrigin =\n options.postMessageOrigin ||\n windowHelper.getWindow().location.origin ||\n windowHelper.getWindow().location.protocol +\n '//' +\n windowHelper.getWindow().location.hostname +\n (windowHelper.getWindow().location.port\n ? ':' + windowHelper.getWindow().location.port\n : '');\n}\n\nSilentAuthenticationHandler.create = function(options) {\n return new SilentAuthenticationHandler(options);\n};\n\nSilentAuthenticationHandler.prototype.login = function(\n usePostMessage,\n callback\n) {\n this.handler = new IframeHandler({\n auth0: this.auth0,\n url: this.authenticationUrl,\n eventListenerType: usePostMessage ? 'message' : 'load',\n callback: this.getCallbackHandler(callback, usePostMessage),\n timeout: this.timeout,\n eventValidator: this.getEventValidator(),\n timeoutCallback: function() {\n callback(\n null,\n '#error=timeout&error_description=Timeout+during+authentication+renew.'\n );\n },\n usePostMessage: usePostMessage || false\n });\n\n this.handler.init();\n};\n\nSilentAuthenticationHandler.prototype.getEventValidator = function() {\n var _this = this;\n return {\n isValid: function(eventData) {\n switch (eventData.event.type) {\n case 'message':\n // Message must come from the expected origin and iframe window.\n if (\n eventData.event.origin !== _this.postMessageOrigin ||\n eventData.event.source !== _this.handler.iframe.contentWindow\n ) {\n return false;\n }\n\n // Default behaviour, return all message events from the iframe.\n if (_this.postMessageDataType === false) {\n return true;\n }\n\n return (\n eventData.event.data.type &&\n eventData.event.data.type === _this.postMessageDataType\n );\n\n case 'load':\n if (\n eventData.sourceObject.contentWindow.location.protocol === 'about:'\n ) {\n // Chrome is automatically loading the about:blank page, we ignore this.\n return false;\n }\n // Fall through to default\n default:\n return true;\n }\n }\n };\n};\n\nSilentAuthenticationHandler.prototype.getCallbackHandler = function(\n callback,\n usePostMessage\n) {\n return function(eventData) {\n var callbackValue;\n if (!usePostMessage) {\n callbackValue = eventData.sourceObject.contentWindow.location.hash;\n } else if (\n typeof eventData.event.data === 'object' &&\n eventData.event.data.hash\n ) {\n callbackValue = eventData.event.data.hash;\n } else {\n callbackValue = eventData.event.data;\n }\n callback(null, callbackValue);\n };\n};\n\nexport default SilentAuthenticationHandler;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport RequestBuilder from '../helper/request-builder';\nimport responseHandler from '../helper/response-handler';\nimport windowHelper from '../helper/window';\nimport TransactionManager from './transaction-manager';\n\nfunction UsernamePassword(options) {\n this.baseOptions = options;\n this.request = new RequestBuilder(options);\n this.transactionManager = new TransactionManager(this.baseOptions);\n}\n\nUsernamePassword.prototype.login = function(options, cb) {\n var url;\n var body;\n\n url = urljoin(this.baseOptions.rootUrl, 'usernamepassword', 'login');\n\n options.username = options.username || options.email; // eslint-disable-line\n\n options = objectHelper.blacklist(options, ['email', 'onRedirecting']); // eslint-disable-line\n\n body = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'tenant',\n 'responseType',\n 'responseMode',\n 'scope',\n 'audience'\n ])\n .with(options);\n body = this.transactionManager.process(body);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\nUsernamePassword.prototype.callback = function(formHtml) {\n var div;\n var form;\n var _document = windowHelper.getDocument();\n\n div = _document.createElement('div');\n div.innerHTML = formHtml;\n form = _document.body.appendChild(div).children[0];\n\n form.submit();\n};\n\nexport default UsernamePassword;\n","import urljoin from 'url-join';\nimport qs from 'qs';\n\nimport UsernamePassword from './username-password';\nimport RequestBuilder from '../helper/request-builder';\nimport responseHandler from '../helper/response-handler';\nimport objectHelper from '../helper/object';\nimport windowHelper from '../helper/window';\nimport Warn from '../helper/warn';\nimport assert from '../helper/assert';\n\nfunction HostedPages(client, options) {\n this.baseOptions = options;\n this.client = client;\n this.baseOptions.universalLoginPage = true;\n this.request = new RequestBuilder(this.baseOptions);\n\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n}\n\n/**\n * @callback credentialsCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the AuthN request\n * @param {String} result.accessToken token that can be used with {@link userinfo}\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @ignore\n */\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n * @ignore\n */\n\n/**\n * Performs authentication with username/email and password with a database connection\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link login}.\n *\n * @method login\n * @param {Object} options\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used. It can be any of the values `code` and `token`\n * @param {String} [options.responseMode] how the AuthN response is encoded and redirected back to the client. Supported values are `query` and `fragment`\n * @param {String} [options.scope] scopes to be requested during AuthN. e.g. `openid email`\n * @param {onRedirectingCallback} [options.onRedirecting] Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {credentialsCallback} cb\n * @ignore\n */\nHostedPages.prototype.login = function(options, cb) {\n if (windowHelper.getWindow().location.host !== this.baseOptions.domain) {\n throw new Error(\n 'This method is meant to be used only inside the Universal Login Page.'\n );\n }\n\n var usernamePassword;\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'tenant',\n 'responseType',\n 'responseMode',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n usernamePassword = new UsernamePassword(this.baseOptions);\n\n return usernamePassword.login(params, function(err, data) {\n if (err) {\n return cb(err);\n }\n\n function doAuth() {\n usernamePassword.callback(data);\n }\n\n if (typeof options.onRedirecting === 'function') {\n return options.onRedirecting(function() {\n doAuth();\n });\n }\n\n doAuth();\n });\n};\n\n/**\n * Signs up a new user and automatically logs the user in after the signup.\n *\n * @method signupAndLogin\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {credentialsCallback} cb\n * @ignore\n */\nHostedPages.prototype.signupAndLogin = function(options, cb) {\n var _this = this;\n return _this.client.client.dbConnection.signup(options, function(err) {\n if (err) {\n return cb(err);\n }\n return _this.login(options, cb);\n });\n};\n\nHostedPages.prototype.getSSOData = function(withActiveDirectories, cb) {\n var url;\n var params = '';\n\n if (typeof withActiveDirectories === 'function') {\n cb = withActiveDirectories;\n withActiveDirectories = false;\n }\n\n assert.check(withActiveDirectories, {\n type: 'boolean',\n message: 'withActiveDirectories parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (withActiveDirectories) {\n params =\n '?' +\n qs.stringify({\n ldaps: 1,\n client_id: this.baseOptions.clientID\n });\n }\n\n url = urljoin(this.baseOptions.rootUrl, 'user', 'ssodata', params);\n\n return this.request\n .get(url, { noHeaders: true })\n .withCredentials()\n .end(responseHandler(cb));\n};\n\nexport default HostedPages;\n","// eslint-disable-next-line no-unused-vars\nimport Authentication from '../authentication';\nimport object from '../helper/object';\n\nvar noop = function () {};\nvar captchaSolved = noop;\n\nvar RECAPTCHA_V2_PROVIDER = 'recaptcha_v2';\nvar RECAPTCHA_ENTERPRISE_PROVIDER = 'recaptcha_enterprise';\nvar HCAPTCHA_PROVIDER = 'hcaptcha';\nvar FRIENDLY_CAPTCHA_PROVIDER = 'friendly_captcha';\nvar ARKOSE_PROVIDER = 'arkose';\nvar AUTH0_PROVIDER = 'auth0';\nvar AUTH0_V2_CAPTCHA_PROVIDER = 'auth0_v2';\nvar MAX_RETRY = 3;\n\nvar defaults = {\n lang: 'en',\n templates: {\n auth0: function (challenge) {\n var message =\n challenge.type === 'code'\n ? 'Enter the code shown above'\n : 'Solve the formula shown above';\n return (\n '
\\n' +\n ' \\n' +\n ' \\n' +\n '
\\n' +\n ''\n );\n },\n recaptcha_v2: function () {\n return '
';\n },\n recaptcha_enterprise: function () {\n return '
';\n },\n hcaptcha: function () {\n return '
';\n },\n friendly_captcha: function () {\n return '
';\n },\n arkose: function () {\n return '
';\n },\n auth0_v2: function () {\n return '
';\n },\n error: function () {\n return '
Error getting the bot detection challenge. Please contact the system administrator.
';\n }\n }\n};\n\nfunction handleAuth0Provider(element, options, challenge, load) {\n element.innerHTML = options.templates[challenge.provider](challenge);\n element\n .querySelector('.captcha-reload')\n .addEventListener('click', function (e) {\n e.preventDefault();\n load();\n });\n}\n\nfunction globalForCaptchaProvider(provider) {\n switch (provider) {\n case RECAPTCHA_V2_PROVIDER:\n return window.grecaptcha;\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n return window.grecaptcha.enterprise;\n case HCAPTCHA_PROVIDER:\n return window.hcaptcha;\n case FRIENDLY_CAPTCHA_PROVIDER:\n return window.friendlyChallenge;\n case ARKOSE_PROVIDER:\n return window.arkose;\n case AUTH0_V2_CAPTCHA_PROVIDER:\n return window.turnstile;\n /* istanbul ignore next */\n default:\n throw new Error('Unknown captcha provider');\n }\n}\n\nfunction scriptForCaptchaProvider(\n provider,\n lang,\n callback,\n clientSubdomain,\n siteKey\n) {\n switch (provider) {\n case RECAPTCHA_V2_PROVIDER:\n return (\n 'https://www.recaptcha.net/recaptcha/api.js?hl=' +\n lang +\n '&onload=' +\n callback\n );\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n return (\n 'https://www.recaptcha.net/recaptcha/enterprise.js?render=explicit&hl=' +\n lang +\n '&onload=' +\n callback\n );\n case HCAPTCHA_PROVIDER:\n return (\n 'https://js.hcaptcha.com/1/api.js?hl=' + lang + '&onload=' + callback\n );\n case FRIENDLY_CAPTCHA_PROVIDER:\n return 'https://cdn.jsdelivr.net/npm/friendly-challenge@0.9.12/widget.min.js';\n case ARKOSE_PROVIDER:\n return (\n 'https://' +\n clientSubdomain +\n '.arkoselabs.com/v2/' +\n siteKey +\n '/api.js'\n );\n case AUTH0_V2_CAPTCHA_PROVIDER:\n return (\n 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload=' +\n callback\n );\n /* istanbul ignore next */\n default:\n throw new Error('Unknown captcha provider');\n }\n}\n\nfunction loadScript(url, attributes) {\n var script = window.document.createElement('script');\n for (var attr in attributes) {\n if (attr.startsWith('data-')) {\n script.dataset[attr.replace('data-', '')] = attributes[attr];\n } else {\n script[attr] = attributes[attr];\n }\n }\n script.src = url;\n window.document.body.appendChild(script);\n}\n\nfunction removeScript(url) {\n var scripts = window.document.querySelectorAll('script[src=\"' + url + '\"]');\n scripts.forEach(function (script) {\n script.remove();\n });\n}\n\nfunction injectCaptchaScript(element, opts, callback, setValue) {\n var callbackName =\n opts.provider + 'Callback_' + Math.floor(Math.random() * 1000001);\n var attributes = {\n async: true,\n defer: true\n };\n var scriptSrc = scriptForCaptchaProvider(\n opts.provider,\n opts.lang,\n callbackName,\n opts.clientSubdomain,\n opts.siteKey\n );\n if (\n opts.provider === ARKOSE_PROVIDER ||\n opts.provider === AUTH0_V2_CAPTCHA_PROVIDER\n ) {\n var retryCount = 0;\n attributes['data-callback'] = callbackName;\n attributes['onerror'] = function () {\n if (retryCount < MAX_RETRY) {\n removeScript(scriptSrc);\n loadScript(scriptSrc, attributes);\n retryCount++;\n return;\n }\n removeScript(scriptSrc);\n // Optimzation to tell auth0 to fail open if Arkose/auth0_v2 is configured to fail open\n setValue('BYPASS_CAPTCHA');\n };\n window[callbackName] = function (arkose) {\n window.arkose = arkose;\n callback(arkose);\n };\n } else {\n window[callbackName] = function () {\n delete window[callbackName];\n callback();\n };\n if (opts.provider === FRIENDLY_CAPTCHA_PROVIDER) {\n attributes['onload'] = window[callbackName];\n }\n }\n loadScript(scriptSrc, attributes);\n}\n\nfunction handleCaptchaProvider(element, options, challenge) {\n var widgetId =\n element.hasAttribute('data-wid') && element.getAttribute('data-wid');\n\n function setValue(value) {\n var input = element.querySelector('input[name=\"captcha\"]');\n input.value = value || '';\n }\n\n if (\n challenge.provider === FRIENDLY_CAPTCHA_PROVIDER &&\n window.auth0FCInstance\n ) {\n setValue();\n window.auth0FCInstance.reset();\n return;\n } else if (\n challenge.provider === ARKOSE_PROVIDER &&\n globalForCaptchaProvider(challenge.provider)\n ) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset();\n return;\n } else if (widgetId) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset(widgetId);\n return;\n }\n\n element.innerHTML = options.templates[challenge.provider](challenge);\n\n var captchaClass;\n switch (challenge.provider) {\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n captchaClass = '.recaptcha';\n break;\n case RECAPTCHA_V2_PROVIDER:\n captchaClass = '.recaptcha';\n break;\n case HCAPTCHA_PROVIDER:\n captchaClass = '.hcaptcha';\n break;\n case FRIENDLY_CAPTCHA_PROVIDER:\n captchaClass = '.friendly-captcha';\n break;\n case ARKOSE_PROVIDER:\n captchaClass = '.arkose';\n break;\n case AUTH0_V2_CAPTCHA_PROVIDER:\n captchaClass = '.auth0_v2';\n break;\n }\n var captchaDiv = element.querySelector(captchaClass);\n\n injectCaptchaScript(\n element,\n {\n lang: options.lang,\n provider: challenge.provider,\n clientSubdomain: challenge.clientSubdomain,\n siteKey: challenge.siteKey\n },\n function (arkose) {\n var global = globalForCaptchaProvider(challenge.provider);\n if (challenge.provider === ARKOSE_PROVIDER) {\n var retryCount = 0;\n arkose.setConfig({\n onCompleted: function (response) {\n setValue(response.token);\n captchaSolved();\n },\n onError: function () {\n if (retryCount < MAX_RETRY) {\n setValue();\n arkose.reset();\n // To ensure reset is successful, we need to set a timeout here\n setTimeout(function () {\n arkose.run();\n }, 500);\n retryCount++;\n } else {\n // Optimzation to tell auth0 to fail open if Arkose is configured to fail open\n setValue('BYPASS_CAPTCHA');\n }\n }\n });\n } else if (challenge.provider === FRIENDLY_CAPTCHA_PROVIDER) {\n window.auth0FCInstance = new global.WidgetInstance(captchaDiv, {\n sitekey: challenge.siteKey,\n language: options.lang,\n doneCallback: function (solution) {\n setValue(solution);\n },\n errorCallback: function () {\n setValue();\n }\n });\n } else {\n var renderParams = {\n callback: setValue,\n 'expired-callback': function () {\n setValue();\n },\n 'error-callback': function () {\n setValue();\n },\n sitekey: challenge.siteKey\n };\n\n if (challenge.provider === AUTH0_V2_CAPTCHA_PROVIDER) {\n retryCount = 0;\n renderParams.language = options.lang;\n renderParams.theme = 'light';\n renderParams.retry = 'never';\n renderParams['response-field'] = false;\n renderParams['error-callback'] = function () {\n if (retryCount < MAX_RETRY) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset(widgetId);\n retryCount++;\n } else {\n setValue('BYPASS_CAPTCHA');\n }\n return true;\n };\n }\n widgetId = global.render(captchaDiv, renderParams);\n element.setAttribute('data-wid', widgetId);\n }\n },\n setValue\n );\n}\n\n/**\n *\n * Renders the captcha challenge in the provided element.\n *\n * @param {Authentication} auth0Client The challenge response from the authentication server\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for recaptcha\n * @param {Function} [callback] An optional callback called after captcha is loaded\n * @ignore\n */\nfunction render(auth0Client, element, options, callback) {\n options = object.merge(defaults).with(options || {});\n function load(done) {\n done = done || noop;\n auth0Client.getChallenge(function (err, challenge) {\n if (err) {\n element.innerHTML = options.templates.error(err);\n return done(err);\n }\n if (!challenge.required) {\n element.style.display = 'none';\n element.innerHTML = '';\n return;\n }\n element.style.display = '';\n if (challenge.provider === AUTH0_PROVIDER) {\n handleAuth0Provider(element, options, challenge, load);\n } else if (\n challenge.provider === RECAPTCHA_V2_PROVIDER ||\n challenge.provider === RECAPTCHA_ENTERPRISE_PROVIDER ||\n challenge.provider === HCAPTCHA_PROVIDER ||\n challenge.provider === FRIENDLY_CAPTCHA_PROVIDER ||\n challenge.provider === ARKOSE_PROVIDER ||\n challenge.provider === AUTH0_V2_CAPTCHA_PROVIDER\n ) {\n handleCaptchaProvider(element, options, challenge);\n }\n if (challenge.provider === ARKOSE_PROVIDER) {\n done(null, {\n triggerCaptcha: function (solvedCallback) {\n globalForCaptchaProvider(challenge.provider).run();\n captchaSolved = solvedCallback;\n }\n });\n } else {\n done();\n }\n });\n }\n\n function getValue() {\n var captchaInput = element.querySelector('input[name=\"captcha\"]');\n if (!captchaInput) {\n return;\n }\n return captchaInput.value;\n }\n\n load(callback);\n\n return {\n reload: load,\n getValue: getValue\n };\n}\n\n/**\n *\n * Renders the passwordless captcha challenge in the provided element.\n *\n * @param {Authentication} auth0Client The challenge response from the authentication server\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for recaptcha\n * @param {Function} [callback] An optional callback called after captcha is loaded\n * @ignore\n */\nfunction renderPasswordless(auth0Client, element, options, callback) {\n options = object.merge(defaults).with(options || {});\n function load(done) {\n done = done || noop;\n auth0Client.passwordless.getChallenge(function (err, challenge) {\n if (err) {\n element.innerHTML = options.templates.error(err);\n return done(err);\n }\n if (!challenge.required) {\n element.style.display = 'none';\n element.innerHTML = '';\n return;\n }\n element.style.display = '';\n if (challenge.provider === AUTH0_PROVIDER) {\n handleAuth0Provider(element, options, challenge, load);\n } else if (\n challenge.provider === RECAPTCHA_V2_PROVIDER ||\n challenge.provider === RECAPTCHA_ENTERPRISE_PROVIDER ||\n challenge.provider === HCAPTCHA_PROVIDER ||\n challenge.provider === FRIENDLY_CAPTCHA_PROVIDER ||\n challenge.provider === ARKOSE_PROVIDER ||\n challenge.provider === AUTH0_V2_CAPTCHA_PROVIDER\n ) {\n handleCaptchaProvider(element, options, challenge);\n }\n if (challenge.provider === ARKOSE_PROVIDER) {\n done(null, {\n triggerCaptcha: function (solvedCallback) {\n globalForCaptchaProvider(challenge.provider).run();\n captchaSolved = solvedCallback;\n }\n });\n } else {\n done();\n }\n });\n }\n\n function getValue() {\n var captchaInput = element.querySelector('input[name=\"captcha\"]');\n if (!captchaInput) {\n return;\n }\n return captchaInput.value;\n }\n\n load(callback);\n\n return {\n reload: load,\n getValue: getValue\n };\n}\n\nexport default { render: render, renderPasswordless: renderPasswordless };\n","import IdTokenVerifier from 'idtoken-verifier';\nimport qs from 'qs';\n\nimport assert from '../helper/assert';\nimport error from '../helper/error';\nimport PluginHandler from '../helper/plugins';\nimport windowHelper from '../helper/window';\nimport objectHelper from '../helper/object';\nimport SSODataStorage from '../helper/ssodata';\nimport responseHandler from '../helper/response-handler';\nimport TransactionManager from './transaction-manager';\nimport Authentication from '../authentication';\nimport Redirect from './redirect';\nimport Popup from './popup';\nimport SilentAuthenticationHandler from './silent-authentication-handler';\nimport CrossOriginAuthentication from './cross-origin-authentication';\nimport WebMessageHandler from './web-message-handler';\nimport HostedPages from './hosted-pages';\nimport captcha from './captcha';\n\nfunction defaultClock() {\n return new Date();\n}\n\n/**\n * Handles all the browser's AuthN/AuthZ flows\n * @constructor\n * @param {Object} options\n * @param {String} options.domain your Auth0 domain\n * @param {String} options.clientID the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {Number} [options.leeway] number of seconds to account for clock skew when validating time-based claims in ID tokens. Defaults to 60 seconds.\n * @param {Number} [options.maxAge] maximum elapsed time in seconds since the last time the user was actively authenticated by the authorization server.\n * @param {Number} [options.stateExpiration] number of minutes for the stored state to be kept. Defaults to 30 minutes.\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Array} [options.plugins]\n * @param {Boolean} [options.legacySameSiteCookie] set this to `false` to disable the legacy compatibility cookie that is created for older browsers that don't support the SameSite attribute (defaults to `true`)\n * @param {String} [options.cookieDomain] The domain the cookie is accessible from. If not set, the cookie is scoped to the current domain, including the subdomain. To keep a user logged in across multiple subdomains set this to your top-level domain and prefixed with a `.` (eg: `.example.com`).\n * @param {Number} [options._timesToRetryFailedRequests] Number of times to retry a failed request, according to {@link https://github.com/visionmedia/superagent/blob/master/lib/request-base.js}\n * @see {@link https://auth0.com/docs/api/authentication}\n */\nfunction WebAuth(options) {\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n clientID: { type: 'string', message: 'clientID option is required' },\n responseType: {\n optional: true,\n type: 'string',\n message: 'responseType is not valid'\n },\n responseMode: {\n optional: true,\n type: 'string',\n message: 'responseMode is not valid'\n },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri is not valid'\n },\n scope: { optional: true, type: 'string', message: 'scope is not valid' },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience is not valid'\n },\n popupOrigin: {\n optional: true,\n type: 'string',\n message: 'popupOrigin is not valid'\n },\n leeway: {\n optional: true,\n type: 'number',\n message: 'leeway is not valid'\n },\n plugins: {\n optional: true,\n type: 'array',\n message: 'plugins is not valid'\n },\n maxAge: {\n optional: true,\n type: 'number',\n message: 'maxAge is not valid'\n },\n stateExpiration: {\n optional: true,\n type: 'number',\n message: 'stateExpiration is not valid'\n },\n legacySameSiteCookie: {\n optional: true,\n type: 'boolean',\n message: 'legacySameSiteCookie option is not valid'\n },\n _disableDeprecationWarnings: {\n optional: true,\n type: 'boolean',\n message: '_disableDeprecationWarnings option is not valid'\n },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n },\n _timesToRetryFailedRequests: {\n optional: true,\n type: 'number',\n message: '_timesToRetryFailedRequests option is not valid'\n }\n }\n );\n\n if (options.overrides) {\n assert.check(\n options.overrides,\n { type: 'object', message: 'overrides option is not valid' },\n {\n __tenant: {\n optional: true,\n type: 'string',\n message: '__tenant option is required'\n },\n __token_issuer: {\n optional: true,\n type: 'string',\n message: '__token_issuer option is required'\n },\n __jwks_uri: {\n optional: true,\n type: 'string',\n message: '__jwks_uri is required'\n }\n }\n );\n }\n /* eslint-enable */\n\n this.baseOptions = options;\n this.baseOptions.plugins = new PluginHandler(\n this,\n this.baseOptions.plugins || []\n );\n\n this.baseOptions._sendTelemetry =\n this.baseOptions._sendTelemetry === false\n ? this.baseOptions._sendTelemetry\n : true;\n\n this.baseOptions._timesToRetryFailedRequests =\n options._timesToRetryFailedRequests\n ? parseInt(options._timesToRetryFailedRequests)\n : 0;\n\n this.baseOptions.tenant =\n (this.baseOptions.overrides && this.baseOptions.overrides.__tenant) ||\n this.baseOptions.domain.split('.')[0];\n\n this.baseOptions.token_issuer =\n (this.baseOptions.overrides && this.baseOptions.overrides.__token_issuer) ||\n 'https://' + this.baseOptions.domain + '/';\n\n this.baseOptions.jwksURI =\n this.baseOptions.overrides && this.baseOptions.overrides.__jwks_uri;\n\n if (options.legacySameSiteCookie !== false) {\n this.baseOptions.legacySameSiteCookie = true;\n }\n\n this.transactionManager = new TransactionManager(this.baseOptions);\n\n this.client = new Authentication(this.baseOptions);\n\n /** @member {Redirect} */\n this.redirect = new Redirect(this, this.baseOptions);\n\n /** @member {Popup} */\n this.popup = new Popup(this, this.baseOptions);\n\n this.crossOriginAuthentication = new CrossOriginAuthentication(\n this,\n this.baseOptions\n );\n\n this.webMessageHandler = new WebMessageHandler(this);\n this._universalLogin = new HostedPages(this, this.baseOptions);\n this.ssodataStorage = new SSODataStorage(this.baseOptions);\n}\n\n/**\n * Parse the url hash and extract the Auth response from a Auth flow started with {@link authorize}\n *\n * Only validates id_tokens signed by Auth0 using the RS256 algorithm using the public key exposed\n * by the `/.well-known/jwks.json` endpoint of your account.\n * Tokens signed with the HS256 algorithm cannot be properly validated.\n * Instead, a call to {@link userInfo} will be made with the parsed `access_token`.\n * If the {@link userInfo} call fails, the {@link userInfo} error will be passed to the callback.\n * Tokens signed with other algorithms will not be accepted.\n *\n * @example\n * auth0.parseHash({ hash: window.location.hash }, function(err, authResult) {\n * if (err) {\n * return console.log(err);\n * }\n\n * // The contents of authResult depend on which authentication parameters were used.\n * // It can include the following:\n * // authResult.accessToken - access token for the API specified by `audience`\n * // authResult.expiresIn - string with the access token's expiration time in seconds\n * // authResult.idToken - ID token JWT containing user profile information\n\n * auth0.client.userInfo(authResult.accessToken, function(err, user) {\n * // Now you have the user's information\n * });\n *});\n * @method parseHash\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `token`, `id_token`. For this specific method, we'll only use this value to check if the hash contains the tokens requested in the responseType.\n * @param {authorizeCallback} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.parseHash = function (options, cb) {\n var parsedQs;\n var err;\n\n if (!cb && typeof options === 'function') {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n\n var hashStr =\n options.hash === undefined\n ? windowHelper.getWindow().location.hash\n : options.hash;\n hashStr = hashStr.replace(/^#?\\/?/, '');\n\n parsedQs = qs.parse(hashStr);\n\n if (parsedQs.hasOwnProperty('error')) {\n err = error.buildResponse(parsedQs.error, parsedQs.error_description);\n\n if (parsedQs.state) {\n err.state = parsedQs.state;\n }\n\n return cb(err);\n }\n\n if (\n !parsedQs.hasOwnProperty('access_token') &&\n !parsedQs.hasOwnProperty('id_token') &&\n !parsedQs.hasOwnProperty('refresh_token')\n ) {\n return cb(null, null);\n }\n var responseTypes = (\n this.baseOptions.responseType ||\n options.responseType ||\n ''\n ).split(' ');\n if (\n responseTypes.length > 0 &&\n responseTypes.indexOf('token') !== -1 &&\n !parsedQs.hasOwnProperty('access_token')\n ) {\n return cb(\n error.buildResponse(\n 'invalid_hash',\n 'response_type contains `token`, but the parsed hash does not contain an `access_token` property'\n )\n );\n }\n if (\n responseTypes.length > 0 &&\n responseTypes.indexOf('id_token') !== -1 &&\n !parsedQs.hasOwnProperty('id_token')\n ) {\n return cb(\n error.buildResponse(\n 'invalid_hash',\n 'response_type contains `id_token`, but the parsed hash does not contain an `id_token` property'\n )\n );\n }\n return this.validateAuthenticationResponse(options, parsedQs, cb);\n};\n\n/**\n * Validates an Auth response from a Auth flow started with {@link authorize}\n *\n * Only validates id_tokens signed by Auth0 using the RS256 algorithm using the public key exposed\n * by the `/.well-known/jwks.json` endpoint of your account.\n * Tokens signed with the HS256 algorithm cannot be properly validated.\n * Instead, a call to {@link userInfo} will be made with the parsed `access_token`.\n * If the {@link userInfo} call fails, the {@link userInfo} error will be passed to the callback.\n * Tokens signed with other algorithms will not be accepted.\n *\n * @method validateAuthenticationResponse\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @param {Object} parsedHash an object that represents the parsed hash\n * @param {authorizeCallback} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.validateAuthenticationResponse = function (\n options,\n parsedHash,\n cb\n) {\n var _this = this;\n\n options.__enableIdPInitiatedLogin =\n options.__enableIdPInitiatedLogin || options.__enableImpersonation;\n\n var state = parsedHash.state;\n var transaction = this.transactionManager.getStoredTransaction(state);\n\n var transactionState =\n options.state || (transaction && transaction.state) || null;\n\n var transactionStateMatchesState = transactionState === state;\n\n var shouldBypassStateChecking =\n !state && !transactionState && options.__enableIdPInitiatedLogin;\n\n if (!shouldBypassStateChecking && !transactionStateMatchesState) {\n return cb({\n error: 'invalid_token',\n errorDescription: '`state` does not match.'\n });\n }\n\n var transactionNonce =\n options.nonce || (transaction && transaction.nonce) || null;\n\n var transactionOrganization = transaction && transaction.organization;\n var appState = options.state || (transaction && transaction.appState) || null;\n\n var callback = function (err, payload) {\n if (err) {\n return cb(err);\n }\n\n if (transaction && transaction.lastUsedConnection) {\n var sub;\n\n if (payload) {\n sub = payload.sub;\n }\n\n _this.ssodataStorage.set(transaction.lastUsedConnection, sub);\n }\n\n return cb(null, buildParseHashResponse(parsedHash, appState, payload));\n };\n\n if (!parsedHash.id_token) {\n return callback(null, null);\n }\n\n return this.validateToken(\n parsedHash.id_token,\n transactionNonce,\n function (validationError, payload) {\n if (!validationError) {\n // Verify the organization\n if (transactionOrganization) {\n if (transactionOrganization.indexOf('org_') === 0) {\n if (!payload.org_id) {\n return callback(\n error.invalidToken(\n 'Organization Id (org_id) claim must be a string present in the ID token'\n )\n );\n }\n\n if (payload.org_id !== transactionOrganization) {\n return callback(\n error.invalidToken(\n 'Organization Id (org_id) claim value mismatch in the ID token; expected \"' +\n transactionOrganization +\n '\", found \"' +\n payload.org_id +\n '\"'\n )\n );\n }\n } else {\n if (!payload.org_name) {\n return callback(\n error.invalidToken(\n 'Organization Name (org_name) claim must be a string present in the ID token'\n )\n );\n }\n\n if (payload.org_name !== transactionOrganization.toLowerCase()) {\n return callback(\n error.invalidToken(\n 'Organization Name (org_name) claim value mismatch in the ID token; expected \"' +\n transactionOrganization +\n '\", found \"' +\n payload.org_name +\n '\"'\n )\n );\n }\n }\n }\n\n if (!parsedHash.access_token) {\n return callback(null, payload);\n }\n\n // id_token's generated by non-oidc applications don't have at_hash\n if (!payload.at_hash) {\n return callback(null, payload);\n }\n\n // here we're absolutely sure that the id_token's alg is RS256\n // and that the id_token is valid, so we can check the access_token\n return new IdTokenVerifier().validateAccessToken(\n parsedHash.access_token,\n 'RS256',\n payload.at_hash,\n function (err) {\n if (err) {\n return callback(error.invalidToken(err.message));\n }\n return callback(null, payload);\n }\n );\n }\n\n if (\n validationError.error !== 'invalid_token' ||\n (validationError.errorDescription &&\n validationError.errorDescription.indexOf(\n 'Nonce (nonce) claim value mismatch in the ID token'\n ) > -1)\n ) {\n return callback(validationError);\n }\n\n // if it's an invalid_token error, decode the token\n var decodedToken = new IdTokenVerifier().decode(parsedHash.id_token);\n\n // if the alg is not HS256, return the raw error\n if (decodedToken.header.alg !== 'HS256') {\n return callback(validationError);\n }\n\n if ((decodedToken.payload.nonce || null) !== transactionNonce) {\n return callback({\n error: 'invalid_token',\n errorDescription:\n 'Nonce (nonce) claim value mismatch in the ID token; expected \"' +\n transactionNonce +\n '\", found \"' +\n decodedToken.payload.nonce +\n '\"'\n });\n }\n\n if (!parsedHash.access_token) {\n var noAccessTokenError = {\n error: 'invalid_token',\n description:\n 'The id_token cannot be validated because it was signed with the HS256 algorithm and public clients (like a browser) can’t store secrets. Please read the associated doc for possible ways to fix this. Read more: https://auth0.com/docs/errors/libraries/auth0-js/invalid-token#parsing-an-hs256-signed-id-token-without-an-access-token'\n };\n return callback(noAccessTokenError);\n }\n\n // if the alg is HS256, use the /userinfo endpoint to build the payload\n return _this.client.userInfo(\n parsedHash.access_token,\n function (errUserInfo, profile) {\n // if the /userinfo request fails, use the validationError instead\n if (errUserInfo) {\n return callback(errUserInfo);\n }\n return callback(null, profile);\n }\n );\n }\n );\n};\n\nfunction buildParseHashResponse(qsParams, appState, token) {\n return {\n accessToken: qsParams.access_token || null,\n idToken: qsParams.id_token || null,\n idTokenPayload: token || null,\n appState: appState || null,\n refreshToken: qsParams.refresh_token || null,\n state: qsParams.state || null,\n expiresIn: qsParams.expires_in ? parseInt(qsParams.expires_in, 10) : null,\n tokenType: qsParams.token_type || null,\n scope: qsParams.scope || null\n };\n}\n\n/**\n * @callback validateTokenCallback\n * @param {Error} [err] error returned by while validating the token\n * @param {Object} [payload] claims stored in the token\n */\n\n/**\n * Decodes the a JWT and verifies its nonce value\n *\n * @method validateToken\n * @private\n * @param {String} token\n * @param {String} nonce\n * @param {validateTokenCallback} cb\n */\nWebAuth.prototype.validateToken = function (token, nonce, cb) {\n var verifier = new IdTokenVerifier({\n issuer: this.baseOptions.token_issuer,\n jwksURI: this.baseOptions.jwksURI,\n audience: this.baseOptions.clientID,\n leeway: this.baseOptions.leeway || 60,\n maxAge: this.baseOptions.maxAge,\n __clock: this.baseOptions.__clock || defaultClock\n });\n\n verifier.verify(token, nonce, function (err, payload) {\n if (err) {\n return cb(error.invalidToken(err.message));\n }\n\n cb(null, payload);\n });\n};\n\n/**\n * Executes a silent authentication transaction under the hood in order to fetch a new tokens for the current session.\n * This method requires that all Auth is performed with {@link authorize}\n * Watch out! If you're not using the hosted login page to do social logins, you have to use your own [social connection keys](https://manage.auth0.com/#/connections/social). If you use Auth0's dev keys, you'll always get `login_required` as an error when calling this method.\n *\n * @method renewAuth\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.postMessageDataType] identifier data type to look for in postMessage event data, where events are initiated from silent callback urls, before accepting a message event is the event expected. A value of false means any postMessage event will trigger a callback.\n * @param {String} [options.postMessageOrigin] origin of redirectUri to expect postMessage response from. Defaults to the origin of the receiving window. Only used if usePostMessage is truthy.\n * @param {String} [options.timeout] value in milliseconds used to timeout when the `/authorize` call is failing as part of the silent authentication with postmessage enabled due to a configuration.\n * @param {Boolean} [options.usePostMessage] use postMessage to comunicate between the silent callback and the SPA. When false the SDK will attempt to parse the url hash should ignore the url hash and no extra behaviour is needed\n * @param {authorizeCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renewAuth = function (options, cb) {\n var handler;\n var usePostMessage = !!options.usePostMessage;\n var postMessageDataType = options.postMessageDataType || false;\n var postMessageOrigin =\n options.postMessageOrigin || windowHelper.getWindow().origin;\n var timeout = options.timeout;\n var _this = this;\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'responseType',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n params.responseType = params.responseType || 'token';\n params.responseMode = params.responseMode || 'fragment';\n params = this.transactionManager.process(params);\n\n assert.check(params, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n params.prompt = 'none';\n\n params = objectHelper.blacklist(params, [\n 'usePostMessage',\n 'tenant',\n 'postMessageDataType',\n 'postMessageOrigin'\n ]);\n\n handler = SilentAuthenticationHandler.create({\n authenticationUrl: this.client.buildAuthorizeUrl(params),\n postMessageDataType: postMessageDataType,\n postMessageOrigin: postMessageOrigin,\n timeout: timeout\n });\n\n handler.login(usePostMessage, function (err, hash) {\n if (typeof hash === 'object') {\n // hash was already parsed, so we just return it.\n // it's here to be backwards compatible and should be removed in the next major version.\n return cb(err, hash);\n }\n _this.parseHash({ hash: hash }, cb);\n });\n};\n\n/**\n * Renews an existing session on Auth0's servers using `response_mode=web_message`\n *\n * Allows you to acquire a new token from Auth0 for a user who already\n * has an SSO session established against Auth0 for your domain. \n * If the user is not authenticated, the authentication result will be empty \n * and you'll receive an error like this: `{error: 'login_required'}`.\n * The method accepts any valid OAuth2 parameters that would normally be sent to `/authorize`.\n * \n * Everything happens inside an iframe, so it will not reload your application or redirect away from it.\n * \n * **Important:** If you're not using the hosted login page to do social logins, \n * you have to use your own [social connection keys](https://manage.auth0.com/#/connections/social). \n * If you use Auth0's dev keys, you'll always get `login_required` as an error when calling `checkSession`.\n *\n * **Important:** Because there is no redirect in this method, `responseType: 'code'` is not supported and will throw an error.\n\n * Remember to add the URL where the authorization request originates from to the Allowed Web Origins list of your Auth0 Application in the [Dashboard](https://manage.auth0.com/) under your Applications's **Settings**.\n * @example\n * auth0.checkSession({\n * audience: 'https://mystore.com/api/v2',\n * scope: 'read:order write:order'\n * },\n * function(err, authResult) {\n * // Authentication tokens or error\n * });\n * \n * @method checkSession\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.timeout] value in milliseconds used to timeout when the `/authorize` call is failing as part of the silent authentication with postmessage enabled due to a configuration.\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {checkSessionCallback} cb\n * @see {@link https://auth0.com/docs/libraries/auth0js/v9#using-checksession-to-acquire-new-tokens}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.checkSession = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n if (params.responseType === 'code') {\n return cb({\n error: 'error',\n error_description: \"responseType can't be `code`\"\n });\n }\n\n if (!options.nonce) {\n params = this.transactionManager.process(params);\n }\n\n if (!params.redirectUri) {\n return cb({\n error: 'error',\n error_description: \"redirectUri can't be empty\"\n });\n }\n\n assert.check(params, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n params = objectHelper.blacklist(params, [\n 'usePostMessage',\n 'tenant',\n 'postMessageDataType'\n ]);\n this.webMessageHandler.run(\n params,\n responseHandler(cb, { forceLegacyError: true, ignoreCasing: true })\n );\n};\n\n/**\n * Request an email with instruction to change a user's password\n *\n * @method changePassword\n * @param {Object} options\n * @param {String} options.email address where the user will receive the change password email. It should match the user's email in Auth0\n * @param {String} options.connection name of the connection where the user was created\n * @param {changePasswordCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#change-password}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.changePassword = function (options, cb) {\n return this.client.dbConnection.changePassword(options, cb);\n};\n\n/**\n * Starts a passwordless authentication transaction.\n *\n * @method passwordlessStart\n * @param {Object} options\n * @param {String} options.send what will be sent via email which could be `link` or `code`. For SMS `code` is the only one valid\n * @param {String} [options.phoneNumber] phone number where to send the `code`. This parameter is mutually exclusive with `email`\n * @param {String} [options.email] email where to send the `code` or `link`. This parameter is mutually exclusive with `phoneNumber`\n * @param {String} [options.captcha] the attempted solution for the captcha, if one was presented\n * @param {String} options.connection name of the passwordless connection\n * @param {Object} [options.authParams] additional Auth parameters when using `link`\n * @param {Object} [options.xRequestLanguage] value for the X-Request-Language header. If not set, the language is detected using the client browser.\n * @param {Function} cb\n * @see {@link https://auth0.com/docs/api/authentication#passwordless}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessStart = function (options, cb) {\n var authParams = objectHelper\n .merge(this.baseOptions, [\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options.authParams);\n\n options.authParams = this.transactionManager.process(authParams);\n return this.client.passwordless.start(options, cb);\n};\n\n/**\n * Creates a new user in a Auth0 Database connection\n *\n * @method signup\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {String} [options.given_name] The user's given name(s).\n * @param {String} [options.family_name] The user's family name(s).\n * @param {String} [options.name] The user's full name.\n * @param {String} [options.nickname] The user's nickname.\n * @param {String} [options.picture] A URI pointing to the user's picture.\n * @param {signUpCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.signup = function (options, cb) {\n return this.client.dbConnection.signup(options, cb);\n};\n\n/**\n * Redirects to the hosted login page (`/authorize`) in order to start a new authN/authZ transaction.\n * After that, you'll have to use the {@link parseHash} function at the specified `redirectUri`.\n *\n * @example\n * auth0.authorize({\n * audience: 'https://mystore.com/api/v2',\n * scope: 'read:order write:order',\n * responseType: 'token',\n * redirectUri: 'https://example.com/auth/callback'\n *});\n * @method authorize\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`. Defaults to `openid profile email`.\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Object} [options.appState] any values that you want back on the authentication response\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.authorize = function (options) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'organization',\n 'invitation'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n params = this.transactionManager.process(params);\n params.scope = params.scope || 'openid profile email';\n\n windowHelper.redirect(this.client.buildAuthorizeUrl(params));\n};\n\n/**\n * Signs up a new user, automatically logs the user in after the signup and returns the user token.\n * The login will be done using /oauth/token with password-realm grant type.\n *\n * @method signupAndAuthorize\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {tokenCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @see {@link https://auth0.com/docs/api-auth/grant/password}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.signupAndAuthorize = function (options, cb) {\n var _this = this;\n\n return this.client.dbConnection.signup(\n objectHelper.blacklist(options, ['popupHandler']),\n function (err) {\n if (err) {\n return cb(err);\n }\n options.realm = options.connection;\n if (!options.username) {\n options.username = options.email;\n }\n _this.client.login(options, cb);\n }\n );\n};\n\n/**\n * @callback crossOriginLoginCallback\n * @param {Error} [err] Authentication error returned by Auth0 with the reason why the request failed\n */\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Logs the user in with username and password using the correct flow based on where it's called from:\n * - If you're calling this method from the Universal Login Page, it will use the usernamepassword/login endpoint\n * - If you're calling this method outside the Universal Login Page, it will use the cross origin authentication (/co/authenticate) flow\n * You can use either `username` or `email` to identify the user, but `username` will take precedence over `email`.\n * After the redirect to `redirectUri`, use {@link parseHash} to retrieve the authentication data.\n * **Notice that when using the cross origin authentication flow, some browsers might not be able to successfully authenticate if 3rd party cookies are disabled. [See here for more information.]{@link https://auth0.com/docs/cross-origin-authentication}.**\n *\n * @method login\n * @see Requires [`Implicit` grant]{@link https://auth0.com/docs/api-auth/grant/implicit}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} [options.username] Username (mutually exclusive with email)\n * @param {String} [options.email] Email (mutually exclusive with username)\n * @param {String} [options.password] Password\n * @param {String} [options.realm] Realm used to authenticate the user, it can be a realm name or a database connection name\n * @param {String} [options.captcha] the attempted solution for the captcha, if one was presented\n * @param {onRedirectingCallback} [options.onRedirecting] Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.login = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting',\n 'organization',\n 'invitation'\n ])\n .with(options);\n\n params = this.transactionManager.process(params);\n\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n\n if (isHostedLoginPage) {\n params.connection = params.realm;\n delete params.realm;\n this._universalLogin.login(params, cb);\n } else {\n this.crossOriginAuthentication.login(params, cb);\n }\n};\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Logs in the user by verifying the verification code (OTP) using the cross origin authentication (/co/authenticate) flow. You can use either `phoneNumber` or `email` to identify the user.\n * This only works when 3rd party cookies are enabled in the browser. After the /co/authenticate call, you'll have to use the {@link parseHash} function at the `redirectUri` specified in the constructor.\n *\n * @method passwordlessLogin\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} options.phoneNumber Phone Number (mutually exclusive with email)\n * @param {String} options.email Email (mutually exclusive with username)\n * @param {String} options.verificationCode Verification Code (OTP)\n * @param {String} options.connection Passwordless connection to use. It can either be 'sms' or 'email'.\n * @param {onRedirectingCallback} options.onRedirecting Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessLogin = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting'\n ])\n .with(options);\n\n params = this.transactionManager.process(params);\n\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n\n if (isHostedLoginPage) {\n this.passwordlessVerify(params, cb);\n } else {\n var crossOriginOptions = objectHelper.extend(\n {\n credentialType: 'http://auth0.com/oauth/grant-type/passwordless/otp',\n realm: params.connection,\n username: params.email || params.phoneNumber,\n otp: params.verificationCode\n },\n objectHelper.blacklist(params, [\n 'connection',\n 'email',\n 'phoneNumber',\n 'verificationCode'\n ])\n );\n\n this.crossOriginAuthentication.login(crossOriginOptions, cb);\n }\n};\n\n/**\n * Runs the callback code for the cross origin authentication call. This method is meant to be called by the cross origin authentication callback url.\n *\n * @method crossOriginAuthenticationCallback\n * @deprecated Use {@link crossOriginVerification} instead.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.crossOriginAuthenticationCallback = function () {\n this.crossOriginVerification();\n};\n\n/**\n * Runs the callback code for the cross origin authentication call. This method is meant to be called by the cross origin authentication callback url.\n *\n * @method crossOriginVerification\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.crossOriginVerification = function () {\n this.crossOriginAuthentication.callback();\n};\n\n/**\n * Redirects to the auth0 logout endpoint\n *\n * If you want to navigate the user to a specific URL after the logout, set that URL at the returnTo parameter. The URL should be included in any the appropriate Allowed Logout URLs list:\n *\n * - If the client_id parameter is included, the returnTo URL must be listed in the Allowed Logout URLs set at the Auth0 Application level (see Setting Allowed Logout URLs at the App Level).\n * - If the client_id parameter is NOT included, the returnTo URL must be listed in the Allowed Logout URLs set at the account level (see Setting Allowed Logout URLs at the Account Level).\n *\n * @method logout\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.returnTo] URL to be redirected after the logout\n * @param {Boolean} [options.federated] tells Auth0 if it should logout the user also from the IdP.\n * @see {@link https://auth0.com/docs/api/authentication#logout}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.logout = function (options) {\n windowHelper.redirect(this.client.buildLogoutUrl(options));\n};\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Verifies the passwordless TOTP and redirects to finish the passwordless transaction\n *\n * @method passwordlessVerify\n * @param {Object} options\n * @param {String} options.type `sms` or `email`\n * @param {String} options.phoneNumber only if type = sms\n * @param {String} options.email only if type = email\n * @param {String} options.connection the connection name\n * @param {String} options.verificationCode the TOTP code\n * @param {String} options.clientID the client ID\n * @param {onRedirectingCallback} options.onRedirecting Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {Function} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessVerify = function (options, cb) {\n var _this = this;\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n params = this.transactionManager.process(params);\n\n return this.client.passwordless.verify(params, function (err) {\n if (err) {\n return cb(err);\n }\n\n function doAuth() {\n windowHelper.redirect(_this.client.passwordless.buildVerifyUrl(params));\n }\n\n if (typeof options.onRedirecting === 'function') {\n return options.onRedirecting(function () {\n doAuth();\n });\n }\n\n doAuth();\n });\n};\n\n/**\n * @callback captchaLoadedCallback\n * @param {Error} [error] Error returned if request to get captcha challenge fails\n * @param {Object} [payload] An object containing a callback to trigger the captcha (only if Arkose is the provider)\n * @param {Function} [payload.triggerCaptcha] Triggers the captcha with the first parameter as a callback to be fired after it's solved\n */\n\n/**\n *\n * Renders the captcha challenge in the provided element.\n * This function can only be used in the context of a Classic Universal Login Page.\n *\n * @method renderCaptcha\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for the captcha provider\n * @param {captchaLoadedCallback} [callback] An optional callback called after captcha is loaded\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renderCaptcha = function (element, options, callback) {\n return captcha.render(this.client, element, options, callback);\n};\n\n/**\n *\n * Renders the passwordless captcha challenge in the provided element.\n * This function can only be used in the context of a Classic Universal Login Page.\n *\n * @method renderPasswordlessCaptcha\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for the captcha provider\n * @param {captchaLoadedCallback} [callback] An optional callback called after captcha is loaded\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renderPasswordlessCaptcha = function (\n element,\n options,\n callback\n) {\n return captcha.renderPasswordless(this.client, element, options, callback);\n};\n\nexport default WebAuth;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport qs from 'qs';\nimport responseHandler from '../helper/response-handler';\n\nfunction PasswordlessAuthentication(request, options) {\n this.baseOptions = options;\n this.request = request;\n}\n\nPasswordlessAuthentication.prototype.buildVerifyUrl = function(options) {\n var params;\n var qString;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n verificationCode: {\n type: 'string',\n message: 'verificationCode option is required'\n },\n phoneNumber: {\n optional: false,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return !o.email;\n }\n },\n email: {\n optional: false,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return !o.phoneNumber;\n }\n }\n }\n );\n /* eslint-enable */\n\n params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'protocol',\n 'nonce'\n ])\n .with(options);\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n params = objectHelper.toSnakeCase(params, ['auth0Client']);\n\n qString = qs.stringify(params);\n\n return urljoin(\n this.baseOptions.rootUrl,\n 'passwordless',\n 'verify_redirect',\n '?' + qString\n );\n};\n\nPasswordlessAuthentication.prototype.start = function(options, cb) {\n var url;\n var body;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n send: {\n type: 'string',\n message: 'send option is required',\n values: ['link', 'code'],\n value_message: 'send is not valid ([link, code])'\n },\n phoneNumber: {\n optional: true,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return o.send === 'code' || !o.email;\n }\n },\n email: {\n optional: true,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return o.send === 'link' || !o.phoneNumber;\n }\n },\n authParams: {\n optional: true,\n type: 'object',\n message: 'authParams option is required'\n }\n }\n );\n /* eslint-enable */\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'start');\n\n var xRequestLanguage = options.xRequestLanguage;\n delete options.xRequestLanguage;\n\n body = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope'\n ])\n .with(options);\n\n if (body.scope) {\n body.authParams = body.authParams || {};\n body.authParams.scope = body.authParams.scope || body.scope;\n }\n\n if (body.redirectUri) {\n body.authParams = body.authParams || {};\n body.authParams.redirect_uri =\n body.authParams.redirectUri || body.redirectUri;\n }\n\n if (body.responseType) {\n body.authParams = body.authParams || {};\n body.authParams.response_type =\n body.authParams.responseType || body.responseType;\n }\n\n delete body.redirectUri;\n delete body.responseType;\n delete body.scope;\n\n body = objectHelper.toSnakeCase(body, ['auth0Client', 'authParams']);\n\n var postOptions = xRequestLanguage\n ? { xRequestLanguage: xRequestLanguage }\n : undefined;\n\n return this.request\n .post(url, postOptions)\n .send(body)\n .end(responseHandler(cb));\n};\n\nPasswordlessAuthentication.prototype.verify = function(options, cb) {\n var url;\n var cleanOption;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n verificationCode: {\n type: 'string',\n message: 'verificationCode option is required'\n },\n phoneNumber: {\n optional: false,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return !o.email;\n }\n },\n email: {\n optional: false,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return !o.phoneNumber;\n }\n }\n }\n );\n /* eslint-enable */\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n cleanOption = objectHelper.pick(options, [\n 'connection',\n 'verificationCode',\n 'phoneNumber',\n 'email',\n 'auth0Client',\n 'clientID'\n ]);\n cleanOption = objectHelper.toSnakeCase(cleanOption, ['auth0Client']);\n\n url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'verify');\n\n return this.request\n .post(url)\n .send(cleanOption)\n .end(responseHandler(cb));\n};\n\n/**\n * Makes a call to the `/passwordless/challenge` endpoint\n * and returns the challenge (captcha) if necessary.\n *\n * @method getChallenge\n * @param {callback} cb\n * @memberof PasswordlessAuthentication.prototype\n */\nPasswordlessAuthentication.prototype.getChallenge = function(cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default PasswordlessAuthentication;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\n\nfunction DBConnection(request, options) {\n this.baseOptions = options;\n this.request = request;\n}\n\n/**\n * @callback signUpCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the signup failed\n * @param {Object} [result] result of the signup request\n * @param {Object} result.email user's email\n * @param {Object} result.emailVerified if the user's email was verified\n * @ignore\n */\n\n/**\n * Creates a new user in a Auth0 Database connection\n *\n * @method signup\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} [options.username] user desired username. Required if you use a database connection and you have enabled `Requires Username`\n * @param {String} [options.given_name] The user's given name(s).\n * @param {String} [options.family_name] The user's family name(s).\n * @param {String} [options.name] The user's full name.\n * @param {String} [options.nickname] The user's nickname.\n * @param {String} [options.picture] A URI pointing to the user's picture.\n * @param {String} options.connection name of the connection where the user will be created\n * @param {Object} [options.user_metadata] additional signup attributes used for creating the user. Will be stored in `user_metadata`\n * @param {signUpCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @ignore\n */\nDBConnection.prototype.signup = function (options, cb) {\n var url;\n var body;\n var metadata;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n email: { type: 'string', message: 'email option is required' },\n password: { type: 'string', message: 'password option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'signup');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'state'])\n .with(options);\n\n metadata = body.user_metadata || body.userMetadata;\n\n body = objectHelper.blacklist(body, [\n 'scope',\n 'userMetadata',\n 'user_metadata'\n ]);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n if (metadata) {\n body.user_metadata = metadata;\n }\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * @callback changePasswordCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the request failed\n * @ignore\n */\n\n/**\n * Request an email with instruction to change a user's password\n *\n * @method changePassword\n * @param {Object} options\n * @param {String} options.email address where the user will receive the change password email. It should match the user's email in Auth0\n * @param {String} options.connection name of the connection where the user was created\n * @param {changePasswordCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#change-password}\n * @ignore\n */\nDBConnection.prototype.changePassword = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n email: { type: 'string', message: 'email option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'change_password');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'state'])\n .with(options, ['email', 'connection', 'captcha']);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\nDBConnection.prototype.getChallenge = function (cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default DBConnection;\n","import urljoin from 'url-join';\nimport qs from 'qs';\n\nimport RequestBuilder from '../helper/request-builder';\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport SSODataStorage from '../helper/ssodata';\nimport windowHelper from '../helper/window';\nimport responseHandler from '../helper/response-handler';\nimport parametersWhitelist from '../helper/parameters-whitelist';\nimport Warn from '../helper/warn';\nimport WebAuth from '../web-auth/index';\nimport PasswordlessAuthentication from './passwordless-authentication';\nimport DBConnection from './db-connection';\n\n/**\n * Creates a new Auth0 Authentication API client\n * @constructor\n * @param {Object} options\n * @param {String} options.domain your Auth0 domain\n * @param {String} options.clientID the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.cookieDomain] The domain the cookie is accessible from. If not set, the cookie is scoped to the current domain, including the subdomain. To keep a user logged in across multiple subdomains set this to your top-level domain and prefixed with a `.` (eg: `.example.com`).\n * @see {@link https://auth0.com/docs/api/authentication}\n */\nfunction Authentication(auth0, options) {\n // If we have two arguments, the first one is a WebAuth instance, so we assign that\n // if not, it's an options object and then we should use that as options instead\n // this is here because we don't want to break people coming from v8\n if (arguments.length === 2) {\n this.auth0 = auth0;\n } else {\n options = auth0;\n }\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n clientID: { type: 'string', message: 'clientID option is required' },\n responseType: {\n optional: true,\n type: 'string',\n message: 'responseType is not valid'\n },\n responseMode: {\n optional: true,\n type: 'string',\n message: 'responseMode is not valid'\n },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri is not valid'\n },\n scope: { optional: true, type: 'string', message: 'scope is not valid' },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience is not valid'\n },\n _disableDeprecationWarnings: {\n optional: true,\n type: 'boolean',\n message: '_disableDeprecationWarnings option is not valid'\n },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n }\n }\n );\n /* eslint-enable */\n\n this.baseOptions = options;\n this.baseOptions._sendTelemetry =\n this.baseOptions._sendTelemetry === false\n ? this.baseOptions._sendTelemetry\n : true;\n\n this.baseOptions.rootUrl =\n this.baseOptions.domain &&\n this.baseOptions.domain.toLowerCase().indexOf('http') === 0\n ? this.baseOptions.domain\n : 'https://' + this.baseOptions.domain;\n\n this.request = new RequestBuilder(this.baseOptions);\n\n this.passwordless = new PasswordlessAuthentication(\n this.request,\n this.baseOptions\n );\n this.dbConnection = new DBConnection(this.request, this.baseOptions);\n\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n this.ssodataStorage = new SSODataStorage(this.baseOptions);\n}\n\n/**\n * Builds and returns the `/authorize` url in order to initialize a new authN/authZ transaction\n *\n * @method buildAuthorizeUrl\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @see {@link https://auth0.com/docs/api/authentication#social}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.buildAuthorizeUrl = function (options) {\n var params;\n var qString;\n\n assert.check(options, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n\n params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience'\n ])\n .with(options);\n\n /* eslint-disable */\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n clientID: { type: 'string', message: 'clientID option is required' },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri option is required'\n },\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n },\n nonce: {\n type: 'string',\n message: 'nonce option is required',\n condition: function (o) {\n return (\n o.responseType.indexOf('code') === -1 &&\n o.responseType.indexOf('id_token') !== -1\n );\n }\n },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n /* eslint-enable */\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n if (params.connection_scope && assert.isArray(params.connection_scope)) {\n params.connection_scope = params.connection_scope.join(',');\n }\n\n params = objectHelper.blacklist(params, [\n 'username',\n 'popupOptions',\n 'domain',\n 'tenant',\n 'timeout',\n 'appState'\n ]);\n params = objectHelper.toSnakeCase(params, ['auth0Client']);\n params = parametersWhitelist.oauthAuthorizeParams(this.warn, params);\n\n qString = qs.stringify(params);\n\n return urljoin(this.baseOptions.rootUrl, 'authorize', '?' + qString);\n};\n\n/**\n * Builds and returns the Logout url in order to initialize a new authN/authZ transaction\n *\n * If you want to navigate the user to a specific URL after the logout, set that URL at the returnTo parameter. The URL should be included in any the appropriate Allowed Logout URLs list:\n *\n * - If the client_id parameter is included, the returnTo URL must be listed in the Allowed Logout URLs set at the Auth0 Application level (see Setting Allowed Logout URLs at the App Level).\n * - If the client_id parameter is NOT included, the returnTo URL must be listed in the Allowed Logout URLs set at the account level (see Setting Allowed Logout URLs at the Account Level).\n * @method buildLogoutUrl\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.returnTo] URL to be redirected after the logout\n * @param {Boolean} [options.federated] tells Auth0 if it should logout the user also from the IdP.\n * @see {@link https://auth0.com/docs/api/authentication#logout}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.buildLogoutUrl = function (options) {\n var params;\n var qString;\n\n assert.check(options, {\n optional: true,\n type: 'object',\n message: 'options parameter is not valid'\n });\n\n params = objectHelper\n .merge(this.baseOptions, ['clientID'])\n .with(options || {});\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n params = objectHelper.toSnakeCase(params, ['auth0Client', 'returnTo']);\n\n qString = qs.stringify(objectHelper.blacklist(params, ['federated']));\n if (\n options &&\n options.federated !== undefined &&\n options.federated !== false &&\n options.federated !== 'false'\n ) {\n qString += '&federated';\n }\n\n return urljoin(this.baseOptions.rootUrl, 'v2', 'logout', '?' + qString);\n};\n\n/**\n * @callback authorizeCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the Auth request. If there is no token available, this value will be null.\n * @param {String} [result.accessToken] token that allows access to the specified resource server (identified by the audience parameter or by default Auth0's /userinfo endpoint)\n * @param {Number} [result.expiresIn] number of seconds until the access token expires\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @param {Object} [result.appState] values that you receive back on the authentication response\n * @memberof Authentication.prototype\n */\n\n/**\n * @callback tokenCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the Auth request\n * @param {String} result.accessToken token that allows access to the specified resource server (identified by the audience parameter or by default Auth0's /userinfo endpoint)\n * @param {Number} result.expiresIn number of seconds until the access token expires\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `oauth/token` endpoint with `password` grant type to login to the default directory.\n *\n * @method loginWithDefaultDirectory\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {tokenCallback} cb function called with the result of the request\n * @see Requires [`password` grant]{@link https://auth0.com/docs/api-auth/grant/password}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.loginWithDefaultDirectory = function (options, cb) {\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n options.grantType = 'password';\n\n return this.oauthToken(options, cb);\n};\n\n/**\n * Makes a call to the `oauth/token` endpoint with `password-realm` grant type\n *\n * @method login\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} options.realm the HRD domain or the connection name where the user belongs to. e.g. `Username-Password-Authentication`\n * @param {tokenCallback} cb function called with the result of the request\n * @see Requires [`http://auth0.com/oauth/grant-type/password-realm` grant]{@link https://auth0.com/docs/api-auth/grant/password#realm-support}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.login = function (options, cb) {\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n realm: { type: 'string', message: 'realm option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n options.grantType = 'http://auth0.com/oauth/grant-type/password-realm';\n\n return this.oauthToken(options, cb);\n};\n\n/**\n * Makes a call to the `oauth/token` endpoint\n *\n * @method oauthToken\n * @private\n */\nAuthentication.prototype.oauthToken = function (options, cb) {\n var url;\n var body;\n\n assert.check(options, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'oauth', 'token');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'scope', 'audience'])\n .with(options);\n\n assert.check(\n body,\n { type: 'object', message: 'options parameter is not valid' },\n {\n clientID: { type: 'string', message: 'clientID option is required' },\n grantType: { type: 'string', message: 'grantType option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n body = parametersWhitelist.oauthTokenParams(this.warn, body);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Performs authentication calling `/oauth/ro` endpoint with username\n * and password for a given connection name.\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link login} or {@link loginWithDefaultDirectory}.\n *\n * @method loginWithResourceOwner\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {Object} options.connection the connection name where the user belongs to. e.g. `Username-Password-Authentication`\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.device] name of the device/browser where the Auth was requested\n * @param {tokenCallback} cb function called with the result of the request\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.loginWithResourceOwner = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n connection: { type: 'string', message: 'connection option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'oauth', 'ro');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'scope'])\n .with(options, ['username', 'password', 'scope', 'connection', 'device']);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n body.grant_type = body.grant_type || 'password';\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Uses {@link checkSession} and localStorage to return data from the last successful authentication request.\n *\n * @method getSSOData\n * @param {Boolean} withActiveDirectories this parameter is not used anymore. It's here to be backward compatible\n * @param {Function} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getSSOData = function (withActiveDirectories, cb) {\n /* istanbul ignore if */\n if (!this.auth0) {\n this.auth0 = new WebAuth(this.baseOptions);\n }\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n if (isHostedLoginPage) {\n return this.auth0._universalLogin.getSSOData(withActiveDirectories, cb);\n }\n if (typeof withActiveDirectories === 'function') {\n cb = withActiveDirectories;\n }\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n var clientId = this.baseOptions.clientID;\n var ssodataInformation = this.ssodataStorage.get() || {};\n\n this.auth0.checkSession(\n {\n responseType: 'token id_token',\n scope: 'openid profile email',\n connection: ssodataInformation.lastUsedConnection,\n timeout: 5000\n },\n function (err, result) {\n if (err) {\n if (err.error === 'login_required') {\n return cb(null, { sso: false });\n }\n if (err.error === 'consent_required') {\n err.error_description =\n 'Consent required. When using `getSSOData`, the user has to be authenticated with the following scope: `openid profile email`.';\n }\n return cb(err, { sso: false });\n }\n if (\n ssodataInformation.lastUsedSub &&\n ssodataInformation.lastUsedSub !== result.idTokenPayload.sub\n ) {\n return cb(err, { sso: false });\n }\n return cb(null, {\n lastUsedConnection: {\n name: ssodataInformation.lastUsedConnection\n },\n lastUsedUserID: result.idTokenPayload.sub,\n lastUsedUsername:\n result.idTokenPayload.email || result.idTokenPayload.name,\n lastUsedClientID: clientId,\n sessionClients: [clientId],\n sso: true\n });\n }\n );\n};\n\n/**\n * @callback userInfoCallback\n * @param {Error} [err] error returned by Auth0\n * @param {Object} [userInfo] user information\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `/userinfo` endpoint and returns the user profile\n *\n * @method userInfo\n * @param {String} accessToken token issued to a user after Auth\n * @param {userInfoCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#get-user-info}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.userInfo = function (accessToken, cb) {\n var url;\n\n assert.check(accessToken, {\n type: 'string',\n message: 'accessToken parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'userinfo');\n\n return this.request\n .get(url)\n .set('Authorization', 'Bearer ' + accessToken)\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Makes a call to the `/usernamepassword/challenge` endpoint\n * and returns the challenge (captcha) if necessary.\n *\n * @method getChallenge\n * @param {callback} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getChallenge = function (cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'usernamepassword', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * @callback delegationCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the delegation failed\n * @param {Object} [result] result of the delegation request. The payload depends on what ai type was used\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `/delegation` endpoint with either an `id_token` or `refresh_token`\n *\n * @method delegation\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.grantType grant type used for delegation. The only valid value is `urn:ietf:params:oauth:grant-type:jwt-bearer`\n * @param {String} [options.idToken] valid token of the user issued after Auth. If no `refresh_token` is provided this parameter is required\n * @param {String} [options.refreshToken] valid refresh token of the user issued after Auth. If no `id_token` is provided this parameter is required\n * @param {String} [options.target] the target ClientID of the delegation\n * @param {String} [options.scope] either `openid` or `openid profile email`\n * @param {String} [options.apiType] the api to be called\n * @param {delegationCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#delegation}\n * @see Requires [http://auth0.com/oauth/grant-type/password-realm]{@link https://auth0.com/docs/api-auth/grant/password#realm-support}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.delegation = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n grant_type: { type: 'string', message: 'grant_type option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'delegation');\n\n body = objectHelper.merge(this.baseOptions, ['clientID']).with(options);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Fetches the user country based on the ip.\n *\n * @method getUserCountry\n * @private\n * @param {Function} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getUserCountry = function (cb) {\n var url;\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'user', 'geoloc', 'country');\n\n return this.request.get(url).end(responseHandler(cb));\n};\n\nexport default Authentication;\n","import urljoin from 'url-join';\n\nimport RequestBuilder from '../helper/request-builder';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\n\n/**\n * Auth0 Management API Client (methods allowed to be called from the browser only)\n * @constructor\n * @param {Object} options\n * @param {Object} options.domain your Auth0 acount domain\n * @param {Object} options.token a valid API token\n */\nfunction Management(options) {\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n token: { type: 'string', message: 'token option is required' },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n }\n }\n );\n /* eslint-enable */\n\n this.baseOptions = options;\n\n this.baseOptions.headers = {\n Authorization: 'Bearer ' + this.baseOptions.token\n };\n\n this.request = new RequestBuilder(this.baseOptions);\n this.baseOptions.rootUrl = urljoin(\n 'https://' + this.baseOptions.domain,\n 'api',\n 'v2'\n );\n}\n\n/**\n * @callback userCallback\n * @param {Error} [err] failure reason for the failed request to Management API\n * @param {Object} [result] user profile\n * @memberof Management.prototype\n */\n\n/**\n * Returns the user profile\n *\n * @method getUser\n * @param {String} userId identifier of the user to retrieve\n * @param {userCallback} cb\n * @see https://auth0.com/docs/api/management/v2#!/Users/get_users_by_id\n * @memberof Management.prototype\n */\nManagement.prototype.getUser = function(userId, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request.get(url).end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Updates the user metdata. It will patch the user metdata with the attributes sent.\n *\n *\n * @method patchUserMetadata\n * @param {String} userId\n * @param {Object} userMetadata\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id}\n * @memberof Management.prototype\n */\nManagement.prototype.patchUserMetadata = function(userId, userMetadata, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(userMetadata, {\n type: 'object',\n message: 'userMetadata parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request\n .patch(url)\n .send({ user_metadata: userMetadata })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Updates the user attributes. It will patch the user attributes that the server allows it.\n *\n * @method patchUserAttributes\n * @param {String} userId\n * @param {Object} user\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id}\n * @memberof Management.prototype\n */\nManagement.prototype.patchUserAttributes = function(userId, user, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(user, {\n type: 'object',\n message: 'user parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request\n .patch(url)\n .send(user)\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Link two users\n *\n * @method linkUser\n * @param {String} userId\n * @param {String} secondaryUserToken\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/post_identities}\n * @memberof Management.prototype\n */\nManagement.prototype.linkUser = function(userId, secondaryUserToken, cb) {\n var url;\n /* eslint-disable */\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(secondaryUserToken, {\n type: 'string',\n message: 'secondaryUserToken parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n /* eslint-enable */\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId, 'identities');\n\n return this.request\n .post(url)\n .send({ link_with: secondaryUserToken })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default Management;\n","import Authentication from './authentication';\nimport Management from './management';\nimport WebAuth from './web-auth';\nimport version from './version';\n\nexport { Authentication, Management, WebAuth, version };\n\nexport default {\n Authentication: Authentication,\n Management: Management,\n WebAuth: WebAuth,\n version: version\n};\n"],"names":["context","definition","this","normalize","strArray","resultArray","length","TypeError","match","first","shift","replace","i","component","push","str","join","parts","split","arguments","slice","call","module","exports","origSymbol","Symbol","ERROR_MESSAGE","Array","prototype","toStr","Object","toString","Function","bind","that","target","bound","args","binder","result","apply","concat","boundLength","Math","max","boundArgs","Empty","hasOwnProperty","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","e","$gOPD","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","calleeThrows","get","gOPDthrows","hasSymbols","getOwnPropertySymbols","iterator","obj","sym","symObj","keys","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","value","enumerable","hasSymbolSham","getProto","getPrototypeOf","x","__proto__","needsEval","TypedArray","Uint8Array","undefined","INTRINSICS","%AggregateError%","AggregateError","%Array%","%ArrayBuffer%","ArrayBuffer","%ArrayIteratorPrototype%","%AsyncFromSyncIteratorPrototype%","%AsyncFunction%","%AsyncGenerator%","%AsyncGeneratorFunction%","%AsyncIteratorPrototype%","%Atomics%","Atomics","%BigInt%","BigInt","%BigInt64Array%","BigInt64Array","%BigUint64Array%","BigUint64Array","%Boolean%","Boolean","%DataView%","DataView","%Date%","Date","%decodeURI%","decodeURI","%decodeURIComponent%","decodeURIComponent","%encodeURI%","encodeURI","%encodeURIComponent%","encodeURIComponent","%Error%","Error","%eval%","eval","%EvalError%","EvalError","%Float32Array%","Float32Array","%Float64Array%","Float64Array","%FinalizationRegistry%","FinalizationRegistry","%Function%","%GeneratorFunction%","%Int8Array%","Int8Array","%Int16Array%","Int16Array","%Int32Array%","Int32Array","%isFinite%","isFinite","%isNaN%","isNaN","%IteratorPrototype%","%JSON%","JSON","%Map%","Map","%MapIteratorPrototype%","%Math%","%Number%","Number","%Object%","%parseFloat%","parseFloat","%parseInt%","parseInt","%Promise%","Promise","%Proxy%","Proxy","%RangeError%","RangeError","%ReferenceError%","ReferenceError","%Reflect%","Reflect","%RegExp%","RegExp","%Set%","Set","%SetIteratorPrototype%","%SharedArrayBuffer%","SharedArrayBuffer","%String%","String","%StringIteratorPrototype%","%Symbol%","%SyntaxError%","%ThrowTypeError%","%TypedArray%","%TypeError%","%Uint8Array%","%Uint8ClampedArray%","Uint8ClampedArray","%Uint16Array%","Uint16Array","%Uint32Array%","Uint32Array","%URIError%","URIError","%WeakMap%","WeakMap","%WeakRef%","WeakRef","%WeakSet%","WeakSet","error","errorProto","LEGACY_ALIASES","%ArrayBufferPrototype%","%ArrayPrototype%","%ArrayProto_entries%","%ArrayProto_forEach%","%ArrayProto_keys%","%ArrayProto_values%","%AsyncFunctionPrototype%","%AsyncGeneratorPrototype%","%BooleanPrototype%","%DataViewPrototype%","%DatePrototype%","%ErrorPrototype%","%EvalErrorPrototype%","%Float32ArrayPrototype%","%Float64ArrayPrototype%","%FunctionPrototype%","%Generator%","%GeneratorPrototype%","%Int8ArrayPrototype%","%Int16ArrayPrototype%","%Int32ArrayPrototype%","%JSONParse%","%JSONStringify%","%MapPrototype%","%NumberPrototype%","%ObjectPrototype%","%ObjProto_toString%","%ObjProto_valueOf%","%PromisePrototype%","%PromiseProto_then%","%Promise_all%","%Promise_reject%","%Promise_resolve%","%RangeErrorPrototype%","%ReferenceErrorPrototype%","%RegExpPrototype%","%SetPrototype%","%SharedArrayBufferPrototype%","%StringPrototype%","%SymbolPrototype%","%SyntaxErrorPrototype%","%TypedArrayPrototype%","%TypeErrorPrototype%","%Uint8ArrayPrototype%","%Uint8ClampedArrayPrototype%","%Uint16ArrayPrototype%","%Uint32ArrayPrototype%","%URIErrorPrototype%","%WeakMapPrototype%","%WeakSetPrototype%","$concat","$spliceApply","splice","$replace","$strSlice","$exec","exec","rePropName","reEscapeChar","stringToPath","string","last","number","quote","subString","getBaseIntrinsic","name","allowMissing","alias","intrinsicName","hasOwn","doEval","fn","gen","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","desc","$apply","GetIntrinsic","$call","$reflectApply","$defineProperty","$max","originalFunction","func","configurable","applyBind","$indexOf","callBind","hasMap","mapSizeDescriptor","mapSize","mapForEach","forEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","has","weakSetHas","weakRefDeref","deref","booleanValueOf","valueOf","objectToString","functionToString","$match","$slice","$toUpperCase","toUpperCase","$toLowerCase","toLowerCase","$test","test","$join","$arrSlice","$floor","floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","inspectCustom","utilInspect","custom","inspectSymbol","isSymbol","inspect_","options","depth","seen","opts","quoteStyle","maxStringLength","customInspect","indent","numericSeparator","inspectString","remaining","trailer","wrapQuotes","lowbyte","bigIntStr","maxDepth","isArray","baseIndent","base","prev","getIndent","indexOf","inspect","from","noIndent","newOpts","isRegExp","f","m","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","isElement","s","attrs","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","key","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","isPlainObject","constructor","protoTag","stringTag","tag","defaultStyle","quoteChar","l","c","n","charCodeAt","8","9","10","12","13","type","size","entries","lineJoiner","isArr","symMap","k","j","$WeakMap","$Map","$weakMapGet","callBound","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","list","curr","next","$wm","$m","$o","channel","assert","objects","node","listGet","listHas","set","listSet","percentTwenties","Format","default","formatters","RFC1738","RFC3986","hexTable","array","arrayToObject","source","plainObjects","create","assign","reduce","acc","combine","a","b","compact","queue","o","prop","refs","item","val","pop","compacted","compactQueue","decode","decoder","charset","strWithoutPlus","unescape","encode","defaultEncoder","kind","format","escape","$0","out","formats","charAt","isBuffer","maybeMap","mapped","merge","allowPrototypes","mergeTarget","targetItem","arrayPrefixGenerators","brackets","prefix","comma","indices","repeat","pushToArray","arr","valueOrArray","toISO","toISOString","defaultFormat","defaults","addQueryPrefix","allowDots","charsetSentinel","delimiter","encoder","utils","encodeValuesOnly","formatter","serializeDate","date","skipNulls","strictNullHandling","sentinel","stringify","object","generateArrayPrefix","commaRoundTrip","filter","sort","sideChannel","tmpSc","step","findFlag","pos","v","isNonNullishPrimitive","keyValue","valuesArray","valuesJoined","objKeys","values","adjustedPrefix","keyPrefix","valueSideChannel","getSideChannel","allowSparse","arrayLimit","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","fromCharCode","parseArrayValue","parseKeys","givenKey","valuesParsed","child","segment","parent","index","chain","leaf","root","cleanRoot","0","parseObject","parse","normalizeParseOptions","tempObj","cleanStr","limit","skipIndex","bracketEqualsPos","encodedVal","parseValues","newObj","normalizeStringifyOptions","arrayFormat","joined","Emitter","mixin","on","addEventListener","event","_callbacks","once","off","removeListener","removeAllListeners","removeEventListener","cb","callbacks","emit","len","listeners","hasListeners","stable","deterministicStringify","stableStringify","replacerStack","defaultOptions","depthLimit","MAX_SAFE_INTEGER","edgesLimit","replacer","spacer","res","decirc","edgeIndex","stack","setReplace","replaceGetterValues","_","defineProperty","propertyDescriptor","compareFunction","tmp","deterministicDecirc","toJSON","_typeof","_createForOfIteratorHelper","allowArrayLike","it","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","done","_e","err","normalCompletion","didErr","_e2","return","arr2","string_","_step","_iterator","_value","_step2","_iterator2","url","header","changesOrigin","host","authorization","cookie","property","isObject","_require","RequestBase","clearTimeout","_timer","_responseTimeoutTimer","_uploadTimeoutTimer","_parser","responseType","_responseType","serialize","_serializer","timeout","_timeout","_responseTimeout","_uploadTimeout","option","deadline","response","upload","console","warn","retry","count","_maxRetries","_retries","_retryCallback","ERROR_CODES","STATUS_CODES","_shouldRetry","override","status","code","crossDomain","_retry","req","request","_aborted","timedout","timedoutError","_end","then","resolve","reject","_this","_fullfilledPromise","self","_endCalled","method","end","catch","callback","use","ok","_okCallback","_isResponseOK","field","_header","getHeader","unset","_data","_getFormData","append","abort","xhr","semver","gte","process","version","lt","destroyed","_auth","user","pass","base64Encoder","username","password","withCredentials","_withCredentials","redirects","_maxRedirects","maxResponseSize","_maxResponseSize","data","headers","send","isObject_","_formData","_isHost","trim","sortQuery","_sort","_finalizeQueryString","query","_query","includes","queryArray","_appendQueryString","_timeoutError","reason","errno","_setTimeouts","setTimeout","ResponseBase","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","Agent","_defaults","_setHeaderProperties","ct","parameters","params","links","link","parseLinks","_unused","_setStatusProperties","trunc","statusCode","statusType","info","redirect","clientError","serverError","toError","created","accepted","noContent","badRequest","unauthorized","notAcceptable","forbidden","notFound","unprocessableEntity","_loop","_arr","_i","_len","_key","_setDefaults","def","window","noop","Request","getXHR","XMLHttpRequest","location","protocol","ActiveXObject","_unused2","_unused3","_unused4","pairs","pushEncodedKeyValuePair","subkey","parseString","pair","length_","isJSON","mime","Response","request_","text","responseText","statusText","line","lines","fields","parseHeader","getAllResponseHeaders","getResponseHeader","body","_parseBody","new_error","original","rawResponse","serializeObject","types","html","json","xml","urlencoded","form","form-data","application/x-www-form-urlencoded","qs","application/json","safeStringify","message","accept","auth","btoa","attach","file","FormData","_callback","retries","crossDomainError","agent","ca","buffer","write","pipe","_setUploadTimeout","readyState","_unused5","handleProgress","direction","total","percent","loaded","_unused6","open","contentType","_serialize","setRequestHeader","del","delete","head","patch","post","put","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","start","output","base64","fromByteArray","stringToByteArray","mod","padding","byteArrayToString","toByteArray","raw","attribute","attr","variable","check","config","optional","condition","value_message","supportsIsArray","objectAssignPolyfill","to","nextSource","keysArray","nextIndex","nextKey","pick","objectValues","extend","unshift","objectAssign","getLocationFromUrl","href","hostname","port","pathname","search","hash","trimmed","toSnakeCase","exceptions","p","newKey","wasPrevNumber","wasPrevUppercase","camelToSnake","toCamelCase","keepOriginal","blacklist","blacklistedKeys","with","object2","keys2","getKeysNotIn","allowedKeys","notAllowed","getOriginFromUrl","parsed","origin","trimUserDetails","trimMultiple","updatePropertyOn","path","RequestWrapper","RequestObj","RequestBuilder","_sendTelemetry","_telemetryInfo","_timesToRetryFailedRequests","_universalLoginPage","universalLoginPage","getWindow","getMethod","getBody","getUrl","getHeaders","objectHelper","setCommonConfiguration","ongoingRequest","noHeaders","xRequestLanguage","getTelemetryData","telemetryName","clientInfo","env","jsonClientInfo","base64Url","getDocument","document","getOrigin","DummyStorage","getItem","removeItem","setItem","factory","init","converter","api","expires","toUTCString","stringifiedAttributes","attributeName","jar","cookies","read","getJSON","remove","withConverter","buildCompatCookieKey","CookieStorage","_options","Warn","disableWarnings","StorageHandler","storage","__tryLocalStorageFirst","localStorage","windowHandler","warning","Storage","handler","SSODataStorage","buildResponse","description","errorDescription","Cookie","cookieDomain","domain","secure","sameSite","legacySameSiteCookie","legacyOptions","failover","connection","sub","ssodata","lastUsedConnection","lastUsedSub","invalidToken","wrapCallback","ignoreCasing","errObj","error_code","error_description","details","forceLegacyError","error_codes","error_details","errorDetails","codes","policy","keepOriginalCasing","tokenParams","authorizeParams","oauthTokenParams","oauthAuthorizeParams","t","globalThis","global","r","d","w","h","u","MutationObserver","WebKitMutationObserver","importScripts","MessageChannel","y","g","T","S","_state","C","_result","I","B","nextTick","createTextNode","observe","characterData","port1","onmessage","port2","postMessage","require","runOnLoop","runOnContext","random","substring","A","D","E","_onerror","M","_subscribers","R","_instanceConstructor","promise","_remaining","_enumerate","_eachEntry","_settledAt","N","_willSettleAt","finally","all","race","_setScheduler","_setAsap","_asap","polyfill","cast","crypto","msCrypto","getRandomValues","randomBytes","readInt32LE","lib","Base","mixIn","$super","clone","WordArray","words","sigBytes","clamp","ceil","enc","Hex","substr","Latin1","Utf8","BufferedBlockAlgorithm","reset","_nDataBytes","_append","_process","blockSize","_minBufferSize","min","_doProcessBlock","Hasher","cfg","_doReset","update","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","sqrt","pow","SHA256","_hash","HmacSHA256","Base64","_map","_reverseMap","fromNumber","fromString","navigator","appName","am","DB","DM","DV","FV","F1","F2","fromInt","mp","invDigit","mpl","mph","um","mt2","r2","q3","ONE","dlShiftTo","mu","divide","convert","compareTo","revert","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","abs","ZERO","subTo","copyTo","drShiftTo","fromRadix","lShiftTo","rShiftTo","isEven","exp","negate","toRadix","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","getTime","chunkSize","LN2","log","signum","intValue","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","subtract","getLowestSetBit","shiftRight","modPow","byteValue","shortValue","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","add","multiply","remainder","divideAndRemainder","modInverse","gcd","square","Barrett","appVersion","BigInteger","SecureRandom","sha1","sha224","sha256","sha384","sha512","md2","md5","ripemd160","verify","alg","map","urljoin","responseURL","blob","Blob","onload","onerror","credentials","jwksCache","expectedAlg","issuer","audience","leeway","jwksURI","maxAge","__clock","PluginHandler","webAuth","plugins","pluginName","setWebAuth","encoded","payload","signature","kid","aud","iss","nbf","iat","azp","auth_time","nonce","getRsaVerifier","setUTCSeconds","fetch","modulus","validateAccessToken","+","/","=","extensibilityPoint","supports","randomString","bytes","cryptoObj","windowHelper","TransactionManager","transaction","namespace","keyLength","stateExpiration","IframeHandler","timeoutCallback","eventListenerType","iframe","timeoutHandle","_destroyTimeout","transientMessageEventListener","proxyEventListener","eventValidator","isValid","WebMessageHandler","baseOptions","CrossOriginAuthentication","webMessageHandler","createKey","coId","Redirect","auth0","crossOriginAuthentication","_disableDeprecationWarnings","realm","responseTypeIncludesIdToken","generateTransaction","appState","state","organization","generateNonce","transactionPayload","getStoredTransaction","transactionData","clearTransaction","_window","createElement","style","display","eventListener","eventSourceObject","appendChild","src","timeoutHandler","eventData","sourceObject","destroy","parentNode","removeChild","run","responseMode","prompt","currentOrigin","redirectUriOrigin","redirectUri","authorizeUrl","runWebMessageFlow","client","buildAuthorizeUrl","parsedHash","validateAuthenticationResponse","transactionManager","login","rootUrl","email","authenticateBody","client_id","clientID","otp","credentialType","credential_type","errorObject","responseHandler","doAuth","popupMode","popup","authorizeOptions","loginTicket","login_ticket","co_id","co_verifier","authorize","onRedirecting","targetOrigin","getFragment","theWindow","evt","id","verifier","tryGetVerifier","loginWithCredentials","signupAndLogin","dbConnection","signup","WinChan","addListener","attachEvent","detachEvent","extractOrigin","isIE","rv","ua","userAgent","$1","isInternetExplorer","relay_url","window_name","window_features","isFennec","messageTarget","setAttribute","contentWindow","closeInterval","setInterval","closed","cleanup","clearInterval","onMessage","close","securityViolation","originalPopup","focus","onOpen","msgTarget","frames","opener","findRelay","doPost","msg","onDie","o_O","onUnload","ohWell","detach","winopts","arg","PopupHandler","_current_popup","Popup","popupOrigin","SilentAuthenticationHandler","authenticationUrl","postMessageDataType","postMessageOrigin","UsernamePassword","HostedPages","calculatePosition","width","height","screenX","screenLeft","screenY","screenTop","outerWidth","clientWidth","outerHeight","clientHeight","left","top","preload","popupPosition","popupOptions","windowFeatures","kill","load","relayUrl","winchanOptions","buildPopupHandler","pluginHandler","getPopupHandler","popupHandler","originUrl","parseHash","popOpts","owp","urlHelper","processParams","scope","passwordlessVerify","passwordless","phoneNumber","verificationCode","loginWithResourceOwner","usePostMessage","getCallbackHandler","getEventValidator","callbackValue","formHtml","div","_document","innerHTML","children","submit","usernamePassword","getSSOData","withActiveDirectories","ldaps","captchaSolved","lang","templates","challenge","image","recaptcha_v2","recaptcha_enterprise","hcaptcha","friendly_captcha","arkose","auth0_v2","handleAuth0Provider","element","provider","querySelector","preventDefault","globalForCaptchaProvider","grecaptcha","enterprise","friendlyChallenge","turnstile","loadScript","script","startsWith","dataset","removeScript","querySelectorAll","injectCaptchaScript","setValue","callbackName","async","defer","scriptSrc","clientSubdomain","siteKey","scriptForCaptchaProvider","retryCount","handleCaptchaProvider","captchaClass","widgetId","hasAttribute","auth0FCInstance","captchaDiv","setConfig","onCompleted","token","onError","WidgetInstance","sitekey","language","doneCallback","solution","errorCallback","renderParams","expired-callback","error-callback","theme","render","auth0Client","getChallenge","required","triggerCaptcha","solvedCallback","reload","getValue","captchaInput","renderPasswordless","defaultClock","WebAuth","overrides","__tenant","__token_issuer","__jwks_uri","tenant","token_issuer","Authentication","_universalLogin","ssodataStorage","PasswordlessAuthentication","DBConnection","Management","Authorization","parsedQs","hashStr","responseTypes","__enableIdPInitiatedLogin","__enableImpersonation","transactionState","transactionStateMatchesState","transactionNonce","transactionOrganization","qsParams","accessToken","access_token","idToken","id_token","idTokenPayload","refreshToken","refresh_token","expiresIn","expires_in","tokenType","token_type","buildParseHashResponse","validateToken","validationError","org_id","org_name","at_hash","IdTokenVerifier","decodedToken","userInfo","errUserInfo","profile","renewAuth","checkSession","changePassword","passwordlessStart","authParams","signupAndAuthorize","passwordlessLogin","crossOriginOptions","crossOriginAuthenticationCallback","crossOriginVerification","logout","buildLogoutUrl","buildVerifyUrl","renderCaptcha","captcha","renderPasswordlessCaptcha","qString","redirect_uri","response_type","postOptions","cleanOption","metadata","user_metadata","userMetadata","connection_scope","parametersWhitelist","federated","loginWithDefaultDirectory","grantType","oauthToken","grant_type","clientId","ssodataInformation","sso","lastUsedUserID","lastUsedUsername","lastUsedClientID","sessionClients","delegation","getUserCountry","getUser","userId","patchUserMetadata","patchUserAttributes","linkUser","secondaryUserToken","link_with"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"auth0.min.js","sources":["../node_modules/url-join/lib/url-join.js","../node_modules/has-symbols/index.js","../node_modules/has-proto/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-symbols/shams.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/index.js","../node_modules/component-emitter/index.js","../node_modules/fast-safe-stringify/index.js","../node_modules/superagent/lib/utils.js","../node_modules/superagent/lib/request-base.js","../node_modules/superagent/lib/response-base.js","../node_modules/superagent/lib/agent-base.js","../node_modules/base64-js/index.js","../node_modules/superagent/lib/client.js","../src/helper/base64_url.js","../src/version.js","../src/helper/assert.js","../src/helper/object-assign.js","../src/helper/object.js","../src/helper/request-builder.js","../src/helper/window.js","../src/helper/storage/dummy.js","../node_modules/js-cookie/src/js.cookie.js","../src/helper/storage/cookie.js","../src/helper/warn.js","../src/helper/storage/handler.js","../src/helper/storage.js","../src/helper/ssodata.js","../src/helper/error.js","../src/helper/response-handler.js","../src/helper/parameters-whitelist.js","../node_modules/idtoken-verifier/build/idtoken-verifier.esm.js","../src/helper/plugins.js","../src/helper/random.js","../src/web-auth/transaction-manager.js","../src/helper/times.js","../src/helper/iframe-handler.js","../src/web-auth/web-message-handler.js","../src/web-auth/cross-origin-authentication.js","../src/web-auth/redirect.js","../node_modules/winchan/winchan.js","../src/helper/url.js","../src/helper/popup-handler.js","../src/web-auth/popup.js","../src/web-auth/silent-authentication-handler.js","../src/web-auth/username-password.js","../src/web-auth/hosted-pages.js","../src/web-auth/captcha.js","../src/web-auth/index.js","../src/authentication/passwordless-authentication.js","../src/authentication/db-connection.js","../src/authentication/index.js","../src/management/index.js","../src/index.js"],"sourcesContent":["(function (name, context, definition) {\n if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n else if (typeof define === 'function' && define.amd) define(definition);\n else context[name] = definition();\n})('urljoin', this, function () {\n\n function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n }\n\n return function () {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n };\n\n});\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\nexports.type = function (string_) {\n return string_.split(/ *; */).shift();\n};\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\n\nexports.params = function (value) {\n var object = {};\n\n var _iterator = _createForOfIteratorHelper(value.split(/ *; */)),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var string_ = _step.value;\n var parts = string_.split(/ *= */);\n var key = parts.shift();\n\n var _value = parts.shift();\n\n if (key && _value) object[key] = _value;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return object;\n};\n/**\n * Parse Link header fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\n\nexports.parseLinks = function (value) {\n var object = {};\n\n var _iterator2 = _createForOfIteratorHelper(value.split(/ *, */)),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var string_ = _step2.value;\n var parts = string_.split(/ *; */);\n var url = parts[0].slice(1, -1);\n var rel = parts[1].split(/ *= */)[1].slice(1, -1);\n object[rel] = url;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return object;\n};\n/**\n * Strip content related fields from `header`.\n *\n * @param {Object} header\n * @return {Object} header\n * @api private\n */\n\n\nexports.cleanHeader = function (header, changesOrigin) {\n delete header['content-type'];\n delete header['content-length'];\n delete header['transfer-encoding'];\n delete header.host; // secuirty\n\n if (changesOrigin) {\n delete header.authorization;\n delete header.cookie;\n }\n\n return header;\n};\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} object\n * @return {Boolean}\n * @api private\n */\n\n\nexports.isObject = function (object) {\n return object !== null && _typeof(object) === 'object';\n};\n/**\n * Object.hasOwn fallback/polyfill.\n *\n * @type {(object: object, property: string) => boolean} object\n * @api private\n */\n\n\nexports.hasOwn = Object.hasOwn || function (object, property) {\n if (object == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n return Object.prototype.hasOwnProperty.call(new Object(object), property);\n};\n\nexports.mixin = function (target, source) {\n for (var key in source) {\n if (exports.hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJleHBvcnRzIiwidHlwZSIsInN0cmluZ18iLCJzcGxpdCIsInNoaWZ0IiwicGFyYW1zIiwidmFsdWUiLCJvYmplY3QiLCJwYXJ0cyIsImtleSIsInBhcnNlTGlua3MiLCJ1cmwiLCJzbGljZSIsInJlbCIsImNsZWFuSGVhZGVyIiwiaGVhZGVyIiwiY2hhbmdlc09yaWdpbiIsImhvc3QiLCJhdXRob3JpemF0aW9uIiwiY29va2llIiwiaXNPYmplY3QiLCJoYXNPd24iLCJPYmplY3QiLCJwcm9wZXJ0eSIsIlR5cGVFcnJvciIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm1peGluIiwidGFyZ2V0Iiwic291cmNlIl0sInNvdXJjZXMiOlsiLi4vc3JjL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJuIHRoZSBtaW1lIHR5cGUgZm9yIHRoZSBnaXZlbiBgc3RyYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnR5cGUgPSAoc3RyaW5nXykgPT4gc3RyaW5nXy5zcGxpdCgvICo7ICovKS5zaGlmdCgpO1xuXG4vKipcbiAqIFJldHVybiBoZWFkZXIgZmllbGQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnBhcmFtcyA9ICh2YWx1ZSkgPT4ge1xuICBjb25zdCBvYmplY3QgPSB7fTtcbiAgZm9yIChjb25zdCBzdHJpbmdfIG9mIHZhbHVlLnNwbGl0KC8gKjsgKi8pKSB7XG4gICAgY29uc3QgcGFydHMgPSBzdHJpbmdfLnNwbGl0KC8gKj0gKi8pO1xuICAgIGNvbnN0IGtleSA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJ0cy5zaGlmdCgpO1xuXG4gICAgaWYgKGtleSAmJiB2YWx1ZSkgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG4vKipcbiAqIFBhcnNlIExpbmsgaGVhZGVyIGZpZWxkcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnBhcnNlTGlua3MgPSAodmFsdWUpID0+IHtcbiAgY29uc3Qgb2JqZWN0ID0ge307XG4gIGZvciAoY29uc3Qgc3RyaW5nXyBvZiB2YWx1ZS5zcGxpdCgvICosICovKSkge1xuICAgIGNvbnN0IHBhcnRzID0gc3RyaW5nXy5zcGxpdCgvICo7ICovKTtcbiAgICBjb25zdCB1cmwgPSBwYXJ0c1swXS5zbGljZSgxLCAtMSk7XG4gICAgY29uc3QgcmVsID0gcGFydHNbMV0uc3BsaXQoLyAqPSAqLylbMV0uc2xpY2UoMSwgLTEpO1xuICAgIG9iamVjdFtyZWxdID0gdXJsO1xuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cbi8qKlxuICogU3RyaXAgY29udGVudCByZWxhdGVkIGZpZWxkcyBmcm9tIGBoZWFkZXJgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBoZWFkZXJcbiAqIEByZXR1cm4ge09iamVjdH0gaGVhZGVyXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLmNsZWFuSGVhZGVyID0gKGhlYWRlciwgY2hhbmdlc09yaWdpbikgPT4ge1xuICBkZWxldGUgaGVhZGVyWydjb250ZW50LXR5cGUnXTtcbiAgZGVsZXRlIGhlYWRlclsnY29udGVudC1sZW5ndGgnXTtcbiAgZGVsZXRlIGhlYWRlclsndHJhbnNmZXItZW5jb2RpbmcnXTtcbiAgZGVsZXRlIGhlYWRlci5ob3N0O1xuICAvLyBzZWN1aXJ0eVxuICBpZiAoY2hhbmdlc09yaWdpbikge1xuICAgIGRlbGV0ZSBoZWFkZXIuYXV0aG9yaXphdGlvbjtcbiAgICBkZWxldGUgaGVhZGVyLmNvb2tpZTtcbiAgfVxuXG4gIHJldHVybiBoZWFkZXI7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGBvYmpgIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cbmV4cG9ydHMuaXNPYmplY3QgPSAob2JqZWN0KSA9PiB7XG4gIHJldHVybiBvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCc7XG59O1xuXG4vKipcbiAqIE9iamVjdC5oYXNPd24gZmFsbGJhY2svcG9seWZpbGwuXG4gKlxuICogQHR5cGUgeyhvYmplY3Q6IG9iamVjdCwgcHJvcGVydHk6IHN0cmluZykgPT4gYm9vbGVhbn0gb2JqZWN0XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZXhwb3J0cy5oYXNPd24gPVxuICBPYmplY3QuaGFzT3duIHx8XG4gIGZ1bmN0aW9uIChvYmplY3QsIHByb3BlcnR5KSB7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ldyBPYmplY3Qob2JqZWN0KSwgcHJvcGVydHkpO1xuICB9O1xuXG5leHBvcnRzLm1peGluID0gKHRhcmdldCwgc291cmNlKSA9PiB7XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIGlmIChleHBvcnRzLmhhc093bihzb3VyY2UsIGtleSkpIHtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQUEsT0FBTyxDQUFDQyxJQUFSLEdBQWUsVUFBQ0MsT0FBRDtFQUFBLE9B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","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar semver = require('semver');\n/**\n * Module of mixed-in functions shared between node and client code\n */\n\n\nvar _require = require('./utils'),\n isObject = _require.isObject,\n hasOwn = _require.hasOwn;\n/**\n * Expose `RequestBase`.\n */\n\n\nmodule.exports = RequestBase;\n/**\n * Initialize a new `RequestBase`.\n *\n * @api public\n */\n\nfunction RequestBase() {}\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.clearTimeout = function () {\n clearTimeout(this._timer);\n clearTimeout(this._responseTimeoutTimer);\n clearTimeout(this._uploadTimeoutTimer);\n delete this._timer;\n delete this._responseTimeoutTimer;\n delete this._uploadTimeoutTimer;\n return this;\n};\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\n\nRequestBase.prototype.parse = function (fn) {\n this._parser = fn;\n return this;\n};\n/**\n * Set format of binary response body.\n * In browser valid formats are 'blob' and 'arraybuffer',\n * which return Blob and ArrayBuffer, respectively.\n *\n * In Node all values result in Buffer.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.responseType = function (value) {\n this._responseType = value;\n return this;\n};\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\n\nRequestBase.prototype.serialize = function (fn) {\n this._serializer = fn;\n return this;\n};\n/**\n * Set timeouts.\n *\n * - response timeout is time between sending request and receiving the first byte of the response. Includes DNS and connection time.\n * - deadline is the time from start of the request to receiving response body in full. If the deadline is too short large files may not load at all on slow connections.\n * - upload is the time since last bit of data was sent or received. This timeout works only if deadline timeout is off\n *\n * Value of 0 or false means no timeout.\n *\n * @param {Number|Object} ms or {response, deadline}\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.timeout = function (options) {\n if (!options || _typeof(options) !== 'object') {\n this._timeout = options;\n this._responseTimeout = 0;\n this._uploadTimeout = 0;\n return this;\n }\n\n for (var option in options) {\n if (hasOwn(options, option)) {\n switch (option) {\n case 'deadline':\n this._timeout = options.deadline;\n break;\n\n case 'response':\n this._responseTimeout = options.response;\n break;\n\n case 'upload':\n this._uploadTimeout = options.upload;\n break;\n\n default:\n console.warn('Unknown timeout option', option);\n }\n }\n }\n\n return this;\n};\n/**\n * Set number of retry attempts on error.\n *\n * Failed requests will be retried 'count' times if timeout or err.code >= 500.\n *\n * @param {Number} count\n * @param {Function} [fn]\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.retry = function (count, fn) {\n // Default to 1 if no count passed or true\n if (arguments.length === 0 || count === true) count = 1;\n if (count <= 0) count = 0;\n this._maxRetries = count;\n this._retries = 0;\n this._retryCallback = fn;\n return this;\n}; //\n// NOTE: we do not include ESOCKETTIMEDOUT because that is from `request` package\n// \n//\n// NOTE: we do not include EADDRINFO because it was removed from libuv in 2014\n// \n// \n//\n//\n// TODO: expose these as configurable defaults\n//\n\n\nvar ERROR_CODES = new Set(['ETIMEDOUT', 'ECONNRESET', 'EADDRINUSE', 'ECONNREFUSED', 'EPIPE', 'ENOTFOUND', 'ENETUNREACH', 'EAI_AGAIN']);\nvar STATUS_CODES = new Set([408, 413, 429, 500, 502, 503, 504, 521, 522, 524]); // TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n// const METHODS = new Set(['GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE']);\n\n/**\n * Determine if a request should be retried.\n * (Inspired by https://github.com/sindresorhus/got#retry)\n *\n * @param {Error} err an error\n * @param {Response} [res] response\n * @returns {Boolean} if segment should be retried\n */\n\nRequestBase.prototype._shouldRetry = function (error, res) {\n if (!this._maxRetries || this._retries++ >= this._maxRetries) {\n return false;\n }\n\n if (this._retryCallback) {\n try {\n var override = this._retryCallback(error, res);\n\n if (override === true) return true;\n if (override === false) return false; // undefined falls back to defaults\n } catch (err) {\n console.error(err);\n }\n } // TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n\n /*\n if (\n this.req &&\n this.req.method &&\n !METHODS.has(this.req.method.toUpperCase())\n )\n return false;\n */\n\n\n if (res && res.status && STATUS_CODES.has(res.status)) return true;\n\n if (error) {\n if (error.code && ERROR_CODES.has(error.code)) return true; // Superagent timeout\n\n if (error.timeout && error.code === 'ECONNABORTED') return true;\n if (error.crossDomain) return true;\n }\n\n return false;\n};\n/**\n * Retry request\n *\n * @return {Request} for chaining\n * @api private\n */\n\n\nRequestBase.prototype._retry = function () {\n this.clearTimeout(); // node\n\n if (this.req) {\n this.req = null;\n this.req = this.request();\n }\n\n this._aborted = false;\n this.timedout = false;\n this.timedoutError = null;\n return this._end();\n};\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} [reject]\n * @return {Request}\n */\n\n\nRequestBase.prototype.then = function (resolve, reject) {\n var _this = this;\n\n if (!this._fullfilledPromise) {\n var self = this;\n\n if (this._endCalled) {\n console.warn('Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises');\n }\n\n this._fullfilledPromise = new Promise(function (resolve, reject) {\n self.on('abort', function () {\n if (_this._maxRetries && _this._maxRetries > _this._retries) {\n return;\n }\n\n if (_this.timedout && _this.timedoutError) {\n reject(_this.timedoutError);\n return;\n }\n\n var error = new Error('Aborted');\n error.code = 'ABORTED';\n error.status = _this.status;\n error.method = _this.method;\n error.url = _this.url;\n reject(error);\n });\n self.end(function (error, res) {\n if (error) reject(error);else resolve(res);\n });\n });\n }\n\n return this._fullfilledPromise.then(resolve, reject);\n};\n\nRequestBase.prototype.catch = function (callback) {\n return this.then(undefined, callback);\n};\n/**\n * Allow for extension\n */\n\n\nRequestBase.prototype.use = function (fn) {\n fn(this);\n return this;\n};\n\nRequestBase.prototype.ok = function (callback) {\n if (typeof callback !== 'function') throw new Error('Callback required');\n this._okCallback = callback;\n return this;\n};\n\nRequestBase.prototype._isResponseOK = function (res) {\n if (!res) {\n return false;\n }\n\n if (this._okCallback) {\n return this._okCallback(res);\n }\n\n return res.status >= 200 && res.status < 300;\n};\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\n\nRequestBase.prototype.get = function (field) {\n return this._header[field.toLowerCase()];\n};\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\n\nRequestBase.prototype.getHeader = RequestBase.prototype.get;\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.set = function (field, value) {\n if (isObject(field)) {\n for (var key in field) {\n if (hasOwn(field, key)) this.set(key, field[key]);\n }\n\n return this;\n }\n\n this._header[field.toLowerCase()] = value;\n this.header[field] = value;\n return this;\n};\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field field name\n */\n\n\nRequestBase.prototype.unset = function (field) {\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n *\n * request.post('/upload')\n * .field({ foo: 'bar', baz: 'qux' })\n * .end(callback);\n * ```\n *\n * @param {String|Object} name name of field\n * @param {String|Blob|File|Buffer|fs.ReadStream} val value of field\n * @param {String} options extra options, e.g. 'blob'\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.field = function (name, value, options) {\n // name should be either a string or an object.\n if (name === null || undefined === name) {\n throw new Error('.field(name, val) name can not be empty');\n }\n\n if (this._data) {\n throw new Error(\".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()\");\n }\n\n if (isObject(name)) {\n for (var key in name) {\n if (hasOwn(name, key)) this.field(key, name[key]);\n }\n\n return this;\n }\n\n if (Array.isArray(value)) {\n for (var i in value) {\n if (hasOwn(value, i)) this.field(name, value[i]);\n }\n\n return this;\n } // val should be defined now\n\n\n if (value === null || undefined === value) {\n throw new Error('.field(name, val) val can not be empty');\n }\n\n if (typeof value === 'boolean') {\n value = String(value);\n } //fix https://github.com/visionmedia/superagent/issues/1680\n\n\n if (options) this._getFormData().append(name, value, options);else this._getFormData().append(name, value);\n return this;\n};\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request} request\n * @api public\n */\n\n\nRequestBase.prototype.abort = function () {\n if (this._aborted) {\n return this;\n }\n\n this._aborted = true;\n if (this.xhr) this.xhr.abort(); // browser\n\n if (this.req) {\n // Node v13 has major differences in `abort()`\n // https://github.com/nodejs/node/blob/v12.x/lib/internal/streams/end-of-stream.js\n // https://github.com/nodejs/node/blob/v13.x/lib/internal/streams/end-of-stream.js\n // https://github.com/nodejs/node/blob/v14.x/lib/internal/streams/end-of-stream.js\n // (if you run a diff across these you will see the differences)\n //\n // References:\n // \n // \n //\n // Thanks to @shadowgate15 and @niftylettuce\n if (semver.gte(process.version, 'v13.0.0') && semver.lt(process.version, 'v14.0.0')) {\n // Note that the reason this doesn't work is because in v13 as compared to v14\n // there is no `callback = nop` set in end-of-stream.js above\n throw new Error('Superagent does not work in v13 properly with abort() due to Node.js core changes');\n } else if (semver.gte(process.version, 'v14.0.0')) {\n // We have to manually set `destroyed` to `true` in order for this to work\n // (see core internals of end-of-stream.js above in v14 branch as compared to v12)\n this.req.destroyed = true;\n }\n\n this.req.abort(); // node\n }\n\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\nRequestBase.prototype._auth = function (user, pass, options, base64Encoder) {\n switch (options.type) {\n case 'basic':\n this.set('Authorization', \"Basic \".concat(base64Encoder(\"\".concat(user, \":\").concat(pass))));\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n\n case 'bearer':\n // usage would be .auth(accessToken, { type: 'bearer' })\n this.set('Authorization', \"Bearer \".concat(user));\n break;\n\n default:\n break;\n }\n\n return this;\n};\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\n\nRequestBase.prototype.withCredentials = function (on) {\n // This is browser-only functionality. Node side is no-op.\n if (on === undefined) on = true;\n this._withCredentials = on;\n return this;\n};\n/**\n * Set the max redirects to `n`. Does nothing in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.redirects = function (n) {\n this._maxRedirects = n;\n return this;\n};\n/**\n * Maximum size of buffered response body, in bytes. Counts uncompressed size.\n * Default 200MB.\n *\n * @param {Number} n number of bytes\n * @return {Request} for chaining\n */\n\n\nRequestBase.prototype.maxResponseSize = function (n) {\n if (typeof n !== 'number') {\n throw new TypeError('Invalid argument');\n }\n\n this._maxResponseSize = n;\n return this;\n};\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\n\nRequestBase.prototype.toJSON = function () {\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header\n };\n};\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n// eslint-disable-next-line complexity\n\n\nRequestBase.prototype.send = function (data) {\n var isObject_ = isObject(data);\n var type = this._header['content-type'];\n\n if (this._formData) {\n throw new Error(\".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()\");\n }\n\n if (isObject_ && !this._data) {\n if (Array.isArray(data)) {\n this._data = [];\n } else if (!this._isHost(data)) {\n this._data = {};\n }\n } else if (data && this._data && this._isHost(this._data)) {\n throw new Error(\"Can't merge these send calls\");\n } // merge\n\n\n if (isObject_ && isObject(this._data)) {\n for (var key in data) {\n if (hasOwn(data, key)) this._data[key] = data[key];\n }\n } else if (typeof data === 'string') {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if (type) type = type.toLowerCase().trim();\n\n if (type === 'application/x-www-form-urlencoded') {\n this._data = this._data ? \"\".concat(this._data, \"&\").concat(data) : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!isObject_ || this._isHost(data)) {\n return this;\n } // default to json\n\n\n if (!type) this.type('json');\n return this;\n};\n/**\n * Sort `querystring` by the sort function\n *\n *\n * Examples:\n *\n * // default order\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery()\n * .end(callback)\n *\n * // customized sort function\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery(function(a, b){\n * return a.length - b.length;\n * })\n * .end(callback)\n *\n *\n * @param {Function} sort\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequestBase.prototype.sortQuery = function (sort) {\n // _sort default to true but otherwise can be a function or boolean\n this._sort = typeof sort === 'undefined' ? true : sort;\n return this;\n};\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\n\n\nRequestBase.prototype._finalizeQueryString = function () {\n var query = this._query.join('&');\n\n if (query) {\n this.url += (this.url.includes('?') ? '&' : '?') + query;\n }\n\n this._query.length = 0; // Makes the call idempotent\n\n if (this._sort) {\n var index = this.url.indexOf('?');\n\n if (index >= 0) {\n var queryArray = this.url.slice(index + 1).split('&');\n\n if (typeof this._sort === 'function') {\n queryArray.sort(this._sort);\n } else {\n queryArray.sort();\n }\n\n this.url = this.url.slice(0, index) + '?' + queryArray.join('&');\n }\n }\n}; // For backwards compat only\n\n\nRequestBase.prototype._appendQueryString = function () {\n console.warn('Unsupported');\n};\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\n\nRequestBase.prototype._timeoutError = function (reason, timeout, errno) {\n if (this._aborted) {\n return;\n }\n\n var error = new Error(\"\".concat(reason + timeout, \"ms exceeded\"));\n error.timeout = timeout;\n error.code = 'ECONNABORTED';\n error.errno = errno;\n this.timedout = true;\n this.timedoutError = error;\n this.abort();\n this.callback(error);\n};\n\nRequestBase.prototype._setTimeouts = function () {\n var self = this; // deadline\n\n if (this._timeout && !this._timer) {\n this._timer = setTimeout(function () {\n self._timeoutError('Timeout of ', self._timeout, 'ETIME');\n }, this._timeout);\n } // response timeout\n\n\n if (this._responseTimeout && !this._responseTimeoutTimer) {\n this._responseTimeoutTimer = setTimeout(function () {\n self._timeoutError('Response timeout of ', self._responseTimeout, 'ETIMEDOUT');\n }, this._responseTimeout);\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZW12ZXIiLCJyZXF1aXJlIiwiaXNPYmplY3QiLCJoYXNPd24iLCJtb2R1bGUiLCJleHBvcnRzIiwiUmVxdWVzdEJhc2UiLCJwcm90b3R5cGUiLCJjbGVhclRpbWVvdXQiLCJfdGltZXIiLCJfcmVzcG9uc2VUaW1lb3V0VGltZXIiLCJfdXBsb2FkVGltZW91dFRpbWVyIiwicGFyc2UiLCJmbiIsIl9wYXJzZXIiLCJyZXNwb25zZVR5cGUiLCJ2YWx1ZSIsIl9yZXNwb25zZVR5cGUiLCJzZXJpYWxpemUiLCJfc2VyaWFsaXplciIsInRpbWVvdXQiLCJvcHRpb25zIiwiX3RpbWVvdXQiLCJfcmVzcG9uc2VUaW1lb3V0IiwiX3VwbG9hZFRpbWVvdXQiLCJvcHRpb24iLCJkZWFkbGluZSIsInJlc3BvbnNlIiwidXBsb2FkIiwiY29uc29sZSIsIndhcm4iLCJyZXRyeSIsImNvdW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiX21heFJldHJpZXMiLCJfcmV0cmllcyIsIl9yZXRyeUNhbGxiYWNrIiwiRVJST1JfQ09ERVMiLCJTZXQiLCJTVEFUVVNfQ09ERVMiLCJfc2hvdWxkUmV0cnkiLCJlcnJvciIsInJlcyIsIm92ZXJyaWRlIiwiZXJyIiwic3RhdHVzIiwiaGFzIiwiY29kZSIsImNyb3NzRG9tYWluIiwiX3JldHJ5IiwicmVxIiwicmVxdWVzdCIsIl9hYm9ydGVkIiwidGltZWRvdXQiLCJ0aW1lZG91dEVycm9yIiwiX2VuZCIsInRoZW4iLCJyZXNvbHZlIiwicmVqZWN0IiwiX2Z1bGxmaWxsZWRQcm9taXNlIiwic2VsZiIsIl9lbmRDYWxsZWQiLCJQcm9taXNlIiwib24iLCJFcnJvciIsIm1ldGhvZCIsInVybCIsImVuZCIsImNhdGNoIiwiY2FsbGJhY2siLCJ1bmRlZmluZWQiLCJ1c2UiLCJvayIsIl9va0NhbGxiYWNrIiwiX2lzUmVzcG9uc2VPSyIsImdldCIsImZpZWxkIiwiX2hlYWRlciIsInRvTG93ZXJDYXNlIiwiZ2V0SGVhZGVyIiwic2V0Iiwia2V5IiwiaGVhZGVyIiwidW5zZXQiLCJuYW1lIiwiX2RhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJpIiwiU3RyaW5nIiwiX2dldEZvcm1EYXRhIiwiYXBwZW5kIiwiYWJvcnQiLCJ4aHIiLCJndGUiLCJwcm9jZXNzIiwidmVyc2lvbiIsImx0IiwiZGVzdHJveWVkIiwiZW1pdCIsIl9hdXRoIiwidXNlciIsInBhc3MiLCJiYXNlNjRFbmNvZGVyIiwidHlwZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJ3aXRoQ3JlZGVudGlhbHMiLCJfd2l0aENyZWRlbnRpYWxzIiwicmVkaXJlY3RzIiwibiIsIl9tYXhSZWRpcmVjdHMiLCJtYXhSZXNwb25zZVNpemUiLCJUeXBlRXJyb3IiLCJfbWF4UmVzcG9uc2VTaXplIiwidG9KU09OIiwiZGF0YSIsImhlYWRlcnMiLCJzZW5kIiwiaXNPYmplY3RfIiwiX2Zvcm1EYXRhIiwiX2lzSG9zdCIsInRyaW0iLCJzb3J0UXVlcnkiLCJzb3J0IiwiX3NvcnQiLCJfZmluYWxpemVRdWVyeVN0cmluZyIsInF1ZXJ5IiwiX3F1ZXJ5Iiwiam9pbiIsImluY2x1ZGVzIiwiaW5kZXgiLCJpbmRleE9mIiwicXVlcnlBcnJheSIsInNsaWNlIiwic3BsaXQiLCJfYXBwZW5kUXVlcnlTdHJpbmciLCJfdGltZW91dEVycm9yIiwicmVhc29uIiwiZXJybm8iLCJfc2V0VGltZW91dHMiLCJzZXRUaW1lb3V0Il0sInNvdXJjZXMiOlsiLi4vc3JjL3JlcXVlc3QtYmFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZW12ZXIgPSByZXF1aXJlKCdzZW12ZXInKTtcblxuLyoqXG4gKiBNb2R1bGUgb2YgbWl4ZWQtaW4gZnVuY3Rpb25zIHNoYXJlZCBiZXR3ZWVuIG5vZGUgYW5kIGNsaWVudCBjb2RlXG4gKi9cbmNvbnN0IHsgaXNPYmplY3QsIGhhc093biB9ID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG4vKipcbiAqIEV4cG9zZSBgUmVxdWVzdEJhc2VgLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVxdWVzdEJhc2U7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVxdWVzdEJhc2VgLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUmVxdWVzdEJhc2UoKSB7IH1cblxuLyoqXG4gKiBDbGVhciBwcmV2aW91cyB0aW1lb3V0LlxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuY2xlYXJUaW1lb3V0ID0gZnVuY3Rpb24gKCkge1xuICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xuICBjbGVhclRpbWVvdXQodGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXIpO1xuICBjbGVhclRpbWVvdXQodGhpcy5fdXBsb2FkVGltZW91dFRpbWVyKTtcbiAgZGVsZXRlIHRoaXMuX3RpbWVyO1xuICBkZWxldGUgdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXI7XG4gIGRlbGV0ZSB0aGlzLl91cGxvYWRUaW1lb3V0VGltZXI7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBPdmVycmlkZSBkZWZhdWx0IHJlc3BvbnNlIGJvZHkgcGFyc2VyXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBjb252ZXJ0IGluY29taW5nIGRhdGEgaW50byByZXF1ZXN0LmJvZHlcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAoZm4pIHtcbiAgdGhpcy5fcGFyc2VyID0gZm47XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgZm9ybWF0IG9mIGJpbmFyeSByZXNwb25zZSBib2R5LlxuICogSW4gYnJvd3NlciB2YWxpZCBmb3JtYXRzIGFyZSAnYmxvYicgYW5kICdhcnJheWJ1ZmZlcicsXG4gKiB3aGljaCByZXR1cm4gQmxvYiBhbmQgQXJyYXlCdWZmZXIsIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBJbiBOb2RlIGFsbCB2YWx1ZXMgcmVzdWx0IGluIEJ1ZmZlci5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5yZXNwb25zZVR5cGUoJ2Jsb2InKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUucmVzcG9uc2VUeXBlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHRoaXMuX3Jlc3BvbnNlVHlwZSA9IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogT3ZlcnJpZGUgZGVmYXVsdCByZXF1ZXN0IGJvZHkgc2VyaWFsaXplclxuICpcbiAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgdG8gY29udmVydCBkYXRhIHNldCB2aWEgLnNlbmQgb3IgLmF0dGFjaCBpbnRvIHBheWxvYWQgdG8gc2VuZFxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXJpYWxpemUgPSBmdW5jdGlvbiAoZm4pIHtcbiAgdGhpcy5fc2VyaWFsaXplciA9IGZuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRpbWVvdXRzLlxuICpcbiAqIC0gcmVzcG9uc2UgdGltZW91dCBpcyB0aW1lIGJldHdlZW4gc2VuZGluZyByZXF1ZXN0IGFuZCByZWNlaXZpbmcgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHJlc3BvbnNlLiBJbmNsdWRlcyBETlMgYW5kIGNvbm5lY3Rpb24gdGltZS5cbiAqIC0gZGVhZGxpbmUgaXMgdGhlIHRpbWUgZnJvbSBzdGFydCBvZiB0aGUgcmVxdWVzdCB0byByZWNlaXZpbmcgcmVzcG9uc2UgYm9keSBpbiBmdWxsLiBJZiB0aGUgZGVhZGxpbmUgaXMgdG9vIHNob3J0IGxhcmdlIGZpbGVzIG1heSBub3QgbG9hZCBhdCBhbGwgb24gc2xvdyBjb25uZWN0aW9ucy5cbiAqIC0gdXBsb2FkIGlzIHRoZSB0aW1lICBzaW5jZSBsYXN0IGJpdCBvZiBkYXRhIHdhcyBzZW50IG9yIHJlY2VpdmVkLiBUaGlzIHRpbWVvdXQgd29ya3Mgb25seSBpZiBkZWFkbGluZSB0aW1lb3V0IGlzIG9mZlxuICpcbiAqIFZhbHVlIG9mIDAgb3IgZmFsc2UgbWVhbnMgbm8gdGltZW91dC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcnxPYmplY3R9IG1zIG9yIHtyZXNwb25zZSwgZGVhZGxpbmV9XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRpbWVvdXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMgfHwgdHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhpcy5fdGltZW91dCA9IG9wdGlvbnM7XG4gICAgdGhpcy5fcmVzcG9uc2VUaW1lb3V0ID0gMDtcbiAgICB0aGlzLl91cGxvYWRUaW1lb3V0ID0gMDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZvciAoY29uc3Qgb3B0aW9uIGluIG9wdGlvbnMpIHtcbiAgICBpZiAoaGFzT3duKG9wdGlvbnMsIG9wdGlvbikpIHtcbiAgICAgIHN3aXRjaCAob3B0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2RlYWRsaW5lJzpcbiAgICAgICAgICB0aGlzLl90aW1lb3V0ID0gb3B0aW9ucy5kZWFkbGluZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmVzcG9uc2UnOlxuICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlVGltZW91dCA9IG9wdGlvbnMucmVzcG9uc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3VwbG9hZCc6XG4gICAgICAgICAgdGhpcy5fdXBsb2FkVGltZW91dCA9IG9wdGlvbnMudXBsb2FkO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybignVW5rbm93biB0aW1lb3V0IG9wdGlvbicsIG9wdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCBudW1iZXIgb2YgcmV0cnkgYXR0ZW1wdHMgb24gZXJyb3IuXG4gKlxuICogRmFpbGVkIHJlcXVlc3RzIHdpbGwgYmUgcmV0cmllZCAnY291bnQnIHRpbWVzIGlmIHRpbWVvdXQgb3IgZXJyLmNvZGUgPj0gNTAwLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb3VudFxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZXRyeSA9IGZ1bmN0aW9uIChjb3VudCwgZm4pIHtcbiAgLy8gRGVmYXVsdCB0byAxIGlmIG5vIGNvdW50IHBhc3NlZCBvciB0cnVlXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwIHx8IGNvdW50ID09PSB0cnVlKSBjb3VudCA9IDE7XG4gIGlmIChjb3VudCA8PSAwKSBjb3VudCA9IDA7XG4gIHRoaXMuX21heFJldHJpZXMgPSBjb3VudDtcbiAgdGhpcy5fcmV0cmllcyA9IDA7XG4gIHRoaXMuX3JldHJ5Q2FsbGJhY2sgPSBmbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vL1xuLy8gTk9URTogd2UgZG8gbm90IGluY2x1ZGUgRVNPQ0tFVFRJTUVET1VUIGJlY2F1c2UgdGhhdCBpcyBmcm9tIGByZXF1ZXN0YCBwYWNrYWdlXG4vLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9nb3QvcHVsbC81Mzc+XG4vL1xuLy8gTk9URTogd2UgZG8gbm90IGluY2x1ZGUgRUFERFJJTkZPIGJlY2F1c2UgaXQgd2FzIHJlbW92ZWQgZnJvbSBsaWJ1diBpbiAyMDE0XG4vLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2L2NvbW1pdC8wMmUxZWJkNDBiODA3YmU1YWY0NjM0M2VhODczMzMxYjJlZTRlOWMxPlxuLy8gICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9yZXF1ZXN0L3JlcXVlc3Qvc2VhcmNoP3E9RVNPQ0tFVFRJTUVET1VUJnVuc2NvcGVkX3E9RVNPQ0tFVFRJTUVET1VUPlxuLy9cbi8vXG4vLyBUT0RPOiBleHBvc2UgdGhlc2UgYXMgY29uZmlndXJhYmxlIGRlZmF1bHRzXG4vL1xuY29uc3QgRVJST1JfQ09ERVMgPSBuZXcgU2V0KFtcbiAgJ0VUSU1FRE9VVCcsXG4gICdFQ09OTlJFU0VUJyxcbiAgJ0VBRERSSU5VU0UnLFxuICAnRUNPTk5SRUZVU0VEJyxcbiAgJ0VQSVBFJyxcbiAgJ0VOT1RGT1VORCcsXG4gICdFTkVUVU5SRUFDSCcsXG4gICdFQUlfQUdBSU4nXG5dKTtcblxuY29uc3QgU1RBVFVTX0NPREVTID0gbmV3IFNldChbXG4gIDQwOCwgNDEzLCA0MjksIDUwMCwgNTAyLCA1MDMsIDUwNCwgNTIxLCA1MjIsIDUyNFxuXSk7XG5cbi8vIFRPRE86IHdlIHdvdWxkIG5lZWQgdG8gbWFrZSB0aGlzIGVhc2lseSBjb25maWd1cmFibGUgYmVmb3JlIGFkZGluZyBpdCBpbiAoZS5nLiBzb21lIG1pZ2h0IHdhbnQgdG8gYWRkIFBPU1QpXG4vLyBjb25zdCBNRVRIT0RTID0gbmV3IFNldChbJ0dFVCcsICdQVVQnLCAnSEVBRCcsICdERUxFVEUnLCAnT1BUSU9OUycsICdUUkFDRSddKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSByZXF1ZXN0IHNob3VsZCBiZSByZXRyaWVkLlxuICogKEluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvZ290I3JldHJ5KVxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVyciBhbiBlcnJvclxuICogQHBhcmFtIHtSZXNwb25zZX0gW3Jlc10gcmVzcG9uc2VcbiAqIEByZXR1cm5zIHtCb29sZWFufSBpZiBzZWdtZW50IHNob3VsZCBiZSByZXRyaWVkXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2hvdWxkUmV0cnkgPSBmdW5jdGlvbiAoZXJyb3IsIHJlcykge1xuICBpZiAoIXRoaXMuX21heFJldHJpZXMgfHwgdGhpcy5fcmV0cmllcysrID49IHRoaXMuX21heFJldHJpZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fcmV0cnlDYWxsYmFjaykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvdmVycmlkZSA9IHRoaXMuX3JldHJ5Q2FsbGJhY2soZXJyb3IsIHJlcyk7XG4gICAgICBpZiAob3ZlcnJpZGUgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKG92ZXJyaWRlID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgLy8gdW5kZWZpbmVkIGZhbGxzIGJhY2sgdG8gZGVmYXVsdHNcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiB3ZSB3b3VsZCBuZWVkIHRvIG1ha2UgdGhpcyBlYXNpbHkgY29uZmlndXJhYmxlIGJlZm9yZSBhZGRpbmcgaXQgaW4gKGUuZy4gc29tZSBtaWdodCB3YW50IHRvIGFkZCBQT1NUKVxuICAvKlxuICBpZiAoXG4gICAgdGhpcy5yZXEgJiZcbiAgICB0aGlzLnJlcS5tZXRob2QgJiZcbiAgICAhTUVUSE9EUy5oYXModGhpcy5yZXEubWV0aG9kLnRvVXBwZXJDYXNlKCkpXG4gIClcbiAgICByZXR1cm4gZmFsc2U7XG4gICovXG4gIGlmIChyZXMgJiYgcmVzLnN0YXR1cyAmJiBTVEFUVVNfQ09ERVMuaGFzKHJlcy5zdGF0dXMpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGVycm9yKSB7XG4gICAgaWYgKGVycm9yLmNvZGUgJiYgRVJST1JfQ09ERVMuaGFzKGVycm9yLmNvZGUpKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBTdXBlcmFnZW50IHRpbWVvdXRcbiAgICBpZiAoZXJyb3IudGltZW91dCAmJiBlcnJvci5jb2RlID09PSAnRUNPTk5BQk9SVEVEJykgcmV0dXJuIHRydWU7XG4gICAgaWYgKGVycm9yLmNyb3NzRG9tYWluKSByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0cnkgcmVxdWVzdFxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9yZXRyeSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jbGVhclRpbWVvdXQoKTtcblxuICAvLyBub2RlXG4gIGlmICh0aGlzLnJlcSkge1xuICAgIHRoaXMucmVxID0gbnVsbDtcbiAgICB0aGlzLnJlcSA9IHRoaXMucmVxdWVzdCgpO1xuICB9XG5cbiAgdGhpcy5fYWJvcnRlZCA9IGZhbHNlO1xuICB0aGlzLnRpbWVkb3V0ID0gZmFsc2U7XG4gIHRoaXMudGltZWRvdXRFcnJvciA9IG51bGw7XG5cbiAgcmV0dXJuIHRoaXMuX2VuZCgpO1xufTtcblxuLyoqXG4gKiBQcm9taXNlIHN1cHBvcnRcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVqZWN0XVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudGhlbiA9IGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgaWYgKCF0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmICh0aGlzLl9lbmRDYWxsZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1dhcm5pbmc6IHN1cGVyYWdlbnQgcmVxdWVzdCB3YXMgc2VudCB0d2ljZSwgYmVjYXVzZSBib3RoIC5lbmQoKSBhbmQgLnRoZW4oKSB3ZXJlIGNhbGxlZC4gTmV2ZXIgY2FsbCAuZW5kKCkgaWYgeW91IHVzZSBwcm9taXNlcydcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fZnVsbGZpbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzZWxmLm9uKCdhYm9ydCcsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX21heFJldHJpZXMgJiYgdGhpcy5fbWF4UmV0cmllcyA+IHRoaXMuX3JldHJpZXMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50aW1lZG91dCAmJiB0aGlzLnRpbWVkb3V0RXJyb3IpIHtcbiAgICAgICAgICByZWplY3QodGhpcy50aW1lZG91dEVycm9yKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignQWJvcnRlZCcpO1xuICAgICAgICBlcnJvci5jb2RlID0gJ0FCT1JURUQnO1xuICAgICAgICBlcnJvci5zdGF0dXMgPSB0aGlzLnN0YXR1cztcbiAgICAgICAgZXJyb3IubWV0aG9kID0gdGhpcy5tZXRob2Q7XG4gICAgICAgIGVycm9yLnVybCA9IHRoaXMudXJsO1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgICBzZWxmLmVuZCgoZXJyb3IsIHJlcykgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHJlamVjdChlcnJvcik7XG4gICAgICAgIGVsc2UgcmVzb2x2ZShyZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fZnVsbGZpbGxlZFByb21pc2UudGhlbihyZXNvbHZlLCByZWplY3QpO1xufTtcblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmNhdGNoID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEFsbG93IGZvciBleHRlbnNpb25cbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gKGZuKSB7XG4gIGZuKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5vayA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxiYWNrIHJlcXVpcmVkJyk7XG4gIHRoaXMuX29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2lzUmVzcG9uc2VPSyA9IGZ1bmN0aW9uIChyZXMpIHtcbiAgaWYgKCFyZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fb2tDYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLl9va0NhbGxiYWNrKHJlcyk7XG4gIH1cblxuICByZXR1cm4gcmVzLnN0YXR1cyA+PSAyMDAgJiYgcmVzLnN0YXR1cyA8IDMwMDtcbn07XG5cbi8qKlxuICogR2V0IHJlcXVlc3QgaGVhZGVyIGBmaWVsZGAuXG4gKiBDYXNlLWluc2Vuc2l0aXZlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIHJldHVybiB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG59O1xuXG4vKipcbiAqIEdldCBjYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBgZmllbGRgIHZhbHVlLlxuICogVGhpcyBpcyBhIGRlcHJlY2F0ZWQgaW50ZXJuYWwgQVBJLiBVc2UgYC5nZXQoZmllbGQpYCBpbnN0ZWFkLlxuICpcbiAqIChnZXRIZWFkZXIgaXMgbm8gbG9uZ2VyIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgc3VwZXJhZ2VudCBjb2RlIGJhc2UpXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqIEBkZXByZWNhdGVkXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmdldEhlYWRlciA9IFJlcXVlc3RCYXNlLnByb3RvdHlwZS5nZXQ7XG5cbi8qKlxuICogU2V0IGhlYWRlciBgZmllbGRgIHRvIGB2YWxgLCBvciBtdWx0aXBsZSBmaWVsZHMgd2l0aCBvbmUgb2JqZWN0LlxuICogQ2FzZS1pbnNlbnNpdGl2ZS5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuc2V0KCdYLUFQSS1LZXknLCAnZm9vYmFyJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoeyBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJywgJ1gtQVBJLUtleSc6ICdmb29iYXInIH0pXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoZmllbGQsIHZhbHVlKSB7XG4gIGlmIChpc09iamVjdChmaWVsZCkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWVsZCkge1xuICAgICAgaWYgKGhhc093bihmaWVsZCwga2V5KSkgdGhpcy5zZXQoa2V5LCBmaWVsZFtrZXldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX2hlYWRlcltmaWVsZC50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlO1xuICB0aGlzLmhlYWRlcltmaWVsZF0gPSB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBoZWFkZXIgYGZpZWxkYC5cbiAqIENhc2UtaW5zZW5zaXRpdmUuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC51bnNldCgnVXNlci1BZ2VudCcpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkIGZpZWxkIG5hbWVcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIGRlbGV0ZSB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG4gIGRlbGV0ZSB0aGlzLmhlYWRlcltmaWVsZF07XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXcml0ZSB0aGUgZmllbGQgYG5hbWVgIGFuZCBgdmFsYCwgb3IgbXVsdGlwbGUgZmllbGRzIHdpdGggb25lIG9iamVjdFxuICogZm9yIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIHJlcXVlc3QgYm9kaWVzLlxuICpcbiAqIGBgYCBqc1xuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKCdmb28nLCAnYmFyJylcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKHsgZm9vOiAnYmFyJywgYmF6OiAncXV4JyB9KVxuICogICAuZW5kKGNhbGxiYWNrKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gbmFtZSBuYW1lIG9mIGZpZWxkXG4gKiBAcGFyYW0ge1N0cmluZ3xCbG9ifEZpbGV8QnVmZmVyfGZzLlJlYWRTdHJlYW19IHZhbCB2YWx1ZSBvZiBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd9IG9wdGlvbnMgZXh0cmEgb3B0aW9ucywgZS5nLiAnYmxvYidcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLmZpZWxkID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcHRpb25zKSB7XG4gIC8vIG5hbWUgc2hvdWxkIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvYmplY3QuXG4gIGlmIChuYW1lID09PSBudWxsIHx8IHVuZGVmaW5lZCA9PT0gbmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignLmZpZWxkKG5hbWUsIHZhbCkgbmFtZSBjYW4gbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICBpZiAodGhpcy5fZGF0YSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiLmZpZWxkKCkgY2FuJ3QgYmUgdXNlZCBpZiAuc2VuZCgpIGlzIHVzZWQuIFBsZWFzZSB1c2Ugb25seSAuc2VuZCgpIG9yIG9ubHkgLmZpZWxkKCkgJiAuYXR0YWNoKClcIlxuICAgICk7XG4gIH1cblxuICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBuYW1lKSB7XG4gICAgICBpZiAoaGFzT3duKG5hbWUsIGtleSkpIHRoaXMuZmllbGQoa2V5LCBuYW1lW2tleV0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgZm9yIChjb25zdCBpIGluIHZhbHVlKSB7XG4gICAgICBpZiAoaGFzT3duKHZhbHVlLCBpKSkgdGhpcy5maWVsZChuYW1lLCB2YWx1ZVtpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB2YWwgc2hvdWxkIGJlIGRlZmluZWQgbm93XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB1bmRlZmluZWQgPT09IHZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCcuZmllbGQobmFtZSwgdmFsKSB2YWwgY2FuIG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgLy9maXggaHR0cHM6Ly9naXRodWIuY29tL3Zpc2lvbm1lZGlhL3N1cGVyYWdlbnQvaXNzdWVzLzE2ODBcbiAgaWYgKG9wdGlvbnMpIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKG5hbWUsIHZhbHVlLCBvcHRpb25zKTtcbiAgZWxzZSB0aGlzLl9nZXRGb3JtRGF0YSgpLmFwcGVuZChuYW1lLCB2YWx1ZSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEFib3J0IHRoZSByZXF1ZXN0LCBhbmQgY2xlYXIgcG90ZW50aWFsIHRpbWVvdXQuXG4gKlxuICogQHJldHVybiB7UmVxdWVzdH0gcmVxdWVzdFxuICogQGFwaSBwdWJsaWNcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLmFib3J0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5fYWJvcnRlZCA9IHRydWU7XG4gIGlmICh0aGlzLnhocikgdGhpcy54aHIuYWJvcnQoKTsgLy8gYnJvd3NlclxuICBpZiAodGhpcy5yZXEpIHtcbiAgICAvLyBOb2RlIHYxMyBoYXMgbWFqb3IgZGlmZmVyZW5jZXMgaW4gYGFib3J0KClgXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvdjEyLngvbGliL2ludGVybmFsL3N0cmVhbXMvZW5kLW9mLXN0cmVhbS5qc1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxMy54L2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanNcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi92MTQueC9saWIvaW50ZXJuYWwvc3RyZWFtcy9lbmQtb2Ytc3RyZWFtLmpzXG4gICAgLy8gKGlmIHlvdSBydW4gYSBkaWZmIGFjcm9zcyB0aGVzZSB5b3Ugd2lsbCBzZWUgdGhlIGRpZmZlcmVuY2VzKVxuICAgIC8vXG4gICAgLy8gUmVmZXJlbmNlczpcbiAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2lzc3Vlcy8zMTYzMD5cbiAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL3Zpc2lvbm1lZGlhL3N1cGVyYWdlbnQvcHVsbC8xMDg0L2NvbW1pdHMvZGMxODY3OWE3YzVjY2ZjNjA0NmQ4ODIwMTVlNTEyNjg4ODk3M2JjOD5cbiAgICAvL1xuICAgIC8vIFRoYW5rcyB0byBAc2hhZG93Z2F0ZTE1IGFuZCBAbmlmdHlsZXR0dWNlXG4gICAgaWYgKFxuICAgICAgc2VtdmVyLmd0ZShwcm9jZXNzLnZlcnNpb24sICd2MTMuMC4wJykgJiZcbiAgICAgIHNlbXZlci5sdChwcm9jZXNzLnZlcnNpb24sICd2MTQuMC4wJylcbiAgICApIHtcbiAgICAgIC8vIE5vdGUgdGhhdCB0aGUgcmVhc29uIHRoaXMgZG9lc24ndCB3b3JrIGlzIGJlY2F1c2UgaW4gdjEzIGFzIGNvbXBhcmVkIHRvIHYxNFxuICAgICAgLy8gdGhlcmUgaXMgbm8gYGNhbGxiYWNrID0gbm9wYCBzZXQgaW4gZW5kLW9mLXN0cmVhbS5qcyBhYm92ZVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnU3VwZXJhZ2VudCBkb2VzIG5vdCB3b3JrIGluIHYxMyBwcm9wZXJseSB3aXRoIGFib3J0KCkgZHVlIHRvIE5vZGUuanMgY29yZSBjaGFuZ2VzJ1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHNlbXZlci5ndGUocHJvY2Vzcy52ZXJzaW9uLCAndjE0LjAuMCcpKSB7XG4gICAgICAvLyBXZSBoYXZlIHRvIG1hbnVhbGx5IHNldCBgZGVzdHJveWVkYCB0byBgdHJ1ZWAgaW4gb3JkZXIgZm9yIHRoaXMgdG8gd29ya1xuICAgICAgLy8gKHNlZSBjb3JlIGludGVybmFscyBvZiBlbmQtb2Ytc3RyZWFtLmpzIGFib3ZlIGluIHYxNCBicmFuY2ggYXMgY29tcGFyZWQgdG8gdjEyKVxuICAgICAgdGhpcy5yZXEuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnJlcS5hYm9ydCgpOyAvLyBub2RlXG4gIH1cblxuICB0aGlzLmNsZWFyVGltZW91dCgpO1xuICB0aGlzLmVtaXQoJ2Fib3J0Jyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9hdXRoID0gZnVuY3Rpb24gKHVzZXIsIHBhc3MsIG9wdGlvbnMsIGJhc2U2NEVuY29kZXIpIHtcbiAgc3dpdGNoIChvcHRpb25zLnR5cGUpIHtcbiAgICBjYXNlICdiYXNpYyc6XG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsIGBCYXNpYyAke2Jhc2U2NEVuY29kZXIoYCR7dXNlcn06JHtwYXNzfWApfWApO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdhdXRvJzpcbiAgICAgIHRoaXMudXNlcm5hbWUgPSB1c2VyO1xuICAgICAgdGhpcy5wYXNzd29yZCA9IHBhc3M7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2JlYXJlcic6IC8vIHVzYWdlIHdvdWxkIGJlIC5hdXRoKGFjY2Vzc1Rva2VuLCB7IHR5cGU6ICdiZWFyZXInIH0pXG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsIGBCZWFyZXIgJHt1c2VyfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEVuYWJsZSB0cmFuc21pc3Npb24gb2YgY29va2llcyB3aXRoIHgtZG9tYWluIHJlcXVlc3RzLlxuICpcbiAqIE5vdGUgdGhhdCBmb3IgdGhpcyB0byB3b3JrIHRoZSBvcmlnaW4gbXVzdCBub3QgYmVcbiAqIHVzaW5nIFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXCIgd2l0aCBhIHdpbGRjYXJkLFxuICogYW5kIGFsc28gbXVzdCBzZXQgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1wiXG4gKiB0byBcInRydWVcIi5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS53aXRoQ3JlZGVudGlhbHMgPSBmdW5jdGlvbiAob24pIHtcbiAgLy8gVGhpcyBpcyBicm93c2VyLW9ubHkgZnVuY3Rpb25hbGl0eS4gTm9kZSBzaWRlIGlzIG5vLW9wLlxuICBpZiAob24gPT09IHVuZGVmaW5lZCkgb24gPSB0cnVlO1xuICB0aGlzLl93aXRoQ3JlZGVudGlhbHMgPSBvbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgbWF4IHJlZGlyZWN0cyB0byBgbmAuIERvZXMgbm90aGluZyBpbiBicm93c2VyIFhIUiBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gblxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZWRpcmVjdHMgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLl9tYXhSZWRpcmVjdHMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogTWF4aW11bSBzaXplIG9mIGJ1ZmZlcmVkIHJlc3BvbnNlIGJvZHksIGluIGJ5dGVzLiBDb3VudHMgdW5jb21wcmVzc2VkIHNpemUuXG4gKiBEZWZhdWx0IDIwME1CLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBuIG51bWJlciBvZiBieXRlc1xuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5tYXhSZXNwb25zZVNpemUgPSBmdW5jdGlvbiAobikge1xuICBpZiAodHlwZW9mIG4gIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBhcmd1bWVudCcpO1xuICB9XG5cbiAgdGhpcy5fbWF4UmVzcG9uc2VTaXplID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENvbnZlcnQgdG8gYSBwbGFpbiBqYXZhc2NyaXB0IG9iamVjdCAobm90IEpTT04gc3RyaW5nKSBvZiBzY2FsYXIgcHJvcGVydGllcy5cbiAqIE5vdGUgYXMgdGhpcyBtZXRob2QgaXMgZGVzaWduZWQgdG8gcmV0dXJuIGEgdXNlZnVsIG5vbi10aGlzIHZhbHVlLFxuICogaXQgY2Fubm90IGJlIGNoYWluZWQuXG4gKlxuICogQHJldHVybiB7T2JqZWN0fSBkZXNjcmliaW5nIG1ldGhvZCwgdXJsLCBhbmQgZGF0YSBvZiB0aGlzIHJlcXVlc3RcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHtcbiAgICBtZXRob2Q6IHRoaXMubWV0aG9kLFxuICAgIHVybDogdGhpcy51cmwsXG4gICAgZGF0YTogdGhpcy5fZGF0YSxcbiAgICBoZWFkZXJzOiB0aGlzLl9oZWFkZXJcbiAgfTtcbn07XG5cbi8qKlxuICogU2VuZCBgZGF0YWAgYXMgdGhlIHJlcXVlc3QgYm9keSwgZGVmYXVsdGluZyB0aGUgYC50eXBlKClgIHRvIFwianNvblwiIHdoZW5cbiAqIGFuIG9iamVjdCBpcyBnaXZlbi5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgICAvLyBtYW51YWwganNvblxuICogICAgICAgcmVxdWVzdC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgIC50eXBlKCdqc29uJylcbiAqICAgICAgICAgLnNlbmQoJ3tcIm5hbWVcIjpcInRqXCJ9JylcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBhdXRvIGpzb25cbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAuc2VuZCh7IG5hbWU6ICd0aicgfSlcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBtYW51YWwgeC13d3ctZm9ybS11cmxlbmNvZGVkXG4gKiAgICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAgLnR5cGUoJ2Zvcm0nKVxuICogICAgICAgICAuc2VuZCgnbmFtZT10aicpXG4gKiAgICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogICAgICAgLy8gYXV0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAudHlwZSgnZm9ybScpXG4gKiAgICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqICAgICAgIC8vIGRlZmF1bHRzIHRvIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxuICogICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAuc2VuZCgnbmFtZT10b2JpJylcbiAqICAgICAgICAuc2VuZCgnc3BlY2llcz1mZXJyZXQnKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBkYXRhXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZW5kID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgY29uc3QgaXNPYmplY3RfID0gaXNPYmplY3QoZGF0YSk7XG4gIGxldCB0eXBlID0gdGhpcy5faGVhZGVyWydjb250ZW50LXR5cGUnXTtcblxuICBpZiAodGhpcy5fZm9ybURhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIi5zZW5kKCkgY2FuJ3QgYmUgdXNlZCBpZiAuYXR0YWNoKCkgb3IgLmZpZWxkKCkgaXMgdXNlZC4gUGxlYXNlIHVzZSBvbmx5IC5zZW5kKCkgb3Igb25seSAuZmllbGQoKSAmIC5hdHRhY2goKVwiXG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc09iamVjdF8gJiYgIXRoaXMuX2RhdGEpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgdGhpcy5fZGF0YSA9IFtdO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX2lzSG9zdChkYXRhKSkge1xuICAgICAgdGhpcy5fZGF0YSA9IHt9O1xuICAgIH1cbiAgfSBlbHNlIGlmIChkYXRhICYmIHRoaXMuX2RhdGEgJiYgdGhpcy5faXNIb3N0KHRoaXMuX2RhdGEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgbWVyZ2UgdGhlc2Ugc2VuZCBjYWxsc1wiKTtcbiAgfVxuXG4gIC8vIG1lcmdlXG4gIGlmIChpc09iamVjdF8gJiYgaXNPYmplY3QodGhpcy5fZGF0YSkpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICBpZiAoaGFzT3duKGRhdGEsIGtleSkpIHRoaXMuX2RhdGFba2V5XSA9IGRhdGFba2V5XTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZGVmYXVsdCB0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAgICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnZm9ybScpO1xuICAgIHR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIGlmICh0eXBlKSB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBpZiAodHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLl9kYXRhID8gYCR7dGhpcy5fZGF0YX0mJHtkYXRhfWAgOiBkYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kYXRhID0gKHRoaXMuX2RhdGEgfHwgJycpICsgZGF0YTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gIH1cblxuICBpZiAoIWlzT2JqZWN0XyB8fCB0aGlzLl9pc0hvc3QoZGF0YSkpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGRlZmF1bHQgdG8ganNvblxuICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnanNvbicpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU29ydCBgcXVlcnlzdHJpbmdgIGJ5IHRoZSBzb3J0IGZ1bmN0aW9uXG4gKlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgIC8vIGRlZmF1bHQgb3JkZXJcbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KClcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBjdXN0b21pemVkIHNvcnQgZnVuY3Rpb25cbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KGZ1bmN0aW9uKGEsIGIpe1xuICogICAgICAgICAgIHJldHVybiBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICogICAgICAgICB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzb3J0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnNvcnRRdWVyeSA9IGZ1bmN0aW9uIChzb3J0KSB7XG4gIC8vIF9zb3J0IGRlZmF1bHQgdG8gdHJ1ZSBidXQgb3RoZXJ3aXNlIGNhbiBiZSBhIGZ1bmN0aW9uIG9yIGJvb2xlYW5cbiAgdGhpcy5fc29ydCA9IHR5cGVvZiBzb3J0ID09PSAndW5kZWZpbmVkJyA/IHRydWUgOiBzb3J0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ29tcG9zZSBxdWVyeXN0cmluZyB0byBhcHBlbmQgdG8gcmVxLnVybFxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2ZpbmFsaXplUXVlcnlTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHF1ZXJ5ID0gdGhpcy5fcXVlcnkuam9pbignJicpO1xuICBpZiAocXVlcnkpIHtcbiAgICB0aGlzLnVybCArPSAodGhpcy51cmwuaW5jbHVkZXMoJz8nKSA/ICcmJyA6ICc/JykgKyBxdWVyeTtcbiAgfVxuXG4gIHRoaXMuX3F1ZXJ5Lmxlbmd0aCA9IDA7IC8vIE1ha2VzIHRoZSBjYWxsIGlkZW1wb3RlbnRcblxuICBpZiAodGhpcy5fc29ydCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy51cmwuaW5kZXhPZignPycpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBxdWVyeUFycmF5ID0gdGhpcy51cmwuc2xpY2UoaW5kZXggKyAxKS5zcGxpdCgnJicpO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zb3J0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHF1ZXJ5QXJyYXkuc29ydCh0aGlzLl9zb3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXJ5QXJyYXkuc29ydCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnNsaWNlKDAsIGluZGV4KSArICc/JyArIHF1ZXJ5QXJyYXkuam9pbignJicpO1xuICAgIH1cbiAgfVxufTtcblxuLy8gRm9yIGJhY2t3YXJkcyBjb21wYXQgb25seVxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9hcHBlbmRRdWVyeVN0cmluZyA9ICgpID0+IHtcbiAgY29uc29sZS53YXJuKCdVbnN1cHBvcnRlZCcpO1xufTtcblxuLyoqXG4gKiBJbnZva2UgY2FsbGJhY2sgd2l0aCB0aW1lb3V0IGVycm9yLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fdGltZW91dEVycm9yID0gZnVuY3Rpb24gKHJlYXNvbiwgdGltZW91dCwgZXJybm8pIHtcbiAgaWYgKHRoaXMuX2Fib3J0ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihgJHtyZWFzb24gKyB0aW1lb3V0fW1zIGV4Y2VlZGVkYCk7XG4gIGVycm9yLnRpbWVvdXQgPSB0aW1lb3V0O1xuICBlcnJvci5jb2RlID0gJ0VDT05OQUJPUlRFRCc7XG4gIGVycm9yLmVycm5vID0gZXJybm87XG4gIHRoaXMudGltZWRvdXQgPSB0cnVlO1xuICB0aGlzLnRpbWVkb3V0RXJyb3IgPSBlcnJvcjtcbiAgdGhpcy5hYm9ydCgpO1xuICB0aGlzLmNhbGxiYWNrKGVycm9yKTtcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2V0VGltZW91dHMgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gIC8vIGRlYWRsaW5lXG4gIGlmICh0aGlzLl90aW1lb3V0ICYmICF0aGlzLl90aW1lcikge1xuICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZWxmLl90aW1lb3V0RXJyb3IoJ1RpbWVvdXQgb2YgJywgc2VsZi5fdGltZW91dCwgJ0VUSU1FJyk7XG4gICAgfSwgdGhpcy5fdGltZW91dCk7XG4gIH1cblxuICAvLyByZXNwb25zZSB0aW1lb3V0XG4gIGlmICh0aGlzLl9yZXNwb25zZVRpbWVvdXQgJiYgIXRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyKSB7XG4gICAgdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNlbGYuX3RpbWVvdXRFcnJvcihcbiAgICAgICAgJ1Jlc3BvbnNlIHRpbWVvdXQgb2YgJyxcbiAgICAgICAgc2VsZi5fcmVzcG9uc2VUaW1lb3V0LFxuICAgICAgICAnRVRJTUVET1VUJ1xuICAgICAgKTtcbiAgICB9LCB0aGlzLl9yZXNwb25zZVRpbWVvdXQpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBTUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUF0QjtBQUVBO0FBQ0E7QUFDQTs7O0FBQ0EsZUFBNkJBLE9BQU8sQ0FBQyxTQUFELENBQXBDO0FBQUEsSUFBUUMsUUFBUixZQUFRQSxRQUFSO0FBQUEsSUFBa0JDLE1BQWxCLFlBQWtCQSxNQUFsQjtBQUVBO0FBQ0E7QUFDQTs7O0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkMsV0FBakI7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVNBLFdBQVQsR0FBdUIsQ0FBRztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBQSxXQUFXLENBQUNDLFNBQVosQ0FBc0JDLFlBQXRCLEdBQXFDLFlBQVk7RUFDL0NBLFlBQVksQ0FBQyxLQUFLQyxNQUFOLENBQVo7RUFDQUQsWUFBWSxDQUFDLEtBQUtFLHFCQUFOLENBQVo7RUFDQUYsWUFBWSxDQUFDLEtBQUtHLG1CQUFOLENBQVo7RUFDQSxPQUFPLEtBQUtGLE1BQVo7RUFDQSxPQUFPLEtBQUtDLHFCQUFaO0VBQ0EsT0FBTyxLQUFLQyxtQkFBWjtFQUNBLE9BQU8sSUFBUDtBQUNELENBUkQ7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQUwsV0FBVyxDQUFDQyxTQUFaLENBQXNCSyxLQUF0QixHQUE4QixVQUFVQyxFQUFWLEVBQWM7RUFDMUMsS0FBS0MsT0FBTCxHQUFlRCxFQUFmO0VBQ0EsT0FBTyxJQUFQO0FBQ0QsQ0FIRDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBUCxXQUFXLENBQUNDLFNBQVosQ0FBc0JRLFlBQXRCLEdBQXFDLFVBQVVDLEtBQVYsRUFBaUI7RUFDcEQsS0FBS0MsYUFBTCxHQUFxQkQsS0FBckI7RUFDQSxPQUFPLElBQVA7QUFDRCxDQUhEO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUFWLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQlcsU0FBdEIsR0FBa0MsVUFBVUwsRUFBVixFQUFjO0VBQzlDLEtBQUtNLFdBQUwsR0FBbUJOLEVBQW5CO0VBQ0EsT0FBTyxJQUFQO0FBQ0QsQ0FIRDtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQVAsV0FBVyxDQUFDQyxTQUFaLENBQXNCYSxPQUF0QixHQUFnQyxVQUFVQyxPQUFWLEVBQW1CO0VBQ2pELElBQUksQ0FBQ0EsT0FBRCxJQUFZLFFBQU9BLE9BQVAsTUFBbUIsUUFBbkMsRUFBNkM7SUFDM0MsS0FBS0MsUUFBTCxHQUFnQkQsT0FBaEI7SUFDQSxLQUFLRSxnQkFBTCxHQUF3QixDQUF4QjtJQUNBLEtBQUtDLGNBQUwsR0FBc0IsQ0FBdEI7SUFDQSxPQUFPLElBQVA7RUFDRDs7RUFFRCxLQUFLLElBQU1DLE1BQVgsSUFBcUJKLE9BQXJCLEVBQThCO0lBQzVCLElBQUlsQixNQUFNLENBQUNrQixPQUFELEVBQVVJLE1BQVYsQ0FBVixFQUE2QjtNQUMzQixRQUFRQSxNQUFSO1FBQ0UsS0FBSyxVQUFMO1VBQ0UsS0FBS0gsUUFBTCxHQUFnQkQsT0FBTyxDQUFDSyxRQUF4QjtVQUNBOztRQUNGLEtBQUssVUFBTDtVQUNFLEtBQUtILGdCQUFMLEdBQXdCRixPQUFPLENBQUNNLFFBQWhDO1VBQ0E7O1FBQ0YsS0FBSyxRQUFMO1VBQ0UsS0FBS0gsY0FBTCxHQUFzQkgsT0FBTyxDQUFDTyxNQUE5QjtVQUNBOztRQUNGO1VBQ0VDLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLHdCQUFiLEVBQXVDTCxNQUF2QztNQVhKO0lBYUQ7RUFDRjs7RUFFRCxPQUFPLElBQVA7QUFDRCxDQTNCRDtBQTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUFuQixXQUFXLENBQUNDLFNBQVosQ0FBc0J3QixLQUF0QixHQUE4QixVQUFVQyxLQUFWLEVBQWlCbkIsRUFBakIsRUFBcUI7RUFDakQ7RUFDQSxJQUFJb0IsU0FBUyxDQUFDQyxNQUFWLEtBQXFCLENBQXJCLElBQTBCRixLQUFLLEtBQUssSUFBeEMsRUFBOENBLEtBQUssR0FBRyxDQUFSO0VBQzlDLElBQUlBLEtBQUssSUFBSSxDQUFiLEVBQWdCQSxLQUFLLEdBQUcsQ0FBUjtFQUNoQixLQUFLRyxXQUFMLEdBQW1CSCxLQUFuQjtFQUNBLEtBQUtJLFFBQUwsR0FBZ0IsQ0FBaEI7RUFDQSxLQUFLQyxjQUFMLEdBQXNCeEIsRUFBdEI7RUFDQSxPQUFPLElBQVA7QUFDRCxDQVJELEMsQ0FVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxJQUFNeUIsV0FBVyxHQUFHLElBQUlDLEdBQUosQ0FBUSxDQUMxQixXQUQwQixFQUUxQixZQUYwQixFQUcxQixZQUgwQixFQUkxQixjQUowQixFQUsxQixPQUwwQixFQU0xQixXQU4wQixFQU8xQixhQVAwQixFQVExQixXQVIwQixDQUFSLENBQXBCO0FBV0EsSUFBTUMsWUFBWSxHQUFHLElBQUlELEdBQUosQ0FBUSxDQUMzQixHQUQyQixFQUN0QixHQURzQixFQUNqQixHQURpQixFQUNaLEdBRFksRUFDUCxHQURPLEVBQ0YsR0FERSxFQUNHLEdBREgsRUFDUSxHQURSLEVBQ2EsR0FEYixFQUNrQixHQURsQixDQUFSLENBQXJCLEMsQ0FJQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0FqQyxXQUFXLENBQUNDLFNBQVosQ0FBc0JrQyxZQUF0QixHQUFxQyxVQUFVQyxLQUFWLEVBQWlCQyxHQUFqQixFQUFzQjtFQUN6RCxJQUFJLENBQUMsS0FBS1IsV0FBTixJQUFxQixLQUFLQyxRQUFMLE1BQW1CLEtBQUtELFdBQWpELEVBQThEO0lBQzVELE9BQU8sS0FBUDtFQUNEOztFQUVELElBQUksS0FBS0UsY0FBVCxFQUF5QjtJQUN2QixJQUFJO01BQ0YsSUFBTU8sUUFBUSxHQUFHLEtBQUtQLGNBQUwsQ0FBb0JLLEtBQXBCLEVBQTJCQyxHQUEzQixDQUFqQjs7TUFDQSxJQUFJQyxRQUFRLEtBQUssSUFBakIsRUFBdUIsT0FBTyxJQUFQO01BQ3ZCLElBQUlBLFFBQVEsS0FBSyxLQUFqQixFQUF3QixPQUFPLEtBQVAsQ0FIdEIsQ0FJRjtJQUNELENBTEQsQ0FLRSxPQUFPQyxHQUFQLEVBQVk7TUFDWmhCLE9BQU8sQ0FBQ2EsS0FBUixDQUFjRyxHQUFkO0lBQ0Q7RUFDRixDQWR3RCxDQWdCekQ7O0VBQ0E7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0VBQ0UsSUFBSUYsR0FBRyxJQUFJQSxHQUFHLENBQUNHLE1BQVgsSUFBcUJOLFlBQVksQ0FBQ08sR0FBYixDQUFpQkosR0FBRyxDQUFDRyxNQUFyQixDQUF6QixFQUF1RCxPQUFPLElBQVA7O0VBQ3ZELElBQUlKLEtBQUosRUFBVztJQUNULElBQUlBLEtBQUssQ0FBQ00sSUFBTixJQUFjVixXQUFXLENBQUNTLEdBQVosQ0FBZ0JMLEtBQUssQ0FBQ00sSUFBdEIsQ0FBbEIsRUFBK0MsT0FBTyxJQUFQLENBRHRDLENBRVQ7O0lBQ0EsSUFBSU4sS0FBSyxDQUFDdEIsT0FBTixJQUFpQnNCLEtBQUssQ0FBQ00sSUFBTixLQUFlLGNBQXBDLEVBQW9ELE9BQU8sSUFBUDtJQUNwRCxJQUFJTixLQUFLLENBQUNPLFdBQVYsRUFBdUIsT0FBTyxJQUFQO0VBQ3hCOztFQUVELE9BQU8sS0FBUDtBQUNELENBbENEO0FBb0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEzQyxXQUFXLENBQUNDLFNBQVosQ0FBc0IyQyxNQUF0QixHQUErQixZQUFZO0VBQ3pDLEtBQUsxQyxZQUFMLEdBRHlDLENBR3pDOztFQUNBLElBQUksS0FBSzJDLEdBQVQsRUFBYztJQUNaLEtBQUtBLEdBQUwsR0FBVyxJQUFYO0lBQ0EsS0FBS0EsR0FBTCxHQUFXLEtBQUtDLE9BQUwsRUFBWDtFQUNEOztFQUVELEtBQUtDLFFBQUwsR0FBZ0IsS0FBaEI7RUFDQSxLQUFLQyxRQUFMLEdBQWdCLEtBQWhCO0VBQ0EsS0FBS0MsYUFBTCxHQUFxQixJQUFyQjtFQUVBLE9BQU8sS0FBS0MsSUFBTCxFQUFQO0FBQ0QsQ0FkRDtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUFsRCxXQUFXLENBQUNDLFNBQVosQ0FBc0JrRCxJQUF0QixHQUE2QixVQUFVQyxPQUFWLEVBQW1CQyxNQUFuQixFQUEyQjtFQUFBOztFQUN0RCxJQUFJLENBQUMsS0FBS0Msa0JBQVYsRUFBOEI7SUFDNUIsSUFBTUMsSUFBSSxHQUFHLElBQWI7O0lBQ0EsSUFBSSxLQUFLQyxVQUFULEVBQXFCO01BQ25CakMsT0FBTyxDQUFDQyxJQUFSLENBQ0UsZ0lBREY7SUFHRDs7SUFFRCxLQUFLOEIsa0JBQUwsR0FBMEIsSUFBSUcsT0FBSixDQUFZLFVBQUNMLE9BQUQsRUFBVUMsTUFBVixFQUFxQjtNQUN6REUsSUFBSSxDQUFDRyxFQUFMLENBQVEsT0FBUixFQUFpQixZQUFNO1FBQ3JCLElBQUksS0FBSSxDQUFDN0IsV0FBTCxJQUFvQixLQUFJLENBQUNBLFdBQUwsR0FBbUIsS0FBSSxDQUFDQyxRQUFoRCxFQUEwRDtVQUN4RDtRQUNEOztRQUVELElBQUksS0FBSSxDQUFDa0IsUUFBTCxJQUFpQixLQUFJLENBQUNDLGFBQTFCLEVBQXlDO1VBQ3ZDSSxNQUFNLENBQUMsS0FBSSxDQUFDSixhQUFOLENBQU47VUFDQTtRQUNEOztRQUVELElBQU1iLEtBQUssR0FBRyxJQUFJdUIsS0FBSixDQUFVLFNBQVYsQ0FBZDtRQUNBdkIsS0FBSyxDQUFDTSxJQUFOLEdBQWEsU0FBYjtRQUNBTixLQUFLLENBQUNJLE1BQU4sR0FBZSxLQUFJLENBQUNBLE1BQXBCO1FBQ0FKLEtBQUssQ0FBQ3dCLE1BQU4sR0FBZSxLQUFJLENBQUNBLE1BQXBCO1FBQ0F4QixLQUFLLENBQUN5QixHQUFOLEdBQVksS0FBSSxDQUFDQSxHQUFqQjtRQUNBUixNQUFNLENBQUNqQixLQUFELENBQU47TUFDRCxDQWhCRDtNQWlCQW1CLElBQUksQ0FBQ08sR0FBTCxDQUFTLFVBQUMxQixLQUFELEVBQVFDLEdBQVIsRUFBZ0I7UUFDdkIsSUFBSUQsS0FBSixFQUFXaUIsTUFBTSxDQUFDakIsS0FBRCxDQUFOLENBQVgsS0FDS2dCLE9BQU8sQ0FBQ2YsR0FBRCxDQUFQO01BQ04sQ0FIRDtJQUlELENBdEJ5QixDQUExQjtFQXVCRDs7RUFFRCxPQUFPLEtBQUtpQixrQkFBTCxDQUF3QkgsSUFBeEIsQ0FBNkJDLE9BQTdCLEVBQXNDQyxNQUF0QyxDQUFQO0FBQ0QsQ0FuQ0Q7O0FBcUNBckQsV0FBVyxDQUFDQyxTQUFaLENBQXNCOEQsS0FBdEIsR0FBOEIsVUFBVUMsUUFBVixFQUFvQjtFQUNoRCxPQUFPLEtBQUtiLElBQUwsQ0FBVWMsU0FBVixFQUFxQkQsUUFBckIsQ0FBUDtBQUNELENBRkQ7QUFJQTtBQUNBO0FBQ0E7OztBQUVBaEUsV0FBVyxDQUFDQyxTQUFaLENBQXNCaUUsR0FBdEIsR0FBNEIsVUFBVTNELEVBQVYsRUFBYztFQUN4Q0EsRUFBRSxDQUFDLElBQUQsQ0FBRjtFQUNBLE9BQU8sSUFBUDtBQUNELENBSEQ7O0FBS0FQLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQmtFLEVBQXRCLEdBQTJCLFVBQVVILFFBQVYsRUFBb0I7RUFDN0MsSUFBSSxPQUFPQSxRQUFQLEtBQW9CLFVBQXhCLEVBQW9DLE1BQU0sSUFBSUwsS0FBSixDQUFVLG1CQUFWLENBQU47RUFDcEMsS0FBS1MsV0FBTCxHQUFtQkosUUFBbkI7RUFDQSxPQUFPLElBQVA7QUFDRCxDQUpEOztBQU1BaEUsV0FBVyxDQUFDQyxTQUFaLENBQXNCb0UsYUFBdEIsR0FBc0MsVUFBVWhDLEdBQVYsRUFBZTtFQUNuRCxJQUFJLENBQUNBLEdBQUwsRUFBVTtJQUNSLE9BQU8sS0FBUDtFQUNEOztFQUVELElBQUksS0FBSytCLFdBQVQsRUFBc0I7SUFDcEIsT0FBTyxLQUFLQSxXQUFMLENBQWlCL0IsR0FBakIsQ0FBUDtFQUNEOztFQUVELE9BQU9BLEdBQUcsQ0FBQ0csTUFBSixJQUFjLEdBQWQsSUFBcUJILEdBQUcsQ0FBQ0csTUFBSixHQUFhLEdBQXpDO0FBQ0QsQ0FWRDtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBeEMsV0FBVyxDQUFDQyxTQUFaLENBQXNCcUUsR0FBdEIsR0FBNEIsVUFBVUMsS0FBVixFQUFpQjtFQUMzQyxPQUFPLEtBQUtDLE9BQUwsQ0FBYUQsS0FBSyxDQUFDRSxXQUFOLEVBQWIsQ0FBUDtBQUNELENBRkQ7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQXpFLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQnlFLFNBQXRCLEdBQWtDMUUsV0FBVyxDQUFDQyxTQUFaLENBQXNCcUUsR0FBeEQ7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBdEUsV0FBVyxDQUFDQyxTQUFaLENBQXNCMEUsR0FBdEIsR0FBNEIsVUFBVUosS0FBVixFQUFpQjdELEtBQWpCLEVBQXdCO0VBQ2xELElBQUlkLFFBQVEsQ0FBQzJFLEtBQUQsQ0FBWixFQUFxQjtJQUNuQixLQUFLLElBQU1LLEdBQVgsSUFBa0JMLEtBQWxCLEVBQXlCO01BQ3ZCLElBQUkxRSxNQUFNLENBQUMwRSxLQUFELEVBQVFLLEdBQVIsQ0FBVixFQUF3QixLQUFLRCxHQUFMLENBQVNDLEdBQVQsRUFBY0wsS0FBSyxDQUFDSyxHQUFELENBQW5CO0lBQ3pCOztJQUVELE9BQU8sSUFBUDtFQUNEOztFQUVELEtBQUtKLE9BQUwsQ0FBYUQsS0FBSyxDQUFDRSxXQUFOLEVBQWIsSUFBb0MvRCxLQUFwQztFQUNBLEtBQUttRSxNQUFMLENBQVlOLEtBQVosSUFBcUI3RCxLQUFyQjtFQUNBLE9BQU8sSUFBUDtBQUNELENBWkQ7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBVixXQUFXLENBQUNDLFNBQVosQ0FBc0I2RSxLQUF0QixHQUE4QixVQUFVUCxLQUFWLEVBQWlCO0VBQzdDLE9BQU8sS0FBS0MsT0FBTCxDQUFhRCxLQUFLLENBQUNFLFdBQU4sRUFBYixDQUFQO0VBQ0EsT0FBTyxLQUFLSSxNQUFMLENBQVlOLEtBQVosQ0FBUDtFQUNBLE9BQU8sSUFBUDtBQUNELENBSkQ7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQXZFLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQnNFLEtBQXRCLEdBQThCLFVBQVVRLElBQVYsRUFBZ0JyRSxLQUFoQixFQUF1QkssT0FBdkIsRUFBZ0M7RUFDNUQ7RUFDQSxJQUFJZ0UsSUFBSSxLQUFLLElBQVQsSUFBaUJkLFNBQVMsS0FBS2MsSUFBbkMsRUFBeUM7SUFDdkMsTUFBTSxJQUFJcEIsS0FBSixDQUFVLHlDQUFWLENBQU47RUFDRDs7RUFFRCxJQUFJLEtBQUtxQixLQUFULEVBQWdCO0lBQ2QsTUFBTSxJQUFJckIsS0FBSixDQUNKLGlHQURJLENBQU47RUFHRDs7RUFFRCxJQUFJL0QsUUFBUSxDQUFDbUYsSUFBRCxDQUFaLEVBQW9CO0lBQ2xCLEtBQUssSUFBTUgsR0FBWCxJQUFrQkcsSUFBbEIsRUFBd0I7TUFDdEIsSUFBSWxGLE1BQU0sQ0FBQ2tGLElBQUQsRUFBT0gsR0FBUCxDQUFWLEVBQXVCLEtBQUtMLEtBQUwsQ0FBV0ssR0FBWCxFQUFnQkcsSUFBSSxDQUFDSCxHQUFELENBQXBCO0lBQ3hCOztJQUVELE9BQU8sSUFBUDtFQUNEOztFQUVELElBQUlLLEtBQUssQ0FBQ0MsT0FBTixDQUFjeEUsS0FBZCxDQUFKLEVBQTBCO0lBQ3hCLEtBQUssSUFBTXlFLENBQVgsSUFBZ0J6RSxLQUFoQixFQUF1QjtNQUNyQixJQUFJYixNQUFNLENBQUNhLEtBQUQsRUFBUXlFLENBQVIsQ0FBVixFQUFzQixLQUFLWixLQUFMLENBQVdRLElBQVgsRUFBaUJyRSxLQUFLLENBQUN5RSxDQUFELENBQXRCO0lBQ3ZCOztJQUVELE9BQU8sSUFBUDtFQUNELENBMUIyRCxDQTRCNUQ7OztFQUNBLElBQUl6RSxLQUFLLEtBQUssSUFBVixJQUFrQnVELFNBQVMsS0FBS3ZELEtBQXBDLEVBQTJDO0lBQ3pDLE1BQU0sSUFBSWlELEtBQUosQ0FBVSx3Q0FBVixDQUFOO0VBQ0Q7O0VBRUQsSUFBSSxPQUFPakQsS0FBUCxLQUFpQixTQUFyQixFQUFnQztJQUM5QkEsS0FBSyxHQUFHMEUsTUFBTSxDQUFDMUUsS0FBRCxDQUFkO0VBQ0QsQ0FuQzJELENBcUM1RDs7O0VBQ0EsSUFBSUssT0FBSixFQUFhLEtBQUtzRSxZQUFMLEdBQW9CQyxNQUFwQixDQUEyQlAsSUFBM0IsRUFBaUNyRSxLQUFqQyxFQUF3Q0ssT0FBeEMsRUFBYixLQUNLLEtBQUtzRSxZQUFMLEdBQW9CQyxNQUFwQixDQUEyQlAsSUFBM0IsRUFBaUNyRSxLQUFqQztFQUVMLE9BQU8sSUFBUDtBQUNELENBMUNEO0FBNENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0FWLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQnNGLEtBQXRCLEdBQThCLFlBQVk7RUFDeEMsSUFBSSxLQUFLeEMsUUFBVCxFQUFtQjtJQUNqQixPQUFPLElBQVA7RUFDRDs7RUFFRCxLQUFLQSxRQUFMLEdBQWdCLElBQWhCO0VBQ0EsSUFBSSxLQUFLeUMsR0FBVCxFQUFjLEtBQUtBLEdBQUwsQ0FBU0QsS0FBVCxHQU4wQixDQU1SOztFQUNoQyxJQUFJLEtBQUsxQyxHQUFULEVBQWM7SUFDWjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFDRW5ELE1BQU0sQ0FBQytGLEdBQVAsQ0FBV0MsT0FBTyxDQUFDQyxPQUFuQixFQUE0QixTQUE1QixLQUNBakcsTUFBTSxDQUFDa0csRUFBUCxDQUFVRixPQUFPLENBQUNDLE9BQWxCLEVBQTJCLFNBQTNCLENBRkYsRUFHRTtNQUNBO01BQ0E7TUFDQSxNQUFNLElBQUloQyxLQUFKLENBQ0osbUZBREksQ0FBTjtJQUdELENBVEQsTUFTTyxJQUFJakUsTUFBTSxDQUFDK0YsR0FBUCxDQUFXQyxPQUFPLENBQUNDLE9BQW5CLEVBQTRCLFNBQTVCLENBQUosRUFBNEM7TUFDakQ7TUFDQTtNQUNBLEtBQUs5QyxHQUFMLENBQVNnRCxTQUFULEdBQXFCLElBQXJCO0lBQ0Q7O0lBRUQsS0FBS2hELEdBQUwsQ0FBUzBDLEtBQVQsR0EzQlksQ0EyQk07RUFDbkI7O0VBRUQsS0FBS3JGLFlBQUw7RUFDQSxLQUFLNEYsSUFBTCxDQUFVLE9BQVY7RUFDQSxPQUFPLElBQVA7QUFDRCxDQXhDRDs7QUEwQ0E5RixXQUFXLENBQUNDLFNBQVosQ0FBc0I4RixLQUF0QixHQUE4QixVQUFVQyxJQUFWLEVBQWdCQyxJQUFoQixFQUFzQmxGLE9BQXRCLEVBQStCbUYsYUFBL0IsRUFBOEM7RUFDMUUsUUFBUW5GLE9BQU8sQ0FBQ29GLElBQWhCO0lBQ0UsS0FBSyxPQUFMO01BQ0UsS0FBS3hCLEdBQUwsQ0FBUyxlQUFULGtCQUFtQ3VCLGFBQWEsV0FBSUYsSUFBSixjQUFZQyxJQUFaLEVBQWhEO01BQ0E7O0lBRUYsS0FBSyxNQUFMO01BQ0UsS0FBS0csUUFBTCxHQUFnQkosSUFBaEI7TUFDQSxLQUFLSyxRQUFMLEdBQWdCSixJQUFoQjtNQUNBOztJQUVGLEtBQUssUUFBTDtNQUFlO01BQ2IsS0FBS3RCLEdBQUwsQ0FBUyxlQUFULG1CQUFvQ3FCLElBQXBDO01BQ0E7O0lBQ0Y7TUFDRTtFQWRKOztFQWlCQSxPQUFPLElBQVA7QUFDRCxDQW5CRDtBQXFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUFoRyxXQUFXLENBQUNDLFNBQVosQ0FBc0JxRyxlQUF0QixHQUF3QyxVQUFVNUMsRUFBVixFQUFjO0VBQ3BEO0VBQ0EsSUFBSUEsRUFBRSxLQUFLTyxTQUFYLEVBQXNCUCxFQUFFLEdBQUcsSUFBTDtFQUN0QixLQUFLNkMsZ0JBQUwsR0FBd0I3QyxFQUF4QjtFQUNBLE9BQU8sSUFBUDtBQUNELENBTEQ7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUExRCxXQUFXLENBQUNDLFNBQVosQ0FBc0J1RyxTQUF0QixHQUFrQyxVQUFVQyxDQUFWLEVBQWE7RUFDN0MsS0FBS0MsYUFBTCxHQUFxQkQsQ0FBckI7RUFDQSxPQUFPLElBQVA7QUFDRCxDQUhEO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBekcsV0FBVyxDQUFDQyxTQUFaLENBQXNCMEcsZUFBdEIsR0FBd0MsVUFBVUYsQ0FBVixFQUFhO0VBQ25ELElBQUksT0FBT0EsQ0FBUCxLQUFhLFFBQWpCLEVBQTJCO0lBQ3pCLE1BQU0sSUFBSUcsU0FBSixDQUFjLGtCQUFkLENBQU47RUFDRDs7RUFFRCxLQUFLQyxnQkFBTCxHQUF3QkosQ0FBeEI7RUFDQSxPQUFPLElBQVA7QUFDRCxDQVBEO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUF6RyxXQUFXLENBQUNDLFNBQVosQ0FBc0I2RyxNQUF0QixHQUErQixZQUFZO0VBQ3pDLE9BQU87SUFDTGxELE1BQU0sRUFBRSxLQUFLQSxNQURSO0lBRUxDLEdBQUcsRUFBRSxLQUFLQSxHQUZMO0lBR0xrRCxJQUFJLEVBQUUsS0FBSy9CLEtBSE47SUFJTGdDLE9BQU8sRUFBRSxLQUFLeEM7RUFKVCxDQUFQO0FBTUQsQ0FQRDtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7QUFDQXhFLFdBQVcsQ0FBQ0MsU0FBWixDQUFzQmdILElBQXRCLEdBQTZCLFVBQVVGLElBQVYsRUFBZ0I7RUFDM0MsSUFBTUcsU0FBUyxHQUFHdEgsUUFBUSxDQUFDbUgsSUFBRCxDQUExQjtFQUNBLElBQUlaLElBQUksR0FBRyxLQUFLM0IsT0FBTCxDQUFhLGNBQWIsQ0FBWDs7RUFFQSxJQUFJLEtBQUsyQyxTQUFULEVBQW9CO0lBQ2xCLE1BQU0sSUFBSXhELEtBQUosQ0FDSiw4R0FESSxDQUFOO0VBR0Q7O0VBRUQsSUFBSXVELFNBQVMsSUFBSSxDQUFDLEtBQUtsQyxLQUF2QixFQUE4QjtJQUM1QixJQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBYzZCLElBQWQsQ0FBSixFQUF5QjtNQUN2QixLQUFLL0IsS0FBTCxHQUFhLEVBQWI7SUFDRCxDQUZELE1BRU8sSUFBSSxDQUFDLEtBQUtvQyxPQUFMLENBQWFMLElBQWIsQ0FBTCxFQUF5QjtNQUM5QixLQUFLL0IsS0FBTCxHQUFhLEVBQWI7SUFDRDtFQUNGLENBTkQsTUFNTyxJQUFJK0IsSUFBSSxJQUFJLEtBQUsvQixLQUFiLElBQXNCLEtBQUtvQyxPQUFMLENBQWEsS0FBS3BDLEtBQWxCLENBQTFCLEVBQW9EO0lBQ3pELE1BQU0sSUFBSXJCLEtBQUosQ0FBVSw4QkFBVixDQUFOO0VBQ0QsQ0FsQjBDLENBb0IzQzs7O0VBQ0EsSUFBSXVELFNBQVMsSUFBSXRILFFBQVEsQ0FBQyxLQUFLb0YsS0FBTixDQUF6QixFQUF1QztJQUNyQyxLQUFLLElBQU1KLEdBQVgsSUFBa0JtQyxJQUFsQixFQUF3QjtNQUN0QixJQUFJbEgsTUFBTSxDQUFDa0gsSUFBRCxFQUFPbkMsR0FBUCxDQUFWLEVBQXVCLEtBQUtJLEtBQUwsQ0FBV0osR0FBWCxJQUFrQm1DLElBQUksQ0FBQ25DLEdBQUQsQ0FBdEI7SUFDeEI7RUFDRixDQUpELE1BSU8sSUFBSSxPQUFPbUMsSUFBUCxLQUFnQixRQUFwQixFQUE4QjtJQUNuQztJQUNBLElBQUksQ0FBQ1osSUFBTCxFQUFXLEtBQUtBLElBQUwsQ0FBVSxNQUFWO0lBQ1hBLElBQUksR0FBRyxLQUFLM0IsT0FBTCxDQUFhLGNBQWIsQ0FBUDtJQUNBLElBQUkyQixJQUFKLEVBQVVBLElBQUksR0FBR0EsSUFBSSxDQUFDMUIsV0FBTCxHQUFtQjRDLElBQW5CLEVBQVA7O0lBQ1YsSUFBSWxCLElBQUksS0FBSyxtQ0FBYixFQUFrRDtNQUNoRCxLQUFLbkIsS0FBTCxHQUFhLEtBQUtBLEtBQUwsYUFBZ0IsS0FBS0EsS0FBckIsY0FBOEIrQixJQUE5QixJQUF1Q0EsSUFBcEQ7SUFDRCxDQUZELE1BRU87TUFDTCxLQUFLL0IsS0FBTCxHQUFhLENBQUMsS0FBS0EsS0FBTCxJQUFjLEVBQWYsSUFBcUIrQixJQUFsQztJQUNEO0VBQ0YsQ0FWTSxNQVVBO0lBQ0wsS0FBSy9CLEtBQUwsR0FBYStCLElBQWI7RUFDRDs7RUFFRCxJQUFJLENBQUNHLFNBQUQsSUFBYyxLQUFLRSxPQUFMLENBQWFMLElBQWIsQ0FBbEIsRUFBc0M7SUFDcEMsT0FBTyxJQUFQO0VBQ0QsQ0F6QzBDLENBMkMzQzs7O0VBQ0EsSUFBSSxDQUFDWixJQUFMLEVBQVcsS0FBS0EsSUFBTCxDQUFVLE1BQVY7RUFDWCxPQUFPLElBQVA7QUFDRCxDQTlDRDtBQWdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBbkcsV0FBVyxDQUFDQyxTQUFaLENBQXNCcUgsU0FBdEIsR0FBa0MsVUFBVUMsSUFBVixFQUFnQjtFQUNoRDtFQUNBLEtBQUtDLEtBQUwsR0FBYSxPQUFPRCxJQUFQLEtBQWdCLFdBQWhCLEdBQThCLElBQTlCLEdBQXFDQSxJQUFsRDtFQUNBLE9BQU8sSUFBUDtBQUNELENBSkQ7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQXZILFdBQVcsQ0FBQ0MsU0FBWixDQUFzQndILG9CQUF0QixHQUE2QyxZQUFZO0VBQ3ZELElBQU1DLEtBQUssR0FBRyxLQUFLQyxNQUFMLENBQVlDLElBQVosQ0FBaUIsR0FBakIsQ0FBZDs7RUFDQSxJQUFJRixLQUFKLEVBQVc7SUFDVCxLQUFLN0QsR0FBTCxJQUFZLENBQUMsS0FBS0EsR0FBTCxDQUFTZ0UsUUFBVCxDQUFrQixHQUFsQixJQUF5QixHQUF6QixHQUErQixHQUFoQyxJQUF1Q0gsS0FBbkQ7RUFDRDs7RUFFRCxLQUFLQyxNQUFMLENBQVkvRixNQUFaLEdBQXFCLENBQXJCLENBTnVELENBTS9COztFQUV4QixJQUFJLEtBQUs0RixLQUFULEVBQWdCO0lBQ2QsSUFBTU0sS0FBSyxHQUFHLEtBQUtqRSxHQUFMLENBQVNrRSxPQUFULENBQWlCLEdBQWpCLENBQWQ7O0lBQ0EsSUFBSUQsS0FBSyxJQUFJLENBQWIsRUFBZ0I7TUFDZCxJQUFNRSxVQUFVLEdBQUcsS0FBS25FLEdBQUwsQ0FBU29FLEtBQVQsQ0FBZUgsS0FBSyxHQUFHLENBQXZCLEVBQTBCSSxLQUExQixDQUFnQyxHQUFoQyxDQUFuQjs7TUFDQSxJQUFJLE9BQU8sS0FBS1YsS0FBWixLQUFzQixVQUExQixFQUFzQztRQUNwQ1EsVUFBVSxDQUFDVCxJQUFYLENBQWdCLEtBQUtDLEtBQXJCO01BQ0QsQ0FGRCxNQUVPO1FBQ0xRLFVBQVUsQ0FBQ1QsSUFBWDtNQUNEOztNQUVELEtBQUsxRCxHQUFMLEdBQVcsS0FBS0EsR0FBTCxDQUFTb0UsS0FBVCxDQUFlLENBQWYsRUFBa0JILEtBQWxCLElBQTJCLEdBQTNCLEdBQWlDRSxVQUFVLENBQUNKLElBQVgsQ0FBZ0IsR0FBaEIsQ0FBNUM7SUFDRDtFQUNGO0FBQ0YsQ0FyQkQsQyxDQXVCQTs7O0FBQ0E1SCxXQUFXLENBQUNDLFNBQVosQ0FBc0JrSSxrQkFBdEIsR0FBMkMsWUFBTTtFQUMvQzVHLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLGFBQWI7QUFDRCxDQUZEO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUF4QixXQUFXLENBQUNDLFNBQVosQ0FBc0JtSSxhQUF0QixHQUFzQyxVQUFVQyxNQUFWLEVBQWtCdkgsT0FBbEIsRUFBMkJ3SCxLQUEzQixFQUFrQztFQUN0RSxJQUFJLEtBQUt2RixRQUFULEVBQW1CO0lBQ2pCO0VBQ0Q7O0VBRUQsSUFBTVgsS0FBSyxHQUFHLElBQUl1QixLQUFKLFdBQWEwRSxNQUFNLEdBQUd2SCxPQUF0QixpQkFBZDtFQUNBc0IsS0FBSyxDQUFDdEIsT0FBTixHQUFnQkEsT0FBaEI7RUFDQXNCLEtBQUssQ0FBQ00sSUFBTixHQUFhLGNBQWI7RUFDQU4sS0FBSyxDQUFDa0csS0FBTixHQUFjQSxLQUFkO0VBQ0EsS0FBS3RGLFFBQUwsR0FBZ0IsSUFBaEI7RUFDQSxLQUFLQyxhQUFMLEdBQXFCYixLQUFyQjtFQUNBLEtBQUttRCxLQUFMO0VBQ0EsS0FBS3ZCLFFBQUwsQ0FBYzVCLEtBQWQ7QUFDRCxDQWJEOztBQWVBcEMsV0FBVyxDQUFDQyxTQUFaLENBQXNCc0ksWUFBdEIsR0FBcUMsWUFBWTtFQUMvQyxJQUFNaEYsSUFBSSxHQUFHLElBQWIsQ0FEK0MsQ0FHL0M7O0VBQ0EsSUFBSSxLQUFLdkMsUUFBTCxJQUFpQixDQUFDLEtBQUtiLE1BQTNCLEVBQW1DO0lBQ2pDLEtBQUtBLE1BQUwsR0FBY3FJLFVBQVUsQ0FBQyxZQUFNO01BQzdCakYsSUFBSSxDQUFDNkUsYUFBTCxDQUFtQixhQUFuQixFQUFrQzdFLElBQUksQ0FBQ3ZDLFFBQXZDLEVBQWlELE9BQWpEO0lBQ0QsQ0FGdUIsRUFFckIsS0FBS0EsUUFGZ0IsQ0FBeEI7RUFHRCxDQVI4QyxDQVUvQzs7O0VBQ0EsSUFBSSxLQUFLQyxnQkFBTCxJQUF5QixDQUFDLEtBQUtiLHFCQUFuQyxFQUEwRDtJQUN4RCxLQUFLQSxxQkFBTCxHQUE2Qm9JLFVBQVUsQ0FBQyxZQUFNO01BQzVDakYsSUFBSSxDQUFDNkUsYUFBTCxDQUNFLHNCQURGLEVBRUU3RSxJQUFJLENBQUN0QyxnQkFGUCxFQUdFLFdBSEY7SUFLRCxDQU5zQyxFQU1wQyxLQUFLQSxnQkFOK0IsQ0FBdkM7RUFPRDtBQUNGLENBcEJEIn0=","\"use strict\";\n\n/**\n * Module dependencies.\n */\nvar utils = require('./utils');\n/**\n * Expose `ResponseBase`.\n */\n\n\nmodule.exports = ResponseBase;\n/**\n * Initialize a new `ResponseBase`.\n *\n * @api public\n */\n\nfunction ResponseBase() {}\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\n\nResponseBase.prototype.get = function (field) {\n return this.header[field.toLowerCase()];\n};\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\n\nResponseBase.prototype._setHeaderProperties = function (header) {\n // TODO: moar!\n // TODO: make this a util\n // content-type\n var ct = header['content-type'] || '';\n this.type = utils.type(ct); // params\n\n var parameters = utils.params(ct);\n\n for (var key in parameters) {\n if (Object.prototype.hasOwnProperty.call(parameters, key)) this[key] = parameters[key];\n }\n\n this.links = {}; // links\n\n try {\n if (header.link) {\n this.links = utils.parseLinks(header.link);\n }\n } catch (_unused) {// ignore\n }\n};\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\n\nResponseBase.prototype._setStatusProperties = function (status) {\n var type = Math.trunc(status / 100); // status / class\n\n this.statusCode = status;\n this.status = this.statusCode;\n this.statusType = type; // basics\n\n this.info = type === 1;\n this.ok = type === 2;\n this.redirect = type === 3;\n this.clientError = type === 4;\n this.serverError = type === 5;\n this.error = type === 4 || type === 5 ? this.toError() : false; // sugar\n\n this.created = status === 201;\n this.accepted = status === 202;\n this.noContent = status === 204;\n this.badRequest = status === 400;\n this.unauthorized = status === 401;\n this.notAcceptable = status === 406;\n this.forbidden = status === 403;\n this.notFound = status === 404;\n this.unprocessableEntity = status === 422;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1dGlscyIsInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIiwiUmVzcG9uc2VCYXNlIiwicHJvdG90eXBlIiwiZ2V0IiwiZmllbGQiLCJoZWFkZXIiLCJ0b0xvd2VyQ2FzZSIsIl9zZXRIZWFkZXJQcm9wZXJ0aWVzIiwiY3QiLCJ0eXBlIiwicGFyYW1ldGVycyIsInBhcmFtcyIsImtleSIsIk9iamVjdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImxpbmtzIiwibGluayIsInBhcnNlTGlua3MiLCJfc2V0U3RhdHVzUHJvcGVydGllcyIsInN0YXR1cyIsIk1hdGgiLCJ0cnVuYyIsInN0YXR1c0NvZGUiLCJzdGF0dXNUeXBlIiwiaW5mbyIsIm9rIiwicmVkaXJlY3QiLCJjbGllbnRFcnJvciIsInNlcnZlckVycm9yIiwiZXJyb3IiLCJ0b0Vycm9yIiwiY3JlYXRlZCIsImFjY2VwdGVkIiwibm9Db250ZW50IiwiYmFkUmVxdWVzdCIsInVuYXV0aG9yaXplZCIsIm5vdEFjY2VwdGFibGUiLCJmb3JiaWRkZW4iLCJub3RGb3VuZCIsInVucHJvY2Vzc2FibGVFbnRpdHkiXSwic291cmNlcyI6WyIuLi9zcmMvcmVzcG9uc2UtYmFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbi8qKlxuICogRXhwb3NlIGBSZXNwb25zZUJhc2VgLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gUmVzcG9uc2VCYXNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJlc3BvbnNlQmFzZWAuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBSZXNwb25zZUJhc2UoKSB7fVxuXG4vKipcbiAqIEdldCBjYXNlLWluc2Vuc2l0aXZlIGBmaWVsZGAgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlc3BvbnNlQmFzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGZpZWxkKSB7XG4gIHJldHVybiB0aGlzLmhlYWRlcltmaWVsZC50b0xvd2VyQ2FzZSgpXTtcbn07XG5cbi8qKlxuICogU2V0IGhlYWRlciByZWxhdGVkIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGAudHlwZWAgdGhlIGNvbnRlbnQgdHlwZSB3aXRob3V0IHBhcmFtc1xuICpcbiAqIEEgcmVzcG9uc2Ugb2YgXCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLThcIlxuICogd2lsbCBwcm92aWRlIHlvdSB3aXRoIGEgYC50eXBlYCBvZiBcInRleHQvcGxhaW5cIi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaGVhZGVyXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXNwb25zZUJhc2UucHJvdG90eXBlLl9zZXRIZWFkZXJQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGhlYWRlcikge1xuICAvLyBUT0RPOiBtb2FyIVxuICAvLyBUT0RPOiBtYWtlIHRoaXMgYSB1dGlsXG5cbiAgLy8gY29udGVudC10eXBlXG4gIGNvbnN0IGN0ID0gaGVhZGVyWydjb250ZW50LXR5cGUnXSB8fCAnJztcbiAgdGhpcy50eXBlID0gdXRpbHMudHlwZShjdCk7XG5cbiAgLy8gcGFyYW1zXG4gIGNvbnN0IHBhcmFtZXRlcnMgPSB1dGlscy5wYXJhbXMoY3QpO1xuICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbWV0ZXJzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJhbWV0ZXJzLCBrZXkpKVxuICAgICAgdGhpc1trZXldID0gcGFyYW1ldGVyc1trZXldO1xuICB9XG5cbiAgdGhpcy5saW5rcyA9IHt9O1xuXG4gIC8vIGxpbmtzXG4gIHRyeSB7XG4gICAgaWYgKGhlYWRlci5saW5rKSB7XG4gICAgICB0aGlzLmxpbmtzID0gdXRpbHMucGFyc2VMaW5rcyhoZWFkZXIubGluayk7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBpZ25vcmVcbiAgfVxufTtcblxuLyoqXG4gKiBTZXQgZmxhZ3Mgc3VjaCBhcyBgLm9rYCBiYXNlZCBvbiBgc3RhdHVzYC5cbiAqXG4gKiBGb3IgZXhhbXBsZSBhIDJ4eCByZXNwb25zZSB3aWxsIGdpdmUgeW91IGEgYC5va2Agb2YgX190cnVlX19cbiAqIHdoZXJlYXMgNXh4IHdpbGwgYmUgX19mYWxzZV9fIGFuZCBgLmVycm9yYCB3aWxsIGJlIF9fdHJ1ZV9fLiBUaGVcbiAqIGAuY2xpZW50RXJyb3JgIGFuZCBgLnNlcnZlckVycm9yYCBhcmUgYWxzbyBhdmFpbGFibGUgdG8gYmUgbW9yZVxuICogc3BlY2lmaWMsIGFuZCBgLnN0YXR1c1R5cGVgIGlzIHRoZSBjbGFzcyBvZiBlcnJvciByYW5naW5nIGZyb20gMS4uNVxuICogc29tZXRpbWVzIHVzZWZ1bCBmb3IgbWFwcGluZyByZXNwb25kIGNvbG9ycyBldGMuXG4gKlxuICogXCJzdWdhclwiIHByb3BlcnRpZXMgYXJlIGFsc28gZGVmaW5lZCBmb3IgY29tbW9uIGNhc2VzLiBDdXJyZW50bHkgcHJvdmlkaW5nOlxuICpcbiAqICAgLSAubm9Db250ZW50XG4gKiAgIC0gLmJhZFJlcXVlc3RcbiAqICAgLSAudW5hdXRob3JpemVkXG4gKiAgIC0gLm5vdEFjY2VwdGFibGVcbiAqICAgLSAubm90Rm91bmRcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gc3RhdHVzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXNwb25zZUJhc2UucHJvdG90eXBlLl9zZXRTdGF0dXNQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHN0YXR1cykge1xuICBjb25zdCB0eXBlID0gTWF0aC50cnVuYyhzdGF0dXMgLyAxMDApO1xuXG4gIC8vIHN0YXR1cyAvIGNsYXNzXG4gIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1cztcbiAgdGhpcy5zdGF0dXMgPSB0aGlzLnN0YXR1c0NvZGU7XG4gIHRoaXMuc3RhdHVzVHlwZSA9IHR5cGU7XG5cbiAgLy8gYmFzaWNzXG4gIHRoaXMuaW5mbyA9IHR5cGUgPT09IDE7XG4gIHRoaXMub2sgPSB0eXBlID09PSAyO1xuICB0aGlzLnJlZGlyZWN0ID0gdHlwZSA9PT0gMztcbiAgdGhpcy5jbGllbnRFcnJvciA9IHR5cGUgPT09IDQ7XG4gIHRoaXMuc2VydmVyRXJyb3IgPSB0eXBlID09PSA1O1xuICB0aGlzLmVycm9yID0gdHlwZSA9PT0gNCB8fCB0eXBlID09PSA1ID8gdGhpcy50b0Vycm9yKCkgOiBmYWxzZTtcblxuICAvLyBzdWdhclxuICB0aGlzLmNyZWF0ZWQgPSBzdGF0dXMgPT09IDIwMTtcbiAgdGhpcy5hY2NlcHRlZCA9IHN0YXR1cyA9PT0gMjAyO1xuICB0aGlzLm5vQ29udGVudCA9IHN0YXR1cyA9PT0gMjA0O1xuICB0aGlzLmJhZFJlcXVlc3QgPSBzdGF0dXMgPT09IDQwMDtcbiAgdGhpcy51bmF1dGhvcml6ZWQgPSBzdGF0dXMgPT09IDQwMTtcbiAgdGhpcy5ub3RBY2NlcHRhYmxlID0gc3RhdHVzID09PSA0MDY7XG4gIHRoaXMuZm9yYmlkZGVuID0gc3RhdHVzID09PSA0MDM7XG4gIHRoaXMubm90Rm91bmQgPSBzdGF0dXMgPT09IDQwNDtcbiAgdGhpcy51bnByb2Nlc3NhYmxlRW50aXR5ID0gc3RhdHVzID09PSA0MjI7XG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUVBLElBQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7QUFFQTtBQUNBO0FBQ0E7OztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLFlBQWpCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTQSxZQUFULEdBQXdCLENBQUU7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBQSxZQUFZLENBQUNDLFNBQWIsQ0FBdUJDLEdBQXZCLEdBQTZCLFVBQVVDLEtBQVYsRUFBaUI7RUFDNUMsT0FBTyxL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","\"use strict\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction Agent() {\n this._defaults = [];\n}\n\nvar _loop = function _loop() {\n var fn = _arr[_i];\n\n // Default setting for all requests from this agent\n Agent.prototype[fn] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this._defaults.push({\n fn: fn,\n args: args\n });\n\n return this;\n };\n};\n\nfor (var _i = 0, _arr = ['use', 'on', 'once', 'set', 'query', 'type', 'accept', 'auth', 'withCredentials', 'sortQuery', 'retry', 'ok', 'redirects', 'timeout', 'buffer', 'serialize', 'parse', 'ca', 'key', 'pfx', 'cert', 'disableTLSCerts']; _i < _arr.length; _i++) {\n _loop();\n}\n\nAgent.prototype._setDefaults = function (request) {\n var _iterator = _createForOfIteratorHelper(this._defaults),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var def = _step.value;\n request[def.fn].apply(request, _toConsumableArray(def.args));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n};\n\nmodule.exports = Agent;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBZ2VudCIsIl9kZWZhdWx0cyIsImZuIiwicHJvdG90eXBlIiwiYXJncyIsInB1c2giLCJfc2V0RGVmYXVsdHMiLCJyZXF1ZXN0IiwiZGVmIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hZ2VudC1iYXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIEFnZW50KCkge1xuICB0aGlzLl9kZWZhdWx0cyA9IFtdO1xufVxuXG5mb3IgKGNvbnN0IGZuIG9mIFtcbiAgJ3VzZScsXG4gICdvbicsXG4gICdvbmNlJyxcbiAgJ3NldCcsXG4gICdxdWVyeScsXG4gICd0eXBlJyxcbiAgJ2FjY2VwdCcsXG4gICdhdXRoJyxcbiAgJ3dpdGhDcmVkZW50aWFscycsXG4gICdzb3J0UXVlcnknLFxuICAncmV0cnknLFxuICAnb2snLFxuICAncmVkaXJlY3RzJyxcbiAgJ3RpbWVvdXQnLFxuICAnYnVmZmVyJyxcbiAgJ3NlcmlhbGl6ZScsXG4gICdwYXJzZScsXG4gICdjYScsXG4gICdrZXknLFxuICAncGZ4JyxcbiAgJ2NlcnQnLFxuICAnZGlzYWJsZVRMU0NlcnRzJ1xuXSkge1xuICAvLyBEZWZhdWx0IHNldHRpbmcgZm9yIGFsbCByZXF1ZXN0cyBmcm9tIHRoaXMgYWdlbnRcbiAgQWdlbnQucHJvdG90eXBlW2ZuXSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgdGhpcy5fZGVmYXVsdHMucHVzaCh7IGZuLCBhcmdzIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xufVxuXG5BZ2VudC5wcm90b3R5cGUuX3NldERlZmF1bHRzID0gZnVuY3Rpb24gKHJlcXVlc3QpIHtcbiAgZm9yIChjb25zdCBkZWYgb2YgdGhpcy5fZGVmYXVsdHMpIHtcbiAgICByZXF1ZXN0W2RlZi5mbl0oLi4uZGVmLmFyZ3MpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFnZW50O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsS0FBVCxHQUFpQjtFQUNmLEtBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDRDs7O0VBRUksSUFBTUMsRUFBRSxXQUFSOztFQXdCSDtFQUNBRixLQUFLLENBQUNHLFNBQU4sQ0FBZ0JELEVBQWhCLElBQXNCLFlBQW1CO0lBQUEsa0NBQU5FLElBQU07TUFBTkEsSUFBTTtJQUFBOztJQUN2QyxLQUFLSCxTQUFMLENBQWVJLElBQWYsQ0FBb0I7TUFBRUgsRUFBRSxFQUFGQSxFQUFGO01BQU1FLElBQUksRUFBSkE7SUFBTixDQUFwQjs7SUFDQSxPQUFPLElBQVA7RUFDRCxDQUhEOzs7QUF6QkYsd0JBQWlCLENBQ2YsS0FEZSxFQUVmLElBRmUsRUFHZixNQUhlLEVBSWYsS0FKZSxFQUtmLE9BTGUsRUFNZixNQU5lLEVBT2YsUUFQZSxFQVFmLE1BUmUsRUFTZixpQkFUZSxFQVVmLFdBVmUsRUFXZixPQVhlLEVBWWYsSUFaZSxFQWFmLFdBYmUsRUFjZixTQWRlLEVBZWYsUUFmZSxFQWdCZixXQWhCZSxFQWlCZixPQWpCZSxFQWtCZixJQWxCZSxFQW1CZixLQW5CZSxFQW9CZixLQXBCZSxFQXFCZixNQXJCZSxFQXNCZixpQkF0QmUsQ0FBakIsMEJBdUJHO0VBQUE7QUFNRjs7QUFFREosS0FBSyxDQUFDRyxTQUFOLENBQWdCRyxZQUFoQixHQUErQixVQUFVQyxPQUFWLEVBQW1CO0VBQUEsMkNBQzlCLEtBQUtOLFNBRHlCO0VBQUE7O0VBQUE7SUFDaEQsb0RBQWtDO01BQUEsSUFBdkJPLEdBQXVCO01BQ2hDRCxPQUFPLENBQUNDLEdBQUcsQ0FBQ04sRUFBTCxDQUFQLE9BQUFLLE9BQU8scUJBQVlDLEdBQUcsQ0FBQ0osSUFBaEIsRUFBUDtJQUNEO0VBSCtDO0lBQUE7RUFBQTtJQUFBO0VBQUE7QUFJakQsQ0FKRDs7QUFNQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCVixLQUFqQiJ9","'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","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Root reference for iframes.\n */\nvar root;\n\nif (typeof window !== 'undefined') {\n // Browser window\n root = window;\n} else if (typeof self === 'undefined') {\n // Other environments\n console.warn('Using browser-only version of superagent in non-browser environment');\n root = void 0;\n} else {\n // Web Worker\n root = self;\n}\n\nvar Emitter = require('component-emitter');\n\nvar safeStringify = require('fast-safe-stringify');\n\nvar qs = require('qs');\n\nvar RequestBase = require('./request-base');\n\nvar _require = require('./utils'),\n isObject = _require.isObject,\n mixin = _require.mixin,\n hasOwn = _require.hasOwn;\n\nvar ResponseBase = require('./response-base');\n\nvar Agent = require('./agent-base');\n/**\n * Noop.\n */\n\n\nfunction noop() {}\n/**\n * Expose `request`.\n */\n\n\nmodule.exports = function (method, url) {\n // callback\n if (typeof url === 'function') {\n return new exports.Request('GET', method).end(url);\n } // url first\n\n\n if (arguments.length === 1) {\n return new exports.Request('GET', method);\n }\n\n return new exports.Request(method, url);\n};\n\nexports = module.exports;\nvar request = exports;\nexports.Request = Request;\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n if (root.XMLHttpRequest && (!root.location || root.location.protocol !== 'file:' || !root.ActiveXObject)) {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject('Microsoft.XMLHTTP');\n } catch (_unused) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.6.0');\n } catch (_unused2) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.3.0');\n } catch (_unused3) {\n /**/\n }\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP');\n } catch (_unused4) {\n /**/\n }\n\n throw new Error('Browser-only version of superagent could not find XHR');\n};\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\n\nvar trim = ''.trim ? function (s) {\n return s.trim();\n} : function (s) {\n return s.replace(/(^\\s*|\\s*$)/g, '');\n};\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(object) {\n if (!isObject(object)) return object;\n var pairs = [];\n\n for (var key in object) {\n if (hasOwn(object, key)) pushEncodedKeyValuePair(pairs, key, object[key]);\n }\n\n return pairs.join('&');\n}\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\n\nfunction pushEncodedKeyValuePair(pairs, key, value) {\n if (value === undefined) return;\n\n if (value === null) {\n pairs.push(encodeURI(key));\n return;\n }\n\n if (Array.isArray(value)) {\n var _iterator = _createForOfIteratorHelper(value),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var v = _step.value;\n pushEncodedKeyValuePair(pairs, key, v);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } else if (isObject(value)) {\n for (var subkey in value) {\n if (hasOwn(value, subkey)) pushEncodedKeyValuePair(pairs, \"\".concat(key, \"[\").concat(subkey, \"]\"), value[subkey]);\n }\n } else {\n pairs.push(encodeURI(key) + '=' + encodeURIComponent(value));\n }\n}\n/**\n * Expose serialization method.\n */\n\n\nrequest.serializeObject = serialize;\n/**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(string_) {\n var object = {};\n var pairs = string_.split('&');\n var pair;\n var pos;\n\n for (var i = 0, length_ = pairs.length; i < length_; ++i) {\n pair = pairs[i];\n pos = pair.indexOf('=');\n\n if (pos === -1) {\n object[decodeURIComponent(pair)] = '';\n } else {\n object[decodeURIComponent(pair.slice(0, pos))] = decodeURIComponent(pair.slice(pos + 1));\n }\n }\n\n return object;\n}\n/**\n * Expose parser.\n */\n\n\nrequest.parseString = parseString;\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'text/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n form: 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\nrequest.serialize = {\n 'application/x-www-form-urlencoded': qs.stringify,\n 'application/json': safeStringify\n};\n/**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(string_) {\n var lines = string_.split(/\\r?\\n/);\n var fields = {};\n var index;\n var line;\n var field;\n var value;\n\n for (var i = 0, length_ = lines.length; i < length_; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n\n if (index === -1) {\n // could be empty line, just skip it\n continue;\n }\n\n field = line.slice(0, index).toLowerCase();\n value = trim(line.slice(index + 1));\n fields[field] = value;\n }\n\n return fields;\n}\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\n\nfunction isJSON(mime) {\n // should match /json or +json\n // but not /json-seq\n return /[/+]json($|[^-\\w])/i.test(mime);\n}\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\n\nfunction Response(request_) {\n this.req = request_;\n this.xhr = this.req.xhr; // responseText is accessible only if responseType is '' or 'text' and on older browsers\n\n this.text = this.req.method !== 'HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text') || typeof this.xhr.responseType === 'undefined' ? this.xhr.responseText : null;\n this.statusText = this.req.xhr.statusText;\n var status = this.xhr.status; // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n\n if (status === 1223) {\n status = 204;\n }\n\n this._setStatusProperties(status);\n\n this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n this.header = this.headers; // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n\n this._setHeaderProperties(this.header);\n\n if (this.text === null && request_._responseType) {\n this.body = this.xhr.response;\n } else {\n this.body = this.req.method === 'HEAD' ? null : this._parseBody(this.text ? this.text : this.xhr.response);\n }\n}\n\nmixin(Response.prototype, ResponseBase.prototype);\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function (string_) {\n var parse = request.parse[this.type];\n\n if (this.req._parser) {\n return this.req._parser(this, string_);\n }\n\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n\n return parse && string_ && (string_.length > 0 || string_ instanceof Object) ? parse(string_) : null;\n};\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\n\nResponse.prototype.toError = function () {\n var req = this.req;\n var method = req.method;\n var url = req.url;\n var message = \"cannot \".concat(method, \" \").concat(url, \" (\").concat(this.status, \")\");\n var error = new Error(message);\n error.status = this.status;\n error.method = method;\n error.url = url;\n return error;\n};\n/**\n * Expose `Response`.\n */\n\n\nrequest.Response = Response;\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n var self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n\n this._header = {}; // coerces header names to lowercase\n\n this.on('end', function () {\n var error = null;\n var res = null;\n\n try {\n res = new Response(self);\n } catch (err) {\n error = new Error('Parser is unable to parse the response');\n error.parse = true;\n error.original = err; // issue #675: return the raw response if the response parsing fails\n\n if (self.xhr) {\n // ie9 doesn't have 'response' property\n error.rawResponse = typeof self.xhr.responseType === 'undefined' ? self.xhr.responseText : self.xhr.response; // issue #876: return the http status code if the response parsing fails\n\n error.status = self.xhr.status ? self.xhr.status : null;\n error.statusCode = error.status; // backwards-compat only\n } else {\n error.rawResponse = null;\n error.status = null;\n }\n\n return self.callback(error);\n }\n\n self.emit('response', res);\n var new_error;\n\n try {\n if (!self._isResponseOK(res)) {\n new_error = new Error(res.statusText || res.text || 'Unsuccessful HTTP response');\n }\n } catch (err) {\n new_error = err; // ok() callback can throw\n } // #1000 don't catch errors from the callback to avoid double calling it\n\n\n if (new_error) {\n new_error.original = error;\n new_error.response = res;\n new_error.status = res.status;\n self.callback(new_error, res);\n } else {\n self.callback(null, res);\n }\n });\n}\n/**\n * Mixin `Emitter` and `RequestBase`.\n */\n// eslint-disable-next-line new-cap\n\n\nEmitter(Request.prototype);\nmixin(Request.prototype, RequestBase.prototype);\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function (type) {\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.accept = function (type) {\n this.set('Accept', request.types[type] || type);\n return this;\n};\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} [pass] optional in case of using 'bearer' as type\n * @param {Object} options with 'type' property 'auto', 'basic' or 'bearer' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.auth = function (user, pass, options) {\n if (arguments.length === 1) pass = '';\n\n if (_typeof(pass) === 'object' && pass !== null) {\n // pass is optional and can be replaced with options\n options = pass;\n pass = '';\n }\n\n if (!options) {\n options = {\n type: typeof btoa === 'function' ? 'basic' : 'auto'\n };\n }\n\n var encoder = options.encoder ? options.encoder : function (string) {\n if (typeof btoa === 'function') {\n return btoa(string);\n }\n\n throw new Error('Cannot use basic auth, btoa is not a function');\n };\n return this._auth(user, pass, options, encoder);\n};\n/**\n * Add query-string `val`.\n *\n * Examples:\n *\n * request.get('/shoes')\n * .query('size=10')\n * .query({ color: 'blue' })\n *\n * @param {Object|String} val\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.query = function (value) {\n if (typeof value !== 'string') value = serialize(value);\n if (value) this._query.push(value);\n return this;\n};\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `options` (or filename).\n *\n * ``` js\n * request.post('/upload')\n * .attach('content', new Blob(['hey!'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String|Object} options\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.attach = function (field, file, options) {\n if (file) {\n if (this._data) {\n throw new Error(\"superagent can't mix .send() and .attach()\");\n }\n\n this._getFormData().append(field, file, options || file.name);\n }\n\n return this;\n};\n\nRequest.prototype._getFormData = function () {\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n\n return this._formData;\n};\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\n\nRequest.prototype.callback = function (error, res) {\n if (this._shouldRetry(error, res)) {\n return this._retry();\n }\n\n var fn = this._callback;\n this.clearTimeout();\n\n if (error) {\n if (this._maxRetries) error.retries = this._retries - 1;\n this.emit('error', error);\n }\n\n fn(error, res);\n};\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\n\nRequest.prototype.crossDomainError = function () {\n var error = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n error.crossDomain = true;\n error.status = this.status;\n error.method = this.method;\n error.url = this.url;\n this.callback(error);\n}; // This only warns, because the request is still likely to work\n\n\nRequest.prototype.agent = function () {\n console.warn('This is not supported in browser version of superagent');\n return this;\n};\n\nRequest.prototype.ca = Request.prototype.agent;\nRequest.prototype.buffer = Request.prototype.ca; // This throws, because it can't send/receive data as expected\n\nRequest.prototype.write = function () {\n throw new Error('Streaming is not supported in browser version of superagent');\n};\n\nRequest.prototype.pipe = Request.prototype.write;\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * @param {Object} obj host object\n * @return {Boolean} is a host object\n * @api private\n */\n\nRequest.prototype._isHost = function (object) {\n // Native objects stringify to [object File], [object Blob], [object FormData], etc.\n return object && _typeof(object) === 'object' && !Array.isArray(object) && Object.prototype.toString.call(object) !== '[object Object]';\n};\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\n\nRequest.prototype.end = function (fn) {\n if (this._endCalled) {\n console.warn('Warning: .end() was called twice. This is not supported in superagent');\n }\n\n this._endCalled = true; // store callback\n\n this._callback = fn || noop; // querystring\n\n this._finalizeQueryString();\n\n this._end();\n};\n\nRequest.prototype._setUploadTimeout = function () {\n var self = this; // upload timeout it's wokrs only if deadline timeout is off\n\n if (this._uploadTimeout && !this._uploadTimeoutTimer) {\n this._uploadTimeoutTimer = setTimeout(function () {\n self._timeoutError('Upload timeout of ', self._uploadTimeout, 'ETIMEDOUT');\n }, this._uploadTimeout);\n }\n}; // eslint-disable-next-line complexity\n\n\nRequest.prototype._end = function () {\n if (this._aborted) return this.callback(new Error('The request has been aborted even before .end() was called'));\n var self = this;\n this.xhr = request.getXHR();\n var xhr = this.xhr;\n var data = this._formData || this._data;\n\n this._setTimeouts(); // state change\n\n\n xhr.addEventListener('readystatechange', function () {\n var readyState = xhr.readyState;\n\n if (readyState >= 2 && self._responseTimeoutTimer) {\n clearTimeout(self._responseTimeoutTimer);\n }\n\n if (readyState !== 4) {\n return;\n } // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n\n\n var status;\n\n try {\n status = xhr.status;\n } catch (_unused5) {\n status = 0;\n }\n\n if (!status) {\n if (self.timedout || self._aborted) return;\n return self.crossDomainError();\n }\n\n self.emit('end');\n }); // progress\n\n var handleProgress = function handleProgress(direction, e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n\n if (e.percent === 100) {\n clearTimeout(self._uploadTimeoutTimer);\n }\n }\n\n e.direction = direction;\n self.emit('progress', e);\n };\n\n if (this.hasListeners('progress')) {\n try {\n xhr.addEventListener('progress', handleProgress.bind(null, 'download'));\n\n if (xhr.upload) {\n xhr.upload.addEventListener('progress', handleProgress.bind(null, 'upload'));\n }\n } catch (_unused6) {// Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n }\n\n if (xhr.upload) {\n this._setUploadTimeout();\n } // initiate request\n\n\n try {\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n } catch (err) {\n // see #1149\n return this.callback(err);\n } // CORS\n\n\n if (this._withCredentials) xhr.withCredentials = true; // body\n\n if (!this._formData && this.method !== 'GET' && this.method !== 'HEAD' && typeof data !== 'string' && !this._isHost(data)) {\n // serialize stuff\n var contentType = this._header['content-type'];\n\n var _serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : ''];\n\n if (!_serialize && isJSON(contentType)) {\n _serialize = request.serialize['application/json'];\n }\n\n if (_serialize) data = _serialize(data);\n } // set header fields\n\n\n for (var field in this.header) {\n if (this.header[field] === null) continue;\n if (hasOwn(this.header, field)) xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n } // send stuff\n\n\n this.emit('request', this); // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n\n xhr.send(typeof data === 'undefined' ? null : data);\n};\n\nrequest.agent = function () {\n return new Agent();\n};\n\nvar _loop = function _loop() {\n var method = _arr[_i];\n\n Agent.prototype[method.toLowerCase()] = function (url, fn) {\n var request_ = new request.Request(method, url);\n\n this._setDefaults(request_);\n\n if (fn) {\n request_.end(fn);\n }\n\n return request_;\n };\n};\n\nfor (var _i = 0, _arr = ['GET', 'POST', 'OPTIONS', 'PATCH', 'PUT', 'DELETE']; _i < _arr.length; _i++) {\n _loop();\n}\n\nAgent.prototype.del = Agent.prototype.delete;\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = function (url, data, fn) {\n var request_ = request('GET', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.query(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.head = function (url, data, fn) {\n var request_ = request('HEAD', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.query(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.options = function (url, data, fn) {\n var request_ = request('OPTIONS', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * DELETE `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nfunction del(url, data, fn) {\n var request_ = request('DELETE', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n}\n\nrequest.del = del;\nrequest.delete = del;\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function (url, data, fn) {\n var request_ = request('PATCH', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.post = function (url, data, fn) {\n var request_ = request('POST', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\n\nrequest.put = function (url, data, fn) {\n var request_ = request('PUT', url);\n\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) request_.send(data);\n if (fn) request_.end(fn);\n return request_;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb290Iiwid2luZG93Iiwic2VsZiIsImNvbnNvbGUiLCJ3YXJuIiwiRW1pdHRlciIsInJlcXVpcmUiLCJzYWZlU3RyaW5naWZ5IiwicXMiLCJSZXF1ZXN0QmFzZSIsImlzT2JqZWN0IiwibWl4aW4iLCJoYXNPd24iLCJSZXNwb25zZUJhc2UiLCJBZ2VudCIsIm5vb3AiLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0aG9kIiwidXJsIiwiUmVxdWVzdCIsImVuZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInJlcXVlc3QiLCJnZXRYSFIiLCJYTUxIdHRwUmVxdWVzdCIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJBY3RpdmVYT2JqZWN0IiwiRXJyb3IiLCJ0cmltIiwicyIsInJlcGxhY2UiLCJzZXJpYWxpemUiLCJvYmplY3QiLCJwYWlycyIsImtleSIsInB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyIiwiam9pbiIsInZhbHVlIiwidW5kZWZpbmVkIiwicHVzaCIsImVuY29kZVVSSSIsIkFycmF5IiwiaXNBcnJheSIsInYiLCJzdWJrZXkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZXJpYWxpemVPYmplY3QiLCJwYXJzZVN0cmluZyIsInN0cmluZ18iLCJzcGxpdCIsInBhaXIiLCJwb3MiLCJpIiwibGVuZ3RoXyIsImluZGV4T2YiLCJkZWNvZGVVUklDb21wb25lbnQiLCJzbGljZSIsInR5cGVzIiwiaHRtbCIsImpzb24iLCJ4bWwiLCJ1cmxlbmNvZGVkIiwiZm9ybSIsInN0cmluZ2lmeSIsInBhcnNlIiwiSlNPTiIsInBhcnNlSGVhZGVyIiwibGluZXMiLCJmaWVsZHMiLCJpbmRleCIsImxpbmUiLCJmaWVsZCIsInRvTG93ZXJDYXNlIiwiaXNKU09OIiwibWltZSIsInRlc3QiLCJSZXNwb25zZSIsInJlcXVlc3RfIiwicmVxIiwieGhyIiwidGV4dCIsInJlc3BvbnNlVHlwZSIsInJlc3BvbnNlVGV4dCIsInN0YXR1c1RleHQiLCJzdGF0dXMiLCJfc2V0U3RhdHVzUHJvcGVydGllcyIsImhlYWRlcnMiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJoZWFkZXIiLCJnZXRSZXNwb25zZUhlYWRlciIsIl9zZXRIZWFkZXJQcm9wZXJ0aWVzIiwiX3Jlc3BvbnNlVHlwZSIsImJvZHkiLCJyZXNwb25zZSIsIl9wYXJzZUJvZHkiLCJwcm90b3R5cGUiLCJ0eXBlIiwiX3BhcnNlciIsIk9iamVjdCIsInRvRXJyb3IiLCJtZXNzYWdlIiwiZXJyb3IiLCJfcXVlcnkiLCJfaGVhZGVyIiwib24iLCJyZXMiLCJlcnIiLCJvcmlnaW5hbCIsInJhd1Jlc3BvbnNlIiwic3RhdHVzQ29kZSIsImNhbGxiYWNrIiwiZW1pdCIsIm5ld19lcnJvciIsIl9pc1Jlc3BvbnNlT0siLCJzZXQiLCJhY2NlcHQiLCJhdXRoIiwidXNlciIsInBhc3MiLCJvcHRpb25zIiwiYnRvYSIsImVuY29kZXIiLCJzdHJpbmciLCJfYXV0aCIsInF1ZXJ5IiwiYXR0YWNoIiwiZmlsZSIsIl9kYXRhIiwiX2dldEZvcm1EYXRhIiwiYXBwZW5kIiwibmFtZSIsIl9mb3JtRGF0YSIsIkZvcm1EYXRhIiwiX3Nob3VsZFJldHJ5IiwiX3JldHJ5IiwiZm4iLCJfY2FsbGJhY2siLCJjbGVhclRpbWVvdXQiLCJfbWF4UmV0cmllcyIsInJldHJpZXMiLCJfcmV0cmllcyIsImNyb3NzRG9tYWluRXJyb3IiLCJjcm9zc0RvbWFpbiIsImFnZW50IiwiY2EiLCJidWZmZXIiLCJ3cml0ZSIsInBpcGUiLCJfaXNIb3N0IiwidG9TdHJpbmciLCJjYWxsIiwiX2VuZENhbGxlZCIsIl9maW5hbGl6ZVF1ZXJ5U3RyaW5nIiwiX2VuZCIsIl9zZXRVcGxvYWRUaW1lb3V0IiwiX3VwbG9hZFRpbWVvdXQiLCJfdXBsb2FkVGltZW91dFRpbWVyIiwic2V0VGltZW91dCIsIl90aW1lb3V0RXJyb3IiLCJfYWJvcnRlZCIsImRhdGEiLCJfc2V0VGltZW91dHMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVhZHlTdGF0ZSIsIl9yZXNwb25zZVRpbWVvdXRUaW1lciIsInRpbWVkb3V0IiwiaGFuZGxlUHJvZ3Jlc3MiLCJkaXJlY3Rpb24iLCJlIiwidG90YWwiLCJwZXJjZW50IiwibG9hZGVkIiwiaGFzTGlzdGVuZXJzIiwiYmluZCIsInVwbG9hZCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJvcGVuIiwiX3dpdGhDcmVkZW50aWFscyIsIndpdGhDcmVkZW50aWFscyIsImNvbnRlbnRUeXBlIiwiX3NlcmlhbGl6ZXIiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsIl9zZXREZWZhdWx0cyIsImRlbCIsImRlbGV0ZSIsImdldCIsImhlYWQiLCJwYXRjaCIsInBvc3QiLCJwdXQiXSwic291cmNlcyI6WyIuLi9zcmMvY2xpZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUm9vdCByZWZlcmVuY2UgZm9yIGlmcmFtZXMuXG4gKi9cblxubGV0IHJvb3Q7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gQnJvd3NlciB3aW5kb3dcbiAgcm9vdCA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIHNlbGYgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIE90aGVyIGVudmlyb25tZW50c1xuICBjb25zb2xlLndhcm4oXG4gICAgJ1VzaW5nIGJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQnXG4gICk7XG4gIHJvb3QgPSB0aGlzO1xufSBlbHNlIHtcbiAgLy8gV2ViIFdvcmtlclxuICByb290ID0gc2VsZjtcbn1cblxuY29uc3QgRW1pdHRlciA9IHJlcXVpcmUoJ2NvbXBvbmVudC1lbWl0dGVyJyk7XG5jb25zdCBzYWZlU3RyaW5naWZ5ID0gcmVxdWlyZSgnZmFzdC1zYWZlLXN0cmluZ2lmeScpO1xuY29uc3QgcXMgPSByZXF1aXJlKCdxcycpO1xuY29uc3QgUmVxdWVzdEJhc2UgPSByZXF1aXJlKCcuL3JlcXVlc3QtYmFzZScpO1xuY29uc3QgeyBpc09iamVjdCwgbWl4aW4sIGhhc093biB9ID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3QgUmVzcG9uc2VCYXNlID0gcmVxdWlyZSgnLi9yZXNwb25zZS1iYXNlJyk7XG5jb25zdCBBZ2VudCA9IHJlcXVpcmUoJy4vYWdlbnQtYmFzZScpO1xuXG4vKipcbiAqIE5vb3AuXG4gKi9cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbi8qKlxuICogRXhwb3NlIGByZXF1ZXN0YC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtZXRob2QsIHVybCkge1xuICAvLyBjYWxsYmFja1xuICBpZiAodHlwZW9mIHVybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBuZXcgZXhwb3J0cy5SZXF1ZXN0KCdHRVQnLCBtZXRob2QpLmVuZCh1cmwpO1xuICB9XG5cbiAgLy8gdXJsIGZpcnN0XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIG5ldyBleHBvcnRzLlJlcXVlc3QoJ0dFVCcsIG1ldGhvZCk7XG4gIH1cblxuICByZXR1cm4gbmV3IGV4cG9ydHMuUmVxdWVzdChtZXRob2QsIHVybCk7XG59O1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHM7XG5cbmNvbnN0IHJlcXVlc3QgPSBleHBvcnRzO1xuXG5leHBvcnRzLlJlcXVlc3QgPSBSZXF1ZXN0O1xuXG4vKipcbiAqIERldGVybWluZSBYSFIuXG4gKi9cblxucmVxdWVzdC5nZXRYSFIgPSAoKSA9PiB7XG4gIGlmIChcbiAgICByb290LlhNTEh0dHBSZXF1ZXN0ICYmXG4gICAgKCFyb290LmxvY2F0aW9uIHx8XG4gICAgICByb290LmxvY2F0aW9uLnByb3RvY29sICE9PSAnZmlsZTonIHx8XG4gICAgICAhcm9vdC5BY3RpdmVYT2JqZWN0KVxuICApIHtcbiAgICByZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTWljcm9zb2Z0LlhNTEhUVFAnKTtcbiAgfSBjYXRjaCB7XG4gICAgLyoqL1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQLjYuMCcpO1xuICB9IGNhdGNoIHtcbiAgICAvKiovXG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTXN4bWwyLlhNTEhUVFAuMy4wJyk7XG4gIH0gY2F0Y2gge1xuICAgIC8qKi9cbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNc3htbDIuWE1MSFRUUCcpO1xuICB9IGNhdGNoIHtcbiAgICAvKiovXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0Jyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgY291bGQgbm90IGZpbmQgWEhSJyk7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYWRkZWQgdG8gc3VwcG9ydCBJRS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuY29uc3QgdHJpbSA9ICcnLnRyaW0gPyAocykgPT4gcy50cmltKCkgOiAocykgPT4gcy5yZXBsYWNlKC8oXlxccyp8XFxzKiQpL2csICcnKTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGdpdmVuIGBvYmpgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZShvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSByZXR1cm4gb2JqZWN0O1xuICBjb25zdCBwYWlycyA9IFtdO1xuICBmb3IgKGNvbnN0IGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoaGFzT3duKG9iamVjdCwga2V5KSkgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGtleSwgb2JqZWN0W2tleV0pO1xuICB9XG5cbiAgcmV0dXJuIHBhaXJzLmpvaW4oJyYnKTtcbn1cblxuLyoqXG4gKiBIZWxwcyAnc2VyaWFsaXplJyB3aXRoIHNlcmlhbGl6aW5nIGFycmF5cy5cbiAqIE11dGF0ZXMgdGhlIHBhaXJzIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzXG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5XG4gKiBAcGFyYW0ge01peGVkfSB2YWxcbiAqL1xuXG5mdW5jdGlvbiBwdXNoRW5jb2RlZEtleVZhbHVlUGFpcihwYWlycywga2V5LCB2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICBwYWlycy5wdXNoKGVuY29kZVVSSShrZXkpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWUpIHtcbiAgICAgIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIHYpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICBmb3IgKGNvbnN0IHN1YmtleSBpbiB2YWx1ZSkge1xuICAgICAgaWYgKGhhc093bih2YWx1ZSwgc3Via2V5KSlcbiAgICAgICAgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGAke2tleX1bJHtzdWJrZXl9XWAsIHZhbHVlW3N1YmtleV0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwYWlycy5wdXNoKGVuY29kZVVSSShrZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFeHBvc2Ugc2VyaWFsaXphdGlvbiBtZXRob2QuXG4gKi9cblxucmVxdWVzdC5zZXJpYWxpemVPYmplY3QgPSBzZXJpYWxpemU7XG5cbi8qKlxuICogUGFyc2UgdGhlIGdpdmVuIHgtd3d3LWZvcm0tdXJsZW5jb2RlZCBgc3RyYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZVN0cmluZyhzdHJpbmdfKSB7XG4gIGNvbnN0IG9iamVjdCA9IHt9O1xuICBjb25zdCBwYWlycyA9IHN0cmluZ18uc3BsaXQoJyYnKTtcbiAgbGV0IHBhaXI7XG4gIGxldCBwb3M7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aF8gPSBwYWlycy5sZW5ndGg7IGkgPCBsZW5ndGhfOyArK2kpIHtcbiAgICBwYWlyID0gcGFpcnNbaV07XG4gICAgcG9zID0gcGFpci5pbmRleE9mKCc9Jyk7XG4gICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgIG9iamVjdFtkZWNvZGVVUklDb21wb25lbnQocGFpcildID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9iamVjdFtkZWNvZGVVUklDb21wb25lbnQocGFpci5zbGljZSgwLCBwb3MpKV0gPSBkZWNvZGVVUklDb21wb25lbnQoXG4gICAgICAgIHBhaXIuc2xpY2UocG9zICsgMSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuLyoqXG4gKiBFeHBvc2UgcGFyc2VyLlxuICovXG5cbnJlcXVlc3QucGFyc2VTdHJpbmcgPSBwYXJzZVN0cmluZztcblxuLyoqXG4gKiBEZWZhdWx0IE1JTUUgdHlwZSBtYXAuXG4gKlxuICogICAgIHN1cGVyYWdlbnQudHlwZXMueG1sID0gJ2FwcGxpY2F0aW9uL3htbCc7XG4gKlxuICovXG5cbnJlcXVlc3QudHlwZXMgPSB7XG4gIGh0bWw6ICd0ZXh0L2h0bWwnLFxuICBqc29uOiAnYXBwbGljYXRpb24vanNvbicsXG4gIHhtbDogJ3RleHQveG1sJyxcbiAgdXJsZW5jb2RlZDogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gIGZvcm06ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAnZm9ybS1kYXRhJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBzZXJpYWxpemF0aW9uIG1hcC5cbiAqXG4gKiAgICAgc3VwZXJhZ2VudC5zZXJpYWxpemVbJ2FwcGxpY2F0aW9uL3htbCddID0gZnVuY3Rpb24ob2JqKXtcbiAqICAgICAgIHJldHVybiAnZ2VuZXJhdGVkIHhtbCBoZXJlJztcbiAqICAgICB9O1xuICpcbiAqL1xuXG5yZXF1ZXN0LnNlcmlhbGl6ZSA9IHtcbiAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCc6IHFzLnN0cmluZ2lmeSxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nOiBzYWZlU3RyaW5naWZ5XG59O1xuXG4vKipcbiAqIERlZmF1bHQgcGFyc2Vycy5cbiAqXG4gKiAgICAgc3VwZXJhZ2VudC5wYXJzZVsnYXBwbGljYXRpb24veG1sJ10gPSBmdW5jdGlvbihzdHIpe1xuICogICAgICAgcmV0dXJuIHsgb2JqZWN0IHBhcnNlZCBmcm9tIHN0ciB9O1xuICogICAgIH07XG4gKlxuICovXG5cbnJlcXVlc3QucGFyc2UgPSB7XG4gICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOiBwYXJzZVN0cmluZyxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nOiBKU09OLnBhcnNlXG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBoZWFkZXIgYHN0cmAgaW50b1xuICogYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG1hcHBlZCBmaWVsZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXIoc3RyaW5nXykge1xuICBjb25zdCBsaW5lcyA9IHN0cmluZ18uc3BsaXQoL1xccj9cXG4vKTtcbiAgY29uc3QgZmllbGRzID0ge307XG4gIGxldCBpbmRleDtcbiAgbGV0IGxpbmU7XG4gIGxldCBmaWVsZDtcbiAgbGV0IHZhbHVlO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW5ndGhfID0gbGluZXMubGVuZ3RoOyBpIDwgbGVuZ3RoXzsgKytpKSB7XG4gICAgbGluZSA9IGxpbmVzW2ldO1xuICAgIGluZGV4ID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgLy8gY291bGQgYmUgZW1wdHkgbGluZSwganVzdCBza2lwIGl0XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmaWVsZCA9IGxpbmUuc2xpY2UoMCwgaW5kZXgpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsdWUgPSB0cmltKGxpbmUuc2xpY2UoaW5kZXggKyAxKSk7XG4gICAgZmllbGRzW2ZpZWxkXSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkcztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBgbWltZWAgaXMganNvbiBvciBoYXMgK2pzb24gc3RydWN0dXJlZCBzeW50YXggc3VmZml4LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBtaW1lXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gaXNKU09OKG1pbWUpIHtcbiAgLy8gc2hvdWxkIG1hdGNoIC9qc29uIG9yICtqc29uXG4gIC8vIGJ1dCBub3QgL2pzb24tc2VxXG4gIHJldHVybiAvWy8rXWpzb24oJHxbXi1cXHddKS9pLnRlc3QobWltZSk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVzcG9uc2VgIHdpdGggdGhlIGdpdmVuIGB4aHJgLlxuICpcbiAqICAtIHNldCBmbGFncyAoLm9rLCAuZXJyb3IsIGV0YylcbiAqICAtIHBhcnNlIGhlYWRlclxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICBBbGlhc2luZyBgc3VwZXJhZ2VudGAgYXMgYHJlcXVlc3RgIGlzIG5pY2U6XG4gKlxuICogICAgICByZXF1ZXN0ID0gc3VwZXJhZ2VudDtcbiAqXG4gKiAgV2UgY2FuIHVzZSB0aGUgcHJvbWlzZS1saWtlIEFQSSwgb3IgcGFzcyBjYWxsYmFja3M6XG4gKlxuICogICAgICByZXF1ZXN0LmdldCgnLycpLmVuZChmdW5jdGlvbihyZXMpe30pO1xuICogICAgICByZXF1ZXN0LmdldCgnLycsIGZ1bmN0aW9uKHJlcyl7fSk7XG4gKlxuICogIFNlbmRpbmcgZGF0YSBjYW4gYmUgY2hhaW5lZDpcbiAqXG4gKiAgICAgIHJlcXVlc3RcbiAqICAgICAgICAucG9zdCgnL3VzZXInKVxuICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiAgT3IgcGFzc2VkIHRvIGAuc2VuZCgpYDpcbiAqXG4gKiAgICAgIHJlcXVlc3RcbiAqICAgICAgICAucG9zdCgnL3VzZXInKVxuICogICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqICBPciBwYXNzZWQgdG8gYC5wb3N0KClgOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgIC5lbmQoZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiBPciBmdXJ0aGVyIHJlZHVjZWQgdG8gYSBzaW5nbGUgY2FsbCBmb3Igc2ltcGxlIGNhc2VzOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicsIHsgbmFtZTogJ3RqJyB9LCBmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqIEBwYXJhbSB7WE1MSFRUUFJlcXVlc3R9IHhoclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIFJlc3BvbnNlKHJlcXVlc3RfKSB7XG4gIHRoaXMucmVxID0gcmVxdWVzdF87XG4gIHRoaXMueGhyID0gdGhpcy5yZXEueGhyO1xuICAvLyByZXNwb25zZVRleHQgaXMgYWNjZXNzaWJsZSBvbmx5IGlmIHJlc3BvbnNlVHlwZSBpcyAnJyBvciAndGV4dCcgYW5kIG9uIG9sZGVyIGJyb3dzZXJzXG4gIHRoaXMudGV4dCA9XG4gICAgKHRoaXMucmVxLm1ldGhvZCAhPT0gJ0hFQUQnICYmXG4gICAgICAodGhpcy54aHIucmVzcG9uc2VUeXBlID09PSAnJyB8fCB0aGlzLnhoci5yZXNwb25zZVR5cGUgPT09ICd0ZXh0JykpIHx8XG4gICAgdHlwZW9mIHRoaXMueGhyLnJlc3BvbnNlVHlwZSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgID8gdGhpcy54aHIucmVzcG9uc2VUZXh0XG4gICAgICA6IG51bGw7XG4gIHRoaXMuc3RhdHVzVGV4dCA9IHRoaXMucmVxLnhoci5zdGF0dXNUZXh0O1xuICBsZXQgeyBzdGF0dXMgfSA9IHRoaXMueGhyO1xuICAvLyBoYW5kbGUgSUU5IGJ1ZzogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDA0Njk3Mi9tc2llLXJldHVybnMtc3RhdHVzLWNvZGUtb2YtMTIyMy1mb3ItYWpheC1yZXF1ZXN0XG4gIGlmIChzdGF0dXMgPT09IDEyMjMpIHtcbiAgICBzdGF0dXMgPSAyMDQ7XG4gIH1cblxuICB0aGlzLl9zZXRTdGF0dXNQcm9wZXJ0aWVzKHN0YXR1cyk7XG4gIHRoaXMuaGVhZGVycyA9IHBhcnNlSGVhZGVyKHRoaXMueGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTtcbiAgdGhpcy5oZWFkZXIgPSB0aGlzLmhlYWRlcnM7XG4gIC8vIGdldEFsbFJlc3BvbnNlSGVhZGVycyBzb21ldGltZXMgZmFsc2VseSByZXR1cm5zIFwiXCIgZm9yIENPUlMgcmVxdWVzdHMsIGJ1dFxuICAvLyBnZXRSZXNwb25zZUhlYWRlciBzdGlsbCB3b3Jrcy4gc28gd2UgZ2V0IGNvbnRlbnQtdHlwZSBldmVuIGlmIGdldHRpbmdcbiAgLy8gb3RoZXIgaGVhZGVycyBmYWlscy5cbiAgdGhpcy5oZWFkZXJbJ2NvbnRlbnQtdHlwZSddID0gdGhpcy54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ2NvbnRlbnQtdHlwZScpO1xuICB0aGlzLl9zZXRIZWFkZXJQcm9wZXJ0aWVzKHRoaXMuaGVhZGVyKTtcblxuICBpZiAodGhpcy50ZXh0ID09PSBudWxsICYmIHJlcXVlc3RfLl9yZXNwb25zZVR5cGUpIHtcbiAgICB0aGlzLmJvZHkgPSB0aGlzLnhoci5yZXNwb25zZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmJvZHkgPVxuICAgICAgdGhpcy5yZXEubWV0aG9kID09PSAnSEVBRCdcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogdGhpcy5fcGFyc2VCb2R5KHRoaXMudGV4dCA/IHRoaXMudGV4dCA6IHRoaXMueGhyLnJlc3BvbnNlKTtcbiAgfVxufVxuXG5taXhpbihSZXNwb25zZS5wcm90b3R5cGUsIFJlc3BvbnNlQmFzZS5wcm90b3R5cGUpO1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBib2R5IGBzdHJgLlxuICpcbiAqIFVzZWQgZm9yIGF1dG8tcGFyc2luZyBvZiBib2RpZXMuIFBhcnNlcnNcbiAqIGFyZSBkZWZpbmVkIG9uIHRoZSBgc3VwZXJhZ2VudC5wYXJzZWAgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge01peGVkfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVzcG9uc2UucHJvdG90eXBlLl9wYXJzZUJvZHkgPSBmdW5jdGlvbiAoc3RyaW5nXykge1xuICBsZXQgcGFyc2UgPSByZXF1ZXN0LnBhcnNlW3RoaXMudHlwZV07XG4gIGlmICh0aGlzLnJlcS5fcGFyc2VyKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxLl9wYXJzZXIodGhpcywgc3RyaW5nXyk7XG4gIH1cblxuICBpZiAoIXBhcnNlICYmIGlzSlNPTih0aGlzLnR5cGUpKSB7XG4gICAgcGFyc2UgPSByZXF1ZXN0LnBhcnNlWydhcHBsaWNhdGlvbi9qc29uJ107XG4gIH1cblxuICByZXR1cm4gcGFyc2UgJiYgc3RyaW5nXyAmJiAoc3RyaW5nXy5sZW5ndGggPiAwIHx8IHN0cmluZ18gaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgPyBwYXJzZShzdHJpbmdfKVxuICAgIDogbnVsbDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGFuIGBFcnJvcmAgcmVwcmVzZW50YXRpdmUgb2YgdGhpcyByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJuIHtFcnJvcn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVzcG9uc2UucHJvdG90eXBlLnRvRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHsgcmVxIH0gPSB0aGlzO1xuICBjb25zdCB7IG1ldGhvZCB9ID0gcmVxO1xuICBjb25zdCB7IHVybCB9ID0gcmVxO1xuXG4gIGNvbnN0IG1lc3NhZ2UgPSBgY2Fubm90ICR7bWV0aG9kfSAke3VybH0gKCR7dGhpcy5zdGF0dXN9KWA7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICBlcnJvci5zdGF0dXMgPSB0aGlzLnN0YXR1cztcbiAgZXJyb3IubWV0aG9kID0gbWV0aG9kO1xuICBlcnJvci51cmwgPSB1cmw7XG5cbiAgcmV0dXJuIGVycm9yO1xufTtcblxuLyoqXG4gKiBFeHBvc2UgYFJlc3BvbnNlYC5cbiAqL1xuXG5yZXF1ZXN0LlJlc3BvbnNlID0gUmVzcG9uc2U7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVxdWVzdGAgd2l0aCB0aGUgZ2l2ZW4gYG1ldGhvZGAgYW5kIGB1cmxgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBtZXRob2RcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUmVxdWVzdChtZXRob2QsIHVybCkge1xuICBjb25zdCBzZWxmID0gdGhpcztcbiAgdGhpcy5fcXVlcnkgPSB0aGlzLl9xdWVyeSB8fCBbXTtcbiAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gIHRoaXMudXJsID0gdXJsO1xuICB0aGlzLmhlYWRlciA9IHt9OyAvLyBwcmVzZXJ2ZXMgaGVhZGVyIG5hbWUgY2FzZVxuICB0aGlzLl9oZWFkZXIgPSB7fTsgLy8gY29lcmNlcyBoZWFkZXIgbmFtZXMgdG8gbG93ZXJjYXNlXG4gIHRoaXMub24oJ2VuZCcsICgpID0+IHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGxldCByZXMgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlcyA9IG5ldyBSZXNwb25zZShzZWxmKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVycm9yID0gbmV3IEVycm9yKCdQYXJzZXIgaXMgdW5hYmxlIHRvIHBhcnNlIHRoZSByZXNwb25zZScpO1xuICAgICAgZXJyb3IucGFyc2UgPSB0cnVlO1xuICAgICAgZXJyb3Iub3JpZ2luYWwgPSBlcnI7XG4gICAgICAvLyBpc3N1ZSAjNjc1OiByZXR1cm4gdGhlIHJhdyByZXNwb25zZSBpZiB0aGUgcmVzcG9uc2UgcGFyc2luZyBmYWlsc1xuICAgICAgaWYgKHNlbGYueGhyKSB7XG4gICAgICAgIC8vIGllOSBkb2Vzbid0IGhhdmUgJ3Jlc3BvbnNlJyBwcm9wZXJ0eVxuICAgICAgICBlcnJvci5yYXdSZXNwb25zZSA9XG4gICAgICAgICAgdHlwZW9mIHNlbGYueGhyLnJlc3BvbnNlVHlwZSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gc2VsZi54aHIucmVzcG9uc2VUZXh0XG4gICAgICAgICAgICA6IHNlbGYueGhyLnJlc3BvbnNlO1xuICAgICAgICAvLyBpc3N1ZSAjODc2OiByZXR1cm4gdGhlIGh0dHAgc3RhdHVzIGNvZGUgaWYgdGhlIHJlc3BvbnNlIHBhcnNpbmcgZmFpbHNcbiAgICAgICAgZXJyb3Iuc3RhdHVzID0gc2VsZi54aHIuc3RhdHVzID8gc2VsZi54aHIuc3RhdHVzIDogbnVsbDtcbiAgICAgICAgZXJyb3Iuc3RhdHVzQ29kZSA9IGVycm9yLnN0YXR1czsgLy8gYmFja3dhcmRzLWNvbXBhdCBvbmx5XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvci5yYXdSZXNwb25zZSA9IG51bGw7XG4gICAgICAgIGVycm9yLnN0YXR1cyA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxmLmNhbGxiYWNrKGVycm9yKTtcbiAgICB9XG5cbiAgICBzZWxmLmVtaXQoJ3Jlc3BvbnNlJywgcmVzKTtcblxuICAgIGxldCBuZXdfZXJyb3I7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2VsZi5faXNSZXNwb25zZU9LKHJlcykpIHtcbiAgICAgICAgbmV3X2Vycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAgIHJlcy5zdGF0dXNUZXh0IHx8IHJlcy50ZXh0IHx8ICdVbnN1Y2Nlc3NmdWwgSFRUUCByZXNwb25zZSdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIG5ld19lcnJvciA9IGVycjsgLy8gb2soKSBjYWxsYmFjayBjYW4gdGhyb3dcbiAgICB9XG5cbiAgICAvLyAjMTAwMCBkb24ndCBjYXRjaCBlcnJvcnMgZnJvbSB0aGUgY2FsbGJhY2sgdG8gYXZvaWQgZG91YmxlIGNhbGxpbmcgaXRcbiAgICBpZiAobmV3X2Vycm9yKSB7XG4gICAgICBuZXdfZXJyb3Iub3JpZ2luYWwgPSBlcnJvcjtcbiAgICAgIG5ld19lcnJvci5yZXNwb25zZSA9IHJlcztcbiAgICAgIG5ld19lcnJvci5zdGF0dXMgPSByZXMuc3RhdHVzO1xuICAgICAgc2VsZi5jYWxsYmFjayhuZXdfZXJyb3IsIHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGYuY2FsbGJhY2sobnVsbCwgcmVzKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIE1peGluIGBFbWl0dGVyYCBhbmQgYFJlcXVlc3RCYXNlYC5cbiAqL1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuRW1pdHRlcihSZXF1ZXN0LnByb3RvdHlwZSk7XG5cbm1peGluKFJlcXVlc3QucHJvdG90eXBlLCBSZXF1ZXN0QmFzZS5wcm90b3R5cGUpO1xuXG4vKipcbiAqIFNldCBDb250ZW50LVR5cGUgdG8gYHR5cGVgLCBtYXBwaW5nIHZhbHVlcyBmcm9tIGByZXF1ZXN0LnR5cGVzYC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHN1cGVyYWdlbnQudHlwZXMueG1sID0gJ2FwcGxpY2F0aW9uL3htbCc7XG4gKlxuICogICAgICByZXF1ZXN0LnBvc3QoJy8nKVxuICogICAgICAgIC50eXBlKCd4bWwnKVxuICogICAgICAgIC5zZW5kKHhtbHN0cmluZylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiAgICAgIHJlcXVlc3QucG9zdCgnLycpXG4gKiAgICAgICAgLnR5cGUoJ2FwcGxpY2F0aW9uL3htbCcpXG4gKiAgICAgICAgLnNlbmQoeG1sc3RyaW5nKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUudHlwZSA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHRoaXMuc2V0KCdDb250ZW50LVR5cGUnLCByZXF1ZXN0LnR5cGVzW3R5cGVdIHx8IHR5cGUpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IEFjY2VwdCB0byBgdHlwZWAsIG1hcHBpbmcgdmFsdWVzIGZyb20gYHJlcXVlc3QudHlwZXNgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgc3VwZXJhZ2VudC50eXBlcy5qc29uID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICpcbiAqICAgICAgcmVxdWVzdC5nZXQoJy9hZ2VudCcpXG4gKiAgICAgICAgLmFjY2VwdCgnanNvbicpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogICAgICByZXF1ZXN0LmdldCgnL2FnZW50JylcbiAqICAgICAgICAuYWNjZXB0KCdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWNjZXB0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgdGhpcy5zZXQoJ0FjY2VwdCcsIHJlcXVlc3QudHlwZXNbdHlwZV0gfHwgdHlwZSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgQXV0aG9yaXphdGlvbiBmaWVsZCB2YWx1ZSB3aXRoIGB1c2VyYCBhbmQgYHBhc3NgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1c2VyXG4gKiBAcGFyYW0ge1N0cmluZ30gW3Bhc3NdIG9wdGlvbmFsIGluIGNhc2Ugb2YgdXNpbmcgJ2JlYXJlcicgYXMgdHlwZVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgd2l0aCAndHlwZScgcHJvcGVydHkgJ2F1dG8nLCAnYmFzaWMnIG9yICdiZWFyZXInIChkZWZhdWx0ICdiYXNpYycpXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYXV0aCA9IGZ1bmN0aW9uICh1c2VyLCBwYXNzLCBvcHRpb25zKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSBwYXNzID0gJyc7XG4gIGlmICh0eXBlb2YgcGFzcyA9PT0gJ29iamVjdCcgJiYgcGFzcyAhPT0gbnVsbCkge1xuICAgIC8vIHBhc3MgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZXBsYWNlZCB3aXRoIG9wdGlvbnNcbiAgICBvcHRpb25zID0gcGFzcztcbiAgICBwYXNzID0gJyc7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge1xuICAgICAgdHlwZTogdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicgPyAnYmFzaWMnIDogJ2F1dG8nXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGVuY29kZXIgPSBvcHRpb25zLmVuY29kZXJcbiAgICA/IG9wdGlvbnMuZW5jb2RlclxuICAgIDogKHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gYnRvYShzdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIGJhc2ljIGF1dGgsIGJ0b2EgaXMgbm90IGEgZnVuY3Rpb24nKTtcbiAgICAgIH07XG5cbiAgcmV0dXJuIHRoaXMuX2F1dGgodXNlciwgcGFzcywgb3B0aW9ucywgZW5jb2Rlcik7XG59O1xuXG4vKipcbiAqIEFkZCBxdWVyeS1zdHJpbmcgYHZhbGAuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICByZXF1ZXN0LmdldCgnL3Nob2VzJylcbiAqICAgICAucXVlcnkoJ3NpemU9MTAnKVxuICogICAgIC5xdWVyeSh7IGNvbG9yOiAnYmx1ZScgfSlcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB2YWx1ZSA9IHNlcmlhbGl6ZSh2YWx1ZSk7XG4gIGlmICh2YWx1ZSkgdGhpcy5fcXVlcnkucHVzaCh2YWx1ZSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBRdWV1ZSB0aGUgZ2l2ZW4gYGZpbGVgIGFzIGFuIGF0dGFjaG1lbnQgdG8gdGhlIHNwZWNpZmllZCBgZmllbGRgLFxuICogd2l0aCBvcHRpb25hbCBgb3B0aW9uc2AgKG9yIGZpbGVuYW1lKS5cbiAqXG4gKiBgYGAganNcbiAqIHJlcXVlc3QucG9zdCgnL3VwbG9hZCcpXG4gKiAgIC5hdHRhY2goJ2NvbnRlbnQnLCBuZXcgQmxvYihbJzxhIGlkPVwiYVwiPjxiIGlkPVwiYlwiPmhleSE8L2I+PC9hPiddLCB7IHR5cGU6IFwidGV4dC9odG1sXCJ9KSlcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZmllbGRcbiAqIEBwYXJhbSB7QmxvYnxGaWxlfSBmaWxlXG4gKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbiAoZmllbGQsIGZpbGUsIG9wdGlvbnMpIHtcbiAgaWYgKGZpbGUpIHtcbiAgICBpZiAodGhpcy5fZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3VwZXJhZ2VudCBjYW4ndCBtaXggLnNlbmQoKSBhbmQgLmF0dGFjaCgpXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKGZpZWxkLCBmaWxlLCBvcHRpb25zIHx8IGZpbGUubmFtZSk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3QucHJvdG90eXBlLl9nZXRGb3JtRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLl9mb3JtRGF0YSkge1xuICAgIHRoaXMuX2Zvcm1EYXRhID0gbmV3IHJvb3QuRm9ybURhdGEoKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9mb3JtRGF0YTtcbn07XG5cbi8qKlxuICogSW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIGBlcnJgIGFuZCBgcmVzYFxuICogYW5kIGhhbmRsZSBhcml0eSBjaGVjay5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEBwYXJhbSB7UmVzcG9uc2V9IHJlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuY2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyb3IsIHJlcykge1xuICBpZiAodGhpcy5fc2hvdWxkUmV0cnkoZXJyb3IsIHJlcykpIHtcbiAgICByZXR1cm4gdGhpcy5fcmV0cnkoKTtcbiAgfVxuXG4gIGNvbnN0IGZuID0gdGhpcy5fY2FsbGJhY2s7XG4gIHRoaXMuY2xlYXJUaW1lb3V0KCk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgaWYgKHRoaXMuX21heFJldHJpZXMpIGVycm9yLnJldHJpZXMgPSB0aGlzLl9yZXRyaWVzIC0gMTtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICB9XG5cbiAgZm4oZXJyb3IsIHJlcyk7XG59O1xuXG4vKipcbiAqIEludm9rZSBjYWxsYmFjayB3aXRoIHgtZG9tYWluIGVycm9yLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmNyb3NzRG9tYWluRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICdSZXF1ZXN0IGhhcyBiZWVuIHRlcm1pbmF0ZWRcXG5Qb3NzaWJsZSBjYXVzZXM6IHRoZSBuZXR3b3JrIGlzIG9mZmxpbmUsIE9yaWdpbiBpcyBub3QgYWxsb3dlZCBieSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4sIHRoZSBwYWdlIGlzIGJlaW5nIHVubG9hZGVkLCBldGMuJ1xuICApO1xuICBlcnJvci5jcm9zc0RvbWFpbiA9IHRydWU7XG5cbiAgZXJyb3Iuc3RhdHVzID0gdGhpcy5zdGF0dXM7XG4gIGVycm9yLm1ldGhvZCA9IHRoaXMubWV0aG9kO1xuICBlcnJvci51cmwgPSB0aGlzLnVybDtcblxuICB0aGlzLmNhbGxiYWNrKGVycm9yKTtcbn07XG5cbi8vIFRoaXMgb25seSB3YXJucywgYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBzdGlsbCBsaWtlbHkgdG8gd29ya1xuUmVxdWVzdC5wcm90b3R5cGUuYWdlbnQgPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnNvbGUud2FybignVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGluIGJyb3dzZXIgdmVyc2lvbiBvZiBzdXBlcmFnZW50Jyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUmVxdWVzdC5wcm90b3R5cGUuY2EgPSBSZXF1ZXN0LnByb3RvdHlwZS5hZ2VudDtcblJlcXVlc3QucHJvdG90eXBlLmJ1ZmZlciA9IFJlcXVlc3QucHJvdG90eXBlLmNhO1xuXG4vLyBUaGlzIHRocm93cywgYmVjYXVzZSBpdCBjYW4ndCBzZW5kL3JlY2VpdmUgZGF0YSBhcyBleHBlY3RlZFxuUmVxdWVzdC5wcm90b3R5cGUud3JpdGUgPSAoKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnU3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYnJvd3NlciB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQnXG4gICk7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5waXBlID0gUmVxdWVzdC5wcm90b3R5cGUud3JpdGU7XG5cbi8qKlxuICogQ2hlY2sgaWYgYG9iamAgaXMgYSBob3N0IG9iamVjdCxcbiAqIHdlIGRvbid0IHdhbnQgdG8gc2VyaWFsaXplIHRoZXNlIDopXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBob3N0IG9iamVjdFxuICogQHJldHVybiB7Qm9vbGVhbn0gaXMgYSBob3N0IG9iamVjdFxuICogQGFwaSBwcml2YXRlXG4gKi9cblJlcXVlc3QucHJvdG90eXBlLl9pc0hvc3QgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gIC8vIE5hdGl2ZSBvYmplY3RzIHN0cmluZ2lmeSB0byBbb2JqZWN0IEZpbGVdLCBbb2JqZWN0IEJsb2JdLCBbb2JqZWN0IEZvcm1EYXRhXSwgZXRjLlxuICByZXR1cm4gKFxuICAgIG9iamVjdCAmJlxuICAgIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG4gICAgIUFycmF5LmlzQXJyYXkob2JqZWN0KSAmJlxuICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpICE9PSAnW29iamVjdCBPYmplY3RdJ1xuICApO1xufTtcblxuLyoqXG4gKiBJbml0aWF0ZSByZXF1ZXN0LCBpbnZva2luZyBjYWxsYmFjayBgZm4ocmVzKWBcbiAqIHdpdGggYW4gaW5zdGFuY2VvZiBgUmVzcG9uc2VgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGZuKSB7XG4gIGlmICh0aGlzLl9lbmRDYWxsZWQpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICAnV2FybmluZzogLmVuZCgpIHdhcyBjYWxsZWQgdHdpY2UuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCBpbiBzdXBlcmFnZW50J1xuICAgICk7XG4gIH1cblxuICB0aGlzLl9lbmRDYWxsZWQgPSB0cnVlO1xuXG4gIC8vIHN0b3JlIGNhbGxiYWNrXG4gIHRoaXMuX2NhbGxiYWNrID0gZm4gfHwgbm9vcDtcblxuICAvLyBxdWVyeXN0cmluZ1xuICB0aGlzLl9maW5hbGl6ZVF1ZXJ5U3RyaW5nKCk7XG5cbiAgdGhpcy5fZW5kKCk7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5fc2V0VXBsb2FkVGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgLy8gdXBsb2FkIHRpbWVvdXQgaXQncyB3b2tycyBvbmx5IGlmIGRlYWRsaW5lIHRpbWVvdXQgaXMgb2ZmXG4gIGlmICh0aGlzLl91cGxvYWRUaW1lb3V0ICYmICF0aGlzLl91cGxvYWRUaW1lb3V0VGltZXIpIHtcbiAgICB0aGlzLl91cGxvYWRUaW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNlbGYuX3RpbWVvdXRFcnJvcihcbiAgICAgICAgJ1VwbG9hZCB0aW1lb3V0IG9mICcsXG4gICAgICAgIHNlbGYuX3VwbG9hZFRpbWVvdXQsXG4gICAgICAgICdFVElNRURPVVQnXG4gICAgICApO1xuICAgIH0sIHRoaXMuX3VwbG9hZFRpbWVvdXQpO1xuICB9XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuUmVxdWVzdC5wcm90b3R5cGUuX2VuZCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuX2Fib3J0ZWQpXG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2soXG4gICAgICBuZXcgRXJyb3IoJ1RoZSByZXF1ZXN0IGhhcyBiZWVuIGFib3J0ZWQgZXZlbiBiZWZvcmUgLmVuZCgpIHdhcyBjYWxsZWQnKVxuICAgICk7XG5cbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gIHRoaXMueGhyID0gcmVxdWVzdC5nZXRYSFIoKTtcbiAgY29uc3QgeyB4aHIgfSA9IHRoaXM7XG4gIGxldCBkYXRhID0gdGhpcy5fZm9ybURhdGEgfHwgdGhpcy5fZGF0YTtcblxuICB0aGlzLl9zZXRUaW1lb3V0cygpO1xuXG4gIC8vIHN0YXRlIGNoYW5nZVxuICB4aHIuYWRkRXZlbnRMaXN0ZW5lcigncmVhZHlzdGF0ZWNoYW5nZScsICgpID0+IHtcbiAgICBjb25zdCB7IHJlYWR5U3RhdGUgfSA9IHhocjtcbiAgICBpZiAocmVhZHlTdGF0ZSA+PSAyICYmIHNlbGYuX3Jlc3BvbnNlVGltZW91dFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQoc2VsZi5fcmVzcG9uc2VUaW1lb3V0VGltZXIpO1xuICAgIH1cblxuICAgIGlmIChyZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSW4gSUU5LCByZWFkcyB0byBhbnkgcHJvcGVydHkgKGUuZy4gc3RhdHVzKSBvZmYgb2YgYW4gYWJvcnRlZCBYSFIgd2lsbFxuICAgIC8vIHJlc3VsdCBpbiB0aGUgZXJyb3IgXCJDb3VsZCBub3QgY29tcGxldGUgdGhlIG9wZXJhdGlvbiBkdWUgdG8gZXJyb3IgYzAwYzAyM2ZcIlxuICAgIGxldCBzdGF0dXM7XG4gICAgdHJ5IHtcbiAgICAgIHN0YXR1cyA9IHhoci5zdGF0dXM7XG4gICAgfSBjYXRjaCB7XG4gICAgICBzdGF0dXMgPSAwO1xuICAgIH1cblxuICAgIGlmICghc3RhdHVzKSB7XG4gICAgICBpZiAoc2VsZi50aW1lZG91dCB8fCBzZWxmLl9hYm9ydGVkKSByZXR1cm47XG4gICAgICByZXR1cm4gc2VsZi5jcm9zc0RvbWFpbkVycm9yKCk7XG4gICAgfVxuXG4gICAgc2VsZi5lbWl0KCdlbmQnKTtcbiAgfSk7XG5cbiAgLy8gcHJvZ3Jlc3NcbiAgY29uc3QgaGFuZGxlUHJvZ3Jlc3MgPSAoZGlyZWN0aW9uLCBlKSA9PiB7XG4gICAgaWYgKGUudG90YWwgPiAwKSB7XG4gICAgICBlLnBlcmNlbnQgPSAoZS5sb2FkZWQgLyBlLnRvdGFsKSAqIDEwMDtcblxuICAgICAgaWYgKGUucGVyY2VudCA9PT0gMTAwKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChzZWxmLl91cGxvYWRUaW1lb3V0VGltZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGUuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgIHNlbGYuZW1pdCgncHJvZ3Jlc3MnLCBlKTtcbiAgfTtcblxuICBpZiAodGhpcy5oYXNMaXN0ZW5lcnMoJ3Byb2dyZXNzJykpIHtcbiAgICB0cnkge1xuICAgICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgaGFuZGxlUHJvZ3Jlc3MuYmluZChudWxsLCAnZG93bmxvYWQnKSk7XG4gICAgICBpZiAoeGhyLnVwbG9hZCkge1xuICAgICAgICB4aHIudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICBoYW5kbGVQcm9ncmVzcy5iaW5kKG51bGwsICd1cGxvYWQnKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQWNjZXNzaW5nIHhoci51cGxvYWQgZmFpbHMgaW4gSUUgZnJvbSBhIHdlYiB3b3JrZXIsIHNvIGp1c3QgcHJldGVuZCBpdCBkb2Vzbid0IGV4aXN0LlxuICAgICAgLy8gUmVwb3J0ZWQgaGVyZTpcbiAgICAgIC8vIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvODM3MjQ1L3htbGh0dHByZXF1ZXN0LXVwbG9hZC10aHJvd3MtaW52YWxpZC1hcmd1bWVudC13aGVuLXVzZWQtZnJvbS13ZWItd29ya2VyLWNvbnRleHRcbiAgICB9XG4gIH1cblxuICBpZiAoeGhyLnVwbG9hZCkge1xuICAgIHRoaXMuX3NldFVwbG9hZFRpbWVvdXQoKTtcbiAgfVxuXG4gIC8vIGluaXRpYXRlIHJlcXVlc3RcbiAgdHJ5IHtcbiAgICBpZiAodGhpcy51c2VybmFtZSAmJiB0aGlzLnBhc3N3b3JkKSB7XG4gICAgICB4aHIub3Blbih0aGlzLm1ldGhvZCwgdGhpcy51cmwsIHRydWUsIHRoaXMudXNlcm5hbWUsIHRoaXMucGFzc3dvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB4aHIub3Blbih0aGlzLm1ldGhvZCwgdGhpcy51cmwsIHRydWUpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gc2VlICMxMTQ5XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2soZXJyKTtcbiAgfVxuXG4gIC8vIENPUlNcbiAgaWYgKHRoaXMuX3dpdGhDcmVkZW50aWFscykgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG5cbiAgLy8gYm9keVxuICBpZiAoXG4gICAgIXRoaXMuX2Zvcm1EYXRhICYmXG4gICAgdGhpcy5tZXRob2QgIT09ICdHRVQnICYmXG4gICAgdGhpcy5tZXRob2QgIT09ICdIRUFEJyAmJlxuICAgIHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJyAmJlxuICAgICF0aGlzLl9pc0hvc3QoZGF0YSlcbiAgKSB7XG4gICAgLy8gc2VyaWFsaXplIHN0dWZmXG4gICAgY29uc3QgY29udGVudFR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIGxldCBzZXJpYWxpemUgPVxuICAgICAgdGhpcy5fc2VyaWFsaXplciB8fFxuICAgICAgcmVxdWVzdC5zZXJpYWxpemVbY29udGVudFR5cGUgPyBjb250ZW50VHlwZS5zcGxpdCgnOycpWzBdIDogJyddO1xuICAgIGlmICghc2VyaWFsaXplICYmIGlzSlNPTihjb250ZW50VHlwZSkpIHtcbiAgICAgIHNlcmlhbGl6ZSA9IHJlcXVlc3Quc2VyaWFsaXplWydhcHBsaWNhdGlvbi9qc29uJ107XG4gICAgfVxuXG4gICAgaWYgKHNlcmlhbGl6ZSkgZGF0YSA9IHNlcmlhbGl6ZShkYXRhKTtcbiAgfVxuXG4gIC8vIHNldCBoZWFkZXIgZmllbGRzXG4gIGZvciAoY29uc3QgZmllbGQgaW4gdGhpcy5oZWFkZXIpIHtcbiAgICBpZiAodGhpcy5oZWFkZXJbZmllbGRdID09PSBudWxsKSBjb250aW51ZTtcblxuICAgIGlmIChoYXNPd24odGhpcy5oZWFkZXIsIGZpZWxkKSlcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGZpZWxkLCB0aGlzLmhlYWRlcltmaWVsZF0pO1xuICB9XG5cbiAgaWYgKHRoaXMuX3Jlc3BvbnNlVHlwZSkge1xuICAgIHhoci5yZXNwb25zZVR5cGUgPSB0aGlzLl9yZXNwb25zZVR5cGU7XG4gIH1cblxuICAvLyBzZW5kIHN0dWZmXG4gIHRoaXMuZW1pdCgncmVxdWVzdCcsIHRoaXMpO1xuXG4gIC8vIElFMTEgeGhyLnNlbmQodW5kZWZpbmVkKSBzZW5kcyAndW5kZWZpbmVkJyBzdHJpbmcgYXMgUE9TVCBwYXlsb2FkIChpbnN0ZWFkIG9mIG5vdGhpbmcpXG4gIC8vIFdlIG5lZWQgbnVsbCBoZXJlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gIHhoci5zZW5kKHR5cGVvZiBkYXRhID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiBkYXRhKTtcbn07XG5cbnJlcXVlc3QuYWdlbnQgPSAoKSA9PiBuZXcgQWdlbnQoKTtcblxuZm9yIChjb25zdCBtZXRob2Qgb2YgWydHRVQnLCAnUE9TVCcsICdPUFRJT05TJywgJ1BBVENIJywgJ1BVVCcsICdERUxFVEUnXSkge1xuICBBZ2VudC5wcm90b3R5cGVbbWV0aG9kLnRvTG93ZXJDYXNlKCldID0gZnVuY3Rpb24gKHVybCwgZm4pIHtcbiAgICBjb25zdCByZXF1ZXN0XyA9IG5ldyByZXF1ZXN0LlJlcXVlc3QobWV0aG9kLCB1cmwpO1xuICAgIHRoaXMuX3NldERlZmF1bHRzKHJlcXVlc3RfKTtcbiAgICBpZiAoZm4pIHtcbiAgICAgIHJlcXVlc3RfLmVuZChmbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3RfO1xuICB9O1xufVxuXG5BZ2VudC5wcm90b3R5cGUuZGVsID0gQWdlbnQucHJvdG90eXBlLmRlbGV0ZTtcblxuLyoqXG4gKiBHRVQgYHVybGAgd2l0aCBvcHRpb25hbCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LmdldCA9ICh1cmwsIGRhdGEsIGZuKSA9PiB7XG4gIGNvbnN0IHJlcXVlc3RfID0gcmVxdWVzdCgnR0VUJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcXVlc3RfLnF1ZXJ5KGRhdGEpO1xuICBpZiAoZm4pIHJlcXVlc3RfLmVuZChmbik7XG4gIHJldHVybiByZXF1ZXN0Xztcbn07XG5cbi8qKlxuICogSEVBRCBgdXJsYCB3aXRoIG9wdGlvbmFsIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfEZ1bmN0aW9ufSBbZGF0YV0gb3IgZm5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QuaGVhZCA9ICh1cmwsIGRhdGEsIGZuKSA9PiB7XG4gIGNvbnN0IHJlcXVlc3RfID0gcmVxdWVzdCgnSEVBRCcsIHVybCk7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gZGF0YTtcbiAgICBkYXRhID0gbnVsbDtcbiAgfVxuXG4gIGlmIChkYXRhKSByZXF1ZXN0Xy5xdWVyeShkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIE9QVElPTlMgcXVlcnkgdG8gYHVybGAgd2l0aCBvcHRpb25hbCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0Lm9wdGlvbnMgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ09QVElPTlMnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIERFTEVURSBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR9IFtkYXRhXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVsKHVybCwgZGF0YSwgZm4pIHtcbiAgY29uc3QgcmVxdWVzdF8gPSByZXF1ZXN0KCdERUxFVEUnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59XG5cbnJlcXVlc3QuZGVsID0gZGVsO1xucmVxdWVzdC5kZWxldGUgPSBkZWw7XG5cbi8qKlxuICogUEFUQ0ggYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfSBbZGF0YV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QucGF0Y2ggPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BBVENIJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcXVlc3RfLnNlbmQoZGF0YSk7XG4gIGlmIChmbikgcmVxdWVzdF8uZW5kKGZuKTtcbiAgcmV0dXJuIHJlcXVlc3RfO1xufTtcblxuLyoqXG4gKiBQT1NUIGB1cmxgIHdpdGggb3B0aW9uYWwgYGRhdGFgIGFuZCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZH0gW2RhdGFdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LnBvc3QgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BPU1QnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxdWVzdF8uc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXF1ZXN0Xy5lbmQoZm4pO1xuICByZXR1cm4gcmVxdWVzdF87XG59O1xuXG4vKipcbiAqIFBVVCBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5wdXQgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXF1ZXN0XyA9IHJlcXVlc3QoJ1BVVCcsIHVybCk7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gZGF0YTtcbiAgICBkYXRhID0gbnVsbDtcbiAgfVxuXG4gIGlmIChkYXRhKSByZXF1ZXN0Xy5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcXVlc3RfLmVuZChmbik7XG4gIHJldHVybiByZXF1ZXN0Xztcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxJQUFKOztBQUNBLElBQUksT0FBT0MsTUFBUCxLQUFrQixXQUF0QixFQUFtQztFQUNqQztFQUNBRCxJQUFJLEdBQUdDLE1BQVA7QUFDRCxDQUhELE1BR08sSUFBSSxPQUFPQyxJQUFQLEtBQWdCLFdBQXBCLEVBQWlDO0VBQ3RDO0VB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","import base64 from 'base64-js';\n\nfunction padding(str) {\n var mod = str.length % 4;\n var pad = 4 - mod;\n\n if (mod === 0) {\n return str;\n }\n\n return str + new Array(1 + pad).join('=');\n}\n\nfunction stringToByteArray(str) {\n var arr = new Array(str.length);\n for (var a = 0; a < str.length; a++) {\n arr[a] = str.charCodeAt(a);\n }\n return arr;\n}\n\nfunction byteArrayToString(array) {\n var result = '';\n for (var i = 0; i < array.length; i++) {\n result += String.fromCharCode(array[i]);\n }\n return result;\n}\n\nfunction encode(str) {\n return base64\n .fromByteArray(stringToByteArray(str))\n .replace(/\\+/g, '-') // Convert '+' to '-'\n .replace(/\\//g, '_'); // Convert '/' to '_'\n}\n\nfunction decode(str) {\n str = padding(str)\n .replace(/-/g, '+') // Convert '-' to '+'\n .replace(/_/g, '/'); // Convert '_' to '/'\n\n return byteArrayToString(base64.toByteArray(str));\n}\n\nexport default {\n encode: encode,\n decode: decode\n};\n","module.exports = { raw: '9.25.0' };\n","var toString = Object.prototype.toString;\n\nfunction attribute(o, attr, type, text) {\n type = type === 'array' ? 'object' : type;\n if (o && typeof o[attr] !== type) {\n throw new Error(text);\n }\n}\n\nfunction variable(o, type, text) {\n if (typeof o !== type) {\n throw new Error(text);\n }\n}\n\nfunction value(o, values, text) {\n if (values.indexOf(o) === -1) {\n throw new Error(text);\n }\n}\n\nfunction check(o, config, attributes) {\n if (!config.optional || o) {\n variable(o, config.type, config.message);\n }\n if (config.type === 'object' && attributes) {\n var keys = Object.keys(attributes);\n\n for (var index = 0; index < keys.length; index++) {\n var a = keys[index];\n if (!attributes[a].optional || o[a]) {\n if (!attributes[a].condition || attributes[a].condition(o)) {\n attribute(o, a, attributes[a].type, attributes[a].message);\n if (attributes[a].values) {\n value(o[a], attributes[a].values, attributes[a].value_message);\n }\n }\n }\n }\n }\n}\n\n/**\n * Wrap `Array.isArray` Polyfill for IE9\n * source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\n *\n * @param {Array} array\n * @private\n */\nfunction isArray(array) {\n if (this.supportsIsArray()) {\n return Array.isArray(array);\n }\n\n return toString.call(array) === '[object Array]';\n}\n\nfunction supportsIsArray() {\n return Array.isArray != null;\n}\n\nexport default {\n check: check,\n attribute: attribute,\n variable: variable,\n value: value,\n isArray: isArray,\n supportsIsArray: supportsIsArray\n};\n","/* eslint-disable no-continue */\n\nfunction get() {\n if (!Object.assign) {\n return objectAssignPolyfill;\n }\n\n return Object.assign;\n}\n\nfunction objectAssignPolyfill(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (\n var nextIndex = 0, len = keysArray.length;\n nextIndex < len;\n nextIndex++\n ) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nexport default {\n get: get,\n objectAssignPolyfill: objectAssignPolyfill\n};\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\n\nimport assert from './assert';\nimport objectAssign from './object-assign';\n\nfunction pick(object, keys) {\n return keys.reduce(function(prev, key) {\n if (object[key]) {\n prev[key] = object[key];\n }\n return prev;\n }, {});\n}\n\nfunction getKeysNotIn(obj, allowedKeys) {\n var notAllowed = [];\n for (var key in obj) {\n if (allowedKeys.indexOf(key) === -1) {\n notAllowed.push(key);\n }\n }\n return notAllowed;\n}\n\nfunction objectValues(obj) {\n var values = [];\n for (var key in obj) {\n values.push(obj[key]);\n }\n return values;\n}\n\nfunction extend() {\n var params = objectValues(arguments);\n params.unshift({});\n return objectAssign.get().apply(undefined, params);\n}\n\nfunction merge(object, keys) {\n return {\n base: keys ? pick(object, keys) : object,\n with: function(object2, keys2) {\n object2 = keys2 ? pick(object2, keys2) : object2;\n return extend(this.base, object2);\n }\n };\n}\n\nfunction blacklist(object, blacklistedKeys) {\n return Object.keys(object).reduce(function(p, key) {\n if (blacklistedKeys.indexOf(key) === -1) {\n p[key] = object[key];\n }\n return p;\n }, {});\n}\n\nfunction camelToSnake(str) {\n var newKey = '';\n var index = 0;\n var code;\n var wasPrevNumber = true;\n var wasPrevUppercase = true;\n\n while (index < str.length) {\n code = str.charCodeAt(index);\n if (\n (!wasPrevUppercase && code >= 65 && code <= 90) ||\n (!wasPrevNumber && code >= 48 && code <= 57)\n ) {\n newKey += '_';\n newKey += str[index].toLowerCase();\n } else {\n newKey += str[index].toLowerCase();\n }\n wasPrevNumber = code >= 48 && code <= 57;\n wasPrevUppercase = code >= 65 && code <= 90;\n index++;\n }\n\n return newKey;\n}\n\nfunction snakeToCamel(str) {\n var parts = str.split('_');\n return parts.reduce(function(p, c) {\n return p + c.charAt(0).toUpperCase() + c.slice(1);\n }, parts.shift());\n}\n\nfunction toSnakeCase(object, exceptions) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n exceptions = exceptions || [];\n\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? camelToSnake(key) : key;\n p[newKey] = toSnakeCase(object[key]);\n return p;\n }, {});\n}\n\nfunction toCamelCase(object, exceptions, options) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n\n exceptions = exceptions || [];\n options = options || {};\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? snakeToCamel(key) : key;\n\n p[newKey] = toCamelCase(object[newKey] || object[key], [], options);\n\n if (options.keepOriginal) {\n p[key] = toCamelCase(object[key], [], options);\n }\n return p;\n }, {});\n}\n\nfunction getLocationFromUrl(href) {\n var match = href.match(\n /^(https?:|file:|chrome-extension:)\\/\\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\\?[^#]*|)(#.*|)$/\n );\n return (\n match && {\n href: href,\n protocol: match[1],\n host: match[2],\n hostname: match[3],\n port: match[4],\n pathname: match[5],\n search: match[6],\n hash: match[7]\n }\n );\n}\n\nfunction getOriginFromUrl(url) {\n if (!url) {\n return undefined;\n }\n var parsed = getLocationFromUrl(url);\n if (!parsed) {\n return null;\n }\n var origin = parsed.protocol + '//' + parsed.hostname;\n if (parsed.port) {\n origin += ':' + parsed.port;\n }\n return origin;\n}\n\nfunction trim(options, key) {\n var trimmed = extend(options);\n if (options[key]) {\n trimmed[key] = options[key].trim();\n }\n return trimmed;\n}\n\nfunction trimMultiple(options, keys) {\n return keys.reduce(trim, options);\n}\n\nfunction trimUserDetails(options) {\n return trimMultiple(options, ['username', 'email', 'phoneNumber']);\n}\n\n/**\n * Updates the value of a property on the given object, using a deep path selector.\n * @param {object} obj The object to set the property value on\n * @param {string|array} path The path to the property that should have its value updated. e.g. 'prop1.prop2.prop3' or ['prop1', 'prop2', 'prop3']\n * @param {any} value The value to set\n * @ignore\n */\nfunction updatePropertyOn(obj, path, value) {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n\n var next = path[0];\n\n if (obj.hasOwnProperty(next)) {\n if (path.length === 1) {\n obj[next] = value;\n } else {\n updatePropertyOn(obj[next], path.slice(1), value);\n }\n }\n}\n\nexport default {\n toSnakeCase: toSnakeCase,\n toCamelCase: toCamelCase,\n blacklist: blacklist,\n merge: merge,\n pick: pick,\n getKeysNotIn: getKeysNotIn,\n extend: extend,\n getOriginFromUrl: getOriginFromUrl,\n getLocationFromUrl: getLocationFromUrl,\n trimUserDetails: trimUserDetails,\n updatePropertyOn: updatePropertyOn\n};\n","/* eslint-disable no-param-reassign */\nimport request from 'superagent';\nimport base64Url from './base64_url';\nimport version from '../version';\nimport objectHelper from './object';\n\n// ------------------------------------------------ RequestWrapper\n\nfunction RequestWrapper(req) {\n this.request = req;\n this.method = req.method;\n this.url = req.url;\n this.body = req._data;\n this.headers = req._header;\n}\n\nRequestWrapper.prototype.abort = function() {\n this.request.abort();\n};\n\nRequestWrapper.prototype.getMethod = function() {\n return this.method;\n};\n\nRequestWrapper.prototype.getBody = function() {\n return this.body;\n};\n\nRequestWrapper.prototype.getUrl = function() {\n return this.url;\n};\n\nRequestWrapper.prototype.getHeaders = function() {\n return this.headers;\n};\n\n// ------------------------------------------------ RequestObj\n\nfunction RequestObj(req) {\n this.request = req;\n}\n\nRequestObj.prototype.set = function(key, value) {\n this.request = this.request.set(key, value);\n return this;\n};\n\nRequestObj.prototype.send = function(body) {\n this.request = this.request.send(objectHelper.trimUserDetails(body));\n return this;\n};\n\nRequestObj.prototype.withCredentials = function() {\n this.request = this.request.withCredentials();\n return this;\n};\n\nRequestObj.prototype.end = function(cb) {\n this.request.end(cb);\n return new RequestWrapper(this.request);\n};\n\n// ------------------------------------------------ RequestBuilder\n\nfunction RequestBuilder(options) {\n this._sendTelemetry =\n options._sendTelemetry === false ? options._sendTelemetry : true;\n this._telemetryInfo = options._telemetryInfo || null;\n this._timesToRetryFailedRequests = options._timesToRetryFailedRequests;\n this.headers = options.headers || {};\n this._universalLoginPage = options.universalLoginPage;\n}\n\nRequestBuilder.prototype.setCommonConfiguration = function(\n ongoingRequest,\n options\n) {\n options = options || {};\n\n if (this._timesToRetryFailedRequests > 0) {\n ongoingRequest = ongoingRequest.retry(this._timesToRetryFailedRequests);\n }\n\n if (options.noHeaders) {\n return ongoingRequest;\n }\n\n var headers = this.headers;\n ongoingRequest = ongoingRequest.set('Content-Type', 'application/json');\n\n if (options.xRequestLanguage) {\n ongoingRequest = ongoingRequest.set(\n 'X-Request-Language',\n options.xRequestLanguage\n );\n }\n\n var keys = Object.keys(this.headers);\n\n for (var a = 0; a < keys.length; a++) {\n ongoingRequest = ongoingRequest.set(keys[a], headers[keys[a]]);\n }\n\n if (this._sendTelemetry) {\n ongoingRequest = ongoingRequest.set(\n 'Auth0-Client',\n this.getTelemetryData()\n );\n }\n\n return ongoingRequest;\n};\n\nRequestBuilder.prototype.getTelemetryData = function() {\n var telemetryName = this._universalLoginPage ? 'auth0.js-ulp' : 'auth0.js';\n var clientInfo = { name: telemetryName, version: version.raw };\n if (this._telemetryInfo) {\n clientInfo = objectHelper.extend({}, this._telemetryInfo);\n clientInfo.env = objectHelper.extend({}, this._telemetryInfo.env);\n clientInfo.env[telemetryName] = version.raw;\n }\n var jsonClientInfo = JSON.stringify(clientInfo);\n return base64Url.encode(jsonClientInfo);\n};\n\nRequestBuilder.prototype.get = function(url, options) {\n return new RequestObj(this.setCommonConfiguration(request.get(url), options));\n};\n\nRequestBuilder.prototype.post = function(url, options) {\n return new RequestObj(\n this.setCommonConfiguration(request.post(url), options)\n );\n};\n\nRequestBuilder.prototype.patch = function(url, options) {\n return new RequestObj(\n this.setCommonConfiguration(request.patch(url), options)\n );\n};\n\nexport default RequestBuilder;\n","import objectHelper from './object';\n\nfunction redirect(url) {\n getWindow().location = url;\n}\n\nfunction getDocument() {\n return getWindow().document;\n}\n\nfunction getWindow() {\n return window;\n}\n\nfunction getOrigin() {\n var location = getWindow().location;\n var origin = location.origin;\n\n if (!origin) {\n origin = objectHelper.getOriginFromUrl(location.href);\n }\n\n return origin;\n}\n\nexport default {\n redirect: redirect,\n getDocument: getDocument,\n getWindow: getWindow,\n getOrigin: getOrigin\n};\n","function DummyStorage() {}\n\nDummyStorage.prototype.getItem = function() {\n return null;\n};\n\nDummyStorage.prototype.removeItem = function() {};\n\nDummyStorage.prototype.setItem = function() {};\n\nexport default DummyStorage;\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","import Cookie from 'js-cookie';\nimport objectHelper from '../object';\nimport windowHandler from '../window';\n\nfunction buildCompatCookieKey(key) {\n return '_' + key + '_compat';\n}\n\nfunction CookieStorage(options) {\n this._options = options || {};\n}\n\nCookieStorage.prototype.getItem = function (key) {\n var cookie = Cookie.get(key);\n\n return cookie || Cookie.get(buildCompatCookieKey(key));\n};\n\nCookieStorage.prototype.removeItem = function (key) {\n var params = {};\n if (this._options.cookieDomain) {\n params.domain = this._options.cookieDomain;\n }\n Cookie.remove(key, params);\n Cookie.remove(buildCompatCookieKey(key), params);\n};\n\nCookieStorage.prototype.setItem = function (key, value, options) {\n var params = objectHelper.extend(\n {\n expires: 1 // 1 day\n },\n options\n );\n\n if (windowHandler.getWindow().location.protocol === 'https:') {\n params.secure = true;\n params.sameSite = 'none';\n\n if (this._options.legacySameSiteCookie) {\n // Save a compatibility cookie without sameSite='none' for browsers that don't support it.\n var legacyOptions = objectHelper.blacklist(params, ['sameSite']);\n Cookie.set(buildCompatCookieKey(key), value, legacyOptions);\n }\n }\n\n if (this._options.cookieDomain) {\n params.domain = this._options.cookieDomain;\n }\n\n Cookie.set(key, value, params);\n};\n\nexport default CookieStorage;\n","/* eslint-disable no-console */\n\nfunction Warn(options) {\n this.disableWarnings = options.disableWarnings;\n}\n\nWarn.prototype.warning = function(message) {\n if (this.disableWarnings) {\n return;\n }\n\n console.warn(message);\n};\n\nexport default Warn;\n","import windowHandler from '../window';\nimport DummyStorage from './dummy';\nimport CookieStorage from './cookie';\nimport Warn from '../warn';\n\nfunction StorageHandler(options) {\n this.warn = new Warn({});\n this.storage = new CookieStorage(options);\n\n if (options.__tryLocalStorageFirst !== true) {\n return;\n }\n\n try {\n // some browsers throw an error when trying to access localStorage\n // when localStorage is disabled.\n var localStorage = windowHandler.getWindow().localStorage;\n if (localStorage) {\n this.storage = localStorage;\n }\n } catch (e) {\n this.warn.warning(e);\n this.warn.warning(\"Can't use localStorage. Using CookieStorage instead.\");\n }\n}\n\nStorageHandler.prototype.failover = function () {\n if (this.storage instanceof DummyStorage) {\n this.warn.warning('DummyStorage: ignore failover');\n return;\n } else if (this.storage instanceof CookieStorage) {\n this.warn.warning('CookieStorage: failing over DummyStorage');\n this.storage = new DummyStorage();\n } else {\n this.warn.warning('LocalStorage: failing over CookieStorage');\n this.storage = new CookieStorage();\n }\n};\n\nStorageHandler.prototype.getItem = function (key) {\n try {\n return this.storage.getItem(key);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.getItem(key);\n }\n};\n\nStorageHandler.prototype.removeItem = function (key) {\n try {\n return this.storage.removeItem(key);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.removeItem(key);\n }\n};\n\nStorageHandler.prototype.setItem = function (key, value, options) {\n try {\n return this.storage.setItem(key, value, options);\n } catch (e) {\n this.warn.warning(e);\n this.failover();\n return this.setItem(key, value, options);\n }\n};\n\nexport default StorageHandler;\n","import StorageHandler from './storage/handler';\n\nfunction Storage(options) {\n this.handler = new StorageHandler(options);\n}\n\nStorage.prototype.getItem = function(key) {\n var value = this.handler.getItem(key);\n try {\n return JSON.parse(value);\n } catch (_) {\n return value;\n }\n};\nStorage.prototype.removeItem = function(key) {\n return this.handler.removeItem(key);\n};\nStorage.prototype.setItem = function(key, value, options) {\n var json = JSON.stringify(value);\n return this.handler.setItem(key, json, options);\n};\n\nexport default Storage;\n","import Storage from './storage';\n\nfunction SSODataStorage(options) {\n this.storage = new Storage(options);\n}\n\nSSODataStorage.prototype.set = function(connection, sub) {\n var ssodata = {\n lastUsedConnection: connection,\n lastUsedSub: sub\n };\n this.storage.setItem('auth0.ssodata', JSON.stringify(ssodata));\n};\nSSODataStorage.prototype.get = function() {\n var ssodata = this.storage.getItem('auth0.ssodata');\n if (!ssodata) {\n return;\n }\n return JSON.parse(ssodata);\n};\n\nexport default SSODataStorage;\n","function buildResponse(error, description) {\n return {\n error: error,\n errorDescription: description\n };\n}\n\nfunction invalidToken(description) {\n return buildResponse('invalid_token', description);\n}\n\nexport default {\n buildResponse: buildResponse,\n invalidToken: invalidToken\n};\n","import error from './error';\nimport objectHelper from './object';\n\nfunction wrapCallback(cb, options) {\n options = options || {};\n options.ignoreCasing = options.ignoreCasing ? options.ignoreCasing : false;\n\n return function(err, data) {\n var errObj;\n\n if (!err && !data) {\n return cb(error.buildResponse('generic_error', 'Something went wrong'));\n }\n\n if (!err && data.err) {\n err = data.err;\n data = null;\n }\n\n if (!err && data.error) {\n err = data;\n data = null;\n }\n\n if (err) {\n errObj = {\n original: err\n };\n\n objectHelper.updatePropertyOn(\n errObj,\n 'original.response.req._data.password',\n '*****'\n );\n\n if (err.response && err.response.statusCode) {\n errObj.statusCode = err.response.statusCode;\n }\n\n if (err.response && err.response.statusText) {\n errObj.statusText = err.response.statusText;\n }\n\n if (err.response && err.response.body) {\n err = err.response.body;\n }\n\n if (err.err) {\n err = err.err;\n }\n\n errObj.code =\n err.code || err.error || err.error_code || err.status || null;\n\n errObj.description =\n err.errorDescription ||\n err.error_description ||\n err.description ||\n err.error ||\n err.details ||\n err.err ||\n null;\n\n if (options.forceLegacyError) {\n errObj.error = errObj.code;\n errObj.error_description = errObj.description;\n }\n\n if (err.error_codes && err.error_details) {\n errObj.errorDetails = {\n codes: err.error_codes,\n details: err.error_details\n };\n }\n\n if (err.name) {\n errObj.name = err.name;\n }\n\n if (err.policy) {\n errObj.policy = err.policy;\n }\n\n return cb(errObj);\n }\n\n if (\n data.type &&\n (data.type === 'text/html' || data.type === 'text/plain')\n ) {\n return cb(null, data.text);\n }\n\n if (options.ignoreCasing) {\n return cb(null, data.body || data);\n }\n\n return cb(\n null,\n objectHelper.toCamelCase(data.body || data, [], {\n keepOriginal: options.keepOriginalCasing\n })\n );\n };\n}\n\nexport default wrapCallback;\n","// For future reference:,\n// The only parameters that should be allowed are parameters\n// defined by the specification, or existing parameters that we\n// need for compatibility\n\nimport objectHelper from './object';\n\nvar tokenParams = [\n // auth0\n 'realm',\n 'audience',\n 'otp',\n // oauth2\n 'client_id',\n 'client_secret',\n 'redirect_uri',\n 'scope',\n 'code',\n 'grant_type',\n 'username',\n 'password',\n 'refresh_token',\n 'assertion',\n 'client_assertion',\n 'client_assertion_type',\n 'code_verifier'\n];\n\nvar authorizeParams = [\n // auth0\n 'connection',\n 'connection_scope',\n 'auth0Client',\n 'owp',\n 'device',\n 'realm',\n 'organization',\n 'invitation',\n\n 'protocol',\n '_csrf',\n '_intstate',\n 'login_ticket',\n\n // oauth2\n 'client_id',\n 'response_type',\n 'response_mode',\n 'redirect_uri',\n 'audience',\n 'scope',\n 'state',\n 'nonce',\n 'display',\n 'prompt',\n 'screen_hint',\n 'max_age',\n 'ui_locales',\n 'claims_locales',\n 'id_token_hint',\n 'login_hint',\n 'acr_values',\n 'claims',\n 'registration',\n 'request',\n 'request_uri',\n 'code_challenge',\n 'code_challenge_method',\n\n // ADDITIONAL_PARAMETERS:\n // https://auth0.com/docs/api/authentication?javascript#social\n 'access_type',\n 'display'\n];\n\nfunction oauthAuthorizeParams(warn, params) {\n var notAllowed = objectHelper.getKeysNotIn(params, authorizeParams);\n\n if (notAllowed.length > 0) {\n warn.warning(\n 'Following parameters are not allowed on the `/authorize` endpoint: [' +\n notAllowed.join(',') +\n ']'\n );\n }\n\n return params;\n}\n\nfunction oauthTokenParams(warn, params) {\n return objectHelper.pick(params, tokenParams);\n}\n\nexport default {\n oauthTokenParams: oauthTokenParams,\n oauthAuthorizeParams: oauthAuthorizeParams\n};\n","var t=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r=e(function(e,r){e.exports=function(){function e(t){return\"function\"==typeof t}var r=Array.isArray?Array.isArray:function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},i=0,n=void 0,o=void 0,s=function(t,e){l[i]=t,l[i+1]=e,2===(i+=2)&&(o?o(d):w())},h=\"undefined\"!=typeof window?window:void 0,u=h||{},a=u.MutationObserver||u.WebKitMutationObserver,f=\"undefined\"==typeof self&&\"undefined\"!=typeof process&&\"[object process]\"==={}.toString.call(process),c=\"undefined\"!=typeof Uint8ClampedArray&&\"undefined\"!=typeof importScripts&&\"undefined\"!=typeof MessageChannel;function p(){var t=setTimeout;return function(){return t(d,1)}}var l=new Array(1e3);function d(){for(var t=0;t>>2]|=(r[o>>>2]>>>24-o%4*8&255)<<24-(i+o)%4*8;else for(var s=0;s>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var t=a.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join(\"\")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new f.init(r,e/2)}},l=c.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255));return i.join(\"\")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new f.init(r,e)}},d=c.Utf8={stringify:function(t){try{return decodeURIComponent(escape(l.stringify(t)))}catch(t){throw new Error(\"Malformed UTF-8 data\")}},parse:function(t){return l.parse(unescape(encodeURIComponent(t)))}},m=u.BufferedBlockAlgorithm=a.extend({reset:function(){this._data=new f.init,this._nDataBytes=0},_append:function(t){\"string\"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,h=o/(4*s),u=(h=t?e.ceil(h):e.max((0|h)-this._minBufferSize,0))*s,a=e.min(4*u,o);if(u){for(var c=0;c>>7)^(d<<14|d>>>18)^d>>>3)+a[l-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+a[l-16]}var v=i&n^i&o^n&o,y=p+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&f^~h&c)+u[l]+a[l];p=c,c=f,f=h,h=s+y|0,s=o,o=n,n=i,i=y+(((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+v)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+h|0,r[5]=r[5]+f|0,r[6]=r[6]+c|0,r[7]=r[7]+p|0},_doFinalize:function(){var e=this._data,r=e.words,i=8*this._nDataBytes,n=8*e.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=t.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA256=o._createHelper(f),e.HmacSHA256=o._createHmacHelper(f)}(Math),r.SHA256)}),s=e(function(t,e){var r,i;t.exports=(i=(r=n).lib.WordArray,r.enc.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(e[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|e[o+2>>>2]>>>24-(o+2)%4*8&255,h=0;h<4&&o+.75*h>>6*(3-h)&63));var u=i.charAt(64);if(u)for(;n.length%4;)n.push(u);return n.join(\"\")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=(h|u)<<24-o%4*8,o++}return i.create(n,o)}(t,e,n)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"},r.enc.Base64)}),h=e(function(t,e){t.exports=n.enc.Hex}),u=e(function(e,r){(function(){var t;function r(t,e,r){null!=t&&(\"number\"==typeof t?this.fromNumber(t,e,r):this.fromString(t,null==e&&\"string\"!=typeof t?256:e))}function i(){return new r(null)}var n=\"undefined\"!=typeof navigator;n&&\"Microsoft Internet Explorer\"==navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(var s=32767&e,h=e>>15;--o>=0;){var u=32767&this[t],a=this[t++]>>15,f=h*u+a*s;n=((u=s*u+((32767&f)<<15)+r[i]+(1073741823&n))>>>30)+(f>>>15)+h*a+(n>>>30),r[i++]=1073741823&u}return n},t=30):n&&\"Netscape\"!=navigator.appName?(r.prototype.am=function(t,e,r,i,n,o){for(;--o>=0;){var s=e*this[t++]+r[i]+n;n=Math.floor(s/67108864),r[i++]=67108863&s}return n},t=26):(r.prototype.am=function(t,e,r,i,n,o){for(var s=16383&e,h=e>>14;--o>=0;){var u=16383&this[t],a=this[t++]>>14,f=h*u+a*s;n=((u=s*u+((16383&f)<<14)+r[i]+n)>>28)+(f>>14)+h*a,r[i++]=268435455&u}return n},t=28),r.prototype.DB=t,r.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function p(t){this.m=t}function l(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function w(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function T(){}function b(t){return t}function _(t){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}p.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},p.prototype.revert=function(t){return t},p.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},p.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},p.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},l.prototype.convert=function(t){var e=i();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(r.ZERO)>0&&this.m.subTo(e,e),e},l.prototype.revert=function(t){var e=i();return t.copyTo(e),this.reduce(e),e},l.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,i,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},l.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},l.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},r.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},r.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},r.prototype.fromString=function(t,e){var i;if(16==e)i=4;else if(8==e)i=3;else if(256==e)i=8;else if(2==e)i=1;else if(32==e)i=5;else{if(4!=e)return void this.fromRadix(t,e);i=2}this.t=0,this.s=0;for(var n=t.length,o=!1,s=0;--n>=0;){var h=8==i?255&t[n]:a(t,n);h<0?\"-\"==t.charAt(n)&&(o=!0):(o=!1,0==s?this[this.t++]=h:s+i>this.DB?(this[this.t-1]|=(h&(1<>this.DB-s):this[this.t-1]|=h<=this.DB&&(s-=this.DB))}8==i&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},r.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},r.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>n|h,h=(this[r]&o)<=0;--r)e[r]=0;e[s]=h,e.t=this.t+s+1,e.s=this.s,e.clamp()},r.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var i=t%this.DB,n=this.DB-i,o=(1<>i;for(var s=r+1;s>i;i>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i-=t.s}e.s=i<0?-1:0,i<-1?e[r++]=this.DV+i:i>0&&(e[r++]=i),e.t=r,e.clamp()},r.prototype.multiplyTo=function(t,e){var i=this.abs(),n=t.abs(),o=i.t;for(e.t=o+n.t;--o>=0;)e[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},r.prototype.divRemTo=function(t,e,n){var o=t.abs();if(!(o.t<=0)){var s=this.abs();if(s.t0?(o.lShiftTo(f,h),s.lShiftTo(f,n)):(o.copyTo(h),s.copyTo(n));var p=h.t,l=h[p-1];if(0!=l){var d=l*(1<1?h[p-2]>>this.F2:0),m=this.FV/d,v=(1<=0&&(n[n.t++]=1,n.subTo(T,n)),r.ONE.dlShiftTo(p,T),T.subTo(h,h);h.t=0;){var b=n[--g]==l?this.DM:Math.floor(n[g]*m+(n[g-1]+y)*v);if((n[g]+=h.am(0,b,n,w,0,p))0&&n.rShiftTo(f,n),u<0&&r.ZERO.subTo(n,n)}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(t,e){if(t>4294967295||t<1)return r.ONE;var n=i(),o=i(),s=e.convert(this),h=c(t)-1;for(s.copyTo(n);--h>=0;)if(e.sqrTo(n,o),(t&1<0)e.mulTo(o,s,n);else{var u=n;n=o,o=u}return e.revert(n)},r.prototype.toString=function(t){if(this.s<0)return\"-\"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,i=(1<0)for(h>h)>0&&(n=!0,o=u(r));s>=0;)h>(h+=this.DB-e)):(r=this[s]>>(h-=e)&i,h<=0&&(h+=this.DB,--s)),r>0&&(n=!0),n&&(o+=u(r));return n?o:\"0\"},r.prototype.negate=function(){var t=i();return r.ZERO.subTo(this,t),t},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+c(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(t){var e=i();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(r.ZERO)>0&&t.subTo(e,e),e},r.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new p(e):new l(e),this.exp(t,r)},r.ZERO=f(0),r.ONE=f(1),T.prototype.convert=b,T.prototype.revert=b,T.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},T.prototype.sqrTo=function(t,e){t.squareTo(e)},_.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=i();return t.copyTo(e),this.reduce(e),e},_.prototype.revert=function(t){return t},_.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},_.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},_.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var S,A,D,B=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],x=(1<<26)/B[B.length-1];function E(){var t;t=(new Date).getTime(),A[D++]^=255&t,A[D++]^=t>>8&255,A[D++]^=t>>16&255,A[D++]^=t>>24&255,D>=j&&(D-=j)}if(r.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},r.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return\"0\";var e=this.chunkSize(t),r=Math.pow(t,e),n=f(r),o=i(),s=i(),h=\"\";for(this.divRemTo(n,o,s);o.signum()>0;)h=(r+s.intValue()).toString(t).substr(1)+h,o.divRemTo(n,o,s);return s.intValue().toString(t)+h},r.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var i=this.chunkSize(e),n=Math.pow(e,i),o=!1,s=0,h=0,u=0;u=i&&(this.dMultiply(n),this.dAddOffset(h,0),s=0,h=0))}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(h,0)),o&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(t,e,i){if(\"number\"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(r.ONE.shiftLeft(t-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(r.ONE.shiftLeft(t-1),this);else{var n=new Array,o=7&t;n.length=1+(t>>3),e.nextBytes(n),o>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;i+=this.s}else{for(i+=this.s;r>=this.DB;i+=t.s}e.s=i<0?-1:0,i>0?e[r++]=i:i<-1&&(e[r++]=this.DV+i),e.t=r,e.clamp()},r.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},r.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},r.prototype.multiplyLowerTo=function(t,e,r){var i,n=Math.min(this.t+t.t,e);for(r.s=0,r.t=n;n>0;)r[--n]=0;for(i=r.t-this.t;n=0;)r[i]=0;for(i=Math.max(e-this.t,0);i0)if(0==e)r=this[0]%t;else for(var i=this.t-1;i>=0;--i)r=(e*r+this[i])%t;return r},r.prototype.millerRabin=function(t){var e=this.subtract(r.ONE),n=e.getLowestSetBit();if(n<=0)return!1;var o=e.shiftRight(n);(t=t+1>>1)>B.length&&(t=B.length);for(var s=i(),h=0;h>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,i=this.DB-t*this.DB%8,n=0;if(t-- >0)for(i>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<=0;)i<8?(r=(this[t]&(1<>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,i<=0&&(i+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(e[n++]=r);return e},r.prototype.equals=function(t){return 0==this.compareTo(t)},r.prototype.min=function(t){return this.compareTo(t)<0?this:t},r.prototype.max=function(t){return this.compareTo(t)>0?this:t},r.prototype.and=function(t){var e=i();return this.bitwiseTo(t,d,e),e},r.prototype.or=function(t){var e=i();return this.bitwiseTo(t,m,e),e},r.prototype.xor=function(t){var e=i();return this.bitwiseTo(t,v,e),e},r.prototype.andNot=function(t){var e=i();return this.bitwiseTo(t,y,e),e},r.prototype.not=function(){for(var t=i(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var m=i();for(n.sqrTo(h[1],m);u<=d;)h[u]=i(),n.mulTo(m,h[u-2],h[u]),u+=2}var v,y,g=t.t-1,w=!0,T=i();for(o=c(t[g])-1;g>=0;){for(o>=a?v=t[g]>>o-a&d:(v=(t[g]&(1<0&&(v|=t[g-1]>>this.DB+o-a)),u=r;0==(1&v);)v>>=1,--u;if((o-=u)<0&&(o+=this.DB,--g),w)h[v].copyTo(s),w=!1;else{for(;u>1;)n.sqrTo(s,T),n.sqrTo(T,s),u-=2;u>0?n.sqrTo(s,T):(y=s,s=T,T=y),n.mulTo(T,h[v],s)}for(;g>=0&&0==(t[g]&1<=0?(i.subTo(n,i),e&&o.subTo(h,o),s.subTo(u,s)):(n.subTo(i,n),e&&h.subTo(o,h),u.subTo(s,u))}return 0!=n.compareTo(r.ONE)?r.ZERO:u.compareTo(t)>=0?u.subtract(t):u.signum()<0?(u.addTo(t,u),u.signum()<0?u.add(t):u):u},r.prototype.pow=function(t){return this.exp(t,new T)},r.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var i=e;e=r,r=i}var n=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(n0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},r.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=B[B.length-1]){for(e=0;e>>8,A[D++]=255&k;D=0,E()}function C(){if(null==S){for(E(),(S=new O).init(A),D=0;D0&&e.length>0))throw new Error(\"Invalid key data\");this.n=new u.BigInteger(t,16),this.e=parseInt(e,16)}c.prototype.verify=function(t,e){e=e.replace(/[^0-9a-f]|[\\s\\n]]/gi,\"\");var r=new u.BigInteger(e,16);if(r.bitLength()>this.n.bitLength())throw new Error(\"Signature does not match with the key modulus.\");var i=function(t){for(var e in a){var r=a[e],i=r.length;if(t.substring(0,i)===r)return{alg:e,hash:t.substring(i)}}return[]}(r.modPowInt(this.e,this.n).toString(16).replace(/^1f+00/,\"\"));if(0===i.length)return!1;if(!f.hasOwnProperty(i.alg))throw new Error(\"Hashing algorithm is not supported.\");var n=f[i.alg](t).toString();return i.hash===n};for(var p=[],l=[],d=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,m=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",v=0;v<64;++v)p[v]=m[v],l[m.charCodeAt(v)]=v;l[\"-\".charCodeAt(0)]=62,l[\"_\".charCodeAt(0)]=63;var y=function(t){var e,r,i=function(t){var e=t.length;if(e%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}(t),n=i[0],o=i[1],s=new d(function(t,e,r){return 3*(e+r)/4-r}(0,n,o)),h=0,u=o>0?n-4:n;for(r=0;r>16&255,s[h++]=e>>8&255,s[h++]=255&e;return 2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,s[h++]=255&e),1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,s[h++]=e>>8&255,s[h++]=255&e),s};function g(t){var e=t.length%4;return 0===e?t:t+new Array(4-e+1).join(\"=\")}function w(t){return t=g(t).replace(/\\-/g,\"+\").replace(/_/g,\"/\"),decodeURIComponent(function(t){for(var e=\"\",r=0;r1){var r=t.shift();t[0]=r+t[0]}t[0]=t[0].match(/^file:\\/\\/\\//)?t[0].replace(/^([^/:]+):\\/*/,\"$1:///\"):t[0].replace(/^([^/:]+):\\/*/,\"$1://\");for(var i=0;i0&&(n=n.replace(/^[\\/]+/,\"\")),n=n.replace(/[\\/]+$/,i0?\"?\":\"\")+s.join(\"&\")}(\"object\"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():r.urljoin=i()});function _(t,e){return e=e||{},new Promise(function(r,i){var n=new XMLHttpRequest,o=[],s=[],h={},u=function(){return{ok:2==(n.status/100|0),statusText:n.statusText,status:n.status,url:n.responseURL,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},clone:u,headers:{keys:function(){return o},entries:function(){return s},get:function(t){return h[t.toLowerCase()]},has:function(t){return t.toLowerCase()in h}}}};for(var a in n.open(e.method||\"get\",t,!0),n.onload=function(){n.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(t,e,r){o.push(e=e.toLowerCase()),s.push([e,r]),h[e]=h[e]?h[e]+\",\"+r:r}),r(u())},n.onerror=i,n.withCredentials=\"include\"==e.credentials,e.headers)n.setRequestHeader(a,e.headers[a]);n.send(e.body||null)})}function S(t){if(t.ok)return t.json();var e=new Error(t.statusText);return e.response=t,Promise.reject(e)}function A(t){this.name=\"ConfigurationError\",this.message=t||\"\"}function D(t){this.name=\"TokenValidationError\",this.message=t||\"\"}A.prototype=Error.prototype,D.prototype=Error.prototype;var B=function(){function t(){}var e=t.prototype;return e.get=function(){return null},e.has=function(){return null},e.set=function(){return null},t}();r.polyfill();var x=\"RS256\",E=function(t){return\"number\"==typeof t},k=function(){return new Date};function I(t){var e=t||{};if(this.jwksCache=e.jwksCache||new B,this.expectedAlg=e.expectedAlg||\"RS256\",this.issuer=e.issuer,this.audience=e.audience,this.leeway=0===e.leeway?0:e.leeway||60,this.jwksURI=e.jwksURI,this.maxAge=e.maxAge,this.__clock=\"function\"==typeof e.__clock?e.__clock:k,this.leeway<0||this.leeway>300)throw new A(\"The leeway should be positive and lower than five minutes.\");if(x!==this.expectedAlg)throw new A('Signature algorithm of \"'+this.expectedAlg+'\" is not supported. Expected the ID token to be signed with \"'+x+'\".')}I.prototype.verify=function(t,e,r){if(!r&&e&&\"function\"==typeof e&&(r=e,e=void 0),!t)return r(new D(\"ID token is required but missing\"),null);var i=this.decode(t);if(i instanceof Error)return r(new D(\"ID token could not be decoded\"),null);var n=i.encoded.header+\".\"+i.encoded.payload,o=T(i.encoded.signature),s=i.header.alg,h=i.header.kid,u=i.payload.aud,a=i.payload.sub,f=i.payload.iss,c=i.payload.exp,p=i.payload.nbf,l=i.payload.iat,d=i.payload.azp,m=i.payload.auth_time,v=i.payload.nonce,y=this.__clock(),g=this;if(g.expectedAlg!==s)return r(new D('Signature algorithm of \"'+s+'\" is not supported. Expected the ID token to be signed with \"'+x+'\".'),null);this.getRsaVerifier(f,h,function(t,s){if(t)return r(t,null);if(!s.verify(n,o))return r(new D(\"Invalid ID token signature.\"),null);if(!f||\"string\"!=typeof f)return r(new D(\"Issuer (iss) claim must be a string present in the ID token\"),null);if(g.issuer!==f)return r(new D('Issuer (iss) claim mismatch in the ID token, expected \"'+g.issuer+'\", found \"'+f+'\"'),null);if(!a||\"string\"!=typeof a)return r(new D(\"Subject (sub) claim must be a string present in the ID token\"),null);if(!u||\"string\"!=typeof u&&!Array.isArray(u))return r(new D(\"Audience (aud) claim must be a string or array of strings present in the ID token\"),null);if(Array.isArray(u)&&!u.includes(g.audience))return r(new D('Audience (aud) claim mismatch in the ID token; expected \"'+g.audience+'\" but was not one of \"'+u.join(\", \")+'\"'),null);if(\"string\"==typeof u&&g.audience!==u)return r(new D('Audience (aud) claim mismatch in the ID token; expected \"'+g.audience+'\" but found \"'+u+'\"'),null);if(e){if(!v||\"string\"!=typeof v)return r(new D(\"Nonce (nonce) claim must be a string present in the ID token\"),null);if(v!==e)return r(new D('Nonce (nonce) claim value mismatch in the ID token; expected \"'+e+'\", found \"'+v+'\"'),null)}if(Array.isArray(u)&&u.length>1){if(!d||\"string\"!=typeof d)return r(new D(\"Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values\"),null);if(d!==g.audience)return r(new D('Authorized Party (azp) claim mismatch in the ID token; expected \"'+g.audience+'\", found \"'+d+'\"'),null)}if(!c||!E(c))return r(new D(\"Expiration Time (exp) claim must be a number present in the ID token\"),null);if(!l||!E(l))return r(new D(\"Issued At (iat) claim must be a number present in the ID token\"),null);var h=c+g.leeway,w=new Date(0);if(w.setUTCSeconds(h),y>w)return r(new D('Expiration Time (exp) claim error in the ID token; current time \"'+y+'\" is after expiration time \"'+w+'\"'),null);if(p&&E(p)){var T=p-g.leeway,b=new Date(0);if(b.setUTCSeconds(T),yS)return r(new D('Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Current time \"'+y+'\" is after last auth time at \"'+S+'\"'),null)}return r(null,i.payload)})},I.prototype.getRsaVerifier=function(t,e,r){var i=this,n=t+e;Promise.resolve(this.jwksCache.has(n)).then(function(r){return r?i.jwksCache.get(n):(s=(o={jwksURI:i.jwksURI,iss:t,kid:e}).jwksURI||b(o.iss,\".well-known\",\"jwks.json\"),(\"undefined\"==fetch?_:fetch)(s).then(S).then(function(t){var e,r,i,n=null;for(e=0;e 11\n else if (ua.indexOf(\"Trident\") > -1) {\n var re = new RegExp(\"rv:([0-9]{2,2}[\\.0-9]{0,})\");\n if (re.exec(ua) !== null) {\n rv = parseFloat(RegExp.$1);\n }\n }\n\n return rv >= 8;\n }\n\n // checking Mobile Firefox (Fennec)\n function isFennec() {\n try {\n // We must check for both XUL and Java versions of Fennec. Both have\n // distinct UA strings.\n var userAgent = navigator.userAgent;\n return (userAgent.indexOf('Fennec/') != -1) || // XUL\n (userAgent.indexOf('Firefox/') != -1 && userAgent.indexOf('Android') != -1); // Java\n } catch(e) {}\n return false;\n }\n\n // feature checking to see if this platform is supported at all\n function isSupported() {\n return (typeof window !== 'undefined' && window.JSON && window.JSON.stringify &&\n window.JSON.parse && window.postMessage);\n }\n\n // given a URL, extract the origin. Taken from: https://github.com/firebase/firebase-simple-login/blob/d2cb95b9f812d8488bdbfba51c3a7c153ba1a074/js/src/simple-login/transports/WinChan.js#L25-L30\n function extractOrigin(url) {\n if (!/^https?:\\/\\//.test(url)) url = window.location.href;\n var m = /^(https?:\\/\\/[\\-_a-zA-Z\\.0-9:]+)/.exec(url);\n if (m) return m[1];\n return url;\n }\n\n // find the relay iframe in the opener\n function findRelay() {\n var loc = window.location;\n var frames = window.opener.frames;\n for (var i = frames.length - 1; i >= 0; i--) {\n try {\n if (frames[i].location.protocol === window.location.protocol &&\n frames[i].location.host === window.location.host &&\n frames[i].name === RELAY_FRAME_NAME)\n {\n return frames[i];\n }\n } catch(e) { }\n }\n return;\n }\n\n var isIE = isInternetExplorer();\n\n if (isSupported()) {\n /* General flow:\n * 0. user clicks\n * (IE SPECIFIC) 1. caller adds relay iframe (served from trusted domain) to DOM\n * 2. caller opens window (with content from trusted domain)\n * 3. window on opening adds a listener to 'message'\n * (IE SPECIFIC) 4. window on opening finds iframe\n * 5. window checks if iframe is \"loaded\" - has a 'doPost' function yet\n * (IE SPECIFIC5) 5a. if iframe.doPost exists, window uses it to send ready event to caller\n * (IE SPECIFIC5) 5b. if iframe.doPost doesn't exist, window waits for frame ready\n * (IE SPECIFIC5) 5bi. once ready, window calls iframe.doPost to send ready event\n * 6. caller upon reciept of 'ready', sends args\n */\n return {\n open: function(opts, cb) {\n if (!cb) throw \"missing required callback argument\";\n\n // test required options\n var err;\n if (!opts.url) err = \"missing required 'url' parameter\";\n if (!opts.relay_url) err = \"missing required 'relay_url' parameter\";\n if (err) setTimeout(function() { cb(err); }, 0);\n\n // supply default options\n if (!opts.window_name) opts.window_name = null;\n if (!opts.window_features || isFennec()) opts.window_features = undefined;\n\n // opts.params may be undefined\n\n var iframe;\n\n // sanity check, are url and relay_url the same origin?\n var origin = opts.origin || extractOrigin(opts.url);\n if (origin !== extractOrigin(opts.relay_url)) {\n return setTimeout(function() {\n cb('invalid arguments: origin of url and relay_url must match');\n }, 0);\n }\n\n var messageTarget;\n\n if (isIE) {\n // first we need to add a \"relay\" iframe to the document that's served\n // from the target domain. We can postmessage into a iframe, but not a\n // window\n iframe = document.createElement(\"iframe\");\n // iframe.setAttribute('name', framename);\n iframe.setAttribute('src', opts.relay_url);\n iframe.style.display = \"none\";\n iframe.setAttribute('name', RELAY_FRAME_NAME);\n document.body.appendChild(iframe);\n messageTarget = iframe.contentWindow;\n }\n\n var w = opts.popup || window.open(opts.url, opts.window_name, opts.window_features);\n if (opts.popup) {\n w.location.href = opts.url;\n }\n\n if (!messageTarget) messageTarget = w;\n\n // lets listen in case the window blows up before telling us\n var closeInterval = setInterval(function() {\n if (w && w.closed) {\n cleanup();\n if (cb) {\n cb('User closed the popup window');\n cb = null;\n }\n }\n }, 500);\n\n var req = JSON.stringify({a: 'request', d: opts.params});\n\n // cleanup on unload\n function cleanup() {\n if (iframe) document.body.removeChild(iframe);\n iframe = undefined;\n if (closeInterval) closeInterval = clearInterval(closeInterval);\n removeListener(window, 'message', onMessage);\n removeListener(window, 'unload', cleanup);\n if (w) {\n try {\n w.close();\n } catch (securityViolation) {\n // This happens in Opera 12 sometimes\n // see https://github.com/mozilla/browserid/issues/1844\n messageTarget.postMessage(CLOSE_CMD, origin);\n }\n }\n w = messageTarget = undefined;\n }\n\n addListener(window, 'unload', cleanup);\n\n function onMessage(e) {\n if (e.origin !== origin) { return; }\n try {\n var d = JSON.parse(e.data);\n } catch(err) {\n if (cb) {\n return cb(err);\n } else {\n throw err;\n }\n }\n\n if (d.a === 'ready') {\n messageTarget.postMessage(req, origin);\n } else if (d.a === 'error') {\n cleanup();\n if (cb) {\n cb(d.d);\n cb = null;\n }\n } else if (d.a === 'response') {\n cleanup();\n if (cb) {\n cb(null, d.d);\n cb = null;\n }\n }\n }\n\n addListener(window, 'message', onMessage);\n\n return {\n originalPopup: w,\n close: cleanup,\n focus: function() {\n if (w) {\n try {\n w.focus();\n } catch (e) {\n // IE7 blows up here, do nothing\n }\n }\n }\n };\n },\n onOpen: function(cb) {\n var o = \"*\";\n var msgTarget = isIE ? findRelay() : window.opener;\n if (!msgTarget) throw \"can't find relay frame\";\n function doPost(msg) {\n msg = JSON.stringify(msg);\n if (isIE) msgTarget.doPost(msg, o);\n else msgTarget.postMessage(msg, o);\n }\n\n function onMessage(e) {\n // only one message gets through, but let's make sure it's actually\n // the message we're looking for (other code may be using\n // postmessage) - we do this by ensuring the payload can\n // be parsed, and it's got an 'a' (action) value of 'request'.\n var d;\n try {\n d = JSON.parse(e.data);\n } catch(err) { }\n if (!d || d.a !== 'request') return;\n removeListener(window, 'message', onMessage);\n o = e.origin;\n if (cb) {\n // this setTimeout is critically important for IE8 -\n // in ie8 sometimes addListener for 'message' can synchronously\n // cause your callback to be invoked. awesome.\n setTimeout(function() {\n cb(o, d.d, function(r) {\n cb = undefined;\n doPost({a: 'response', d: r});\n });\n }, 0);\n }\n }\n\n function onDie(e) {\n if (e.data === CLOSE_CMD) {\n try { window.close(); } catch (o_O) {}\n }\n }\n addListener(isIE ? msgTarget : window, 'message', onMessage);\n addListener(isIE ? msgTarget : window, 'message', onDie);\n\n // we cannot post to our parent that we're ready before the iframe\n // is loaded. (IE specific possible failure)\n try {\n doPost({a: \"ready\"});\n } catch(e) {\n // this code should never be exectued outside IE\n addListener(msgTarget, 'load', function(e) {\n doPost({a: \"ready\"});\n });\n }\n\n // if window is unloaded and the client hasn't called cb, it's an error\n var onUnload = function() {\n try {\n // IE8 doesn't like this...\n removeListener(isIE ? msgTarget : window, 'message', onDie);\n } catch (ohWell) { }\n if (cb) doPost({ a: 'error', d: 'client closed window' });\n cb = undefined;\n // explicitly close the window, in case the client is trying to reload or nav\n try { window.close(); } catch (e) { }\n };\n addListener(window, 'unload', onUnload);\n return {\n detach: function() {\n removeListener(window, 'unload', onUnload);\n }\n };\n }\n };\n } else {\n return {\n open: function(url, winopts, arg, cb) {\n setTimeout(function() { cb(\"unsupported browser\"); }, 0);\n },\n onOpen: function(cb) {\n setTimeout(function() { cb(\"unsupported browser\"); }, 0);\n }\n };\n }\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = WinChan;\n}\n","// given a URL, extract the origin. Taken from: https://github.com/firebase/firebase-simple-login/blob/d2cb95b9f812d8488bdbfba51c3a7c153ba1a074/js/src/simple-login/transports/WinChan.js#L25-L30\nfunction extractOrigin(url) {\n if (!/^https?:\\/\\//.test(url)) url = window.location.href;\n var m = /^(https?:\\/\\/[-_a-zA-Z.0-9:]+)/.exec(url);\n if (m) return m[1];\n return url;\n}\n\nexport default {\n extractOrigin: extractOrigin\n};\n","/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\nimport WinChan from 'winchan';\n\nimport windowHandler from './window';\nimport objectHelper from './object';\nimport qs from 'qs';\n\nfunction PopupHandler() {\n this._current_popup = null;\n}\n\nPopupHandler.prototype.calculatePosition = function(options) {\n var width = options.width || 500;\n var height = options.height || 600;\n var _window = windowHandler.getWindow();\n\n var screenX =\n typeof _window.screenX !== 'undefined'\n ? _window.screenX\n : _window.screenLeft;\n var screenY =\n typeof _window.screenY !== 'undefined'\n ? _window.screenY\n : _window.screenTop;\n\n var outerWidth =\n typeof _window.outerWidth !== 'undefined'\n ? _window.outerWidth\n : _window.document.body.clientWidth;\n\n var outerHeight =\n typeof _window.outerHeight !== 'undefined'\n ? _window.outerHeight\n : _window.document.body.clientHeight;\n\n var left = options.left || screenX + (outerWidth - width) / 2;\n var top = options.top || screenY + (outerHeight - height) / 2;\n\n return { width: width, height: height, left: left, top: top };\n};\n\nPopupHandler.prototype.preload = function(options) {\n var _this = this;\n var _window = windowHandler.getWindow();\n var popupPosition = this.calculatePosition(options.popupOptions || {});\n var popupOptions = objectHelper\n .merge(popupPosition)\n .with(options.popupOptions);\n var url = options.url || 'about:blank';\n var windowFeatures = qs.stringify(popupOptions, {\n encode: false,\n delimiter: ','\n });\n\n if (this._current_popup && !this._current_popup.closed) {\n return this._current_popup;\n }\n\n this._current_popup = _window.open(url, 'auth0_signup_popup', windowFeatures);\n\n this._current_popup.kill = function() {\n this.close();\n _this._current_popup = null;\n };\n\n return this._current_popup;\n};\n\nPopupHandler.prototype.load = function(url, relayUrl, options, cb) {\n var _this = this;\n var popupPosition = this.calculatePosition(options.popupOptions || {});\n var popupOptions = objectHelper\n .merge(popupPosition)\n .with(options.popupOptions);\n\n var winchanOptions = objectHelper\n .merge({\n url: url,\n relay_url: relayUrl,\n window_features: qs.stringify(popupOptions, {\n delimiter: ',',\n encode: false\n }),\n popup: this._current_popup\n })\n .with(options);\n\n var popup = WinChan.open(winchanOptions, function(err, data) {\n // Ignores messages sent by browser extensions.\n if (err && err.name === 'SyntaxError') {\n return;\n }\n _this._current_popup = null;\n return cb(err, data);\n });\n\n popup.focus();\n\n return popup;\n};\n\nexport default PopupHandler;\n","import urljoin from 'url-join';\nimport WinChan from 'winchan';\n\nimport urlHelper from '../helper/url';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\nimport PopupHandler from '../helper/popup-handler';\nimport objectHelper from '../helper/object';\nimport windowHelper from '../helper/window';\nimport Warn from '../helper/warn';\nimport TransactionManager from './transaction-manager';\nimport CrossOriginAuthentication from './cross-origin-authentication';\n\n/**\n * @class\n * @classdesc This class cannot be instantiated directly. Instead, use WebAuth.popup\n * @hideconstructor\n */\nfunction Popup(webAuth, options) {\n this.baseOptions = options;\n this.baseOptions.popupOrigin = options.popupOrigin;\n this.client = webAuth.client;\n this.webAuth = webAuth;\n\n this.transactionManager = new TransactionManager(this.baseOptions);\n this.crossOriginAuthentication = new CrossOriginAuthentication(\n webAuth,\n this.baseOptions\n );\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n}\n\n/**\n * Returns a new instance of the popup handler\n *\n * @method buildPopupHandler\n * @private\n */\nPopup.prototype.buildPopupHandler = function() {\n var pluginHandler = this.baseOptions.plugins.get('popup.getPopupHandler');\n\n if (pluginHandler) {\n return pluginHandler.getPopupHandler();\n }\n\n return new PopupHandler();\n};\n\n/**\n * Initializes the popup window and returns the instance to be used later in order to avoid being blocked by the browser.\n *\n * @method preload\n * @param {Object} options receives the window height and width and any other window feature to be sent to window.open\n * @memberof Popup.prototype\n */\nPopup.prototype.preload = function(options) {\n options = options || {};\n\n var popup = this.buildPopupHandler();\n\n popup.preload(options);\n return popup;\n};\n\n/**\n * Internal use.\n *\n * @method getPopupHandler\n * @private\n */\nPopup.prototype.getPopupHandler = function(options, preload) {\n if (options.popupHandler) {\n return options.popupHandler;\n }\n\n if (preload) {\n return this.preload(options);\n }\n\n return this.buildPopupHandler();\n};\n\n/**\n * Handles the popup logic for the callback page.\n *\n * @method callback\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @see {@link parseHash}\n * @memberof Popup.prototype\n */\nPopup.prototype.callback = function(options) {\n var _this = this;\n var theWindow = windowHelper.getWindow();\n options = options || {};\n var originUrl =\n options.popupOrigin ||\n this.baseOptions.popupOrigin ||\n windowHelper.getOrigin();\n\n /*\n in IE 11, there's a bug that makes window.opener return undefined.\n The callback page will still call `popup.callback()` which will run this method\n in the relay page. WinChan expects the relay page to have a global `doPost` function,\n which will be called with the response.\n\n IE11 Bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/110920/\n */\n if (!theWindow.opener) {\n theWindow.doPost = function(msg) {\n if (theWindow.parent) {\n theWindow.parent.postMessage(msg, originUrl);\n }\n };\n return;\n }\n\n WinChan.onOpen(function(popupOrigin, r, cb) {\n if (popupOrigin !== originUrl) {\n return cb({\n error: 'origin_mismatch',\n error_description:\n \"The popup's origin (\" +\n popupOrigin +\n ') should match the `popupOrigin` parameter (' +\n originUrl +\n ').'\n });\n }\n _this.webAuth.parseHash(options || {}, function(err, data) {\n return cb(err || data);\n });\n });\n};\n\n/**\n * Shows inside a new window the hosted login page (`/authorize`) in order to start a new authN/authZ transaction and post its result using `postMessage`.\n *\n * @method authorize\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.organization] the Id of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Boolean} [options.owp] determines if Auth0 should render the relay page or not and the caller is responsible of handling the response.\n * @param {authorizeCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof Popup.prototype\n */\nPopup.prototype.authorize = function(options, cb) {\n var popup;\n var url;\n var relayUrl;\n var popOpts = {};\n\n var pluginHandler = this.baseOptions.plugins.get('popup.authorize');\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'scope',\n 'domain',\n 'audience',\n 'tenant',\n 'responseType',\n 'redirectUri',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'organization',\n 'invitation'\n ])\n .with(objectHelper.blacklist(options, ['popupHandler']));\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n // the relay page should not be necessary as long it happens in the same domain\n // (a redirectUri shoul be provided). It is necessary when using OWP\n relayUrl = urljoin(this.baseOptions.rootUrl, 'relay.html');\n\n // if a owp is enabled, it should use the owp flag\n if (options.owp) {\n // used by server to render the relay page instead of sending the chunk in the\n // url to the callback\n params.owp = true;\n } else {\n popOpts.origin = urlHelper.extractOrigin(params.redirectUri);\n relayUrl = params.redirectUri;\n }\n\n if (options.popupOptions) {\n popOpts.popupOptions = objectHelper.pick(options.popupOptions, [\n 'width',\n 'height',\n 'top',\n 'left'\n ]);\n }\n\n if (pluginHandler) {\n params = pluginHandler.processParams(params);\n }\n\n params = this.transactionManager.process(params);\n params.scope = params.scope || 'openid profile email';\n delete params.domain;\n\n url = this.client.buildAuthorizeUrl(params);\n\n popup = this.getPopupHandler(options);\n\n return popup.load(\n url,\n relayUrl,\n popOpts,\n responseHandler(cb, { keepOriginalCasing: true })\n );\n};\n\n/**\n * Performs authentication with username/email and password with a database connection inside a new window\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link login}.\n *\n * @method loginWithCredentials\n * @param {Object} options\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used. It can be any of the values `code` and `token`\n * @param {String} [options.responseMode] how the AuthN response is encoded and redirected back to the client. Supported values are `query` and `fragment`. The `query` value is only supported when `responseType` is `code`.\n * @param {String} [options.scope] scopes to be requested during AuthN. e.g. `openid email`\n * @param {credentialsCallback} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.loginWithCredentials = function (options, cb) {\n options.realm = options.realm || options.connection;\n options.popup = true;\n options = objectHelper\n .merge(this.baseOptions, [\n 'redirectUri',\n 'responseType',\n 'state',\n 'nonce',\n 'timeout'\n ])\n .with(objectHelper.blacklist(options, ['popupHandler', 'connection']));\n\n options = this.transactionManager.process(options);\n this.crossOriginAuthentication.login(options, cb);\n};\n\n/**\n * Verifies the passwordless TOTP and redirects to finish the passwordless transaction\n *\n * @method passwordlessVerify\n * @param {Object} options\n * @param {String} options.type `sms` or `email`\n * @param {String} options.phoneNumber only if type = sms\n * @param {String} options.email only if type = email\n * @param {String} options.connection the connection name\n * @param {String} options.verificationCode the TOTP code\n * @param {Function} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.passwordlessVerify = function(options, cb) {\n var _this = this;\n return this.client.passwordless.verify(\n objectHelper.blacklist(options, ['popupHandler']),\n function(err) {\n if (err) {\n return cb(err);\n }\n\n options.username = options.phoneNumber || options.email;\n options.password = options.verificationCode;\n\n delete options.email;\n delete options.phoneNumber;\n delete options.verificationCode;\n delete options.type;\n\n _this.client.loginWithResourceOwner(options, cb);\n }\n );\n};\n\n/**\n * Signs up a new user and automatically logs the user in after the signup.\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link signupAndAuthorize}.\n *\n * @method signupAndLogin\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {credentialsCallback} cb\n * @memberof Popup.prototype\n */\nPopup.prototype.signupAndLogin = function(options, cb) {\n var _this = this;\n\n return this.client.dbConnection.signup(options, function(err) {\n if (err) {\n return cb(err);\n }\n _this.loginWithCredentials(options, cb);\n });\n};\n\nexport default Popup;\n","import IframeHandler from '../helper/iframe-handler';\nimport windowHelper from '../helper/window';\n\nfunction SilentAuthenticationHandler(options) {\n this.authenticationUrl = options.authenticationUrl;\n this.timeout = options.timeout || 60 * 1000;\n this.handler = null;\n this.postMessageDataType = options.postMessageDataType || false;\n\n // prefer origin from options, fallback to origin from browser, and some browsers (for example MS Edge) don't support origin; fallback to construct origin manually\n this.postMessageOrigin =\n options.postMessageOrigin ||\n windowHelper.getWindow().location.origin ||\n windowHelper.getWindow().location.protocol +\n '//' +\n windowHelper.getWindow().location.hostname +\n (windowHelper.getWindow().location.port\n ? ':' + windowHelper.getWindow().location.port\n : '');\n}\n\nSilentAuthenticationHandler.create = function(options) {\n return new SilentAuthenticationHandler(options);\n};\n\nSilentAuthenticationHandler.prototype.login = function(\n usePostMessage,\n callback\n) {\n this.handler = new IframeHandler({\n auth0: this.auth0,\n url: this.authenticationUrl,\n eventListenerType: usePostMessage ? 'message' : 'load',\n callback: this.getCallbackHandler(callback, usePostMessage),\n timeout: this.timeout,\n eventValidator: this.getEventValidator(),\n timeoutCallback: function() {\n callback(\n null,\n '#error=timeout&error_description=Timeout+during+authentication+renew.'\n );\n },\n usePostMessage: usePostMessage || false\n });\n\n this.handler.init();\n};\n\nSilentAuthenticationHandler.prototype.getEventValidator = function() {\n var _this = this;\n return {\n isValid: function(eventData) {\n switch (eventData.event.type) {\n case 'message':\n // Message must come from the expected origin and iframe window.\n if (\n eventData.event.origin !== _this.postMessageOrigin ||\n eventData.event.source !== _this.handler.iframe.contentWindow\n ) {\n return false;\n }\n\n // Default behaviour, return all message events from the iframe.\n if (_this.postMessageDataType === false) {\n return true;\n }\n\n return (\n eventData.event.data.type &&\n eventData.event.data.type === _this.postMessageDataType\n );\n\n case 'load':\n if (\n eventData.sourceObject.contentWindow.location.protocol === 'about:'\n ) {\n // Chrome is automatically loading the about:blank page, we ignore this.\n return false;\n }\n // Fall through to default\n default:\n return true;\n }\n }\n };\n};\n\nSilentAuthenticationHandler.prototype.getCallbackHandler = function(\n callback,\n usePostMessage\n) {\n return function(eventData) {\n var callbackValue;\n if (!usePostMessage) {\n callbackValue = eventData.sourceObject.contentWindow.location.hash;\n } else if (\n typeof eventData.event.data === 'object' &&\n eventData.event.data.hash\n ) {\n callbackValue = eventData.event.data.hash;\n } else {\n callbackValue = eventData.event.data;\n }\n callback(null, callbackValue);\n };\n};\n\nexport default SilentAuthenticationHandler;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport RequestBuilder from '../helper/request-builder';\nimport responseHandler from '../helper/response-handler';\nimport windowHelper from '../helper/window';\nimport TransactionManager from './transaction-manager';\n\nfunction UsernamePassword(options) {\n this.baseOptions = options;\n this.request = new RequestBuilder(options);\n this.transactionManager = new TransactionManager(this.baseOptions);\n}\n\nUsernamePassword.prototype.login = function(options, cb) {\n var url;\n var body;\n\n url = urljoin(this.baseOptions.rootUrl, 'usernamepassword', 'login');\n\n options.username = options.username || options.email; // eslint-disable-line\n\n options = objectHelper.blacklist(options, ['email', 'onRedirecting']); // eslint-disable-line\n\n body = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'tenant',\n 'responseType',\n 'responseMode',\n 'scope',\n 'audience'\n ])\n .with(options);\n body = this.transactionManager.process(body);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\nUsernamePassword.prototype.callback = function(formHtml) {\n var div;\n var form;\n var _document = windowHelper.getDocument();\n\n div = _document.createElement('div');\n div.innerHTML = formHtml;\n form = _document.body.appendChild(div).children[0];\n\n form.submit();\n};\n\nexport default UsernamePassword;\n","import urljoin from 'url-join';\nimport qs from 'qs';\n\nimport UsernamePassword from './username-password';\nimport RequestBuilder from '../helper/request-builder';\nimport responseHandler from '../helper/response-handler';\nimport objectHelper from '../helper/object';\nimport windowHelper from '../helper/window';\nimport Warn from '../helper/warn';\nimport assert from '../helper/assert';\n\nfunction HostedPages(client, options) {\n this.baseOptions = options;\n this.client = client;\n this.baseOptions.universalLoginPage = true;\n this.request = new RequestBuilder(this.baseOptions);\n\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n}\n\n/**\n * @callback credentialsCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the AuthN request\n * @param {String} result.accessToken token that can be used with {@link userinfo}\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @ignore\n */\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n * @ignore\n */\n\n/**\n * Performs authentication with username/email and password with a database connection\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link authorize} or {@link login}.\n *\n * @method login\n * @param {Object} options\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used. It can be any of the values `code` and `token`\n * @param {String} [options.responseMode] how the AuthN response is encoded and redirected back to the client. Supported values are `query` and `fragment`\n * @param {String} [options.scope] scopes to be requested during AuthN. e.g. `openid email`\n * @param {onRedirectingCallback} [options.onRedirecting] Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {credentialsCallback} cb\n * @ignore\n */\nHostedPages.prototype.login = function(options, cb) {\n if (windowHelper.getWindow().location.host !== this.baseOptions.domain) {\n throw new Error(\n 'This method is meant to be used only inside the Universal Login Page.'\n );\n }\n\n var usernamePassword;\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'tenant',\n 'responseType',\n 'responseMode',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n usernamePassword = new UsernamePassword(this.baseOptions);\n\n return usernamePassword.login(params, function(err, data) {\n if (err) {\n return cb(err);\n }\n\n function doAuth() {\n usernamePassword.callback(data);\n }\n\n if (typeof options.onRedirecting === 'function') {\n return options.onRedirecting(function() {\n doAuth();\n });\n }\n\n doAuth();\n });\n};\n\n/**\n * Signs up a new user and automatically logs the user in after the signup.\n *\n * @method signupAndLogin\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {credentialsCallback} cb\n * @ignore\n */\nHostedPages.prototype.signupAndLogin = function(options, cb) {\n var _this = this;\n return _this.client.client.dbConnection.signup(options, function(err) {\n if (err) {\n return cb(err);\n }\n return _this.login(options, cb);\n });\n};\n\nHostedPages.prototype.getSSOData = function(withActiveDirectories, cb) {\n var url;\n var params = '';\n\n if (typeof withActiveDirectories === 'function') {\n cb = withActiveDirectories;\n withActiveDirectories = false;\n }\n\n assert.check(withActiveDirectories, {\n type: 'boolean',\n message: 'withActiveDirectories parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (withActiveDirectories) {\n params =\n '?' +\n qs.stringify({\n ldaps: 1,\n client_id: this.baseOptions.clientID\n });\n }\n\n url = urljoin(this.baseOptions.rootUrl, 'user', 'ssodata', params);\n\n return this.request\n .get(url, { noHeaders: true })\n .withCredentials()\n .end(responseHandler(cb));\n};\n\nexport default HostedPages;\n","// eslint-disable-next-line no-unused-vars\nimport Authentication from '../authentication';\nimport object from '../helper/object';\n\nvar noop = function () { };\nvar captchaSolved = noop;\n\nvar Flow = {\n DEFAULT: 'default',\n PASSWORDLESS: 'passwordless',\n PASSWORD_RESET: 'password_reset'\n};\n\nvar RECAPTCHA_V2_PROVIDER = 'recaptcha_v2';\nvar RECAPTCHA_ENTERPRISE_PROVIDER = 'recaptcha_enterprise';\nvar HCAPTCHA_PROVIDER = 'hcaptcha';\nvar FRIENDLY_CAPTCHA_PROVIDER = 'friendly_captcha';\nvar ARKOSE_PROVIDER = 'arkose';\nvar AUTH0_PROVIDER = 'auth0';\nvar AUTH0_V2_CAPTCHA_PROVIDER = 'auth0_v2';\nvar MAX_RETRY = 3;\n\nvar defaults = {\n lang: 'en',\n templates: {\n auth0: function (challenge) {\n var message =\n challenge.type === 'code'\n ? 'Enter the code shown above'\n : 'Solve the formula shown above';\n return (\n '
\\n' +\n ' \\n' +\n ' \\n' +\n '
\\n' +\n ''\n );\n },\n recaptcha_v2: function () {\n return '
';\n },\n recaptcha_enterprise: function () {\n return '
';\n },\n hcaptcha: function () {\n return '
';\n },\n friendly_captcha: function () {\n return '
';\n },\n arkose: function () {\n return '
';\n },\n auth0_v2: function () {\n return '
';\n },\n error: function () {\n return '
Error getting the bot detection challenge. Please contact the system administrator.
';\n }\n }\n};\n\nfunction handleAuth0Provider(element, options, challenge, load) {\n element.innerHTML = options.templates[challenge.provider](challenge);\n element\n .querySelector('.captcha-reload')\n .addEventListener('click', function (e) {\n e.preventDefault();\n load();\n });\n}\n\nfunction globalForCaptchaProvider(provider) {\n switch (provider) {\n case RECAPTCHA_V2_PROVIDER:\n return window.grecaptcha;\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n return window.grecaptcha.enterprise;\n case HCAPTCHA_PROVIDER:\n return window.hcaptcha;\n case FRIENDLY_CAPTCHA_PROVIDER:\n return window.friendlyChallenge;\n case ARKOSE_PROVIDER:\n return window.arkose;\n case AUTH0_V2_CAPTCHA_PROVIDER:\n return window.turnstile;\n /* istanbul ignore next */\n default:\n throw new Error('Unknown captcha provider');\n }\n}\n\nfunction scriptForCaptchaProvider(\n provider,\n lang,\n callback,\n clientSubdomain,\n siteKey\n) {\n switch (provider) {\n case RECAPTCHA_V2_PROVIDER:\n return (\n 'https://www.recaptcha.net/recaptcha/api.js?hl=' +\n lang +\n '&onload=' +\n callback\n );\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n return (\n 'https://www.recaptcha.net/recaptcha/enterprise.js?render=explicit&hl=' +\n lang +\n '&onload=' +\n callback\n );\n case HCAPTCHA_PROVIDER:\n return (\n 'https://js.hcaptcha.com/1/api.js?hl=' + lang + '&onload=' + callback\n );\n case FRIENDLY_CAPTCHA_PROVIDER:\n return 'https://cdn.jsdelivr.net/npm/friendly-challenge@0.9.12/widget.min.js';\n case ARKOSE_PROVIDER:\n return (\n 'https://' +\n clientSubdomain +\n '.arkoselabs.com/v2/' +\n siteKey +\n '/api.js'\n );\n case AUTH0_V2_CAPTCHA_PROVIDER:\n return (\n 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload=' +\n callback\n );\n /* istanbul ignore next */\n default:\n throw new Error('Unknown captcha provider');\n }\n}\n\nfunction loadScript(url, attributes) {\n var script = window.document.createElement('script');\n for (var attr in attributes) {\n if (attr.startsWith('data-')) {\n script.dataset[attr.replace('data-', '')] = attributes[attr];\n } else {\n script[attr] = attributes[attr];\n }\n }\n script.src = url;\n window.document.body.appendChild(script);\n}\n\nfunction removeScript(url) {\n var scripts = window.document.querySelectorAll('script[src=\"' + url + '\"]');\n scripts.forEach(function (script) {\n script.remove();\n });\n}\n\nfunction injectCaptchaScript(element, opts, callback, setValue) {\n var callbackName =\n opts.provider + 'Callback_' + Math.floor(Math.random() * 1000001);\n var attributes = {\n async: true,\n defer: true\n };\n var scriptSrc = scriptForCaptchaProvider(\n opts.provider,\n opts.lang,\n callbackName,\n opts.clientSubdomain,\n opts.siteKey\n );\n if (\n opts.provider === ARKOSE_PROVIDER ||\n opts.provider === AUTH0_V2_CAPTCHA_PROVIDER\n ) {\n var retryCount = 0;\n attributes['data-callback'] = callbackName;\n attributes['onerror'] = function () {\n if (retryCount < MAX_RETRY) {\n removeScript(scriptSrc);\n loadScript(scriptSrc, attributes);\n retryCount++;\n return;\n }\n removeScript(scriptSrc);\n // Optimzation to tell auth0 to fail open if Arkose/auth0_v2 is configured to fail open\n setValue('BYPASS_CAPTCHA');\n };\n window[callbackName] = function (arkose) {\n window.arkose = arkose;\n callback(arkose);\n };\n } else {\n window[callbackName] = function () {\n delete window[callbackName];\n callback();\n };\n if (opts.provider === FRIENDLY_CAPTCHA_PROVIDER) {\n attributes['onload'] = window[callbackName];\n }\n }\n loadScript(scriptSrc, attributes);\n}\n\nfunction handleCaptchaProvider(element, options, challenge) {\n var widgetId =\n element.hasAttribute('data-wid') && element.getAttribute('data-wid');\n\n function setValue(value) {\n var input = element.querySelector('input[name=\"captcha\"]');\n input.value = value || '';\n }\n\n if (\n challenge.provider === FRIENDLY_CAPTCHA_PROVIDER &&\n window.auth0FCInstance\n ) {\n setValue();\n window.auth0FCInstance.reset();\n return;\n } else if (\n challenge.provider === ARKOSE_PROVIDER &&\n globalForCaptchaProvider(challenge.provider)\n ) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset();\n return;\n } else if (widgetId) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset(widgetId);\n return;\n }\n\n element.innerHTML = options.templates[challenge.provider](challenge);\n\n var captchaClass;\n switch (challenge.provider) {\n case RECAPTCHA_ENTERPRISE_PROVIDER:\n captchaClass = '.recaptcha';\n break;\n case RECAPTCHA_V2_PROVIDER:\n captchaClass = '.recaptcha';\n break;\n case HCAPTCHA_PROVIDER:\n captchaClass = '.hcaptcha';\n break;\n case FRIENDLY_CAPTCHA_PROVIDER:\n captchaClass = '.friendly-captcha';\n break;\n case ARKOSE_PROVIDER:\n captchaClass = '.arkose';\n break;\n case AUTH0_V2_CAPTCHA_PROVIDER:\n captchaClass = '.auth0_v2';\n break;\n }\n var captchaDiv = element.querySelector(captchaClass);\n\n injectCaptchaScript(\n element,\n {\n lang: options.lang,\n provider: challenge.provider,\n clientSubdomain: challenge.clientSubdomain,\n siteKey: challenge.siteKey\n },\n function (arkose) {\n var global = globalForCaptchaProvider(challenge.provider);\n if (challenge.provider === ARKOSE_PROVIDER) {\n var retryCount = 0;\n arkose.setConfig({\n onCompleted: function (response) {\n setValue(response.token);\n captchaSolved();\n },\n onError: function () {\n if (retryCount < MAX_RETRY) {\n setValue();\n arkose.reset();\n // To ensure reset is successful, we need to set a timeout here\n setTimeout(function () {\n arkose.run();\n }, 500);\n retryCount++;\n } else {\n // Optimzation to tell auth0 to fail open if Arkose is configured to fail open\n setValue('BYPASS_CAPTCHA');\n }\n }\n });\n } else if (challenge.provider === FRIENDLY_CAPTCHA_PROVIDER) {\n window.auth0FCInstance = new global.WidgetInstance(captchaDiv, {\n sitekey: challenge.siteKey,\n language: options.lang,\n doneCallback: function (solution) {\n setValue(solution);\n },\n errorCallback: function () {\n setValue();\n }\n });\n } else {\n var renderParams = {\n callback: setValue,\n 'expired-callback': function () {\n setValue();\n },\n 'error-callback': function () {\n setValue();\n },\n sitekey: challenge.siteKey\n };\n\n if (challenge.provider === AUTH0_V2_CAPTCHA_PROVIDER) {\n retryCount = 0;\n renderParams.language = options.lang;\n renderParams.theme = 'light';\n renderParams.retry = 'never';\n renderParams['response-field'] = false;\n renderParams['error-callback'] = function () {\n if (retryCount < MAX_RETRY) {\n setValue();\n globalForCaptchaProvider(challenge.provider).reset(widgetId);\n retryCount++;\n } else {\n setValue('BYPASS_CAPTCHA');\n }\n return true;\n };\n }\n widgetId = global.render(captchaDiv, renderParams);\n element.setAttribute('data-wid', widgetId);\n }\n },\n setValue\n );\n}\n\n/**\n *\n * Renders the captcha challenge in the provided element based on the flow.\n *\n * @param {Authentication} auth0Client The challenge response from the authentication server\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Flow} flow The flow for which the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for recaptcha\n * @param {Function} [callback] An optional callback called after captcha is loaded\n * @ignore\n */\nfunction render(auth0Client, flow, element, options, callback) {\n options = object.merge(defaults).with(options || {});\n function load(done) {\n done = done || noop;\n function challengeCallback(err, challenge) {\n if (err) {\n element.innerHTML = options.templates.error(err);\n return done(err);\n }\n if (!challenge.required) {\n element.style.display = 'none';\n element.innerHTML = '';\n return;\n }\n element.style.display = '';\n if (challenge.provider === AUTH0_PROVIDER) {\n handleAuth0Provider(element, options, challenge, load);\n } else if (\n challenge.provider === RECAPTCHA_V2_PROVIDER ||\n challenge.provider === RECAPTCHA_ENTERPRISE_PROVIDER ||\n challenge.provider === HCAPTCHA_PROVIDER ||\n challenge.provider === FRIENDLY_CAPTCHA_PROVIDER ||\n challenge.provider === ARKOSE_PROVIDER ||\n challenge.provider === AUTH0_V2_CAPTCHA_PROVIDER\n ) {\n handleCaptchaProvider(element, options, challenge);\n }\n if (challenge.provider === ARKOSE_PROVIDER) {\n done(null, {\n triggerCaptcha: function (solvedCallback) {\n globalForCaptchaProvider(challenge.provider).run();\n captchaSolved = solvedCallback;\n }\n });\n } else {\n done();\n }\n }\n if (flow === Flow.PASSWORDLESS) {\n auth0Client.passwordless.getChallenge(challengeCallback);\n } else if (flow === Flow.PASSWORD_RESET) {\n auth0Client.dbConnection.getPasswordResetChallenge(challengeCallback);\n } else {\n auth0Client.getChallenge(challengeCallback);\n }\n }\n\n function getValue() {\n var captchaInput = element.querySelector('input[name=\"captcha\"]');\n if (!captchaInput) {\n return;\n }\n return captchaInput.value;\n }\n\n load(callback);\n\n return {\n reload: load,\n getValue: getValue\n };\n}\n\n\nexport default { render: render, Flow: Flow };\n","import IdTokenVerifier from 'idtoken-verifier';\nimport qs from 'qs';\n\nimport assert from '../helper/assert';\nimport error from '../helper/error';\nimport PluginHandler from '../helper/plugins';\nimport windowHelper from '../helper/window';\nimport objectHelper from '../helper/object';\nimport SSODataStorage from '../helper/ssodata';\nimport responseHandler from '../helper/response-handler';\nimport TransactionManager from './transaction-manager';\nimport Authentication from '../authentication';\nimport Redirect from './redirect';\nimport Popup from './popup';\nimport SilentAuthenticationHandler from './silent-authentication-handler';\nimport CrossOriginAuthentication from './cross-origin-authentication';\nimport WebMessageHandler from './web-message-handler';\nimport HostedPages from './hosted-pages';\nimport captcha from './captcha';\n\nfunction defaultClock() {\n return new Date();\n}\n\n/**\n * Handles all the browser's AuthN/AuthZ flows\n * @constructor\n * @param {Object} options\n * @param {String} options.domain your Auth0 domain\n * @param {String} options.clientID the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {Number} [options.leeway] number of seconds to account for clock skew when validating time-based claims in ID tokens. Defaults to 60 seconds.\n * @param {Number} [options.maxAge] maximum elapsed time in seconds since the last time the user was actively authenticated by the authorization server.\n * @param {Number} [options.stateExpiration] number of minutes for the stored state to be kept. Defaults to 30 minutes.\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Array} [options.plugins]\n * @param {Boolean} [options.legacySameSiteCookie] set this to `false` to disable the legacy compatibility cookie that is created for older browsers that don't support the SameSite attribute (defaults to `true`)\n * @param {String} [options.cookieDomain] The domain the cookie is accessible from. If not set, the cookie is scoped to the current domain, including the subdomain. To keep a user logged in across multiple subdomains set this to your top-level domain and prefixed with a `.` (eg: `.example.com`).\n * @param {Number} [options._timesToRetryFailedRequests] Number of times to retry a failed request, according to {@link https://github.com/visionmedia/superagent/blob/master/lib/request-base.js}\n * @see {@link https://auth0.com/docs/api/authentication}\n */\nfunction WebAuth(options) {\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n clientID: { type: 'string', message: 'clientID option is required' },\n responseType: {\n optional: true,\n type: 'string',\n message: 'responseType is not valid'\n },\n responseMode: {\n optional: true,\n type: 'string',\n message: 'responseMode is not valid'\n },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri is not valid'\n },\n scope: { optional: true, type: 'string', message: 'scope is not valid' },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience is not valid'\n },\n popupOrigin: {\n optional: true,\n type: 'string',\n message: 'popupOrigin is not valid'\n },\n leeway: {\n optional: true,\n type: 'number',\n message: 'leeway is not valid'\n },\n plugins: {\n optional: true,\n type: 'array',\n message: 'plugins is not valid'\n },\n maxAge: {\n optional: true,\n type: 'number',\n message: 'maxAge is not valid'\n },\n stateExpiration: {\n optional: true,\n type: 'number',\n message: 'stateExpiration is not valid'\n },\n legacySameSiteCookie: {\n optional: true,\n type: 'boolean',\n message: 'legacySameSiteCookie option is not valid'\n },\n _disableDeprecationWarnings: {\n optional: true,\n type: 'boolean',\n message: '_disableDeprecationWarnings option is not valid'\n },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n },\n _timesToRetryFailedRequests: {\n optional: true,\n type: 'number',\n message: '_timesToRetryFailedRequests option is not valid'\n }\n }\n );\n\n if (options.overrides) {\n assert.check(\n options.overrides,\n { type: 'object', message: 'overrides option is not valid' },\n {\n __tenant: {\n optional: true,\n type: 'string',\n message: '__tenant option is required'\n },\n __token_issuer: {\n optional: true,\n type: 'string',\n message: '__token_issuer option is required'\n },\n __jwks_uri: {\n optional: true,\n type: 'string',\n message: '__jwks_uri is required'\n }\n }\n );\n }\n /* eslint-enable */\n\n this.baseOptions = options;\n this.baseOptions.plugins = new PluginHandler(\n this,\n this.baseOptions.plugins || []\n );\n\n this.baseOptions._sendTelemetry =\n this.baseOptions._sendTelemetry === false\n ? this.baseOptions._sendTelemetry\n : true;\n\n this.baseOptions._timesToRetryFailedRequests =\n options._timesToRetryFailedRequests\n ? parseInt(options._timesToRetryFailedRequests)\n : 0;\n\n this.baseOptions.tenant =\n (this.baseOptions.overrides && this.baseOptions.overrides.__tenant) ||\n this.baseOptions.domain.split('.')[0];\n\n this.baseOptions.token_issuer =\n (this.baseOptions.overrides && this.baseOptions.overrides.__token_issuer) ||\n 'https://' + this.baseOptions.domain + '/';\n\n this.baseOptions.jwksURI =\n this.baseOptions.overrides && this.baseOptions.overrides.__jwks_uri;\n\n if (options.legacySameSiteCookie !== false) {\n this.baseOptions.legacySameSiteCookie = true;\n }\n\n this.transactionManager = new TransactionManager(this.baseOptions);\n\n this.client = new Authentication(this.baseOptions);\n\n /** @member {Redirect} */\n this.redirect = new Redirect(this, this.baseOptions);\n\n /** @member {Popup} */\n this.popup = new Popup(this, this.baseOptions);\n\n this.crossOriginAuthentication = new CrossOriginAuthentication(\n this,\n this.baseOptions\n );\n\n this.webMessageHandler = new WebMessageHandler(this);\n this._universalLogin = new HostedPages(this, this.baseOptions);\n this.ssodataStorage = new SSODataStorage(this.baseOptions);\n}\n\n/**\n * Parse the url hash and extract the Auth response from a Auth flow started with {@link authorize}\n *\n * Only validates id_tokens signed by Auth0 using the RS256 algorithm using the public key exposed\n * by the `/.well-known/jwks.json` endpoint of your account.\n * Tokens signed with the HS256 algorithm cannot be properly validated.\n * Instead, a call to {@link userInfo} will be made with the parsed `access_token`.\n * If the {@link userInfo} call fails, the {@link userInfo} error will be passed to the callback.\n * Tokens signed with other algorithms will not be accepted.\n *\n * @example\n * auth0.parseHash({ hash: window.location.hash }, function(err, authResult) {\n * if (err) {\n * return console.log(err);\n * }\n\n * // The contents of authResult depend on which authentication parameters were used.\n * // It can include the following:\n * // authResult.accessToken - access token for the API specified by `audience`\n * // authResult.expiresIn - string with the access token's expiration time in seconds\n * // authResult.idToken - ID token JWT containing user profile information\n\n * auth0.client.userInfo(authResult.accessToken, function(err, user) {\n * // Now you have the user's information\n * });\n *});\n * @method parseHash\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `token`, `id_token`. For this specific method, we'll only use this value to check if the hash contains the tokens requested in the responseType.\n * @param {authorizeCallback} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.parseHash = function (options, cb) {\n var parsedQs;\n var err;\n\n if (!cb && typeof options === 'function') {\n cb = options;\n options = {};\n } else {\n options = options || {};\n }\n\n var hashStr =\n options.hash === undefined\n ? windowHelper.getWindow().location.hash\n : options.hash;\n hashStr = hashStr.replace(/^#?\\/?/, '');\n\n parsedQs = qs.parse(hashStr);\n\n if (parsedQs.hasOwnProperty('error')) {\n err = error.buildResponse(parsedQs.error, parsedQs.error_description);\n\n if (parsedQs.state) {\n err.state = parsedQs.state;\n }\n\n return cb(err);\n }\n\n if (\n !parsedQs.hasOwnProperty('access_token') &&\n !parsedQs.hasOwnProperty('id_token') &&\n !parsedQs.hasOwnProperty('refresh_token')\n ) {\n return cb(null, null);\n }\n var responseTypes = (\n this.baseOptions.responseType ||\n options.responseType ||\n ''\n ).split(' ');\n if (\n responseTypes.length > 0 &&\n responseTypes.indexOf('token') !== -1 &&\n !parsedQs.hasOwnProperty('access_token')\n ) {\n return cb(\n error.buildResponse(\n 'invalid_hash',\n 'response_type contains `token`, but the parsed hash does not contain an `access_token` property'\n )\n );\n }\n if (\n responseTypes.length > 0 &&\n responseTypes.indexOf('id_token') !== -1 &&\n !parsedQs.hasOwnProperty('id_token')\n ) {\n return cb(\n error.buildResponse(\n 'invalid_hash',\n 'response_type contains `id_token`, but the parsed hash does not contain an `id_token` property'\n )\n );\n }\n return this.validateAuthenticationResponse(options, parsedQs, cb);\n};\n\n/**\n * Validates an Auth response from a Auth flow started with {@link authorize}\n *\n * Only validates id_tokens signed by Auth0 using the RS256 algorithm using the public key exposed\n * by the `/.well-known/jwks.json` endpoint of your account.\n * Tokens signed with the HS256 algorithm cannot be properly validated.\n * Instead, a call to {@link userInfo} will be made with the parsed `access_token`.\n * If the {@link userInfo} call fails, the {@link userInfo} error will be passed to the callback.\n * Tokens signed with other algorithms will not be accepted.\n *\n * @method validateAuthenticationResponse\n * @param {Object} options\n * @param {String} options.hash the url hash. If not provided it will extract from window.location.hash\n * @param {String} [options.state] value originally sent in `state` parameter to {@link authorize} to mitigate XSRF\n * @param {String} [options.nonce] value originally sent in `nonce` parameter to {@link authorize} to prevent replay attacks\n * @param {Object} parsedHash an object that represents the parsed hash\n * @param {authorizeCallback} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.validateAuthenticationResponse = function (\n options,\n parsedHash,\n cb\n) {\n var _this = this;\n\n options.__enableIdPInitiatedLogin =\n options.__enableIdPInitiatedLogin || options.__enableImpersonation;\n\n var state = parsedHash.state;\n var transaction = this.transactionManager.getStoredTransaction(state);\n\n var transactionState =\n options.state || (transaction && transaction.state) || null;\n\n var transactionStateMatchesState = transactionState === state;\n\n var shouldBypassStateChecking =\n !state && !transactionState && options.__enableIdPInitiatedLogin;\n\n if (!shouldBypassStateChecking && !transactionStateMatchesState) {\n return cb({\n error: 'invalid_token',\n errorDescription: '`state` does not match.'\n });\n }\n\n var transactionNonce =\n options.nonce || (transaction && transaction.nonce) || null;\n\n var transactionOrganization = transaction && transaction.organization;\n var appState = options.state || (transaction && transaction.appState) || null;\n\n var callback = function (err, payload) {\n if (err) {\n return cb(err);\n }\n\n if (transaction && transaction.lastUsedConnection) {\n var sub;\n\n if (payload) {\n sub = payload.sub;\n }\n\n _this.ssodataStorage.set(transaction.lastUsedConnection, sub);\n }\n\n return cb(null, buildParseHashResponse(parsedHash, appState, payload));\n };\n\n if (!parsedHash.id_token) {\n return callback(null, null);\n }\n\n return this.validateToken(\n parsedHash.id_token,\n transactionNonce,\n function (validationError, payload) {\n if (!validationError) {\n // Verify the organization\n if (transactionOrganization) {\n if (transactionOrganization.indexOf('org_') === 0) {\n if (!payload.org_id) {\n return callback(\n error.invalidToken(\n 'Organization Id (org_id) claim must be a string present in the ID token'\n )\n );\n }\n\n if (payload.org_id !== transactionOrganization) {\n return callback(\n error.invalidToken(\n 'Organization Id (org_id) claim value mismatch in the ID token; expected \"' +\n transactionOrganization +\n '\", found \"' +\n payload.org_id +\n '\"'\n )\n );\n }\n } else {\n if (!payload.org_name) {\n return callback(\n error.invalidToken(\n 'Organization Name (org_name) claim must be a string present in the ID token'\n )\n );\n }\n\n if (payload.org_name !== transactionOrganization.toLowerCase()) {\n return callback(\n error.invalidToken(\n 'Organization Name (org_name) claim value mismatch in the ID token; expected \"' +\n transactionOrganization +\n '\", found \"' +\n payload.org_name +\n '\"'\n )\n );\n }\n }\n }\n\n if (!parsedHash.access_token) {\n return callback(null, payload);\n }\n\n // id_token's generated by non-oidc applications don't have at_hash\n if (!payload.at_hash) {\n return callback(null, payload);\n }\n\n // here we're absolutely sure that the id_token's alg is RS256\n // and that the id_token is valid, so we can check the access_token\n return new IdTokenVerifier().validateAccessToken(\n parsedHash.access_token,\n 'RS256',\n payload.at_hash,\n function (err) {\n if (err) {\n return callback(error.invalidToken(err.message));\n }\n return callback(null, payload);\n }\n );\n }\n\n if (\n validationError.error !== 'invalid_token' ||\n (validationError.errorDescription &&\n validationError.errorDescription.indexOf(\n 'Nonce (nonce) claim value mismatch in the ID token'\n ) > -1)\n ) {\n return callback(validationError);\n }\n\n // if it's an invalid_token error, decode the token\n var decodedToken = new IdTokenVerifier().decode(parsedHash.id_token);\n\n // if the alg is not HS256, return the raw error\n if (decodedToken.header.alg !== 'HS256') {\n return callback(validationError);\n }\n\n if ((decodedToken.payload.nonce || null) !== transactionNonce) {\n return callback({\n error: 'invalid_token',\n errorDescription:\n 'Nonce (nonce) claim value mismatch in the ID token; expected \"' +\n transactionNonce +\n '\", found \"' +\n decodedToken.payload.nonce +\n '\"'\n });\n }\n\n if (!parsedHash.access_token) {\n var noAccessTokenError = {\n error: 'invalid_token',\n description:\n 'The id_token cannot be validated because it was signed with the HS256 algorithm and public clients (like a browser) can’t store secrets. Please read the associated doc for possible ways to fix this. Read more: https://auth0.com/docs/errors/libraries/auth0-js/invalid-token#parsing-an-hs256-signed-id-token-without-an-access-token'\n };\n return callback(noAccessTokenError);\n }\n\n // if the alg is HS256, use the /userinfo endpoint to build the payload\n return _this.client.userInfo(\n parsedHash.access_token,\n function (errUserInfo, profile) {\n // if the /userinfo request fails, use the validationError instead\n if (errUserInfo) {\n return callback(errUserInfo);\n }\n return callback(null, profile);\n }\n );\n }\n );\n};\n\nfunction buildParseHashResponse(qsParams, appState, token) {\n return {\n accessToken: qsParams.access_token || null,\n idToken: qsParams.id_token || null,\n idTokenPayload: token || null,\n appState: appState || null,\n refreshToken: qsParams.refresh_token || null,\n state: qsParams.state || null,\n expiresIn: qsParams.expires_in ? parseInt(qsParams.expires_in, 10) : null,\n tokenType: qsParams.token_type || null,\n scope: qsParams.scope || null\n };\n}\n\n/**\n * @callback validateTokenCallback\n * @param {Error} [err] error returned by while validating the token\n * @param {Object} [payload] claims stored in the token\n */\n\n/**\n * Decodes the a JWT and verifies its nonce value\n *\n * @method validateToken\n * @private\n * @param {String} token\n * @param {String} nonce\n * @param {validateTokenCallback} cb\n */\nWebAuth.prototype.validateToken = function (token, nonce, cb) {\n var verifier = new IdTokenVerifier({\n issuer: this.baseOptions.token_issuer,\n jwksURI: this.baseOptions.jwksURI,\n audience: this.baseOptions.clientID,\n leeway: this.baseOptions.leeway || 60,\n maxAge: this.baseOptions.maxAge,\n __clock: this.baseOptions.__clock || defaultClock\n });\n\n verifier.verify(token, nonce, function (err, payload) {\n if (err) {\n return cb(error.invalidToken(err.message));\n }\n\n cb(null, payload);\n });\n};\n\n/**\n * Executes a silent authentication transaction under the hood in order to fetch a new tokens for the current session.\n * This method requires that all Auth is performed with {@link authorize}\n * Watch out! If you're not using the hosted login page to do social logins, you have to use your own [social connection keys](https://manage.auth0.com/#/connections/social). If you use Auth0's dev keys, you'll always get `login_required` as an error when calling this method.\n *\n * @method renewAuth\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.postMessageDataType] identifier data type to look for in postMessage event data, where events are initiated from silent callback urls, before accepting a message event is the event expected. A value of false means any postMessage event will trigger a callback.\n * @param {String} [options.postMessageOrigin] origin of redirectUri to expect postMessage response from. Defaults to the origin of the receiving window. Only used if usePostMessage is truthy.\n * @param {String} [options.timeout] value in milliseconds used to timeout when the `/authorize` call is failing as part of the silent authentication with postmessage enabled due to a configuration.\n * @param {Boolean} [options.usePostMessage] use postMessage to comunicate between the silent callback and the SPA. When false the SDK will attempt to parse the url hash should ignore the url hash and no extra behaviour is needed\n * @param {authorizeCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renewAuth = function (options, cb) {\n var handler;\n var usePostMessage = !!options.usePostMessage;\n var postMessageDataType = options.postMessageDataType || false;\n var postMessageOrigin =\n options.postMessageOrigin || windowHelper.getWindow().origin;\n var timeout = options.timeout;\n var _this = this;\n\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'redirectUri',\n 'responseType',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n params.responseType = params.responseType || 'token';\n params.responseMode = params.responseMode || 'fragment';\n params = this.transactionManager.process(params);\n\n assert.check(params, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n params.prompt = 'none';\n\n params = objectHelper.blacklist(params, [\n 'usePostMessage',\n 'tenant',\n 'postMessageDataType',\n 'postMessageOrigin'\n ]);\n\n handler = SilentAuthenticationHandler.create({\n authenticationUrl: this.client.buildAuthorizeUrl(params),\n postMessageDataType: postMessageDataType,\n postMessageOrigin: postMessageOrigin,\n timeout: timeout\n });\n\n handler.login(usePostMessage, function (err, hash) {\n if (typeof hash === 'object') {\n // hash was already parsed, so we just return it.\n // it's here to be backwards compatible and should be removed in the next major version.\n return cb(err, hash);\n }\n _this.parseHash({ hash: hash }, cb);\n });\n};\n\n/**\n * Renews an existing session on Auth0's servers using `response_mode=web_message`\n *\n * Allows you to acquire a new token from Auth0 for a user who already\n * has an SSO session established against Auth0 for your domain. \n * If the user is not authenticated, the authentication result will be empty \n * and you'll receive an error like this: `{error: 'login_required'}`.\n * The method accepts any valid OAuth2 parameters that would normally be sent to `/authorize`.\n * \n * Everything happens inside an iframe, so it will not reload your application or redirect away from it.\n * \n * **Important:** If you're not using the hosted login page to do social logins, \n * you have to use your own [social connection keys](https://manage.auth0.com/#/connections/social). \n * If you use Auth0's dev keys, you'll always get `login_required` as an error when calling `checkSession`.\n *\n * **Important:** Because there is no redirect in this method, `responseType: 'code'` is not supported and will throw an error.\n\n * Remember to add the URL where the authorization request originates from to the Allowed Web Origins list of your Auth0 Application in the [Dashboard](https://manage.auth0.com/) under your Applications's **Settings**.\n * @example\n * auth0.checkSession({\n * audience: 'https://mystore.com/api/v2',\n * scope: 'read:order write:order'\n * },\n * function(err, authResult) {\n * // Authentication tokens or error\n * });\n * \n * @method checkSession\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.timeout] value in milliseconds used to timeout when the `/authorize` call is failing as part of the silent authentication with postmessage enabled due to a configuration.\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {checkSessionCallback} cb\n * @see {@link https://auth0.com/docs/libraries/auth0js/v9#using-checksession-to-acquire-new-tokens}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.checkSession = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options);\n\n if (params.responseType === 'code') {\n return cb({\n error: 'error',\n error_description: \"responseType can't be `code`\"\n });\n }\n\n if (!options.nonce) {\n params = this.transactionManager.process(params);\n }\n\n if (!params.redirectUri) {\n return cb({\n error: 'error',\n error_description: \"redirectUri can't be empty\"\n });\n }\n\n assert.check(params, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n params = objectHelper.blacklist(params, [\n 'usePostMessage',\n 'tenant',\n 'postMessageDataType'\n ]);\n this.webMessageHandler.run(\n params,\n responseHandler(cb, { forceLegacyError: true, ignoreCasing: true })\n );\n};\n\n/**\n * Request an email with instruction to change a user's password\n *\n * @method changePassword\n * @param {Object} options\n * @param {String} options.email address where the user will receive the change password email. It should match the user's email in Auth0\n * @param {String} options.connection name of the connection where the user was created\n * @param {changePasswordCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#change-password}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.changePassword = function (options, cb) {\n return this.client.dbConnection.changePassword(options, cb);\n};\n\n/**\n * Starts a passwordless authentication transaction.\n *\n * @method passwordlessStart\n * @param {Object} options\n * @param {String} options.send what will be sent via email which could be `link` or `code`. For SMS `code` is the only one valid\n * @param {String} [options.phoneNumber] phone number where to send the `code`. This parameter is mutually exclusive with `email`\n * @param {String} [options.email] email where to send the `code` or `link`. This parameter is mutually exclusive with `phoneNumber`\n * @param {String} [options.captcha] the attempted solution for the captcha, if one was presented\n * @param {String} options.connection name of the passwordless connection\n * @param {Object} [options.authParams] additional Auth parameters when using `link`\n * @param {Object} [options.xRequestLanguage] value for the X-Request-Language header. If not set, the language is detected using the client browser.\n * @param {Function} cb\n * @see {@link https://auth0.com/docs/api/authentication#passwordless}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessStart = function (options, cb) {\n var authParams = objectHelper\n .merge(this.baseOptions, [\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce'\n ])\n .with(options.authParams);\n\n options.authParams = this.transactionManager.process(authParams);\n return this.client.passwordless.start(options, cb);\n};\n\n/**\n * Creates a new user in a Auth0 Database connection\n *\n * @method signup\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {String} [options.given_name] The user's given name(s).\n * @param {String} [options.family_name] The user's family name(s).\n * @param {String} [options.name] The user's full name.\n * @param {String} [options.nickname] The user's nickname.\n * @param {String} [options.picture] A URI pointing to the user's picture.\n * @param {signUpCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.signup = function (options, cb) {\n return this.client.dbConnection.signup(options, cb);\n};\n\n/**\n * Redirects to the hosted login page (`/authorize`) in order to start a new authN/authZ transaction.\n * After that, you'll have to use the {@link parseHash} function at the specified `redirectUri`.\n *\n * @example\n * auth0.authorize({\n * audience: 'https://mystore.com/api/v2',\n * scope: 'read:order write:order',\n * responseType: 'token',\n * redirectUri: 'https://example.com/auth/callback'\n *});\n * @method authorize\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. The `query` value is only supported when `responseType` is `code`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`. Defaults to `openid profile email`.\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.organization] the id or name of an organization to log in to\n * @param {String} [options.invitation] the ID of an invitation to accept. This is available from the user invitation URL that is given when participating in a user invitation flow\n * @param {Object} [options.appState] any values that you want back on the authentication response\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.authorize = function (options) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'organization',\n 'invitation'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n params = this.transactionManager.process(params);\n params.scope = params.scope || 'openid profile email';\n\n windowHelper.redirect(this.client.buildAuthorizeUrl(params));\n};\n\n/**\n * Signs up a new user, automatically logs the user in after the signup and returns the user token.\n * The login will be done using /oauth/token with password-realm grant type.\n *\n * @method signupAndAuthorize\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} options.connection name of the connection where the user will be created\n * @param {tokenCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @see {@link https://auth0.com/docs/api-auth/grant/password}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.signupAndAuthorize = function (options, cb) {\n var _this = this;\n\n return this.client.dbConnection.signup(\n objectHelper.blacklist(options, ['popupHandler']),\n function (err) {\n if (err) {\n return cb(err);\n }\n options.realm = options.connection;\n if (!options.username) {\n options.username = options.email;\n }\n _this.client.login(options, cb);\n }\n );\n};\n\n/**\n * @callback crossOriginLoginCallback\n * @param {Error} [err] Authentication error returned by Auth0 with the reason why the request failed\n */\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Logs the user in with username and password using the correct flow based on where it's called from:\n * - If you're calling this method from the Universal Login Page, it will use the usernamepassword/login endpoint\n * - If you're calling this method outside the Universal Login Page, it will use the cross origin authentication (/co/authenticate) flow\n * You can use either `username` or `email` to identify the user, but `username` will take precedence over `email`.\n * After the redirect to `redirectUri`, use {@link parseHash} to retrieve the authentication data.\n * **Notice that when using the cross origin authentication flow, some browsers might not be able to successfully authenticate if 3rd party cookies are disabled. [See here for more information.]{@link https://auth0.com/docs/cross-origin-authentication}.**\n *\n * @method login\n * @see Requires [`Implicit` grant]{@link https://auth0.com/docs/api-auth/grant/implicit}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} [options.username] Username (mutually exclusive with email)\n * @param {String} [options.email] Email (mutually exclusive with username)\n * @param {String} [options.password] Password\n * @param {String} [options.realm] Realm used to authenticate the user, it can be a realm name or a database connection name\n * @param {String} [options.captcha] the attempted solution for the captcha, if one was presented\n * @param {onRedirectingCallback} [options.onRedirecting] Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.login = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting',\n 'organization',\n 'invitation'\n ])\n .with(options);\n\n params = this.transactionManager.process(params);\n\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n\n if (isHostedLoginPage) {\n params.connection = params.realm;\n delete params.realm;\n this._universalLogin.login(params, cb);\n } else {\n this.crossOriginAuthentication.login(params, cb);\n }\n};\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Logs in the user by verifying the verification code (OTP) using the cross origin authentication (/co/authenticate) flow. You can use either `phoneNumber` or `email` to identify the user.\n * This only works when 3rd party cookies are enabled in the browser. After the /co/authenticate call, you'll have to use the {@link parseHash} function at the `redirectUri` specified in the constructor.\n *\n * @method passwordlessLogin\n * @param {Object} options options used in the {@link authorize} call after the login_ticket is acquired\n * @param {String} options.phoneNumber Phone Number (mutually exclusive with email)\n * @param {String} options.email Email (mutually exclusive with username)\n * @param {String} options.verificationCode Verification Code (OTP)\n * @param {String} options.connection Passwordless connection to use. It can either be 'sms' or 'email'.\n * @param {onRedirectingCallback} options.onRedirecting Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {crossOriginLoginCallback} cb Callback function called only when an authentication error, like invalid username or password, occurs. For other types of errors, there will be a redirect to the `redirectUri`.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessLogin = function (options, cb) {\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting'\n ])\n .with(options);\n\n params = this.transactionManager.process(params);\n\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n\n if (isHostedLoginPage) {\n this.passwordlessVerify(params, cb);\n } else {\n var crossOriginOptions = objectHelper.extend(\n {\n credentialType: 'http://auth0.com/oauth/grant-type/passwordless/otp',\n realm: params.connection,\n username: params.email || params.phoneNumber,\n otp: params.verificationCode\n },\n objectHelper.blacklist(params, [\n 'connection',\n 'email',\n 'phoneNumber',\n 'verificationCode'\n ])\n );\n\n this.crossOriginAuthentication.login(crossOriginOptions, cb);\n }\n};\n\n/**\n * Runs the callback code for the cross origin authentication call. This method is meant to be called by the cross origin authentication callback url.\n *\n * @method crossOriginAuthenticationCallback\n * @deprecated Use {@link crossOriginVerification} instead.\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.crossOriginAuthenticationCallback = function () {\n this.crossOriginVerification();\n};\n\n/**\n * Runs the callback code for the cross origin authentication call. This method is meant to be called by the cross origin authentication callback url.\n *\n * @method crossOriginVerification\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.crossOriginVerification = function () {\n this.crossOriginAuthentication.callback();\n};\n\n/**\n * Redirects to the auth0 logout endpoint\n *\n * If you want to navigate the user to a specific URL after the logout, set that URL at the returnTo parameter. The URL should be included in any the appropriate Allowed Logout URLs list:\n *\n * - If the client_id parameter is included, the returnTo URL must be listed in the Allowed Logout URLs set at the Auth0 Application level (see Setting Allowed Logout URLs at the App Level).\n * - If the client_id parameter is NOT included, the returnTo URL must be listed in the Allowed Logout URLs set at the account level (see Setting Allowed Logout URLs at the Account Level).\n *\n * @method logout\n * @param {Object} [options]\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.returnTo] URL to be redirected after the logout\n * @param {Boolean} [options.federated] tells Auth0 if it should logout the user also from the IdP.\n * @see {@link https://auth0.com/docs/api/authentication#logout}\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.logout = function (options) {\n windowHelper.redirect(this.client.buildLogoutUrl(options));\n};\n\n/**\n * @callback onRedirectingCallback\n * @param {function} done Must be called when finished so that authentication can be resumed\n */\n\n/**\n * Verifies the passwordless TOTP and redirects to finish the passwordless transaction\n *\n * @method passwordlessVerify\n * @param {Object} options\n * @param {String} options.type `sms` or `email`\n * @param {String} options.phoneNumber only if type = sms\n * @param {String} options.email only if type = email\n * @param {String} options.connection the connection name\n * @param {String} options.verificationCode the TOTP code\n * @param {String} options.clientID the client ID\n * @param {onRedirectingCallback} options.onRedirecting Hook function that is called before redirecting to /authorize, allowing you to handle custom code. You must call the `done` function to resume authentication.\n * @param {Function} cb\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.passwordlessVerify = function (options, cb) {\n var _this = this;\n var params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'nonce',\n 'onRedirecting'\n ])\n .with(options);\n\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n }\n }\n );\n\n params = this.transactionManager.process(params);\n\n return this.client.passwordless.verify(params, function (err) {\n if (err) {\n return cb(err);\n }\n\n function doAuth() {\n windowHelper.redirect(_this.client.passwordless.buildVerifyUrl(params));\n }\n\n if (typeof options.onRedirecting === 'function') {\n return options.onRedirecting(function () {\n doAuth();\n });\n }\n\n doAuth();\n });\n};\n\n/**\n * @callback captchaLoadedCallback\n * @param {Error} [error] Error returned if request to get captcha challenge fails\n * @param {Object} [payload] An object containing a callback to trigger the captcha (only if Arkose is the provider)\n * @param {Function} [payload.triggerCaptcha] Triggers the captcha with the first parameter as a callback to be fired after it's solved\n */\n\n/**\n *\n * Renders the captcha challenge in the provided element.\n * This function can only be used in the context of a Classic Universal Login Page.\n *\n * @method renderCaptcha\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for the captcha provider\n * @param {captchaLoadedCallback} [callback] An optional callback called after captcha is loaded\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renderCaptcha = function (element, options, callback) {\n return captcha.render(this.client, captcha.Flow.DEFAULT, element, options, callback);\n};\n\n/**\n *\n * Renders the passwordless captcha challenge in the provided element.\n * This function can only be used in the context of a Classic Universal Login Page.\n *\n * @method renderPasswordlessCaptcha\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for the captcha provider\n * @param {captchaLoadedCallback} [callback] An optional callback called after captcha is loaded\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renderPasswordlessCaptcha = function (\n element,\n options,\n callback\n) {\n return captcha.render(this.client, captcha.Flow.PASSWORDLESS, element, options, callback);\n};\n\n/**\n *\n * Renders the password reset captcha challenge in the provided element.\n * This function can only be used in the context of a Classic Universal Login Page.\n *\n * @method renderPasswordResetCaptcha\n * @param {HTMLElement} element The element where the captcha needs to be rendered\n * @param {Object} options The configuration options for the captcha\n * @param {Object} [options.templates] An object containing templates for each captcha provider\n * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string\n * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument\n * @param {String} [options.lang=en] the ISO code of the language for the captcha provider\n * @param {captchaLoadedCallback} [callback] An optional callback called after captcha is loaded\n * @memberof WebAuth.prototype\n */\nWebAuth.prototype.renderPasswordResetCaptcha = function (\n element,\n options,\n callback\n) {\n return captcha.render(this.client, captcha.Flow.PASSWORD_RESET, element, options, callback);\n};\n\nexport default WebAuth;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport qs from 'qs';\nimport responseHandler from '../helper/response-handler';\n\nfunction PasswordlessAuthentication(request, options) {\n this.baseOptions = options;\n this.request = request;\n}\n\nPasswordlessAuthentication.prototype.buildVerifyUrl = function(options) {\n var params;\n var qString;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n verificationCode: {\n type: 'string',\n message: 'verificationCode option is required'\n },\n phoneNumber: {\n optional: false,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return !o.email;\n }\n },\n email: {\n optional: false,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return !o.phoneNumber;\n }\n }\n }\n );\n /* eslint-enable */\n\n params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience',\n '_csrf',\n 'state',\n '_intstate',\n 'protocol',\n 'nonce'\n ])\n .with(options);\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n params = objectHelper.toSnakeCase(params, ['auth0Client']);\n\n qString = qs.stringify(params);\n\n return urljoin(\n this.baseOptions.rootUrl,\n 'passwordless',\n 'verify_redirect',\n '?' + qString\n );\n};\n\nPasswordlessAuthentication.prototype.start = function(options, cb) {\n var url;\n var body;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n send: {\n type: 'string',\n message: 'send option is required',\n values: ['link', 'code'],\n value_message: 'send is not valid ([link, code])'\n },\n phoneNumber: {\n optional: true,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return o.send === 'code' || !o.email;\n }\n },\n email: {\n optional: true,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return o.send === 'link' || !o.phoneNumber;\n }\n },\n authParams: {\n optional: true,\n type: 'object',\n message: 'authParams option is required'\n }\n }\n );\n /* eslint-enable */\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'start');\n\n var xRequestLanguage = options.xRequestLanguage;\n delete options.xRequestLanguage;\n\n body = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'redirectUri',\n 'scope'\n ])\n .with(options);\n\n if (body.scope) {\n body.authParams = body.authParams || {};\n body.authParams.scope = body.authParams.scope || body.scope;\n }\n\n if (body.redirectUri) {\n body.authParams = body.authParams || {};\n body.authParams.redirect_uri =\n body.authParams.redirectUri || body.redirectUri;\n }\n\n if (body.responseType) {\n body.authParams = body.authParams || {};\n body.authParams.response_type =\n body.authParams.responseType || body.responseType;\n }\n\n delete body.redirectUri;\n delete body.responseType;\n delete body.scope;\n\n body = objectHelper.toSnakeCase(body, ['auth0Client', 'authParams']);\n\n var postOptions = xRequestLanguage\n ? { xRequestLanguage: xRequestLanguage }\n : undefined;\n\n return this.request\n .post(url, postOptions)\n .send(body)\n .end(responseHandler(cb));\n};\n\nPasswordlessAuthentication.prototype.verify = function(options, cb) {\n var url;\n var cleanOption;\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n verificationCode: {\n type: 'string',\n message: 'verificationCode option is required'\n },\n phoneNumber: {\n optional: false,\n type: 'string',\n message: 'phoneNumber option is required',\n condition: function(o) {\n return !o.email;\n }\n },\n email: {\n optional: false,\n type: 'string',\n message: 'email option is required',\n condition: function(o) {\n return !o.phoneNumber;\n }\n }\n }\n );\n /* eslint-enable */\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n cleanOption = objectHelper.pick(options, [\n 'connection',\n 'verificationCode',\n 'phoneNumber',\n 'email',\n 'auth0Client',\n 'clientID'\n ]);\n cleanOption = objectHelper.toSnakeCase(cleanOption, ['auth0Client']);\n\n url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'verify');\n\n return this.request\n .post(url)\n .send(cleanOption)\n .end(responseHandler(cb));\n};\n\n/**\n * Makes a call to the `/passwordless/challenge` endpoint\n * and returns the challenge (captcha) if necessary.\n *\n * @method getChallenge\n * @param {callback} cb\n * @memberof PasswordlessAuthentication.prototype\n */\nPasswordlessAuthentication.prototype.getChallenge = function(cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'passwordless', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default PasswordlessAuthentication;\n","import urljoin from 'url-join';\n\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\n\nfunction DBConnection(request, options) {\n this.baseOptions = options;\n this.request = request;\n}\n\n/**\n * @callback signUpCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the signup failed\n * @param {Object} [result] result of the signup request\n * @param {Object} result.email user's email\n * @param {Object} result.emailVerified if the user's email was verified\n * @ignore\n */\n\n/**\n * Creates a new user in a Auth0 Database connection\n *\n * @method signup\n * @param {Object} options\n * @param {String} options.email user email address\n * @param {String} options.password user password\n * @param {String} [options.username] user desired username. Required if you use a database connection and you have enabled `Requires Username`\n * @param {String} [options.given_name] The user's given name(s).\n * @param {String} [options.family_name] The user's family name(s).\n * @param {String} [options.name] The user's full name.\n * @param {String} [options.nickname] The user's nickname.\n * @param {String} [options.picture] A URI pointing to the user's picture.\n * @param {String} options.connection name of the connection where the user will be created\n * @param {Object} [options.user_metadata] additional signup attributes used for creating the user. Will be stored in `user_metadata`\n * @param {signUpCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#signup}\n * @ignore\n */\nDBConnection.prototype.signup = function (options, cb) {\n var url;\n var body;\n var metadata;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n email: { type: 'string', message: 'email option is required' },\n password: { type: 'string', message: 'password option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'signup');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'state'])\n .with(options);\n\n metadata = body.user_metadata || body.userMetadata;\n\n body = objectHelper.blacklist(body, [\n 'scope',\n 'userMetadata',\n 'user_metadata'\n ]);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n if (metadata) {\n body.user_metadata = metadata;\n }\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * @callback changePasswordCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the request failed\n * @ignore\n */\n\n/**\n * Request an email with instruction to change a user's password\n *\n * @method changePassword\n * @param {Object} options\n * @param {String} options.email address where the user will receive the change password email. It should match the user's email in Auth0\n * @param {String} options.connection name of the connection where the user was created\n * @param {changePasswordCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#change-password}\n * @ignore\n */\nDBConnection.prototype.changePassword = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n connection: { type: 'string', message: 'connection option is required' },\n email: { type: 'string', message: 'email option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'change_password');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'state'])\n .with(options, ['email', 'connection', 'captcha']);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\nDBConnection.prototype.getPasswordResetChallenge = function (cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'change_password', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default DBConnection;\n","import urljoin from 'url-join';\nimport qs from 'qs';\n\nimport RequestBuilder from '../helper/request-builder';\nimport objectHelper from '../helper/object';\nimport assert from '../helper/assert';\nimport SSODataStorage from '../helper/ssodata';\nimport windowHelper from '../helper/window';\nimport responseHandler from '../helper/response-handler';\nimport parametersWhitelist from '../helper/parameters-whitelist';\nimport Warn from '../helper/warn';\nimport WebAuth from '../web-auth/index';\nimport PasswordlessAuthentication from './passwordless-authentication';\nimport DBConnection from './db-connection';\n\n/**\n * Creates a new Auth0 Authentication API client\n * @constructor\n * @param {Object} options\n * @param {String} options.domain your Auth0 domain\n * @param {String} options.clientID the Client ID found on your Application settings page\n * @param {String} [options.redirectUri] url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} [options.responseType] type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} [options.cookieDomain] The domain the cookie is accessible from. If not set, the cookie is scoped to the current domain, including the subdomain. To keep a user logged in across multiple subdomains set this to your top-level domain and prefixed with a `.` (eg: `.example.com`).\n * @see {@link https://auth0.com/docs/api/authentication}\n */\nfunction Authentication(auth0, options) {\n // If we have two arguments, the first one is a WebAuth instance, so we assign that\n // if not, it's an options object and then we should use that as options instead\n // this is here because we don't want to break people coming from v8\n if (arguments.length === 2) {\n this.auth0 = auth0;\n } else {\n options = auth0;\n }\n\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n clientID: { type: 'string', message: 'clientID option is required' },\n responseType: {\n optional: true,\n type: 'string',\n message: 'responseType is not valid'\n },\n responseMode: {\n optional: true,\n type: 'string',\n message: 'responseMode is not valid'\n },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri is not valid'\n },\n scope: { optional: true, type: 'string', message: 'scope is not valid' },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience is not valid'\n },\n _disableDeprecationWarnings: {\n optional: true,\n type: 'boolean',\n message: '_disableDeprecationWarnings option is not valid'\n },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n }\n }\n );\n /* eslint-enable */\n\n this.baseOptions = options;\n this.baseOptions._sendTelemetry =\n this.baseOptions._sendTelemetry === false\n ? this.baseOptions._sendTelemetry\n : true;\n\n this.baseOptions.rootUrl =\n this.baseOptions.domain &&\n this.baseOptions.domain.toLowerCase().indexOf('http') === 0\n ? this.baseOptions.domain\n : 'https://' + this.baseOptions.domain;\n\n this.request = new RequestBuilder(this.baseOptions);\n\n this.passwordless = new PasswordlessAuthentication(\n this.request,\n this.baseOptions\n );\n this.dbConnection = new DBConnection(this.request, this.baseOptions);\n\n this.warn = new Warn({\n disableWarnings: !!options._disableDeprecationWarnings\n });\n this.ssodataStorage = new SSODataStorage(this.baseOptions);\n}\n\n/**\n * Builds and returns the `/authorize` url in order to initialize a new authN/authZ transaction\n *\n * @method buildAuthorizeUrl\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.redirectUri url that the Auth0 will redirect after Auth with the Authorization Response\n * @param {String} options.responseType type of the response used by OAuth 2.0 flow. It can be any space separated list of the values `code`, `token`, `id_token`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html}\n * @param {String} [options.responseMode] how the Auth response is encoded and redirected back to the client. Supported values are `query`, `fragment` and `form_post`. {@link https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes}\n * @param {String} [options.state] value used to mitigate XSRF attacks. {@link https://auth0.com/docs/protocols/oauth2/oauth-state}\n * @param {String} [options.nonce] value used to mitigate replay attacks when using Implicit Grant. {@link https://auth0.com/docs/api-auth/tutorials/nonce}\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @see {@link https://auth0.com/docs/api/authentication#authorize-client}\n * @see {@link https://auth0.com/docs/api/authentication#social}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.buildAuthorizeUrl = function (options) {\n var params;\n var qString;\n\n assert.check(options, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n\n params = objectHelper\n .merge(this.baseOptions, [\n 'clientID',\n 'responseType',\n 'responseMode',\n 'redirectUri',\n 'scope',\n 'audience'\n ])\n .with(options);\n\n /* eslint-disable */\n assert.check(\n params,\n { type: 'object', message: 'options parameter is not valid' },\n {\n clientID: { type: 'string', message: 'clientID option is required' },\n redirectUri: {\n optional: true,\n type: 'string',\n message: 'redirectUri option is required'\n },\n responseType: {\n type: 'string',\n message: 'responseType option is required'\n },\n nonce: {\n type: 'string',\n message: 'nonce option is required',\n condition: function (o) {\n return (\n o.responseType.indexOf('code') === -1 &&\n o.responseType.indexOf('id_token') !== -1\n );\n }\n },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n /* eslint-enable */\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n if (params.connection_scope && assert.isArray(params.connection_scope)) {\n params.connection_scope = params.connection_scope.join(',');\n }\n\n params = objectHelper.blacklist(params, [\n 'username',\n 'popupOptions',\n 'domain',\n 'tenant',\n 'timeout',\n 'appState'\n ]);\n params = objectHelper.toSnakeCase(params, ['auth0Client']);\n params = parametersWhitelist.oauthAuthorizeParams(this.warn, params);\n\n qString = qs.stringify(params);\n\n return urljoin(this.baseOptions.rootUrl, 'authorize', '?' + qString);\n};\n\n/**\n * Builds and returns the Logout url in order to initialize a new authN/authZ transaction\n *\n * If you want to navigate the user to a specific URL after the logout, set that URL at the returnTo parameter. The URL should be included in any the appropriate Allowed Logout URLs list:\n *\n * - If the client_id parameter is included, the returnTo URL must be listed in the Allowed Logout URLs set at the Auth0 Application level (see Setting Allowed Logout URLs at the App Level).\n * - If the client_id parameter is NOT included, the returnTo URL must be listed in the Allowed Logout URLs set at the account level (see Setting Allowed Logout URLs at the Account Level).\n * @method buildLogoutUrl\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} [options.returnTo] URL to be redirected after the logout\n * @param {Boolean} [options.federated] tells Auth0 if it should logout the user also from the IdP.\n * @see {@link https://auth0.com/docs/api/authentication#logout}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.buildLogoutUrl = function (options) {\n var params;\n var qString;\n\n assert.check(options, {\n optional: true,\n type: 'object',\n message: 'options parameter is not valid'\n });\n\n params = objectHelper\n .merge(this.baseOptions, ['clientID'])\n .with(options || {});\n\n // eslint-disable-next-line\n if (this.baseOptions._sendTelemetry) {\n params.auth0Client = this.request.getTelemetryData();\n }\n\n params = objectHelper.toSnakeCase(params, ['auth0Client', 'returnTo']);\n\n qString = qs.stringify(objectHelper.blacklist(params, ['federated']));\n if (\n options &&\n options.federated !== undefined &&\n options.federated !== false &&\n options.federated !== 'false'\n ) {\n qString += '&federated';\n }\n\n return urljoin(this.baseOptions.rootUrl, 'v2', 'logout', '?' + qString);\n};\n\n/**\n * @callback authorizeCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the Auth request. If there is no token available, this value will be null.\n * @param {String} [result.accessToken] token that allows access to the specified resource server (identified by the audience parameter or by default Auth0's /userinfo endpoint)\n * @param {Number} [result.expiresIn] number of seconds until the access token expires\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @param {Object} [result.appState] values that you receive back on the authentication response\n * @memberof Authentication.prototype\n */\n\n/**\n * @callback tokenCallback\n * @param {Error} [err] error returned by Auth0 with the reason of the Auth failure\n * @param {Object} [result] result of the Auth request\n * @param {String} result.accessToken token that allows access to the specified resource server (identified by the audience parameter or by default Auth0's /userinfo endpoint)\n * @param {Number} result.expiresIn number of seconds until the access token expires\n * @param {String} [result.idToken] token that identifies the user\n * @param {String} [result.refreshToken] token that can be used to get new access tokens from Auth0. Note that not all Auth0 Applications can request them or the resource server might not allow them.\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `oauth/token` endpoint with `password` grant type to login to the default directory.\n *\n * @method loginWithDefaultDirectory\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {tokenCallback} cb function called with the result of the request\n * @see Requires [`password` grant]{@link https://auth0.com/docs/api-auth/grant/password}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.loginWithDefaultDirectory = function (options, cb) {\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n options.grantType = 'password';\n\n return this.oauthToken(options, cb);\n};\n\n/**\n * Makes a call to the `oauth/token` endpoint with `password-realm` grant type\n *\n * @method login\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.audience] identifier of the resource server who will consume the access token issued after Auth\n * @param {String} options.realm the HRD domain or the connection name where the user belongs to. e.g. `Username-Password-Authentication`\n * @param {tokenCallback} cb function called with the result of the request\n * @see Requires [`http://auth0.com/oauth/grant-type/password-realm` grant]{@link https://auth0.com/docs/api-auth/grant/password#realm-support}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.login = function (options, cb) {\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n realm: { type: 'string', message: 'realm option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n options.grantType = 'http://auth0.com/oauth/grant-type/password-realm';\n\n return this.oauthToken(options, cb);\n};\n\n/**\n * Makes a call to the `oauth/token` endpoint\n *\n * @method oauthToken\n * @private\n */\nAuthentication.prototype.oauthToken = function (options, cb) {\n var url;\n var body;\n\n assert.check(options, {\n type: 'object',\n message: 'options parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'oauth', 'token');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'scope', 'audience'])\n .with(options);\n\n assert.check(\n body,\n { type: 'object', message: 'options parameter is not valid' },\n {\n clientID: { type: 'string', message: 'clientID option is required' },\n grantType: { type: 'string', message: 'grantType option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n },\n audience: {\n optional: true,\n type: 'string',\n message: 'audience option is required'\n }\n }\n );\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n body = parametersWhitelist.oauthTokenParams(this.warn, body);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Performs authentication calling `/oauth/ro` endpoint with username\n * and password for a given connection name.\n *\n * This method is not compatible with API Auth so if you need to fetch API tokens with audience\n * you should use {@link login} or {@link loginWithDefaultDirectory}.\n *\n * @method loginWithResourceOwner\n * @param {Object} options\n * @param {String} options.username email or username of the user that will perform Auth\n * @param {String} options.password the password of the user that will perform Auth\n * @param {Object} options.connection the connection name where the user belongs to. e.g. `Username-Password-Authentication`\n * @param {String} [options.scope] scopes to be requested during Auth. e.g. `openid email`\n * @param {String} [options.device] name of the device/browser where the Auth was requested\n * @param {tokenCallback} cb function called with the result of the request\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.loginWithResourceOwner = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n username: { type: 'string', message: 'username option is required' },\n password: { type: 'string', message: 'password option is required' },\n connection: { type: 'string', message: 'connection option is required' },\n scope: {\n optional: true,\n type: 'string',\n message: 'scope option is required'\n }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'oauth', 'ro');\n\n body = objectHelper\n .merge(this.baseOptions, ['clientID', 'scope'])\n .with(options, ['username', 'password', 'scope', 'connection', 'device']);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n body.grant_type = body.grant_type || 'password';\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Uses {@link checkSession} and localStorage to return data from the last successful authentication request.\n *\n * @method getSSOData\n * @param {Boolean} withActiveDirectories this parameter is not used anymore. It's here to be backward compatible\n * @param {Function} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getSSOData = function (withActiveDirectories, cb) {\n /* istanbul ignore if */\n if (!this.auth0) {\n this.auth0 = new WebAuth(this.baseOptions);\n }\n var isHostedLoginPage =\n windowHelper.getWindow().location.host === this.baseOptions.domain;\n if (isHostedLoginPage) {\n return this.auth0._universalLogin.getSSOData(withActiveDirectories, cb);\n }\n if (typeof withActiveDirectories === 'function') {\n cb = withActiveDirectories;\n }\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n var clientId = this.baseOptions.clientID;\n var ssodataInformation = this.ssodataStorage.get() || {};\n\n this.auth0.checkSession(\n {\n responseType: 'token id_token',\n scope: 'openid profile email',\n connection: ssodataInformation.lastUsedConnection,\n timeout: 5000\n },\n function (err, result) {\n if (err) {\n if (err.error === 'login_required') {\n return cb(null, { sso: false });\n }\n if (err.error === 'consent_required') {\n err.error_description =\n 'Consent required. When using `getSSOData`, the user has to be authenticated with the following scope: `openid profile email`.';\n }\n return cb(err, { sso: false });\n }\n if (\n ssodataInformation.lastUsedSub &&\n ssodataInformation.lastUsedSub !== result.idTokenPayload.sub\n ) {\n return cb(err, { sso: false });\n }\n return cb(null, {\n lastUsedConnection: {\n name: ssodataInformation.lastUsedConnection\n },\n lastUsedUserID: result.idTokenPayload.sub,\n lastUsedUsername:\n result.idTokenPayload.email || result.idTokenPayload.name,\n lastUsedClientID: clientId,\n sessionClients: [clientId],\n sso: true\n });\n }\n );\n};\n\n/**\n * @callback userInfoCallback\n * @param {Error} [err] error returned by Auth0\n * @param {Object} [userInfo] user information\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `/userinfo` endpoint and returns the user profile\n *\n * @method userInfo\n * @param {String} accessToken token issued to a user after Auth\n * @param {userInfoCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#get-user-info}\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.userInfo = function (accessToken, cb) {\n var url;\n\n assert.check(accessToken, {\n type: 'string',\n message: 'accessToken parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'userinfo');\n\n return this.request\n .get(url)\n .set('Authorization', 'Bearer ' + accessToken)\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Makes a call to the `/usernamepassword/challenge` endpoint\n * and returns the challenge (captcha) if necessary.\n *\n * @method getChallenge\n * @param {callback} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getChallenge = function (cb) {\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n if (!this.baseOptions.state) {\n return cb();\n }\n\n var url = urljoin(this.baseOptions.rootUrl, 'usernamepassword', 'challenge');\n\n return this.request\n .post(url)\n .send({ state: this.baseOptions.state })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * @callback delegationCallback\n * @param {Error} [err] error returned by Auth0 with the reason why the delegation failed\n * @param {Object} [result] result of the delegation request. The payload depends on what ai type was used\n * @memberof Authentication.prototype\n */\n\n/**\n * Makes a call to the `/delegation` endpoint with either an `id_token` or `refresh_token`\n *\n * @method delegation\n * @param {Object} options\n * @param {String} [options.clientID] the Client ID found on your Application settings page\n * @param {String} options.grantType grant type used for delegation. The only valid value is `urn:ietf:params:oauth:grant-type:jwt-bearer`\n * @param {String} [options.idToken] valid token of the user issued after Auth. If no `refresh_token` is provided this parameter is required\n * @param {String} [options.refreshToken] valid refresh token of the user issued after Auth. If no `id_token` is provided this parameter is required\n * @param {String} [options.target] the target ClientID of the delegation\n * @param {String} [options.scope] either `openid` or `openid profile email`\n * @param {String} [options.apiType] the api to be called\n * @param {delegationCallback} cb\n * @see {@link https://auth0.com/docs/api/authentication#delegation}\n * @see Requires [http://auth0.com/oauth/grant-type/password-realm]{@link https://auth0.com/docs/api-auth/grant/password#realm-support}. For more information, read {@link https://auth0.com/docs/clients/client-grant-types}.\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.delegation = function (options, cb) {\n var url;\n var body;\n\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n grant_type: { type: 'string', message: 'grant_type option is required' }\n }\n );\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'delegation');\n\n body = objectHelper.merge(this.baseOptions, ['clientID']).with(options);\n\n body = objectHelper.toSnakeCase(body, ['auth0Client']);\n\n return this.request\n .post(url)\n .send(body)\n .end(responseHandler(cb));\n};\n\n/**\n * Fetches the user country based on the ip.\n *\n * @method getUserCountry\n * @private\n * @param {Function} cb\n * @memberof Authentication.prototype\n */\nAuthentication.prototype.getUserCountry = function (cb) {\n var url;\n\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'user', 'geoloc', 'country');\n\n return this.request.get(url).end(responseHandler(cb));\n};\n\nexport default Authentication;\n","import urljoin from 'url-join';\n\nimport RequestBuilder from '../helper/request-builder';\nimport assert from '../helper/assert';\nimport responseHandler from '../helper/response-handler';\n\n/**\n * Auth0 Management API Client (methods allowed to be called from the browser only)\n * @constructor\n * @param {Object} options\n * @param {Object} options.domain your Auth0 acount domain\n * @param {Object} options.token a valid API token\n */\nfunction Management(options) {\n /* eslint-disable */\n assert.check(\n options,\n { type: 'object', message: 'options parameter is not valid' },\n {\n domain: { type: 'string', message: 'domain option is required' },\n token: { type: 'string', message: 'token option is required' },\n _sendTelemetry: {\n optional: true,\n type: 'boolean',\n message: '_sendTelemetry option is not valid'\n },\n _telemetryInfo: {\n optional: true,\n type: 'object',\n message: '_telemetryInfo option is not valid'\n }\n }\n );\n /* eslint-enable */\n\n this.baseOptions = options;\n\n this.baseOptions.headers = {\n Authorization: 'Bearer ' + this.baseOptions.token\n };\n\n this.request = new RequestBuilder(this.baseOptions);\n this.baseOptions.rootUrl = urljoin(\n 'https://' + this.baseOptions.domain,\n 'api',\n 'v2'\n );\n}\n\n/**\n * @callback userCallback\n * @param {Error} [err] failure reason for the failed request to Management API\n * @param {Object} [result] user profile\n * @memberof Management.prototype\n */\n\n/**\n * Returns the user profile\n *\n * @method getUser\n * @param {String} userId identifier of the user to retrieve\n * @param {userCallback} cb\n * @see https://auth0.com/docs/api/management/v2#!/Users/get_users_by_id\n * @memberof Management.prototype\n */\nManagement.prototype.getUser = function(userId, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request.get(url).end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Updates the user metdata. It will patch the user metdata with the attributes sent.\n *\n *\n * @method patchUserMetadata\n * @param {String} userId\n * @param {Object} userMetadata\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id}\n * @memberof Management.prototype\n */\nManagement.prototype.patchUserMetadata = function(userId, userMetadata, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(userMetadata, {\n type: 'object',\n message: 'userMetadata parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request\n .patch(url)\n .send({ user_metadata: userMetadata })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Updates the user attributes. It will patch the user attributes that the server allows it.\n *\n * @method patchUserAttributes\n * @param {String} userId\n * @param {Object} user\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id}\n * @memberof Management.prototype\n */\nManagement.prototype.patchUserAttributes = function(userId, user, cb) {\n var url;\n\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(user, {\n type: 'object',\n message: 'user parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId);\n\n return this.request\n .patch(url)\n .send(user)\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\n/**\n * Link two users\n *\n * @method linkUser\n * @param {String} userId\n * @param {String} secondaryUserToken\n * @param {userCallback} cb\n * @see {@link https://auth0.com/docs/api/management/v2#!/Users/post_identities}\n * @memberof Management.prototype\n */\nManagement.prototype.linkUser = function(userId, secondaryUserToken, cb) {\n var url;\n /* eslint-disable */\n assert.check(userId, {\n type: 'string',\n message: 'userId parameter is not valid'\n });\n assert.check(secondaryUserToken, {\n type: 'string',\n message: 'secondaryUserToken parameter is not valid'\n });\n assert.check(cb, { type: 'function', message: 'cb parameter is not valid' });\n /* eslint-enable */\n\n url = urljoin(this.baseOptions.rootUrl, 'users', userId, 'identities');\n\n return this.request\n .post(url)\n .send({ link_with: secondaryUserToken })\n .end(responseHandler(cb, { ignoreCasing: true }));\n};\n\nexport default Management;\n","import Authentication from './authentication';\nimport Management from './management';\nimport WebAuth from './web-auth';\nimport version from './version';\n\nexport { Authentication, Management, WebAuth, version };\n\nexport default {\n Authentication: Authentication,\n Management: Management,\n WebAuth: WebAuth,\n version: version\n};\n"],"names":["context","definition","this","normalize","strArray","resultArray","length","TypeError","match","first","shift","replace","i","component","push","str","join","parts","split","arguments","slice","call","module","exports","origSymbol","Symbol","test","foo","$Object","Object","ERROR_MESSAGE","toStr","prototype","toString","max","Math","concatty","a","b","arr","j","slicy","arrLike","offset","joiny","joiner","Function","bind","that","target","apply","bound","args","binder","result","boundLength","boundArgs","Empty","hasOwnProperty","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","e","$gOPD","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","calleeThrows","get","gOPDthrows","hasSymbols","getOwnPropertySymbols","iterator","obj","sym","symObj","keys","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","value","enumerable","hasSymbolSham","hasProto","__proto__","getProto","getPrototypeOf","x","needsEval","TypedArray","Uint8Array","undefined","INTRINSICS","%AggregateError%","AggregateError","%Array%","Array","%ArrayBuffer%","ArrayBuffer","%ArrayIteratorPrototype%","%AsyncFromSyncIteratorPrototype%","%AsyncFunction%","%AsyncGenerator%","%AsyncGeneratorFunction%","%AsyncIteratorPrototype%","%Atomics%","Atomics","%BigInt%","BigInt","%BigInt64Array%","BigInt64Array","%BigUint64Array%","BigUint64Array","%Boolean%","Boolean","%DataView%","DataView","%Date%","Date","%decodeURI%","decodeURI","%decodeURIComponent%","decodeURIComponent","%encodeURI%","encodeURI","%encodeURIComponent%","encodeURIComponent","%Error%","Error","%eval%","eval","%EvalError%","EvalError","%Float32Array%","Float32Array","%Float64Array%","Float64Array","%FinalizationRegistry%","FinalizationRegistry","%Function%","%GeneratorFunction%","%Int8Array%","Int8Array","%Int16Array%","Int16Array","%Int32Array%","Int32Array","%isFinite%","isFinite","%isNaN%","isNaN","%IteratorPrototype%","%JSON%","JSON","%Map%","Map","%MapIteratorPrototype%","%Math%","%Number%","Number","%Object%","%parseFloat%","parseFloat","%parseInt%","parseInt","%Promise%","Promise","%Proxy%","Proxy","%RangeError%","RangeError","%ReferenceError%","ReferenceError","%Reflect%","Reflect","%RegExp%","RegExp","%Set%","Set","%SetIteratorPrototype%","%SharedArrayBuffer%","SharedArrayBuffer","%String%","String","%StringIteratorPrototype%","%Symbol%","%SyntaxError%","%ThrowTypeError%","%TypedArray%","%TypeError%","%Uint8Array%","%Uint8ClampedArray%","Uint8ClampedArray","%Uint16Array%","Uint16Array","%Uint32Array%","Uint32Array","%URIError%","URIError","%WeakMap%","WeakMap","%WeakRef%","WeakRef","%WeakSet%","WeakSet","error","errorProto","LEGACY_ALIASES","%ArrayBufferPrototype%","%ArrayPrototype%","%ArrayProto_entries%","%ArrayProto_forEach%","%ArrayProto_keys%","%ArrayProto_values%","%AsyncFunctionPrototype%","%AsyncGeneratorPrototype%","%BooleanPrototype%","%DataViewPrototype%","%DatePrototype%","%ErrorPrototype%","%EvalErrorPrototype%","%Float32ArrayPrototype%","%Float64ArrayPrototype%","%FunctionPrototype%","%Generator%","%GeneratorPrototype%","%Int8ArrayPrototype%","%Int16ArrayPrototype%","%Int32ArrayPrototype%","%JSONParse%","%JSONStringify%","%MapPrototype%","%NumberPrototype%","%ObjectPrototype%","%ObjProto_toString%","%ObjProto_valueOf%","%PromisePrototype%","%PromiseProto_then%","%Promise_all%","%Promise_reject%","%Promise_resolve%","%RangeErrorPrototype%","%ReferenceErrorPrototype%","%RegExpPrototype%","%SetPrototype%","%SharedArrayBufferPrototype%","%StringPrototype%","%SymbolPrototype%","%SyntaxErrorPrototype%","%TypedArrayPrototype%","%TypeErrorPrototype%","%Uint8ArrayPrototype%","%Uint8ClampedArrayPrototype%","%Uint16ArrayPrototype%","%Uint32ArrayPrototype%","%URIErrorPrototype%","%WeakMapPrototype%","%WeakSetPrototype%","$concat","concat","$spliceApply","splice","$replace","$strSlice","$exec","exec","rePropName","reEscapeChar","stringToPath","string","last","number","quote","subString","getBaseIntrinsic","name","allowMissing","alias","intrinsicName","hasOwn","doEval","fn","gen","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","desc","$apply","GetIntrinsic","$call","$reflectApply","$defineProperty","$max","originalFunction","func","configurable","applyBind","$indexOf","callBind","hasMap","mapSizeDescriptor","mapSize","mapForEach","forEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","has","weakSetHas","weakRefDeref","deref","booleanValueOf","valueOf","objectToString","functionToString","$match","$slice","$toUpperCase","toUpperCase","$toLowerCase","toLowerCase","$test","$join","$arrSlice","$floor","floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","inspectCustom","utilInspect","custom","inspectSymbol","isSymbol","inspect_","options","depth","seen","opts","quoteStyle","maxStringLength","customInspect","indent","numericSeparator","inspectString","remaining","trailer","wrapQuotes","lowbyte","bigIntStr","maxDepth","isArray","baseIndent","base","prev","getIndent","indexOf","inspect","from","noIndent","newOpts","isRegExp","f","m","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","isElement","s","attrs","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","key","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","isPlainObject","constructor","protoTag","stringTag","tag","defaultStyle","quoteChar","l","c","n","charCodeAt","8","9","10","12","13","type","size","entries","lineJoiner","isArr","symMap","k","$WeakMap","$Map","$weakMapGet","callBound","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","list","curr","next","$wm","$m","$o","channel","assert","objects","node","listGet","listHas","set","listSet","percentTwenties","Format","default","formatters","RFC1738","RFC3986","hexTable","array","arrayToObject","source","plainObjects","create","assign","reduce","acc","combine","compact","queue","o","prop","refs","item","val","pop","compacted","compactQueue","decode","decoder","charset","strWithoutPlus","unescape","encode","defaultEncoder","kind","format","escape","$0","out","formats","charAt","isBuffer","maybeMap","mapped","merge","allowPrototypes","mergeTarget","targetItem","arrayPrefixGenerators","brackets","prefix","comma","indices","repeat","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","defaults","addQueryPrefix","allowDots","charsetSentinel","delimiter","encoder","utils","encodeValuesOnly","formatter","serializeDate","date","skipNulls","strictNullHandling","sentinel","stringify","object","generateArrayPrefix","commaRoundTrip","filter","sort","sideChannel","tmpSc","step","findFlag","pos","v","isNonNullishPrimitive","objKeys","values","adjustedPrefix","keyPrefix","valueSideChannel","getSideChannel","allowSparse","arrayLimit","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","fromCharCode","parseArrayValue","parseKeys","givenKey","valuesParsed","child","segment","parent","index","chain","leaf","root","cleanRoot","0","parseObject","parse","normalizeParseOptions","tempObj","cleanStr","limit","skipIndex","bracketEqualsPos","encodedVal","parseValues","newObj","normalizeStringifyOptions","arrayFormat","joined","Emitter","mixin","on","addEventListener","event","_callbacks","once","off","removeListener","removeAllListeners","removeEventListener","cb","callbacks","emit","len","listeners","hasListeners","stable","deterministicStringify","stableStringify","replacerStack","defaultOptions","depthLimit","MAX_SAFE_INTEGER","edgesLimit","replacer","spacer","res","decirc","edgeIndex","stack","setReplace","replaceGetterValues","_","defineProperty","propertyDescriptor","compareFunction","tmp","deterministicDecirc","toJSON","_typeof","_createForOfIteratorHelper","allowArrayLike","it","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","done","_e","err","normalCompletion","didErr","_e2","return","arr2","string_","_step","_iterator","_value","_step2","_iterator2","url","header","changesOrigin","host","authorization","cookie","property","isObject","_require","RequestBase","clearTimeout","_timer","_responseTimeoutTimer","_uploadTimeoutTimer","_parser","responseType","_responseType","serialize","_serializer","timeout","_timeout","_responseTimeout","_uploadTimeout","option","deadline","response","upload","console","warn","retry","count","_maxRetries","_retries","_retryCallback","ERROR_CODES","STATUS_CODES","_shouldRetry","override","status","code","crossDomain","_retry","req","request","_aborted","timedout","timedoutError","_end","then","resolve","reject","_this","_fullfilledPromise","self","_endCalled","method","end","catch","callback","use","ok","_okCallback","_isResponseOK","field","_header","getHeader","unset","_data","_getFormData","append","abort","xhr","semver","gte","process","version","lt","destroyed","_auth","user","pass","base64Encoder","username","password","withCredentials","_withCredentials","redirects","_maxRedirects","maxResponseSize","_maxResponseSize","data","headers","send","isObject_","_formData","_isHost","trim","sortQuery","_sort","_finalizeQueryString","query","_query","includes","queryArray","_appendQueryString","_timeoutError","reason","errno","_setTimeouts","setTimeout","ResponseBase","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","Agent","_defaults","_setHeaderProperties","ct","parameters","params","links","link","parseLinks","_unused","_setStatusProperties","trunc","statusCode","statusType","info","redirect","clientError","serverError","toError","created","accepted","noContent","badRequest","unauthorized","notAcceptable","forbidden","notFound","unprocessableEntity","_loop","_arr","_i","_len","_key","_setDefaults","def","window","noop","Request","getXHR","XMLHttpRequest","location","protocol","ActiveXObject","_unused2","_unused3","_unused4","pairs","pushEncodedKeyValuePair","subkey","parseString","pair","length_","isJSON","mime","Response","request_","text","responseText","statusText","line","lines","fields","parseHeader","getAllResponseHeaders","getResponseHeader","body","_parseBody","new_error","original","rawResponse","serializeObject","types","html","json","xml","urlencoded","form","form-data","application/x-www-form-urlencoded","qs","application/json","safeStringify","message","accept","auth","btoa","attach","file","FormData","_callback","retries","crossDomainError","agent","ca","buffer","write","pipe","_setUploadTimeout","readyState","_unused5","handleProgress","direction","total","percent","loaded","_unused6","open","contentType","_serialize","setRequestHeader","del","delete","head","patch","post","put","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","start","output","base64","fromByteArray","stringToByteArray","mod","padding","byteArrayToString","toByteArray","raw","attribute","attr","variable","check","config","optional","condition","value_message","supportsIsArray","objectAssignPolyfill","to","nextSource","keysArray","nextIndex","nextKey","pick","objectValues","extend","unshift","objectAssign","getLocationFromUrl","href","hostname","port","pathname","search","hash","trimmed","toSnakeCase","exceptions","p","newKey","wasPrevNumber","wasPrevUppercase","camelToSnake","toCamelCase","keepOriginal","blacklist","blacklistedKeys","with","object2","keys2","getKeysNotIn","allowedKeys","notAllowed","getOriginFromUrl","parsed","origin","trimUserDetails","trimMultiple","updatePropertyOn","path","RequestWrapper","RequestObj","RequestBuilder","_sendTelemetry","_telemetryInfo","_timesToRetryFailedRequests","_universalLoginPage","universalLoginPage","getWindow","getMethod","getBody","getUrl","getHeaders","objectHelper","setCommonConfiguration","ongoingRequest","noHeaders","xRequestLanguage","getTelemetryData","telemetryName","clientInfo","env","jsonClientInfo","base64Url","getDocument","document","getOrigin","DummyStorage","getItem","removeItem","setItem","factory","init","converter","api","expires","toUTCString","stringifiedAttributes","attributeName","jar","cookies","read","getJSON","remove","withConverter","buildCompatCookieKey","CookieStorage","_options","Warn","disableWarnings","StorageHandler","storage","__tryLocalStorageFirst","localStorage","windowHandler","warning","Storage","handler","SSODataStorage","buildResponse","description","errorDescription","Cookie","cookieDomain","domain","secure","sameSite","legacySameSiteCookie","legacyOptions","failover","connection","sub","ssodata","lastUsedConnection","lastUsedSub","invalidToken","wrapCallback","ignoreCasing","errObj","error_code","error_description","details","forceLegacyError","error_codes","error_details","errorDetails","codes","policy","keepOriginalCasing","tokenParams","authorizeParams","oauthTokenParams","oauthAuthorizeParams","t","globalThis","global","r","d","w","h","u","MutationObserver","WebKitMutationObserver","importScripts","MessageChannel","y","g","T","S","N","_state","_result","C","E","nextTick","createTextNode","observe","characterData","port1","onmessage","port2","postMessage","require","runOnLoop","runOnContext","random","substring","A","I","M","_onerror","R","_subscribers","P","_instanceConstructor","promise","_remaining","_enumerate","_eachEntry","_settledAt","V","_willSettleAt","finally","all","race","_setScheduler","_setAsap","_asap","polyfill","cast","crypto","msCrypto","getRandomValues","randomBytes","readInt32LE","lib","Base","mixIn","$super","clone","WordArray","words","sigBytes","clamp","ceil","enc","Hex","substr","Latin1","Utf8","BufferedBlockAlgorithm","reset","_nDataBytes","_append","_process","blockSize","_minBufferSize","min","_doProcessBlock","Hasher","cfg","_doReset","update","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","sqrt","pow","SHA256","_hash","HmacSHA256","Base64","_map","_reverseMap","fromNumber","fromString","navigator","appName","am","DB","DM","DV","FV","F1","F2","fromInt","mp","invDigit","mpl","mph","um","mt2","r2","q3","ONE","dlShiftTo","mu","divide","convert","compareTo","revert","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","abs","ZERO","subTo","copyTo","drShiftTo","fromRadix","lShiftTo","rShiftTo","isEven","exp","negate","toRadix","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","D","B","getTime","chunkSize","LN2","log","signum","intValue","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","subtract","getLowestSetBit","shiftRight","modPow","byteValue","shortValue","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","add","multiply","remainder","divideAndRemainder","modInverse","gcd","square","Barrett","appVersion","BigInteger","SecureRandom","sha1","sha224","sha256","sha384","sha512","md2","md5","ripemd160","verify","alg","map","urljoin","responseURL","blob","Blob","onload","onerror","credentials","jwksCache","expectedAlg","issuer","audience","leeway","jwksURI","maxAge","__clock","PluginHandler","webAuth","plugins","pluginName","setWebAuth","encoded","payload","signature","kid","aud","iss","nbf","iat","azp","auth_time","nonce","getRsaVerifier","setUTCSeconds","fetch","modulus","validateAccessToken","+","/","=","extensibilityPoint","supports","randomString","bytes","cryptoObj","windowHelper","TransactionManager","transaction","namespace","keyLength","stateExpiration","IframeHandler","timeoutCallback","eventListenerType","iframe","timeoutHandle","_destroyTimeout","transientMessageEventListener","proxyEventListener","eventValidator","isValid","WebMessageHandler","baseOptions","CrossOriginAuthentication","webMessageHandler","createKey","coId","Redirect","auth0","crossOriginAuthentication","_disableDeprecationWarnings","realm","responseTypeIncludesIdToken","generateTransaction","appState","state","organization","generateNonce","transactionPayload","getStoredTransaction","transactionData","clearTransaction","_window","createElement","style","display","eventListener","eventSourceObject","appendChild","src","timeoutHandler","eventData","sourceObject","destroy","parentNode","removeChild","run","responseMode","prompt","currentOrigin","redirectUriOrigin","redirectUri","authorizeUrl","runWebMessageFlow","client","buildAuthorizeUrl","parsedHash","validateAuthenticationResponse","transactionManager","login","rootUrl","email","authenticateBody","client_id","clientID","otp","credentialType","credential_type","errorObject","responseHandler","doAuth","popupMode","popup","authorizeOptions","loginTicket","login_ticket","co_id","co_verifier","authorize","onRedirecting","targetOrigin","getFragment","theWindow","evt","id","verifier","tryGetVerifier","loginWithCredentials","signupAndLogin","dbConnection","signup","WinChan","addListener","attachEvent","detachEvent","extractOrigin","isIE","rv","ua","userAgent","$1","isInternetExplorer","relay_url","window_name","window_features","isFennec","messageTarget","setAttribute","contentWindow","closeInterval","setInterval","closed","cleanup","clearInterval","onMessage","close","securityViolation","originalPopup","focus","onOpen","msgTarget","frames","opener","findRelay","doPost","msg","onDie","o_O","onUnload","ohWell","detach","winopts","arg","PopupHandler","_current_popup","Popup","popupOrigin","SilentAuthenticationHandler","authenticationUrl","postMessageDataType","postMessageOrigin","UsernamePassword","HostedPages","calculatePosition","width","height","screenX","screenLeft","screenY","screenTop","outerWidth","clientWidth","outerHeight","clientHeight","left","top","preload","popupPosition","popupOptions","windowFeatures","kill","load","relayUrl","winchanOptions","buildPopupHandler","pluginHandler","getPopupHandler","popupHandler","originUrl","parseHash","popOpts","owp","urlHelper","processParams","scope","passwordlessVerify","passwordless","phoneNumber","verificationCode","loginWithResourceOwner","usePostMessage","getCallbackHandler","getEventValidator","callbackValue","formHtml","div","_document","innerHTML","children","submit","usernamePassword","getSSOData","withActiveDirectories","ldaps","captchaSolved","Flow","DEFAULT","PASSWORDLESS","PASSWORD_RESET","lang","templates","challenge","image","recaptcha_v2","recaptcha_enterprise","hcaptcha","friendly_captcha","arkose","auth0_v2","globalForCaptchaProvider","provider","grecaptcha","enterprise","friendlyChallenge","turnstile","loadScript","script","startsWith","dataset","removeScript","querySelectorAll","injectCaptchaScript","element","setValue","callbackName","async","defer","scriptSrc","clientSubdomain","siteKey","scriptForCaptchaProvider","retryCount","render","auth0Client","flow","challengeCallback","required","querySelector","preventDefault","handleAuth0Provider","captchaClass","widgetId","hasAttribute","auth0FCInstance","captchaDiv","setConfig","onCompleted","token","onError","WidgetInstance","sitekey","language","doneCallback","solution","errorCallback","renderParams","expired-callback","error-callback","theme","handleCaptchaProvider","triggerCaptcha","solvedCallback","getChallenge","getPasswordResetChallenge","reload","getValue","captchaInput","defaultClock","WebAuth","overrides","__tenant","__token_issuer","__jwks_uri","tenant","token_issuer","Authentication","_universalLogin","ssodataStorage","PasswordlessAuthentication","DBConnection","Management","Authorization","parsedQs","hashStr","responseTypes","__enableIdPInitiatedLogin","__enableImpersonation","transactionState","transactionStateMatchesState","transactionNonce","transactionOrganization","qsParams","accessToken","access_token","idToken","id_token","idTokenPayload","refreshToken","refresh_token","expiresIn","expires_in","tokenType","token_type","buildParseHashResponse","validateToken","validationError","org_id","org_name","at_hash","IdTokenVerifier","decodedToken","userInfo","errUserInfo","profile","renewAuth","checkSession","changePassword","passwordlessStart","authParams","signupAndAuthorize","passwordlessLogin","crossOriginOptions","crossOriginAuthenticationCallback","crossOriginVerification","logout","buildLogoutUrl","buildVerifyUrl","renderCaptcha","captcha","renderPasswordlessCaptcha","renderPasswordResetCaptcha","qString","redirect_uri","response_type","postOptions","cleanOption","metadata","user_metadata","userMetadata","connection_scope","parametersWhitelist","federated","loginWithDefaultDirectory","grantType","oauthToken","grant_type","clientId","ssodataInformation","sso","lastUsedUserID","lastUsedUsername","lastUsedClientID","sessionClients","delegation","getUserCountry","getUser","userId","patchUserMetadata","patchUserAttributes","linkUser","secondaryUserToken","link_with"],"mappings":"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"} \ No newline at end of file diff --git a/dist/cordova-auth0-plugin.js b/dist/cordova-auth0-plugin.js index 965c3cd6..9b680ac0 100644 --- a/dist/cordova-auth0-plugin.js +++ b/dist/cordova-auth0-plugin.js @@ -1,7 +1,7 @@ /** * auth0-js v9.25.0 * Author: Auth0 - * Date: 2024-04-25 + * Date: 2024-04-29 * License: MIT */ @@ -504,46 +504,88 @@ return shams(); }; + var test = { + foo: {} + }; + + var $Object = Object; + + var hasProto = function hasProto() { + return { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object); + }; + /* eslint no-invalid-this: 1 */ var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; - var slice = Array.prototype.slice; var toStr = Object.prototype.toString; + var max = Math.max; var funcType = '[object Function]'; + var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; + }; + + var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; + }; + + var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; + }; + var implementation = function bind(that) { var target = this; - if (typeof target !== 'function' || toStr.call(target) !== funcType) { + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { throw new TypeError(ERROR_MESSAGE + target); } - var args = slice.call(arguments, 1); + var args = slicy(arguments, 1); var bound; var binder = function () { if (this instanceof bound) { var result = target.apply( this, - args.concat(slice.call(arguments)) + concatty(args, arguments) ); if (Object(result) === result) { return result; } return this; - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); } + return target.apply( + that, + concatty(args, arguments) + ); + }; - var boundLength = Math.max(0, target.length - args.length); + var boundLength = max(0, target.length - args.length); var boundArgs = []; for (var i = 0; i < boundLength; i++) { - boundArgs.push('$' + i); + boundArgs[i] = '$' + i; } - bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); if (target.prototype) { var Empty = function Empty() {}; @@ -602,18 +644,23 @@ : throwTypeError; var hasSymbols$1 = hasSymbols(); + var hasProto$1 = hasProto(); - var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto + var getProto = Object.getPrototypeOf || ( + hasProto$1 + ? function (x) { return x.__proto__; } // eslint-disable-line no-proto + : null + ); var needsEval = {}; - var TypedArray = typeof Uint8Array === 'undefined' ? undefined$1 : getProto(Uint8Array); + var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined$1 : getProto(Uint8Array); var INTRINSICS = { '%AggregateError%': typeof AggregateError === 'undefined' ? undefined$1 : AggregateError, '%Array%': Array, '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined$1 : ArrayBuffer, - '%ArrayIteratorPrototype%': hasSymbols$1 ? getProto([][Symbol.iterator]()) : undefined$1, + '%ArrayIteratorPrototype%': hasSymbols$1 && getProto ? getProto([][Symbol.iterator]()) : undefined$1, '%AsyncFromSyncIteratorPrototype%': undefined$1, '%AsyncFunction%': needsEval, '%AsyncGenerator%': needsEval, @@ -643,10 +690,10 @@ '%Int32Array%': typeof Int32Array === 'undefined' ? undefined$1 : Int32Array, '%isFinite%': isFinite, '%isNaN%': isNaN, - '%IteratorPrototype%': hasSymbols$1 ? getProto(getProto([][Symbol.iterator]())) : undefined$1, + '%IteratorPrototype%': hasSymbols$1 && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined$1, '%JSON%': typeof JSON === 'object' ? JSON : undefined$1, '%Map%': typeof Map === 'undefined' ? undefined$1 : Map, - '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$1 ? undefined$1 : getProto(new Map()[Symbol.iterator]()), + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols$1 || !getProto ? undefined$1 : getProto(new Map()[Symbol.iterator]()), '%Math%': Math, '%Number%': Number, '%Object%': Object, @@ -659,10 +706,10 @@ '%Reflect%': typeof Reflect === 'undefined' ? undefined$1 : Reflect, '%RegExp%': RegExp, '%Set%': typeof Set === 'undefined' ? undefined$1 : Set, - '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$1 ? undefined$1 : getProto(new Set()[Symbol.iterator]()), + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols$1 || !getProto ? undefined$1 : getProto(new Set()[Symbol.iterator]()), '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined$1 : SharedArrayBuffer, '%String%': String, - '%StringIteratorPrototype%': hasSymbols$1 ? getProto(''[Symbol.iterator]()) : undefined$1, + '%StringIteratorPrototype%': hasSymbols$1 && getProto ? getProto(''[Symbol.iterator]()) : undefined$1, '%Symbol%': hasSymbols$1 ? Symbol : undefined$1, '%SyntaxError%': $SyntaxError, '%ThrowTypeError%': ThrowTypeError, @@ -678,12 +725,14 @@ '%WeakSet%': typeof WeakSet === 'undefined' ? undefined$1 : WeakSet }; - try { - null.error; // eslint-disable-line no-unused-expressions - } catch (e) { - // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 - var errorProto = getProto(getProto(e)); - INTRINSICS['%Error.prototype%'] = errorProto; + if (getProto) { + try { + null.error; // eslint-disable-line no-unused-expressions + } catch (e) { + // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 + var errorProto = getProto(getProto(e)); + INTRINSICS['%Error.prototype%'] = errorProto; + } } var doEval = function doEval(name) { @@ -701,7 +750,7 @@ } } else if (name === '%AsyncIteratorPrototype%') { var gen = doEval('%AsyncGenerator%'); - if (gen) { + if (gen && getProto) { value = getProto(gen.prototype); } } @@ -1894,7 +1943,6 @@ }; var isArray$3 = Array.isArray; - var split = String.prototype.split; var push = Array.prototype.push; var pushToArray = function (arr, valueOrArray) { push.apply(arr, isArray$3(valueOrArray) ? valueOrArray : [valueOrArray]); @@ -1996,14 +2044,6 @@ if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { if (encoder) { var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); - if (generateArrayPrefix === 'comma' && encodeValuesOnly) { - var valuesArray = split.call(String(obj), ','); - var valuesJoined = ''; - for (var i = 0; i < valuesArray.length; ++i) { - valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format)); - } - return [formatter(keyValue) + (commaRoundTrip && isArray$3(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined]; - } return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; } return [formatter(prefix) + '=' + formatter(String(obj))]; @@ -2018,6 +2058,9 @@ var objKeys; if (generateArrayPrefix === 'comma' && isArray$3(obj)) { // we need to join elements in + if (encodeValuesOnly && encoder) { + obj = utils.maybeMap(obj, encoder); + } objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; } else if (isArray$3(filter)) { objKeys = filter; @@ -2050,7 +2093,7 @@ commaRoundTrip, strictNullHandling, skipNulls, - encoder, + generateArrayPrefix === 'comma' && encodeValuesOnly && isArray$3(obj) ? null : encoder, filter, sort, allowDots, @@ -2247,7 +2290,8 @@ var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') var parseValues = function parseQueryStringValues(str, options) { - var obj = {}; + var obj = { __proto__: null }; + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; var parts = cleanStr.split(options.delimiter, limit); diff --git a/dist/cordova-auth0-plugin.min.js b/dist/cordova-auth0-plugin.min.js index e5547df6..09a6b4e2 100644 --- a/dist/cordova-auth0-plugin.min.js +++ b/dist/cordova-auth0-plugin.min.js @@ -1,9 +1,9 @@ /** * auth0-js v9.25.0 * Author: Auth0 - * Date: 2024-04-25 + * Date: 2024-04-29 * License: MIT */ -!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):(global=global||self).CordovaAuth0Plugin=factory()}(this,(function(){"use strict";var version_raw="9.25.0",toString=Object.prototype.toString;function attribute(o,attr,type,text){if(type="array"===type?"object":type,o&&typeof o[attr]!==type)throw new Error(text)}function variable(o,type,text){if(typeof o!==type)throw new Error(text)}function value(o,values,text){if(-1===values.indexOf(o))throw new Error(text)}var assert={check:function(o,config,attributes){if(config.optional&&!o||variable(o,config.type,config.message),"object"===config.type&&attributes)for(var keys=Object.keys(attributes),index=0;index=65&&code<=90||!wasPrevNumber&&code>=48&&code<=57?(newKey+="_",newKey+=str[index].toLowerCase()):newKey+=str[index].toLowerCase(),wasPrevNumber=code>=48&&code<=57,wasPrevUppercase=code>=65&&code<=90,index++;return newKey}(key):key]=toSnakeCase(object[key]),p}),{}))},toCamelCase:function toCamelCase(object,exceptions,options){return"object"!=typeof object||assert.isArray(object)||null===object?object:(exceptions=exceptions||[],options=options||{},Object.keys(object).reduce((function(p,key){var parts,newKey=-1===exceptions.indexOf(key)?(parts=key.split("_")).reduce((function(p,c){return p+c.charAt(0).toUpperCase()+c.slice(1)}),parts.shift()):key;return p[newKey]=toCamelCase(object[newKey]||object[key],[],options),options.keepOriginal&&(p[key]=toCamelCase(object[key],[],options)),p}),{}))},blacklist:function(object,blacklistedKeys){return Object.keys(object).reduce((function(p,key){return-1===blacklistedKeys.indexOf(key)&&(p[key]=object[key]),p}),{})},merge:function(object,keys){return{base:keys?pick(object,keys):object,with:function(object2,keys2){return object2=keys2?pick(object2,keys2):object2,extend(this.base,object2)}}},pick:pick,getKeysNotIn:function(obj,allowedKeys){var notAllowed=[];for(var key in obj)-1===allowedKeys.indexOf(key)&¬Allowed.push(key);return notAllowed},extend:extend,getOriginFromUrl:function(url){if(url){var parsed=getLocationFromUrl(url);if(!parsed)return null;var origin=parsed.protocol+"//"+parsed.hostname;return parsed.port&&(origin+=":"+parsed.port),origin}},getLocationFromUrl:getLocationFromUrl,trimUserDetails:function(options){return function(options,keys){return keys.reduce(trim,options)}(options,["username","email","phoneNumber"])},updatePropertyOn:function updatePropertyOn(obj,path,value){"string"==typeof path&&(path=path.split("."));var next=path[0];obj.hasOwnProperty(next)&&(1===path.length?obj[next]=value:updatePropertyOn(obj[next],path.slice(1),value))}};function getWindow(){return window}var windowHandler={redirect:function(url){getWindow().location=url},getDocument:function(){return getWindow().document},getWindow:getWindow,getOrigin:function(){var location=getWindow().location,origin=location.origin;return origin||(origin=objectHelper.getOriginFromUrl(location.href)),origin}},commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(fn,module){return fn(module={exports:{}},module.exports),module.exports}var urlJoin=createCommonjsModule((function(module){var context,definition;context=commonjsGlobal,definition=function(){function normalize(strArray){var resultArray=[];if(0===strArray.length)return"";if("string"!=typeof strArray[0])throw new TypeError("Url must be a string. Received "+strArray[0]);if(strArray[0].match(/^[^/:]+:\/*$/)&&strArray.length>1){var first=strArray.shift();strArray[0]=first+strArray[0]}strArray[0].match(/^file:\/\/\//)?strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1:///"):strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(component=component.replace(/^[\/]+/,"")),component=i0?"?":"")+parts.join("&")}return function(){return normalize("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},module.exports?module.exports=definition():context.urljoin=definition()})),origSymbol="undefined"!=typeof Symbol&&Symbol,ERROR_MESSAGE="Function.prototype.bind called on incompatible ",slice=Array.prototype.slice,toStr=Object.prototype.toString,functionBind=Function.prototype.bind||function(that){var target=this;if("function"!=typeof target||"[object Function]"!==toStr.call(target))throw new TypeError(ERROR_MESSAGE+target);for(var bound,args=slice.call(arguments,1),binder=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))},boundLength=Math.max(0,target.length-args.length),boundArgs=[],i=0;i1&&"boolean"!=typeof allowMissing)throw new $TypeError('"allowMissing" argument must be a boolean');if(null===$exec(/^%?[^%]*%?$/,name))throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var parts=stringToPath(name),intrinsicBaseName=parts.length>0?parts[0]:"",intrinsic=getBaseIntrinsic("%"+intrinsicBaseName+"%",allowMissing),intrinsicRealName=intrinsic.name,value=intrinsic.value,skipFurtherCaching=!1,alias=intrinsic.alias;alias&&(intrinsicBaseName=alias[0],$spliceApply(parts,$concat([0,1],alias)));for(var i=1,isOwn=!0;i=parts.length){var desc=$gOPD(value,part);value=(isOwn=!!desc)&&"get"in desc&&!("originalValue"in desc.get)?desc.get:value[part]}else isOwn=src(value,part),value=value[part];isOwn&&!skipFurtherCaching&&(INTRINSICS[intrinsicRealName]=value)}}return value},callBind=createCommonjsModule((function(module){var $apply=getIntrinsic("%Function.prototype.apply%"),$call=getIntrinsic("%Function.prototype.call%"),$reflectApply=getIntrinsic("%Reflect.apply%",!0)||functionBind.call($call,$apply),$gOPD=getIntrinsic("%Object.getOwnPropertyDescriptor%",!0),$defineProperty=getIntrinsic("%Object.defineProperty%",!0),$max=getIntrinsic("%Math.max%");if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=null}module.exports=function(originalFunction){var func=$reflectApply(functionBind,$call,arguments);if($gOPD&&$defineProperty){var desc=$gOPD(func,"length");desc.configurable&&$defineProperty(func,"length",{value:1+$max(0,originalFunction.length-(arguments.length-1))})}return func};var applyBind=function(){return $reflectApply(functionBind,$apply,arguments)};$defineProperty?$defineProperty(module.exports,"apply",{value:applyBind}):module.exports.apply=applyBind})),$indexOf=(callBind.apply,callBind(getIntrinsic("String.prototype.indexOf"))),callBound=function(name,allowMissing){var intrinsic=getIntrinsic(name,!!allowMissing);return"function"==typeof intrinsic&&$indexOf(name,".prototype.")>-1?callBind(intrinsic):intrinsic},utilInspect=(n=Object.freeze({__proto__:null,default:{}}))&&n.default||n,hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,weakMapHas="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,weakSetHas="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,weakRefDeref="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,$match=String.prototype.match,$slice=String.prototype.slice,$replace$1=String.prototype.replace,$toUpperCase=String.prototype.toUpperCase,$toLowerCase=String.prototype.toLowerCase,$test=RegExp.prototype.test,$concat$1=Array.prototype.concat,$join=Array.prototype.join,$arrSlice=Array.prototype.slice,$floor=Math.floor,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,toStringTag="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===hasShammedSymbols||"symbol")?Symbol.toStringTag:null,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(O){return O.__proto__}:null);function addNumericSeparator(num,str){if(num===1/0||num===-1/0||num!=num||num&&num>-1e3&&num<1e3||$test.call(/e/,str))return str;var sepRegex=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof num){var int=num<0?-$floor(-num):$floor(num);if(int!==num){var intStr=String(int),dec=$slice.call(str,intStr.length+1);return $replace$1.call(intStr,sepRegex,"$&_")+"."+$replace$1.call($replace$1.call(dec,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace$1.call(str,sepRegex,"$&_")}var inspectCustom=utilInspect.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null,objectInspect=function inspect_(obj,options,depth,seen){var opts=options||{};if(has(opts,"quoteStyle")&&"single"!==opts.quoteStyle&&"double"!==opts.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(opts,"maxStringLength")&&("number"==typeof opts.maxStringLength?opts.maxStringLength<0&&opts.maxStringLength!==1/0:null!==opts.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var customInspect=!has(opts,"customInspect")||opts.customInspect;if("boolean"!=typeof customInspect&&"symbol"!==customInspect)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(opts,"indent")&&null!==opts.indent&&"\t"!==opts.indent&&!(parseInt(opts.indent,10)===opts.indent&&opts.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(opts,"numericSeparator")&&"boolean"!=typeof opts.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var numericSeparator=opts.numericSeparator;if(void 0===obj)return"undefined";if(null===obj)return"null";if("boolean"==typeof obj)return obj?"true":"false";if("string"==typeof obj)return function inspectString(str,opts){if(str.length>opts.maxStringLength){var remaining=str.length-opts.maxStringLength,trailer="... "+remaining+" more character"+(remaining>1?"s":"");return inspectString($slice.call(str,0,opts.maxStringLength),opts)+trailer}return wrapQuotes($replace$1.call($replace$1.call(str,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",opts)}(obj,opts);if("number"==typeof obj){if(0===obj)return 1/0/obj>0?"0":"-0";var str=String(obj);return numericSeparator?addNumericSeparator(obj,str):str}if("bigint"==typeof obj){var bigIntStr=String(obj)+"n";return numericSeparator?addNumericSeparator(obj,bigIntStr):bigIntStr}var maxDepth=void 0===opts.depth?5:opts.depth;if(void 0===depth&&(depth=0),depth>=maxDepth&&maxDepth>0&&"object"==typeof obj)return isArray$1(obj)?"[Array]":"[Object]";var indent=function(opts,depth){var baseIndent;if("\t"===opts.indent)baseIndent="\t";else{if(!("number"==typeof opts.indent&&opts.indent>0))return null;baseIndent=$join.call(Array(opts.indent+1)," ")}return{base:baseIndent,prev:$join.call(Array(depth+1),baseIndent)}}(opts,depth);if(void 0===seen)seen=[];else if(indexOf(seen,obj)>=0)return"[Circular]";function inspect(value,from,noIndent){if(from&&(seen=$arrSlice.call(seen)).push(from),noIndent){var newOpts={depth:opts.depth};return has(opts,"quoteStyle")&&(newOpts.quoteStyle=opts.quoteStyle),inspect_(value,newOpts,depth+1,seen)}return inspect_(value,opts,depth+1,seen)}if("function"==typeof obj&&!isRegExp(obj)){var name=function(f){if(f.name)return f.name;var m=$match.call(functionToString.call(f),/^function\s*([\w$]+)/);if(m)return m[1];return null}(obj),keys=arrObjKeys(obj,inspect);return"[Function"+(name?": "+name:" (anonymous)")+"]"+(keys.length>0?" { "+$join.call(keys,", ")+" }":"")}if(isSymbol(obj)){var symString=hasShammedSymbols?$replace$1.call(String(obj),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(obj);return"object"!=typeof obj||hasShammedSymbols?symString:markBoxed(symString)}if(function(x){if(!x||"object"!=typeof x)return!1;if("undefined"!=typeof HTMLElement&&x instanceof HTMLElement)return!0;return"string"==typeof x.nodeName&&"function"==typeof x.getAttribute}(obj)){for(var s="<"+$toLowerCase.call(String(obj.nodeName)),attrs=obj.attributes||[],i=0;i"}if(isArray$1(obj)){if(0===obj.length)return"[]";var xs=arrObjKeys(obj,inspect);return indent&&!function(xs){for(var i=0;i=0)return!1;return!0}(xs)?"["+indentedJoin(xs,indent)+"]":"[ "+$join.call(xs,", ")+" ]"}if(function(obj){return!("[object Error]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)){var parts=arrObjKeys(obj,inspect);return"cause"in Error.prototype||!("cause"in obj)||isEnumerable.call(obj,"cause")?0===parts.length?"["+String(obj)+"]":"{ ["+String(obj)+"] "+$join.call(parts,", ")+" }":"{ ["+String(obj)+"] "+$join.call($concat$1.call("[cause]: "+inspect(obj.cause),parts),", ")+" }"}if("object"==typeof obj&&customInspect){if(inspectSymbol&&"function"==typeof obj[inspectSymbol]&&utilInspect)return utilInspect(obj,{depth:maxDepth-depth});if("symbol"!==customInspect&&"function"==typeof obj.inspect)return obj.inspect()}if(function(x){if(!mapSize||!x||"object"!=typeof x)return!1;try{mapSize.call(x);try{setSize.call(x)}catch(s){return!0}return x instanceof Map}catch(e){}return!1}(obj)){var mapParts=[];return mapForEach&&mapForEach.call(obj,(function(value,key){mapParts.push(inspect(key,obj,!0)+" => "+inspect(value,obj))})),collectionOf("Map",mapSize.call(obj),mapParts,indent)}if(function(x){if(!setSize||!x||"object"!=typeof x)return!1;try{setSize.call(x);try{mapSize.call(x)}catch(m){return!0}return x instanceof Set}catch(e){}return!1}(obj)){var setParts=[];return setForEach&&setForEach.call(obj,(function(value){setParts.push(inspect(value,obj))})),collectionOf("Set",setSize.call(obj),setParts,indent)}if(function(x){if(!weakMapHas||!x||"object"!=typeof x)return!1;try{weakMapHas.call(x,weakMapHas);try{weakSetHas.call(x,weakSetHas)}catch(s){return!0}return x instanceof WeakMap}catch(e){}return!1}(obj))return weakCollectionOf("WeakMap");if(function(x){if(!weakSetHas||!x||"object"!=typeof x)return!1;try{weakSetHas.call(x,weakSetHas);try{weakMapHas.call(x,weakMapHas)}catch(s){return!0}return x instanceof WeakSet}catch(e){}return!1}(obj))return weakCollectionOf("WeakSet");if(function(x){if(!weakRefDeref||!x||"object"!=typeof x)return!1;try{return weakRefDeref.call(x),!0}catch(e){}return!1}(obj))return weakCollectionOf("WeakRef");if(function(obj){return!("[object Number]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(Number(obj)));if(function(obj){if(!obj||"object"!=typeof obj||!bigIntValueOf)return!1;try{return bigIntValueOf.call(obj),!0}catch(e){}return!1}(obj))return markBoxed(inspect(bigIntValueOf.call(obj)));if(function(obj){return!("[object Boolean]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(booleanValueOf.call(obj));if(function(obj){return!("[object String]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(String(obj)));if(!function(obj){return!("[object Date]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)&&!isRegExp(obj)){var ys=arrObjKeys(obj,inspect),isPlainObject=gPO?gPO(obj)===Object.prototype:obj instanceof Object||obj.constructor===Object,protoTag=obj instanceof Object?"":"null prototype",stringTag=!isPlainObject&&toStringTag&&Object(obj)===obj&&toStringTag in obj?$slice.call(toStr$1(obj),8,-1):protoTag?"Object":"",tag=(isPlainObject||"function"!=typeof obj.constructor?"":obj.constructor.name?obj.constructor.name+" ":"")+(stringTag||protoTag?"["+$join.call($concat$1.call([],stringTag||[],protoTag||[]),": ")+"] ":"");return 0===ys.length?tag+"{}":indent?tag+"{"+indentedJoin(ys,indent)+"}":tag+"{ "+$join.call(ys,", ")+" }"}return String(obj)};function wrapQuotes(s,defaultStyle,opts){var quoteChar="double"===(opts.quoteStyle||defaultStyle)?'"':"'";return quoteChar+s+quoteChar}function quote(s){return $replace$1.call(String(s),/"/g,""")}function isArray$1(obj){return!("[object Array]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isRegExp(obj){return!("[object RegExp]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isSymbol(obj){if(hasShammedSymbols)return obj&&"object"==typeof obj&&obj instanceof Symbol;if("symbol"==typeof obj)return!0;if(!obj||"object"!=typeof obj||!symToString)return!1;try{return symToString.call(obj),!0}catch(e){}return!1}var hasOwn=Object.prototype.hasOwnProperty||function(key){return key in this};function has(obj,key){return hasOwn.call(obj,key)}function toStr$1(obj){return objectToString.call(obj)}function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0,l=xs.length;i1;){var item=queue.pop(),obj=item.obj[item.prop];if(isArray$2(obj)){for(var compacted=[],j=0;j=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||format===formats.RFC1738&&(40===c||41===c)?out+=string.charAt(i):c<128?out+=hexTable[c]:c<2048?out+=hexTable[192|c>>6]+hexTable[128|63&c]:c<55296||c>=57344?out+=hexTable[224|c>>12]+hexTable[128|c>>6&63]+hexTable[128|63&c]:(i+=1,c=65536+((1023&c)<<10|1023&string.charCodeAt(i)),out+=hexTable[240|c>>18]+hexTable[128|c>>12&63]+hexTable[128|c>>6&63]+hexTable[128|63&c])}return out},isBuffer:function(obj){return!(!obj||"object"!=typeof obj)&&!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj))},isRegExp:function(obj){return"[object RegExp]"===Object.prototype.toString.call(obj)},maybeMap:function(val,fn){if(isArray$2(val)){for(var mapped=[],i=0;i0?obj.join(",")||null:void 0}];else if(isArray$3(filter))objKeys=filter;else{var keys=Object.keys(obj);objKeys=sort?keys.sort(sort):keys}for(var adjustedPrefix=commaRoundTrip&&isArray$3(obj)&&1===obj.length?prefix+"[]":prefix,j=0;j0?prefix+joined:""});function PopupHandler(webAuth){this.webAuth=webAuth,this._current_popup=null,this.options=null}function PluginHandler(webAuth){this.webAuth=webAuth}function CordovaPlugin(){this.webAuth=null,this.version=version_raw,this.extensibilityPoints=["popup.authorize","popup.getPopupHandler"]}return PopupHandler.prototype.preload=function(options){var _this=this,_window=windowHandler.getWindow(),url=options.url||"about:blank",popupOptions=options.popupOptions||{};popupOptions.location="yes",delete popupOptions.width,delete popupOptions.height;var windowFeatures=lib_stringify(popupOptions,{encode:!1,delimiter:","});return this._current_popup&&!this._current_popup.closed||(this._current_popup=_window.open(url,"_blank",windowFeatures),this._current_popup.kill=function(success){_this._current_popup.success=success,this.close(),_this._current_popup=null}),this._current_popup},PopupHandler.prototype.load=function(url,_,options,cb){var _this=this;this.url=url,this.options=options,this._current_popup?this._current_popup.location.href=url:(options.url=url,this.preload(options)),this.transientErrorHandler=function(event){_this.errorHandler(event,cb)},this.transientStartHandler=function(event){_this.startHandler(event,cb)},this.transientExitHandler=function(){_this.exitHandler(cb)},this._current_popup.addEventListener("loaderror",this.transientErrorHandler),this._current_popup.addEventListener("loadstart",this.transientStartHandler),this._current_popup.addEventListener("exit",this.transientExitHandler)},PopupHandler.prototype.errorHandler=function(event,cb){this._current_popup&&(this._current_popup.kill(!0),cb({error:"window_error",errorDescription:event.message}))},PopupHandler.prototype.unhook=function(){this._current_popup.removeEventListener("loaderror",this.transientErrorHandler),this._current_popup.removeEventListener("loadstart",this.transientStartHandler),this._current_popup.removeEventListener("exit",this.transientExitHandler)},PopupHandler.prototype.exitHandler=function(cb){this._current_popup&&(this.unhook(),this._current_popup.success||cb({error:"window_closed",errorDescription:"Browser window closed"}))},PopupHandler.prototype.startHandler=function(event,cb){var _this=this;if(this._current_popup){var callbackUrl=urlJoin("https:",this.webAuth.baseOptions.domain,"/mobile");if(!event.url||0===event.url.indexOf(callbackUrl+"#")){var parts=event.url.split("#");if(1!==parts.length){var opts={hash:parts.pop()};this.options.nonce&&(opts.nonce=this.options.nonce),this.webAuth.parseHash(opts,(function(error,result){(error||result)&&(_this._current_popup.kill(!0),cb(error,result))}))}}}},PluginHandler.prototype.processParams=function(params){return params.redirectUri=urlJoin("https://"+params.domain,"mobile"),delete params.owp,params},PluginHandler.prototype.getPopupHandler=function(){return new PopupHandler(this.webAuth)},CordovaPlugin.prototype.setWebAuth=function(webAuth){this.webAuth=webAuth},CordovaPlugin.prototype.supports=function(extensibilityPoint){var _window=windowHandler.getWindow();return(!!_window.cordova||!!_window.electron)&&this.extensibilityPoints.indexOf(extensibilityPoint)>-1},CordovaPlugin.prototype.init=function(){return new PluginHandler(this.webAuth)},CordovaPlugin})); +!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):(global=global||self).CordovaAuth0Plugin=factory()}(this,(function(){"use strict";var version_raw="9.25.0",toString=Object.prototype.toString;function attribute(o,attr,type,text){if(type="array"===type?"object":type,o&&typeof o[attr]!==type)throw new Error(text)}function variable(o,type,text){if(typeof o!==type)throw new Error(text)}function value(o,values,text){if(-1===values.indexOf(o))throw new Error(text)}var assert={check:function(o,config,attributes){if(config.optional&&!o||variable(o,config.type,config.message),"object"===config.type&&attributes)for(var keys=Object.keys(attributes),index=0;index=65&&code<=90||!wasPrevNumber&&code>=48&&code<=57?(newKey+="_",newKey+=str[index].toLowerCase()):newKey+=str[index].toLowerCase(),wasPrevNumber=code>=48&&code<=57,wasPrevUppercase=code>=65&&code<=90,index++;return newKey}(key):key]=toSnakeCase(object[key]),p}),{}))},toCamelCase:function toCamelCase(object,exceptions,options){return"object"!=typeof object||assert.isArray(object)||null===object?object:(exceptions=exceptions||[],options=options||{},Object.keys(object).reduce((function(p,key){var parts,newKey=-1===exceptions.indexOf(key)?(parts=key.split("_")).reduce((function(p,c){return p+c.charAt(0).toUpperCase()+c.slice(1)}),parts.shift()):key;return p[newKey]=toCamelCase(object[newKey]||object[key],[],options),options.keepOriginal&&(p[key]=toCamelCase(object[key],[],options)),p}),{}))},blacklist:function(object,blacklistedKeys){return Object.keys(object).reduce((function(p,key){return-1===blacklistedKeys.indexOf(key)&&(p[key]=object[key]),p}),{})},merge:function(object,keys){return{base:keys?pick(object,keys):object,with:function(object2,keys2){return object2=keys2?pick(object2,keys2):object2,extend(this.base,object2)}}},pick:pick,getKeysNotIn:function(obj,allowedKeys){var notAllowed=[];for(var key in obj)-1===allowedKeys.indexOf(key)&¬Allowed.push(key);return notAllowed},extend:extend,getOriginFromUrl:function(url){if(url){var parsed=getLocationFromUrl(url);if(!parsed)return null;var origin=parsed.protocol+"//"+parsed.hostname;return parsed.port&&(origin+=":"+parsed.port),origin}},getLocationFromUrl:getLocationFromUrl,trimUserDetails:function(options){return function(options,keys){return keys.reduce(trim,options)}(options,["username","email","phoneNumber"])},updatePropertyOn:function updatePropertyOn(obj,path,value){"string"==typeof path&&(path=path.split("."));var next=path[0];obj.hasOwnProperty(next)&&(1===path.length?obj[next]=value:updatePropertyOn(obj[next],path.slice(1),value))}};function getWindow(){return window}var windowHandler={redirect:function(url){getWindow().location=url},getDocument:function(){return getWindow().document},getWindow:getWindow,getOrigin:function(){var location=getWindow().location,origin=location.origin;return origin||(origin=objectHelper.getOriginFromUrl(location.href)),origin}},commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(fn,module){return fn(module={exports:{}},module.exports),module.exports}var urlJoin=createCommonjsModule((function(module){var context,definition;context=commonjsGlobal,definition=function(){function normalize(strArray){var resultArray=[];if(0===strArray.length)return"";if("string"!=typeof strArray[0])throw new TypeError("Url must be a string. Received "+strArray[0]);if(strArray[0].match(/^[^/:]+:\/*$/)&&strArray.length>1){var first=strArray.shift();strArray[0]=first+strArray[0]}strArray[0].match(/^file:\/\/\//)?strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1:///"):strArray[0]=strArray[0].replace(/^([^/:]+):\/*/,"$1://");for(var i=0;i0&&(component=component.replace(/^[\/]+/,"")),component=i0?"?":"")+parts.join("&")}return function(){return normalize("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},module.exports?module.exports=definition():context.urljoin=definition()})),origSymbol="undefined"!=typeof Symbol&&Symbol,test={foo:{}},$Object=Object,ERROR_MESSAGE="Function.prototype.bind called on incompatible ",toStr=Object.prototype.toString,max=Math.max,concatty=function(a,b){for(var arr=[],i=0;i1&&"boolean"!=typeof allowMissing)throw new $TypeError('"allowMissing" argument must be a boolean');if(null===$exec(/^%?[^%]*%?$/,name))throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var parts=stringToPath(name),intrinsicBaseName=parts.length>0?parts[0]:"",intrinsic=getBaseIntrinsic("%"+intrinsicBaseName+"%",allowMissing),intrinsicRealName=intrinsic.name,value=intrinsic.value,skipFurtherCaching=!1,alias=intrinsic.alias;alias&&(intrinsicBaseName=alias[0],$spliceApply(parts,$concat([0,1],alias)));for(var i=1,isOwn=!0;i=parts.length){var desc=$gOPD(value,part);value=(isOwn=!!desc)&&"get"in desc&&!("originalValue"in desc.get)?desc.get:value[part]}else isOwn=src(value,part),value=value[part];isOwn&&!skipFurtherCaching&&(INTRINSICS[intrinsicRealName]=value)}}return value},callBind=createCommonjsModule((function(module){var $apply=getIntrinsic("%Function.prototype.apply%"),$call=getIntrinsic("%Function.prototype.call%"),$reflectApply=getIntrinsic("%Reflect.apply%",!0)||functionBind.call($call,$apply),$gOPD=getIntrinsic("%Object.getOwnPropertyDescriptor%",!0),$defineProperty=getIntrinsic("%Object.defineProperty%",!0),$max=getIntrinsic("%Math.max%");if($defineProperty)try{$defineProperty({},"a",{value:1})}catch(e){$defineProperty=null}module.exports=function(originalFunction){var func=$reflectApply(functionBind,$call,arguments);if($gOPD&&$defineProperty){var desc=$gOPD(func,"length");desc.configurable&&$defineProperty(func,"length",{value:1+$max(0,originalFunction.length-(arguments.length-1))})}return func};var applyBind=function(){return $reflectApply(functionBind,$apply,arguments)};$defineProperty?$defineProperty(module.exports,"apply",{value:applyBind}):module.exports.apply=applyBind})),$indexOf=(callBind.apply,callBind(getIntrinsic("String.prototype.indexOf"))),callBound=function(name,allowMissing){var intrinsic=getIntrinsic(name,!!allowMissing);return"function"==typeof intrinsic&&$indexOf(name,".prototype.")>-1?callBind(intrinsic):intrinsic},utilInspect=(n=Object.freeze({__proto__:null,default:{}}))&&n.default||n,hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,weakMapHas="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,weakSetHas="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,weakRefDeref="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,$match=String.prototype.match,$slice=String.prototype.slice,$replace$1=String.prototype.replace,$toUpperCase=String.prototype.toUpperCase,$toLowerCase=String.prototype.toLowerCase,$test=RegExp.prototype.test,$concat$1=Array.prototype.concat,$join=Array.prototype.join,$arrSlice=Array.prototype.slice,$floor=Math.floor,bigIntValueOf="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,toStringTag="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===hasShammedSymbols||"symbol")?Symbol.toStringTag:null,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(O){return O.__proto__}:null);function addNumericSeparator(num,str){if(num===1/0||num===-1/0||num!=num||num&&num>-1e3&&num<1e3||$test.call(/e/,str))return str;var sepRegex=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof num){var int=num<0?-$floor(-num):$floor(num);if(int!==num){var intStr=String(int),dec=$slice.call(str,intStr.length+1);return $replace$1.call(intStr,sepRegex,"$&_")+"."+$replace$1.call($replace$1.call(dec,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace$1.call(str,sepRegex,"$&_")}var inspectCustom=utilInspect.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null,objectInspect=function inspect_(obj,options,depth,seen){var opts=options||{};if(has(opts,"quoteStyle")&&"single"!==opts.quoteStyle&&"double"!==opts.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has(opts,"maxStringLength")&&("number"==typeof opts.maxStringLength?opts.maxStringLength<0&&opts.maxStringLength!==1/0:null!==opts.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var customInspect=!has(opts,"customInspect")||opts.customInspect;if("boolean"!=typeof customInspect&&"symbol"!==customInspect)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has(opts,"indent")&&null!==opts.indent&&"\t"!==opts.indent&&!(parseInt(opts.indent,10)===opts.indent&&opts.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has(opts,"numericSeparator")&&"boolean"!=typeof opts.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var numericSeparator=opts.numericSeparator;if(void 0===obj)return"undefined";if(null===obj)return"null";if("boolean"==typeof obj)return obj?"true":"false";if("string"==typeof obj)return function inspectString(str,opts){if(str.length>opts.maxStringLength){var remaining=str.length-opts.maxStringLength,trailer="... "+remaining+" more character"+(remaining>1?"s":"");return inspectString($slice.call(str,0,opts.maxStringLength),opts)+trailer}return wrapQuotes($replace$1.call($replace$1.call(str,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",opts)}(obj,opts);if("number"==typeof obj){if(0===obj)return 1/0/obj>0?"0":"-0";var str=String(obj);return numericSeparator?addNumericSeparator(obj,str):str}if("bigint"==typeof obj){var bigIntStr=String(obj)+"n";return numericSeparator?addNumericSeparator(obj,bigIntStr):bigIntStr}var maxDepth=void 0===opts.depth?5:opts.depth;if(void 0===depth&&(depth=0),depth>=maxDepth&&maxDepth>0&&"object"==typeof obj)return isArray$1(obj)?"[Array]":"[Object]";var indent=function(opts,depth){var baseIndent;if("\t"===opts.indent)baseIndent="\t";else{if(!("number"==typeof opts.indent&&opts.indent>0))return null;baseIndent=$join.call(Array(opts.indent+1)," ")}return{base:baseIndent,prev:$join.call(Array(depth+1),baseIndent)}}(opts,depth);if(void 0===seen)seen=[];else if(indexOf(seen,obj)>=0)return"[Circular]";function inspect(value,from,noIndent){if(from&&(seen=$arrSlice.call(seen)).push(from),noIndent){var newOpts={depth:opts.depth};return has(opts,"quoteStyle")&&(newOpts.quoteStyle=opts.quoteStyle),inspect_(value,newOpts,depth+1,seen)}return inspect_(value,opts,depth+1,seen)}if("function"==typeof obj&&!isRegExp(obj)){var name=function(f){if(f.name)return f.name;var m=$match.call(functionToString.call(f),/^function\s*([\w$]+)/);if(m)return m[1];return null}(obj),keys=arrObjKeys(obj,inspect);return"[Function"+(name?": "+name:" (anonymous)")+"]"+(keys.length>0?" { "+$join.call(keys,", ")+" }":"")}if(isSymbol(obj)){var symString=hasShammedSymbols?$replace$1.call(String(obj),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(obj);return"object"!=typeof obj||hasShammedSymbols?symString:markBoxed(symString)}if(function(x){if(!x||"object"!=typeof x)return!1;if("undefined"!=typeof HTMLElement&&x instanceof HTMLElement)return!0;return"string"==typeof x.nodeName&&"function"==typeof x.getAttribute}(obj)){for(var s="<"+$toLowerCase.call(String(obj.nodeName)),attrs=obj.attributes||[],i=0;i"}if(isArray$1(obj)){if(0===obj.length)return"[]";var xs=arrObjKeys(obj,inspect);return indent&&!function(xs){for(var i=0;i=0)return!1;return!0}(xs)?"["+indentedJoin(xs,indent)+"]":"[ "+$join.call(xs,", ")+" ]"}if(function(obj){return!("[object Error]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)){var parts=arrObjKeys(obj,inspect);return"cause"in Error.prototype||!("cause"in obj)||isEnumerable.call(obj,"cause")?0===parts.length?"["+String(obj)+"]":"{ ["+String(obj)+"] "+$join.call(parts,", ")+" }":"{ ["+String(obj)+"] "+$join.call($concat$1.call("[cause]: "+inspect(obj.cause),parts),", ")+" }"}if("object"==typeof obj&&customInspect){if(inspectSymbol&&"function"==typeof obj[inspectSymbol]&&utilInspect)return utilInspect(obj,{depth:maxDepth-depth});if("symbol"!==customInspect&&"function"==typeof obj.inspect)return obj.inspect()}if(function(x){if(!mapSize||!x||"object"!=typeof x)return!1;try{mapSize.call(x);try{setSize.call(x)}catch(s){return!0}return x instanceof Map}catch(e){}return!1}(obj)){var mapParts=[];return mapForEach&&mapForEach.call(obj,(function(value,key){mapParts.push(inspect(key,obj,!0)+" => "+inspect(value,obj))})),collectionOf("Map",mapSize.call(obj),mapParts,indent)}if(function(x){if(!setSize||!x||"object"!=typeof x)return!1;try{setSize.call(x);try{mapSize.call(x)}catch(m){return!0}return x instanceof Set}catch(e){}return!1}(obj)){var setParts=[];return setForEach&&setForEach.call(obj,(function(value){setParts.push(inspect(value,obj))})),collectionOf("Set",setSize.call(obj),setParts,indent)}if(function(x){if(!weakMapHas||!x||"object"!=typeof x)return!1;try{weakMapHas.call(x,weakMapHas);try{weakSetHas.call(x,weakSetHas)}catch(s){return!0}return x instanceof WeakMap}catch(e){}return!1}(obj))return weakCollectionOf("WeakMap");if(function(x){if(!weakSetHas||!x||"object"!=typeof x)return!1;try{weakSetHas.call(x,weakSetHas);try{weakMapHas.call(x,weakMapHas)}catch(s){return!0}return x instanceof WeakSet}catch(e){}return!1}(obj))return weakCollectionOf("WeakSet");if(function(x){if(!weakRefDeref||!x||"object"!=typeof x)return!1;try{return weakRefDeref.call(x),!0}catch(e){}return!1}(obj))return weakCollectionOf("WeakRef");if(function(obj){return!("[object Number]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(Number(obj)));if(function(obj){if(!obj||"object"!=typeof obj||!bigIntValueOf)return!1;try{return bigIntValueOf.call(obj),!0}catch(e){}return!1}(obj))return markBoxed(inspect(bigIntValueOf.call(obj)));if(function(obj){return!("[object Boolean]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(booleanValueOf.call(obj));if(function(obj){return!("[object String]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj))return markBoxed(inspect(String(obj)));if(!function(obj){return!("[object Date]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}(obj)&&!isRegExp(obj)){var ys=arrObjKeys(obj,inspect),isPlainObject=gPO?gPO(obj)===Object.prototype:obj instanceof Object||obj.constructor===Object,protoTag=obj instanceof Object?"":"null prototype",stringTag=!isPlainObject&&toStringTag&&Object(obj)===obj&&toStringTag in obj?$slice.call(toStr$1(obj),8,-1):protoTag?"Object":"",tag=(isPlainObject||"function"!=typeof obj.constructor?"":obj.constructor.name?obj.constructor.name+" ":"")+(stringTag||protoTag?"["+$join.call($concat$1.call([],stringTag||[],protoTag||[]),": ")+"] ":"");return 0===ys.length?tag+"{}":indent?tag+"{"+indentedJoin(ys,indent)+"}":tag+"{ "+$join.call(ys,", ")+" }"}return String(obj)};function wrapQuotes(s,defaultStyle,opts){var quoteChar="double"===(opts.quoteStyle||defaultStyle)?'"':"'";return quoteChar+s+quoteChar}function quote(s){return $replace$1.call(String(s),/"/g,""")}function isArray$1(obj){return!("[object Array]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isRegExp(obj){return!("[object RegExp]"!==toStr$1(obj)||toStringTag&&"object"==typeof obj&&toStringTag in obj)}function isSymbol(obj){if(hasShammedSymbols)return obj&&"object"==typeof obj&&obj instanceof Symbol;if("symbol"==typeof obj)return!0;if(!obj||"object"!=typeof obj||!symToString)return!1;try{return symToString.call(obj),!0}catch(e){}return!1}var hasOwn=Object.prototype.hasOwnProperty||function(key){return key in this};function has(obj,key){return hasOwn.call(obj,key)}function toStr$1(obj){return objectToString.call(obj)}function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0,l=xs.length;i1;){var item=queue.pop(),obj=item.obj[item.prop];if(isArray$2(obj)){for(var compacted=[],j=0;j=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||format===formats.RFC1738&&(40===c||41===c)?out+=string.charAt(i):c<128?out+=hexTable[c]:c<2048?out+=hexTable[192|c>>6]+hexTable[128|63&c]:c<55296||c>=57344?out+=hexTable[224|c>>12]+hexTable[128|c>>6&63]+hexTable[128|63&c]:(i+=1,c=65536+((1023&c)<<10|1023&string.charCodeAt(i)),out+=hexTable[240|c>>18]+hexTable[128|c>>12&63]+hexTable[128|c>>6&63]+hexTable[128|63&c])}return out},isBuffer:function(obj){return!(!obj||"object"!=typeof obj)&&!!(obj.constructor&&obj.constructor.isBuffer&&obj.constructor.isBuffer(obj))},isRegExp:function(obj){return"[object RegExp]"===Object.prototype.toString.call(obj)},maybeMap:function(val,fn){if(isArray$2(val)){for(var mapped=[],i=0;i0?obj.join(",")||null:void 0}];else if(isArray$3(filter))objKeys=filter;else{var keys=Object.keys(obj);objKeys=sort?keys.sort(sort):keys}for(var adjustedPrefix=commaRoundTrip&&isArray$3(obj)&&1===obj.length?prefix+"[]":prefix,j=0;j0?prefix+joined:""});function PopupHandler(webAuth){this.webAuth=webAuth,this._current_popup=null,this.options=null}function PluginHandler(webAuth){this.webAuth=webAuth}function CordovaPlugin(){this.webAuth=null,this.version=version_raw,this.extensibilityPoints=["popup.authorize","popup.getPopupHandler"]}return PopupHandler.prototype.preload=function(options){var _this=this,_window=windowHandler.getWindow(),url=options.url||"about:blank",popupOptions=options.popupOptions||{};popupOptions.location="yes",delete popupOptions.width,delete popupOptions.height;var windowFeatures=lib_stringify(popupOptions,{encode:!1,delimiter:","});return this._current_popup&&!this._current_popup.closed||(this._current_popup=_window.open(url,"_blank",windowFeatures),this._current_popup.kill=function(success){_this._current_popup.success=success,this.close(),_this._current_popup=null}),this._current_popup},PopupHandler.prototype.load=function(url,_,options,cb){var _this=this;this.url=url,this.options=options,this._current_popup?this._current_popup.location.href=url:(options.url=url,this.preload(options)),this.transientErrorHandler=function(event){_this.errorHandler(event,cb)},this.transientStartHandler=function(event){_this.startHandler(event,cb)},this.transientExitHandler=function(){_this.exitHandler(cb)},this._current_popup.addEventListener("loaderror",this.transientErrorHandler),this._current_popup.addEventListener("loadstart",this.transientStartHandler),this._current_popup.addEventListener("exit",this.transientExitHandler)},PopupHandler.prototype.errorHandler=function(event,cb){this._current_popup&&(this._current_popup.kill(!0),cb({error:"window_error",errorDescription:event.message}))},PopupHandler.prototype.unhook=function(){this._current_popup.removeEventListener("loaderror",this.transientErrorHandler),this._current_popup.removeEventListener("loadstart",this.transientStartHandler),this._current_popup.removeEventListener("exit",this.transientExitHandler)},PopupHandler.prototype.exitHandler=function(cb){this._current_popup&&(this.unhook(),this._current_popup.success||cb({error:"window_closed",errorDescription:"Browser window closed"}))},PopupHandler.prototype.startHandler=function(event,cb){var _this=this;if(this._current_popup){var callbackUrl=urlJoin("https:",this.webAuth.baseOptions.domain,"/mobile");if(!event.url||0===event.url.indexOf(callbackUrl+"#")){var parts=event.url.split("#");if(1!==parts.length){var opts={hash:parts.pop()};this.options.nonce&&(opts.nonce=this.options.nonce),this.webAuth.parseHash(opts,(function(error,result){(error||result)&&(_this._current_popup.kill(!0),cb(error,result))}))}}}},PluginHandler.prototype.processParams=function(params){return params.redirectUri=urlJoin("https://"+params.domain,"mobile"),delete params.owp,params},PluginHandler.prototype.getPopupHandler=function(){return new PopupHandler(this.webAuth)},CordovaPlugin.prototype.setWebAuth=function(webAuth){this.webAuth=webAuth},CordovaPlugin.prototype.supports=function(extensibilityPoint){var _window=windowHandler.getWindow();return(!!_window.cordova||!!_window.electron)&&this.extensibilityPoints.indexOf(extensibilityPoint)>-1},CordovaPlugin.prototype.init=function(){return new PluginHandler(this.webAuth)},CordovaPlugin})); //# sourceMappingURL=cordova-auth0-plugin.min.js.map diff --git a/dist/cordova-auth0-plugin.min.js.map b/dist/cordova-auth0-plugin.min.js.map index 819670e2..2bb8ea6a 100644 --- a/dist/cordova-auth0-plugin.min.js.map +++ b/dist/cordova-auth0-plugin.min.js.map @@ -1 +1 @@ -{"version":3,"file":"cordova-auth0-plugin.min.js","sources":["../src/version.js","../src/helper/assert.js","../src/helper/object-assign.js","../src/helper/object.js","../src/helper/window.js","../node_modules/url-join/lib/url-join.js","../node_modules/has-symbols/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-symbols/shams.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../plugins/cordova/popup-handler.js","../plugins/cordova/plugin-handler.js","../plugins/cordova/index.js"],"sourcesContent":["module.exports = { raw: '9.25.0' };\n","var toString = Object.prototype.toString;\n\nfunction attribute(o, attr, type, text) {\n type = type === 'array' ? 'object' : type;\n if (o && typeof o[attr] !== type) {\n throw new Error(text);\n }\n}\n\nfunction variable(o, type, text) {\n if (typeof o !== type) {\n throw new Error(text);\n }\n}\n\nfunction value(o, values, text) {\n if (values.indexOf(o) === -1) {\n throw new Error(text);\n }\n}\n\nfunction check(o, config, attributes) {\n if (!config.optional || o) {\n variable(o, config.type, config.message);\n }\n if (config.type === 'object' && attributes) {\n var keys = Object.keys(attributes);\n\n for (var index = 0; index < keys.length; index++) {\n var a = keys[index];\n if (!attributes[a].optional || o[a]) {\n if (!attributes[a].condition || attributes[a].condition(o)) {\n attribute(o, a, attributes[a].type, attributes[a].message);\n if (attributes[a].values) {\n value(o[a], attributes[a].values, attributes[a].value_message);\n }\n }\n }\n }\n }\n}\n\n/**\n * Wrap `Array.isArray` Polyfill for IE9\n * source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\n *\n * @param {Array} array\n * @private\n */\nfunction isArray(array) {\n if (this.supportsIsArray()) {\n return Array.isArray(array);\n }\n\n return toString.call(array) === '[object Array]';\n}\n\nfunction supportsIsArray() {\n return Array.isArray != null;\n}\n\nexport default {\n check: check,\n attribute: attribute,\n variable: variable,\n value: value,\n isArray: isArray,\n supportsIsArray: supportsIsArray\n};\n","/* eslint-disable no-continue */\n\nfunction get() {\n if (!Object.assign) {\n return objectAssignPolyfill;\n }\n\n return Object.assign;\n}\n\nfunction objectAssignPolyfill(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (\n var nextIndex = 0, len = keysArray.length;\n nextIndex < len;\n nextIndex++\n ) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nexport default {\n get: get,\n objectAssignPolyfill: objectAssignPolyfill\n};\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\n\nimport assert from './assert';\nimport objectAssign from './object-assign';\n\nfunction pick(object, keys) {\n return keys.reduce(function(prev, key) {\n if (object[key]) {\n prev[key] = object[key];\n }\n return prev;\n }, {});\n}\n\nfunction getKeysNotIn(obj, allowedKeys) {\n var notAllowed = [];\n for (var key in obj) {\n if (allowedKeys.indexOf(key) === -1) {\n notAllowed.push(key);\n }\n }\n return notAllowed;\n}\n\nfunction objectValues(obj) {\n var values = [];\n for (var key in obj) {\n values.push(obj[key]);\n }\n return values;\n}\n\nfunction extend() {\n var params = objectValues(arguments);\n params.unshift({});\n return objectAssign.get().apply(undefined, params);\n}\n\nfunction merge(object, keys) {\n return {\n base: keys ? pick(object, keys) : object,\n with: function(object2, keys2) {\n object2 = keys2 ? pick(object2, keys2) : object2;\n return extend(this.base, object2);\n }\n };\n}\n\nfunction blacklist(object, blacklistedKeys) {\n return Object.keys(object).reduce(function(p, key) {\n if (blacklistedKeys.indexOf(key) === -1) {\n p[key] = object[key];\n }\n return p;\n }, {});\n}\n\nfunction camelToSnake(str) {\n var newKey = '';\n var index = 0;\n var code;\n var wasPrevNumber = true;\n var wasPrevUppercase = true;\n\n while (index < str.length) {\n code = str.charCodeAt(index);\n if (\n (!wasPrevUppercase && code >= 65 && code <= 90) ||\n (!wasPrevNumber && code >= 48 && code <= 57)\n ) {\n newKey += '_';\n newKey += str[index].toLowerCase();\n } else {\n newKey += str[index].toLowerCase();\n }\n wasPrevNumber = code >= 48 && code <= 57;\n wasPrevUppercase = code >= 65 && code <= 90;\n index++;\n }\n\n return newKey;\n}\n\nfunction snakeToCamel(str) {\n var parts = str.split('_');\n return parts.reduce(function(p, c) {\n return p + c.charAt(0).toUpperCase() + c.slice(1);\n }, parts.shift());\n}\n\nfunction toSnakeCase(object, exceptions) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n exceptions = exceptions || [];\n\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? camelToSnake(key) : key;\n p[newKey] = toSnakeCase(object[key]);\n return p;\n }, {});\n}\n\nfunction toCamelCase(object, exceptions, options) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n\n exceptions = exceptions || [];\n options = options || {};\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? snakeToCamel(key) : key;\n\n p[newKey] = toCamelCase(object[newKey] || object[key], [], options);\n\n if (options.keepOriginal) {\n p[key] = toCamelCase(object[key], [], options);\n }\n return p;\n }, {});\n}\n\nfunction getLocationFromUrl(href) {\n var match = href.match(\n /^(https?:|file:|chrome-extension:)\\/\\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\\?[^#]*|)(#.*|)$/\n );\n return (\n match && {\n href: href,\n protocol: match[1],\n host: match[2],\n hostname: match[3],\n port: match[4],\n pathname: match[5],\n search: match[6],\n hash: match[7]\n }\n );\n}\n\nfunction getOriginFromUrl(url) {\n if (!url) {\n return undefined;\n }\n var parsed = getLocationFromUrl(url);\n if (!parsed) {\n return null;\n }\n var origin = parsed.protocol + '//' + parsed.hostname;\n if (parsed.port) {\n origin += ':' + parsed.port;\n }\n return origin;\n}\n\nfunction trim(options, key) {\n var trimmed = extend(options);\n if (options[key]) {\n trimmed[key] = options[key].trim();\n }\n return trimmed;\n}\n\nfunction trimMultiple(options, keys) {\n return keys.reduce(trim, options);\n}\n\nfunction trimUserDetails(options) {\n return trimMultiple(options, ['username', 'email', 'phoneNumber']);\n}\n\n/**\n * Updates the value of a property on the given object, using a deep path selector.\n * @param {object} obj The object to set the property value on\n * @param {string|array} path The path to the property that should have its value updated. e.g. 'prop1.prop2.prop3' or ['prop1', 'prop2', 'prop3']\n * @param {any} value The value to set\n * @ignore\n */\nfunction updatePropertyOn(obj, path, value) {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n\n var next = path[0];\n\n if (obj.hasOwnProperty(next)) {\n if (path.length === 1) {\n obj[next] = value;\n } else {\n updatePropertyOn(obj[next], path.slice(1), value);\n }\n }\n}\n\nexport default {\n toSnakeCase: toSnakeCase,\n toCamelCase: toCamelCase,\n blacklist: blacklist,\n merge: merge,\n pick: pick,\n getKeysNotIn: getKeysNotIn,\n extend: extend,\n getOriginFromUrl: getOriginFromUrl,\n getLocationFromUrl: getLocationFromUrl,\n trimUserDetails: trimUserDetails,\n updatePropertyOn: updatePropertyOn\n};\n","import objectHelper from './object';\n\nfunction redirect(url) {\n getWindow().location = url;\n}\n\nfunction getDocument() {\n return getWindow().document;\n}\n\nfunction getWindow() {\n return window;\n}\n\nfunction getOrigin() {\n var location = getWindow().location;\n var origin = location.origin;\n\n if (!origin) {\n origin = objectHelper.getOriginFromUrl(location.href);\n }\n\n return origin;\n}\n\nexport default {\n redirect: redirect,\n getDocument: getDocument,\n getWindow: getWindow,\n getOrigin: getOrigin\n};\n","(function (name, context, definition) {\n if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n else if (typeof define === 'function' && define.amd) define(definition);\n else context[name] = definition();\n})('urljoin', this, function () {\n\n function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n }\n\n return function () {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n };\n\n});\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\ntry {\n\tnull.error; // eslint-disable-line no-unused-expressions\n} catch (e) {\n\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\tvar errorProto = getProto(getProto(e));\n\tINTRINSICS['%Error.prototype%'] = errorProto;\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","import windowHandler from '../../src/helper/window';\nimport qs from 'qs';\nimport urljoin from 'url-join';\n\nfunction PopupHandler(webAuth) {\n this.webAuth = webAuth;\n this._current_popup = null;\n this.options = null;\n}\n\nPopupHandler.prototype.preload = function(options) {\n var _this = this;\n var _window = windowHandler.getWindow();\n\n var url = options.url || 'about:blank';\n var popupOptions = options.popupOptions || {};\n\n popupOptions.location = 'yes';\n delete popupOptions.width;\n delete popupOptions.height;\n\n var windowFeatures = qs.stringify(popupOptions, {\n encode: false,\n delimiter: ','\n });\n\n if (this._current_popup && !this._current_popup.closed) {\n return this._current_popup;\n }\n\n this._current_popup = _window.open(url, '_blank', windowFeatures);\n\n this._current_popup.kill = function(success) {\n _this._current_popup.success = success;\n this.close();\n _this._current_popup = null;\n };\n\n return this._current_popup;\n};\n\nPopupHandler.prototype.load = function(url, _, options, cb) {\n var _this = this;\n this.url = url;\n this.options = options;\n if (!this._current_popup) {\n options.url = url;\n this.preload(options);\n } else {\n this._current_popup.location.href = url;\n }\n\n this.transientErrorHandler = function(event) {\n _this.errorHandler(event, cb);\n };\n\n this.transientStartHandler = function(event) {\n _this.startHandler(event, cb);\n };\n\n this.transientExitHandler = function() {\n _this.exitHandler(cb);\n };\n\n this._current_popup.addEventListener('loaderror', this.transientErrorHandler);\n this._current_popup.addEventListener('loadstart', this.transientStartHandler);\n this._current_popup.addEventListener('exit', this.transientExitHandler);\n};\n\nPopupHandler.prototype.errorHandler = function(event, cb) {\n if (!this._current_popup) {\n return;\n }\n\n this._current_popup.kill(true);\n\n cb({ error: 'window_error', errorDescription: event.message });\n};\n\nPopupHandler.prototype.unhook = function() {\n this._current_popup.removeEventListener(\n 'loaderror',\n this.transientErrorHandler\n );\n this._current_popup.removeEventListener(\n 'loadstart',\n this.transientStartHandler\n );\n this._current_popup.removeEventListener('exit', this.transientExitHandler);\n};\n\nPopupHandler.prototype.exitHandler = function(cb) {\n if (!this._current_popup) {\n return;\n }\n\n // when the modal is closed, this event is called which ends up removing the\n // event listeners. If you move this before closing the modal, it will add ~1 sec\n // delay between the user being redirected to the callback and the popup gets closed.\n this.unhook();\n\n if (!this._current_popup.success) {\n cb({ error: 'window_closed', errorDescription: 'Browser window closed' });\n }\n};\n\nPopupHandler.prototype.startHandler = function(event, cb) {\n var _this = this;\n\n if (!this._current_popup) {\n return;\n }\n\n var callbackUrl = urljoin(\n 'https:',\n this.webAuth.baseOptions.domain,\n '/mobile'\n );\n\n if (event.url && !(event.url.indexOf(callbackUrl + '#') === 0)) {\n return;\n }\n\n var parts = event.url.split('#');\n\n if (parts.length === 1) {\n return;\n }\n\n var opts = { hash: parts.pop() };\n\n if (this.options.nonce) {\n opts.nonce = this.options.nonce;\n }\n\n this.webAuth.parseHash(opts, function(error, result) {\n if (error || result) {\n _this._current_popup.kill(true);\n cb(error, result);\n }\n });\n};\n\nexport default PopupHandler;\n","import urljoin from 'url-join';\nimport PopupHandler from './popup-handler';\n\nfunction PluginHandler(webAuth) {\n this.webAuth = webAuth;\n}\n\nPluginHandler.prototype.processParams = function(params) {\n params.redirectUri = urljoin('https://' + params.domain, 'mobile');\n delete params.owp;\n return params;\n};\n\nPluginHandler.prototype.getPopupHandler = function() {\n return new PopupHandler(this.webAuth);\n};\n\nexport default PluginHandler;\n","import version from '../../src/version';\nimport windowHandler from '../../src/helper/window';\nimport PluginHandler from './plugin-handler';\n\nfunction CordovaPlugin() {\n this.webAuth = null;\n this.version = version.raw;\n this.extensibilityPoints = ['popup.authorize', 'popup.getPopupHandler'];\n}\n\nCordovaPlugin.prototype.setWebAuth = function(webAuth) {\n this.webAuth = webAuth;\n};\n\nCordovaPlugin.prototype.supports = function(extensibilityPoint) {\n var _window = windowHandler.getWindow();\n return (\n (!!_window.cordova || !!_window.electron) &&\n this.extensibilityPoints.indexOf(extensibilityPoint) > -1\n );\n};\n\nCordovaPlugin.prototype.init = function() {\n return new PluginHandler(this.webAuth);\n};\n\nexport default CordovaPlugin;\n"],"names":["toString","Object","prototype","attribute","o","attr","type","text","Error","variable","value","values","indexOf","check","config","attributes","optional","message","keys","index","length","a","condition","value_message","isArray","array","this","supportsIsArray","Array","call","objectAssignPolyfill","target","TypeError","to","i","arguments","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","undefined","enumerable","get","assign","pick","object","reduce","prev","key","objectValues","obj","push","extend","params","unshift","objectAssign","apply","getLocationFromUrl","href","match","protocol","host","hostname","port","pathname","search","hash","trim","options","trimmed","toSnakeCase","exceptions","assert","p","str","code","newKey","wasPrevNumber","wasPrevUppercase","charCodeAt","toLowerCase","camelToSnake","toCamelCase","parts","split","c","charAt","toUpperCase","slice","shift","keepOriginal","blacklist","blacklistedKeys","merge","base","with","object2","keys2","getKeysNotIn","allowedKeys","notAllowed","getOriginFromUrl","url","parsed","origin","trimUserDetails","trimMultiple","updatePropertyOn","path","next","hasOwnProperty","getWindow","window","redirect","location","getDocument","document","getOrigin","objectHelper","context","definition","normalize","strArray","resultArray","first","replace","component","join","module","exports","origSymbol","Symbol","ERROR_MESSAGE","toStr","Function","bind","that","bound","args","binder","result","concat","boundLength","Math","max","boundArgs","Empty","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","e","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getOwnPropertySymbols","iterator","sym","symObj","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","hasSymbolSham","getProto","getPrototypeOf","x","__proto__","needsEval","TypedArray","Uint8Array","INTRINSICS","%AggregateError%","AggregateError","%Array%","%ArrayBuffer%","ArrayBuffer","%ArrayIteratorPrototype%","%AsyncFromSyncIteratorPrototype%","%AsyncFunction%","%AsyncGenerator%","%AsyncGeneratorFunction%","%AsyncIteratorPrototype%","%Atomics%","Atomics","%BigInt%","BigInt","%BigInt64Array%","BigInt64Array","%BigUint64Array%","BigUint64Array","%Boolean%","Boolean","%DataView%","DataView","%Date%","Date","%decodeURI%","decodeURI","%decodeURIComponent%","decodeURIComponent","%encodeURI%","encodeURI","%encodeURIComponent%","encodeURIComponent","%Error%","%eval%","eval","%EvalError%","EvalError","%Float32Array%","Float32Array","%Float64Array%","Float64Array","%FinalizationRegistry%","FinalizationRegistry","%Function%","%GeneratorFunction%","%Int8Array%","Int8Array","%Int16Array%","Int16Array","%Int32Array%","Int32Array","%isFinite%","isFinite","%isNaN%","isNaN","%IteratorPrototype%","%JSON%","JSON","%Map%","Map","%MapIteratorPrototype%","%Math%","%Number%","Number","%Object%","%parseFloat%","parseFloat","%parseInt%","parseInt","%Promise%","Promise","%Proxy%","Proxy","%RangeError%","RangeError","%ReferenceError%","ReferenceError","%Reflect%","Reflect","%RegExp%","RegExp","%Set%","Set","%SetIteratorPrototype%","%SharedArrayBuffer%","SharedArrayBuffer","%String%","String","%StringIteratorPrototype%","%Symbol%","%SyntaxError%","%ThrowTypeError%","%TypedArray%","%TypeError%","%Uint8Array%","%Uint8ClampedArray%","Uint8ClampedArray","%Uint16Array%","Uint16Array","%Uint32Array%","Uint32Array","%URIError%","URIError","%WeakMap%","WeakMap","%WeakRef%","WeakRef","%WeakSet%","WeakSet","error","errorProto","LEGACY_ALIASES","%ArrayBufferPrototype%","%ArrayPrototype%","%ArrayProto_entries%","%ArrayProto_forEach%","%ArrayProto_keys%","%ArrayProto_values%","%AsyncFunctionPrototype%","%AsyncGeneratorPrototype%","%BooleanPrototype%","%DataViewPrototype%","%DatePrototype%","%ErrorPrototype%","%EvalErrorPrototype%","%Float32ArrayPrototype%","%Float64ArrayPrototype%","%FunctionPrototype%","%Generator%","%GeneratorPrototype%","%Int8ArrayPrototype%","%Int16ArrayPrototype%","%Int32ArrayPrototype%","%JSONParse%","%JSONStringify%","%MapPrototype%","%NumberPrototype%","%ObjectPrototype%","%ObjProto_toString%","%ObjProto_valueOf%","%PromisePrototype%","%PromiseProto_then%","%Promise_all%","%Promise_reject%","%Promise_resolve%","%RangeErrorPrototype%","%ReferenceErrorPrototype%","%RegExpPrototype%","%SetPrototype%","%SharedArrayBufferPrototype%","%StringPrototype%","%SymbolPrototype%","%SyntaxErrorPrototype%","%TypedArrayPrototype%","%TypeErrorPrototype%","%Uint8ArrayPrototype%","%Uint8ClampedArrayPrototype%","%Uint16ArrayPrototype%","%Uint32ArrayPrototype%","%URIErrorPrototype%","%WeakMapPrototype%","%WeakSetPrototype%","$concat","$spliceApply","splice","$replace","$strSlice","$exec","exec","rePropName","reEscapeChar","stringToPath","string","last","number","quote","subString","getBaseIntrinsic","name","allowMissing","alias","intrinsicName","hasOwn","doEval","fn","gen","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","$apply","GetIntrinsic","$call","$reflectApply","$defineProperty","$max","originalFunction","func","configurable","applyBind","$indexOf","callBind","hasMap","mapSizeDescriptor","mapSize","mapForEach","forEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","has","weakSetHas","weakRefDeref","deref","booleanValueOf","valueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","test","$join","$arrSlice","$floor","floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","inspectCustom","utilInspect","custom","inspectSymbol","isSymbol","inspect_","depth","seen","opts","quoteStyle","maxStringLength","customInspect","indent","numericSeparator","inspectString","remaining","trailer","wrapQuotes","lowbyte","bigIntStr","maxDepth","baseIndent","getIndent","inspect","from","noIndent","newOpts","isRegExp","f","m","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","isElement","s","attrs","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","isPlainObject","constructor","protoTag","stringTag","tag","defaultStyle","quoteChar","l","n","8","9","10","12","13","size","entries","lineJoiner","isArr","symMap","k","j","$WeakMap","$Map","$weakMapGet","callBound","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","list","curr","$wm","$m","$o","channel","objects","node","listGet","listHas","set","listSet","percentTwenties","Format","default","formatters","RFC1738","RFC3986","hexTable","arrayToObject","source","plainObjects","create","acc","combine","b","compact","queue","prop","refs","item","val","pop","compacted","compactQueue","decode","decoder","charset","strWithoutPlus","unescape","encode","defaultEncoder","kind","format","escape","$0","out","formats","isBuffer","maybeMap","mapped","allowPrototypes","mergeTarget","targetItem","arrayPrefixGenerators","brackets","prefix","comma","indices","repeat","pushToArray","arr","valueOrArray","toISO","toISOString","defaultFormat","defaults","addQueryPrefix","allowDots","charsetSentinel","delimiter","encoder","utils","encodeValuesOnly","formatter","serializeDate","date","skipNulls","strictNullHandling","sentinel","stringify","generateArrayPrefix","commaRoundTrip","filter","sort","sideChannel","v","tmpSc","step","findFlag","pos","keyValue","valuesArray","valuesJoined","objKeys","adjustedPrefix","keyPrefix","valueSideChannel","getSideChannel","normalizeStringifyOptions","arrayFormat","joined","PopupHandler","webAuth","_current_popup","PluginHandler","CordovaPlugin","version","extensibilityPoints","preload","_this","_window","windowHandler","popupOptions","width","height","windowFeatures","qs","closed","open","kill","success","close","load","_","cb","transientErrorHandler","event","errorHandler","transientStartHandler","startHandler","transientExitHandler","exitHandler","addEventListener","errorDescription","unhook","removeEventListener","callbackUrl","urljoin","baseOptions","domain","nonce","parseHash","processParams","redirectUri","owp","getPopupHandler","setWebAuth","supports","extensibilityPoint","cordova","electron","init"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"cordova-auth0-plugin.min.js","sources":["../src/version.js","../src/helper/assert.js","../src/helper/object-assign.js","../src/helper/object.js","../src/helper/window.js","../node_modules/url-join/lib/url-join.js","../node_modules/has-symbols/index.js","../node_modules/has-proto/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-symbols/shams.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../plugins/cordova/popup-handler.js","../plugins/cordova/plugin-handler.js","../plugins/cordova/index.js"],"sourcesContent":["module.exports = { raw: '9.25.0' };\n","var toString = Object.prototype.toString;\n\nfunction attribute(o, attr, type, text) {\n type = type === 'array' ? 'object' : type;\n if (o && typeof o[attr] !== type) {\n throw new Error(text);\n }\n}\n\nfunction variable(o, type, text) {\n if (typeof o !== type) {\n throw new Error(text);\n }\n}\n\nfunction value(o, values, text) {\n if (values.indexOf(o) === -1) {\n throw new Error(text);\n }\n}\n\nfunction check(o, config, attributes) {\n if (!config.optional || o) {\n variable(o, config.type, config.message);\n }\n if (config.type === 'object' && attributes) {\n var keys = Object.keys(attributes);\n\n for (var index = 0; index < keys.length; index++) {\n var a = keys[index];\n if (!attributes[a].optional || o[a]) {\n if (!attributes[a].condition || attributes[a].condition(o)) {\n attribute(o, a, attributes[a].type, attributes[a].message);\n if (attributes[a].values) {\n value(o[a], attributes[a].values, attributes[a].value_message);\n }\n }\n }\n }\n }\n}\n\n/**\n * Wrap `Array.isArray` Polyfill for IE9\n * source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\n *\n * @param {Array} array\n * @private\n */\nfunction isArray(array) {\n if (this.supportsIsArray()) {\n return Array.isArray(array);\n }\n\n return toString.call(array) === '[object Array]';\n}\n\nfunction supportsIsArray() {\n return Array.isArray != null;\n}\n\nexport default {\n check: check,\n attribute: attribute,\n variable: variable,\n value: value,\n isArray: isArray,\n supportsIsArray: supportsIsArray\n};\n","/* eslint-disable no-continue */\n\nfunction get() {\n if (!Object.assign) {\n return objectAssignPolyfill;\n }\n\n return Object.assign;\n}\n\nfunction objectAssignPolyfill(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (\n var nextIndex = 0, len = keysArray.length;\n nextIndex < len;\n nextIndex++\n ) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nexport default {\n get: get,\n objectAssignPolyfill: objectAssignPolyfill\n};\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\n\nimport assert from './assert';\nimport objectAssign from './object-assign';\n\nfunction pick(object, keys) {\n return keys.reduce(function(prev, key) {\n if (object[key]) {\n prev[key] = object[key];\n }\n return prev;\n }, {});\n}\n\nfunction getKeysNotIn(obj, allowedKeys) {\n var notAllowed = [];\n for (var key in obj) {\n if (allowedKeys.indexOf(key) === -1) {\n notAllowed.push(key);\n }\n }\n return notAllowed;\n}\n\nfunction objectValues(obj) {\n var values = [];\n for (var key in obj) {\n values.push(obj[key]);\n }\n return values;\n}\n\nfunction extend() {\n var params = objectValues(arguments);\n params.unshift({});\n return objectAssign.get().apply(undefined, params);\n}\n\nfunction merge(object, keys) {\n return {\n base: keys ? pick(object, keys) : object,\n with: function(object2, keys2) {\n object2 = keys2 ? pick(object2, keys2) : object2;\n return extend(this.base, object2);\n }\n };\n}\n\nfunction blacklist(object, blacklistedKeys) {\n return Object.keys(object).reduce(function(p, key) {\n if (blacklistedKeys.indexOf(key) === -1) {\n p[key] = object[key];\n }\n return p;\n }, {});\n}\n\nfunction camelToSnake(str) {\n var newKey = '';\n var index = 0;\n var code;\n var wasPrevNumber = true;\n var wasPrevUppercase = true;\n\n while (index < str.length) {\n code = str.charCodeAt(index);\n if (\n (!wasPrevUppercase && code >= 65 && code <= 90) ||\n (!wasPrevNumber && code >= 48 && code <= 57)\n ) {\n newKey += '_';\n newKey += str[index].toLowerCase();\n } else {\n newKey += str[index].toLowerCase();\n }\n wasPrevNumber = code >= 48 && code <= 57;\n wasPrevUppercase = code >= 65 && code <= 90;\n index++;\n }\n\n return newKey;\n}\n\nfunction snakeToCamel(str) {\n var parts = str.split('_');\n return parts.reduce(function(p, c) {\n return p + c.charAt(0).toUpperCase() + c.slice(1);\n }, parts.shift());\n}\n\nfunction toSnakeCase(object, exceptions) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n exceptions = exceptions || [];\n\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? camelToSnake(key) : key;\n p[newKey] = toSnakeCase(object[key]);\n return p;\n }, {});\n}\n\nfunction toCamelCase(object, exceptions, options) {\n if (typeof object !== 'object' || assert.isArray(object) || object === null) {\n return object;\n }\n\n exceptions = exceptions || [];\n options = options || {};\n return Object.keys(object).reduce(function(p, key) {\n var newKey = exceptions.indexOf(key) === -1 ? snakeToCamel(key) : key;\n\n p[newKey] = toCamelCase(object[newKey] || object[key], [], options);\n\n if (options.keepOriginal) {\n p[key] = toCamelCase(object[key], [], options);\n }\n return p;\n }, {});\n}\n\nfunction getLocationFromUrl(href) {\n var match = href.match(\n /^(https?:|file:|chrome-extension:)\\/\\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\\?[^#]*|)(#.*|)$/\n );\n return (\n match && {\n href: href,\n protocol: match[1],\n host: match[2],\n hostname: match[3],\n port: match[4],\n pathname: match[5],\n search: match[6],\n hash: match[7]\n }\n );\n}\n\nfunction getOriginFromUrl(url) {\n if (!url) {\n return undefined;\n }\n var parsed = getLocationFromUrl(url);\n if (!parsed) {\n return null;\n }\n var origin = parsed.protocol + '//' + parsed.hostname;\n if (parsed.port) {\n origin += ':' + parsed.port;\n }\n return origin;\n}\n\nfunction trim(options, key) {\n var trimmed = extend(options);\n if (options[key]) {\n trimmed[key] = options[key].trim();\n }\n return trimmed;\n}\n\nfunction trimMultiple(options, keys) {\n return keys.reduce(trim, options);\n}\n\nfunction trimUserDetails(options) {\n return trimMultiple(options, ['username', 'email', 'phoneNumber']);\n}\n\n/**\n * Updates the value of a property on the given object, using a deep path selector.\n * @param {object} obj The object to set the property value on\n * @param {string|array} path The path to the property that should have its value updated. e.g. 'prop1.prop2.prop3' or ['prop1', 'prop2', 'prop3']\n * @param {any} value The value to set\n * @ignore\n */\nfunction updatePropertyOn(obj, path, value) {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n\n var next = path[0];\n\n if (obj.hasOwnProperty(next)) {\n if (path.length === 1) {\n obj[next] = value;\n } else {\n updatePropertyOn(obj[next], path.slice(1), value);\n }\n }\n}\n\nexport default {\n toSnakeCase: toSnakeCase,\n toCamelCase: toCamelCase,\n blacklist: blacklist,\n merge: merge,\n pick: pick,\n getKeysNotIn: getKeysNotIn,\n extend: extend,\n getOriginFromUrl: getOriginFromUrl,\n getLocationFromUrl: getLocationFromUrl,\n trimUserDetails: trimUserDetails,\n updatePropertyOn: updatePropertyOn\n};\n","import objectHelper from './object';\n\nfunction redirect(url) {\n getWindow().location = url;\n}\n\nfunction getDocument() {\n return getWindow().document;\n}\n\nfunction getWindow() {\n return window;\n}\n\nfunction getOrigin() {\n var location = getWindow().location;\n var origin = location.origin;\n\n if (!origin) {\n origin = objectHelper.getOriginFromUrl(location.href);\n }\n\n return origin;\n}\n\nexport default {\n redirect: redirect,\n getDocument: getDocument,\n getWindow: getWindow,\n getOrigin: getOrigin\n};\n","(function (name, context, definition) {\n if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n else if (typeof define === 'function' && define.amd) define(definition);\n else context[name] = definition();\n})('urljoin', this, function () {\n\n function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n }\n\n return function () {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n };\n\n});\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","import windowHandler from '../../src/helper/window';\nimport qs from 'qs';\nimport urljoin from 'url-join';\n\nfunction PopupHandler(webAuth) {\n this.webAuth = webAuth;\n this._current_popup = null;\n this.options = null;\n}\n\nPopupHandler.prototype.preload = function(options) {\n var _this = this;\n var _window = windowHandler.getWindow();\n\n var url = options.url || 'about:blank';\n var popupOptions = options.popupOptions || {};\n\n popupOptions.location = 'yes';\n delete popupOptions.width;\n delete popupOptions.height;\n\n var windowFeatures = qs.stringify(popupOptions, {\n encode: false,\n delimiter: ','\n });\n\n if (this._current_popup && !this._current_popup.closed) {\n return this._current_popup;\n }\n\n this._current_popup = _window.open(url, '_blank', windowFeatures);\n\n this._current_popup.kill = function(success) {\n _this._current_popup.success = success;\n this.close();\n _this._current_popup = null;\n };\n\n return this._current_popup;\n};\n\nPopupHandler.prototype.load = function(url, _, options, cb) {\n var _this = this;\n this.url = url;\n this.options = options;\n if (!this._current_popup) {\n options.url = url;\n this.preload(options);\n } else {\n this._current_popup.location.href = url;\n }\n\n this.transientErrorHandler = function(event) {\n _this.errorHandler(event, cb);\n };\n\n this.transientStartHandler = function(event) {\n _this.startHandler(event, cb);\n };\n\n this.transientExitHandler = function() {\n _this.exitHandler(cb);\n };\n\n this._current_popup.addEventListener('loaderror', this.transientErrorHandler);\n this._current_popup.addEventListener('loadstart', this.transientStartHandler);\n this._current_popup.addEventListener('exit', this.transientExitHandler);\n};\n\nPopupHandler.prototype.errorHandler = function(event, cb) {\n if (!this._current_popup) {\n return;\n }\n\n this._current_popup.kill(true);\n\n cb({ error: 'window_error', errorDescription: event.message });\n};\n\nPopupHandler.prototype.unhook = function() {\n this._current_popup.removeEventListener(\n 'loaderror',\n this.transientErrorHandler\n );\n this._current_popup.removeEventListener(\n 'loadstart',\n this.transientStartHandler\n );\n this._current_popup.removeEventListener('exit', this.transientExitHandler);\n};\n\nPopupHandler.prototype.exitHandler = function(cb) {\n if (!this._current_popup) {\n return;\n }\n\n // when the modal is closed, this event is called which ends up removing the\n // event listeners. If you move this before closing the modal, it will add ~1 sec\n // delay between the user being redirected to the callback and the popup gets closed.\n this.unhook();\n\n if (!this._current_popup.success) {\n cb({ error: 'window_closed', errorDescription: 'Browser window closed' });\n }\n};\n\nPopupHandler.prototype.startHandler = function(event, cb) {\n var _this = this;\n\n if (!this._current_popup) {\n return;\n }\n\n var callbackUrl = urljoin(\n 'https:',\n this.webAuth.baseOptions.domain,\n '/mobile'\n );\n\n if (event.url && !(event.url.indexOf(callbackUrl + '#') === 0)) {\n return;\n }\n\n var parts = event.url.split('#');\n\n if (parts.length === 1) {\n return;\n }\n\n var opts = { hash: parts.pop() };\n\n if (this.options.nonce) {\n opts.nonce = this.options.nonce;\n }\n\n this.webAuth.parseHash(opts, function(error, result) {\n if (error || result) {\n _this._current_popup.kill(true);\n cb(error, result);\n }\n });\n};\n\nexport default PopupHandler;\n","import urljoin from 'url-join';\nimport PopupHandler from './popup-handler';\n\nfunction PluginHandler(webAuth) {\n this.webAuth = webAuth;\n}\n\nPluginHandler.prototype.processParams = function(params) {\n params.redirectUri = urljoin('https://' + params.domain, 'mobile');\n delete params.owp;\n return params;\n};\n\nPluginHandler.prototype.getPopupHandler = function() {\n return new PopupHandler(this.webAuth);\n};\n\nexport default PluginHandler;\n","import version from '../../src/version';\nimport windowHandler from '../../src/helper/window';\nimport PluginHandler from './plugin-handler';\n\nfunction CordovaPlugin() {\n this.webAuth = null;\n this.version = version.raw;\n this.extensibilityPoints = ['popup.authorize', 'popup.getPopupHandler'];\n}\n\nCordovaPlugin.prototype.setWebAuth = function(webAuth) {\n this.webAuth = webAuth;\n};\n\nCordovaPlugin.prototype.supports = function(extensibilityPoint) {\n var _window = windowHandler.getWindow();\n return (\n (!!_window.cordova || !!_window.electron) &&\n this.extensibilityPoints.indexOf(extensibilityPoint) > -1\n );\n};\n\nCordovaPlugin.prototype.init = function() {\n return new PluginHandler(this.webAuth);\n};\n\nexport default CordovaPlugin;\n"],"names":["toString","Object","prototype","attribute","o","attr","type","text","Error","variable","value","values","indexOf","check","config","attributes","optional","message","keys","index","length","a","condition","value_message","isArray","array","this","supportsIsArray","Array","call","objectAssignPolyfill","target","TypeError","to","i","arguments","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","undefined","enumerable","get","assign","pick","object","reduce","prev","key","objectValues","obj","push","extend","params","unshift","objectAssign","apply","getLocationFromUrl","href","match","protocol","host","hostname","port","pathname","search","hash","trim","options","trimmed","toSnakeCase","exceptions","assert","p","str","code","newKey","wasPrevNumber","wasPrevUppercase","charCodeAt","toLowerCase","camelToSnake","toCamelCase","parts","split","c","charAt","toUpperCase","slice","shift","keepOriginal","blacklist","blacklistedKeys","merge","base","with","object2","keys2","getKeysNotIn","allowedKeys","notAllowed","getOriginFromUrl","url","parsed","origin","trimUserDetails","trimMultiple","updatePropertyOn","path","next","hasOwnProperty","getWindow","window","redirect","location","getDocument","document","getOrigin","objectHelper","context","definition","normalize","strArray","resultArray","first","replace","component","join","module","exports","origSymbol","Symbol","test","foo","$Object","ERROR_MESSAGE","toStr","max","Math","concatty","b","arr","j","slicy","arrLike","offset","joiny","joiner","Function","bind","that","bound","args","binder","result","boundLength","boundArgs","Empty","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","e","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getOwnPropertySymbols","iterator","sym","symObj","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","hasSymbolSham","hasProto","__proto__","getProto","getPrototypeOf","x","needsEval","TypedArray","Uint8Array","INTRINSICS","%AggregateError%","AggregateError","%Array%","%ArrayBuffer%","ArrayBuffer","%ArrayIteratorPrototype%","%AsyncFromSyncIteratorPrototype%","%AsyncFunction%","%AsyncGenerator%","%AsyncGeneratorFunction%","%AsyncIteratorPrototype%","%Atomics%","Atomics","%BigInt%","BigInt","%BigInt64Array%","BigInt64Array","%BigUint64Array%","BigUint64Array","%Boolean%","Boolean","%DataView%","DataView","%Date%","Date","%decodeURI%","decodeURI","%decodeURIComponent%","decodeURIComponent","%encodeURI%","encodeURI","%encodeURIComponent%","encodeURIComponent","%Error%","%eval%","eval","%EvalError%","EvalError","%Float32Array%","Float32Array","%Float64Array%","Float64Array","%FinalizationRegistry%","FinalizationRegistry","%Function%","%GeneratorFunction%","%Int8Array%","Int8Array","%Int16Array%","Int16Array","%Int32Array%","Int32Array","%isFinite%","isFinite","%isNaN%","isNaN","%IteratorPrototype%","%JSON%","JSON","%Map%","Map","%MapIteratorPrototype%","%Math%","%Number%","Number","%Object%","%parseFloat%","parseFloat","%parseInt%","parseInt","%Promise%","Promise","%Proxy%","Proxy","%RangeError%","RangeError","%ReferenceError%","ReferenceError","%Reflect%","Reflect","%RegExp%","RegExp","%Set%","Set","%SetIteratorPrototype%","%SharedArrayBuffer%","SharedArrayBuffer","%String%","String","%StringIteratorPrototype%","%Symbol%","%SyntaxError%","%ThrowTypeError%","%TypedArray%","%TypeError%","%Uint8Array%","%Uint8ClampedArray%","Uint8ClampedArray","%Uint16Array%","Uint16Array","%Uint32Array%","Uint32Array","%URIError%","URIError","%WeakMap%","WeakMap","%WeakRef%","WeakRef","%WeakSet%","WeakSet","error","errorProto","LEGACY_ALIASES","%ArrayBufferPrototype%","%ArrayPrototype%","%ArrayProto_entries%","%ArrayProto_forEach%","%ArrayProto_keys%","%ArrayProto_values%","%AsyncFunctionPrototype%","%AsyncGeneratorPrototype%","%BooleanPrototype%","%DataViewPrototype%","%DatePrototype%","%ErrorPrototype%","%EvalErrorPrototype%","%Float32ArrayPrototype%","%Float64ArrayPrototype%","%FunctionPrototype%","%Generator%","%GeneratorPrototype%","%Int8ArrayPrototype%","%Int16ArrayPrototype%","%Int32ArrayPrototype%","%JSONParse%","%JSONStringify%","%MapPrototype%","%NumberPrototype%","%ObjectPrototype%","%ObjProto_toString%","%ObjProto_valueOf%","%PromisePrototype%","%PromiseProto_then%","%Promise_all%","%Promise_reject%","%Promise_resolve%","%RangeErrorPrototype%","%ReferenceErrorPrototype%","%RegExpPrototype%","%SetPrototype%","%SharedArrayBufferPrototype%","%StringPrototype%","%SymbolPrototype%","%SyntaxErrorPrototype%","%TypedArrayPrototype%","%TypeErrorPrototype%","%Uint8ArrayPrototype%","%Uint8ClampedArrayPrototype%","%Uint16ArrayPrototype%","%Uint32ArrayPrototype%","%URIErrorPrototype%","%WeakMapPrototype%","%WeakSetPrototype%","$concat","concat","$spliceApply","splice","$replace","$strSlice","$exec","exec","rePropName","reEscapeChar","stringToPath","string","last","number","quote","subString","getBaseIntrinsic","name","allowMissing","alias","intrinsicName","hasOwn","doEval","fn","gen","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","$apply","GetIntrinsic","$call","$reflectApply","$defineProperty","$max","originalFunction","func","configurable","applyBind","$indexOf","callBind","hasMap","mapSizeDescriptor","mapSize","mapForEach","forEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","has","weakSetHas","weakRefDeref","deref","booleanValueOf","valueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","inspectCustom","utilInspect","custom","inspectSymbol","isSymbol","inspect_","depth","seen","opts","quoteStyle","maxStringLength","customInspect","indent","numericSeparator","inspectString","remaining","trailer","wrapQuotes","lowbyte","bigIntStr","maxDepth","baseIndent","getIndent","inspect","from","noIndent","newOpts","isRegExp","f","m","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","isElement","s","attrs","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","isPlainObject","constructor","protoTag","stringTag","tag","defaultStyle","quoteChar","l","n","8","9","10","12","13","size","entries","lineJoiner","isArr","symMap","k","$WeakMap","$Map","$weakMapGet","callBound","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","list","curr","$wm","$m","$o","channel","objects","node","listGet","listHas","set","listSet","percentTwenties","Format","default","formatters","RFC1738","RFC3986","hexTable","arrayToObject","source","plainObjects","create","acc","combine","compact","queue","prop","refs","item","val","pop","compacted","compactQueue","decode","decoder","charset","strWithoutPlus","unescape","encode","defaultEncoder","kind","format","escape","$0","out","formats","isBuffer","maybeMap","mapped","allowPrototypes","mergeTarget","targetItem","arrayPrefixGenerators","brackets","prefix","comma","indices","repeat","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","defaults","addQueryPrefix","allowDots","charsetSentinel","delimiter","encoder","utils","encodeValuesOnly","formatter","serializeDate","date","skipNulls","strictNullHandling","sentinel","stringify","generateArrayPrefix","commaRoundTrip","filter","sort","sideChannel","v","tmpSc","step","findFlag","pos","objKeys","adjustedPrefix","keyPrefix","valueSideChannel","getSideChannel","normalizeStringifyOptions","arrayFormat","joined","PopupHandler","webAuth","_current_popup","PluginHandler","CordovaPlugin","version","extensibilityPoints","preload","_this","_window","windowHandler","popupOptions","width","height","windowFeatures","qs","closed","open","kill","success","close","load","_","cb","transientErrorHandler","event","errorHandler","transientStartHandler","startHandler","transientExitHandler","exitHandler","addEventListener","errorDescription","unhook","removeEventListener","callbackUrl","urljoin","baseOptions","domain","nonce","parseHash","processParams","redirectUri","owp","getPopupHandler","setWebAuth","supports","extensibilityPoint","cordova","electron","init"],"mappings":"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"} \ No newline at end of file diff --git a/src/authentication/db-connection.js b/src/authentication/db-connection.js index 74f79cdf..bb2138c8 100644 --- a/src/authentication/db-connection.js +++ b/src/authentication/db-connection.js @@ -124,14 +124,14 @@ DBConnection.prototype.changePassword = function (options, cb) { .end(responseHandler(cb)); }; -DBConnection.prototype.getChallenge = function (cb) { +DBConnection.prototype.getPasswordResetChallenge = function (cb) { assert.check(cb, { type: 'function', message: 'cb parameter is not valid' }); if (!this.baseOptions.state) { return cb(); } - var url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'challenge'); + var url = urljoin(this.baseOptions.rootUrl, 'dbconnections', 'change_password', 'challenge'); return this.request .post(url) diff --git a/src/web-auth/captcha.js b/src/web-auth/captcha.js index 8f5173f3..78420fd6 100644 --- a/src/web-auth/captcha.js +++ b/src/web-auth/captcha.js @@ -2,9 +2,15 @@ import Authentication from '../authentication'; import object from '../helper/object'; -var noop = function () {}; +var noop = function () { }; var captchaSolved = noop; +var Flow = { + DEFAULT: 'default', + PASSWORDLESS: 'passwordless', + PASSWORD_RESET: 'password_reset' +}; + var RECAPTCHA_V2_PROVIDER = 'recaptcha_v2'; var RECAPTCHA_ENTERPRISE_PROVIDER = 'recaptcha_enterprise'; var HCAPTCHA_PROVIDER = 'hcaptcha'; @@ -340,10 +346,11 @@ function handleCaptchaProvider(element, options, challenge) { /** * - * Renders the captcha challenge in the provided element. + * Renders the captcha challenge in the provided element based on the flow. * * @param {Authentication} auth0Client The challenge response from the authentication server * @param {HTMLElement} element The element where the captcha needs to be rendered + * @param {Flow} flow The flow for which the captcha needs to be rendered * @param {Object} options The configuration options for the captcha * @param {Object} [options.templates] An object containing templates for each captcha provider * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string @@ -358,11 +365,11 @@ function handleCaptchaProvider(element, options, challenge) { * @param {Function} [callback] An optional callback called after captcha is loaded * @ignore */ -function render(auth0Client, element, options, callback) { +function render(auth0Client, flow, element, options, callback) { options = object.merge(defaults).with(options || {}); function load(done) { done = done || noop; - auth0Client.getChallenge(function (err, challenge) { + function challengeCallback(err, challenge) { if (err) { element.innerHTML = options.templates.error(err); return done(err); @@ -395,83 +402,14 @@ function render(auth0Client, element, options, callback) { } else { done(); } - }); - } - - function getValue() { - var captchaInput = element.querySelector('input[name="captcha"]'); - if (!captchaInput) { - return; } - return captchaInput.value; - } - - load(callback); - - return { - reload: load, - getValue: getValue - }; -} - -/** - * - * Renders the passwordless captcha challenge in the provided element. - * - * @param {Authentication} auth0Client The challenge response from the authentication server - * @param {HTMLElement} element The element where the captcha needs to be rendered - * @param {Object} options The configuration options for the captcha - * @param {Object} [options.templates] An object containing templates for each captcha provider - * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string - * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string - * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string - * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string - * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string - * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string - * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string - * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument - * @param {String} [options.lang=en] the ISO code of the language for recaptcha - * @param {Function} [callback] An optional callback called after captcha is loaded - * @ignore - */ -function renderPasswordless(auth0Client, element, options, callback) { - options = object.merge(defaults).with(options || {}); - function load(done) { - done = done || noop; - auth0Client.passwordless.getChallenge(function (err, challenge) { - if (err) { - element.innerHTML = options.templates.error(err); - return done(err); - } - if (!challenge.required) { - element.style.display = 'none'; - element.innerHTML = ''; - return; - } - element.style.display = ''; - if (challenge.provider === AUTH0_PROVIDER) { - handleAuth0Provider(element, options, challenge, load); - } else if ( - challenge.provider === RECAPTCHA_V2_PROVIDER || - challenge.provider === RECAPTCHA_ENTERPRISE_PROVIDER || - challenge.provider === HCAPTCHA_PROVIDER || - challenge.provider === FRIENDLY_CAPTCHA_PROVIDER || - challenge.provider === ARKOSE_PROVIDER || - challenge.provider === AUTH0_V2_CAPTCHA_PROVIDER - ) { - handleCaptchaProvider(element, options, challenge); - } - if (challenge.provider === ARKOSE_PROVIDER) { - done(null, { - triggerCaptcha: function (solvedCallback) { - globalForCaptchaProvider(challenge.provider).run(); - captchaSolved = solvedCallback; - } - }); - } else { - done(); - } - }); + if (flow === Flow.PASSWORDLESS) { + auth0Client.passwordless.getChallenge(challengeCallback); + } else if (flow === Flow.PASSWORD_RESET) { + auth0Client.dbConnection.getPasswordResetChallenge(challengeCallback); + } else { + auth0Client.getChallenge(challengeCallback); + } } function getValue() { @@ -490,4 +428,5 @@ function renderPasswordless(auth0Client, element, options, callback) { }; } -export default { render: render, renderPasswordless: renderPasswordless }; + +export default { render: render, Flow: Flow }; diff --git a/src/web-auth/index.js b/src/web-auth/index.js index 4733bddd..c0ea32ba 100644 --- a/src/web-auth/index.js +++ b/src/web-auth/index.js @@ -400,10 +400,10 @@ WebAuth.prototype.validateAuthenticationResponse = function ( return callback( error.invalidToken( 'Organization Id (org_id) claim value mismatch in the ID token; expected "' + - transactionOrganization + - '", found "' + - payload.org_id + - '"' + transactionOrganization + + '", found "' + + payload.org_id + + '"' ) ); } @@ -420,10 +420,10 @@ WebAuth.prototype.validateAuthenticationResponse = function ( return callback( error.invalidToken( 'Organization Name (org_name) claim value mismatch in the ID token; expected "' + - transactionOrganization + - '", found "' + - payload.org_name + - '"' + transactionOrganization + + '", found "' + + payload.org_name + + '"' ) ); } @@ -1158,7 +1158,7 @@ WebAuth.prototype.passwordlessVerify = function (options, cb) { * @memberof WebAuth.prototype */ WebAuth.prototype.renderCaptcha = function (element, options, callback) { - return captcha.render(this.client, element, options, callback); + return captcha.render(this.client, captcha.Flow.DEFAULT, element, options, callback); }; /** @@ -1187,7 +1187,36 @@ WebAuth.prototype.renderPasswordlessCaptcha = function ( options, callback ) { - return captcha.renderPasswordless(this.client, element, options, callback); + return captcha.render(this.client, captcha.Flow.PASSWORDLESS, element, options, callback); +}; + +/** + * + * Renders the password reset captcha challenge in the provided element. + * This function can only be used in the context of a Classic Universal Login Page. + * + * @method renderPasswordResetCaptcha + * @param {HTMLElement} element The element where the captcha needs to be rendered + * @param {Object} options The configuration options for the captcha + * @param {Object} [options.templates] An object containing templates for each captcha provider + * @param {Function} [options.templates.auth0] template function receiving the challenge and returning a string + * @param {Function} [options.templates.recaptcha_v2] template function receiving the challenge and returning a string + * @param {Function} [options.templates.recaptcha_enterprise] template function receiving the challenge and returning a string + * @param {Function} [options.templates.hcaptcha] template function receiving the challenge and returning a string + * @param {Function} [options.templates.friendly_captcha] template function receiving the challenge and returning a string + * @param {Function} [options.templates.arkose] template function receiving the challenge and returning a string + * @param {Function} [options.templates.auth0_v2] template function receiving the challenge and returning a string + * @param {Function} [options.templates.error] template function returning a custom error message when the challenge could not be fetched, receives the error as first argument + * @param {String} [options.lang=en] the ISO code of the language for the captcha provider + * @param {captchaLoadedCallback} [callback] An optional callback called after captcha is loaded + * @memberof WebAuth.prototype + */ +WebAuth.prototype.renderPasswordResetCaptcha = function ( + element, + options, + callback +) { + return captcha.render(this.client, captcha.Flow.PASSWORD_RESET, element, options, callback); }; export default WebAuth; diff --git a/test/authentication/db-connection.test.js b/test/authentication/db-connection.test.js index 0221d317..8eb52f1b 100644 --- a/test/authentication/db-connection.test.js +++ b/test/authentication/db-connection.test.js @@ -230,7 +230,7 @@ describe('auth0.authentication', function () { }); }); - context('dbConnection getChallenge', function () { + context('dbConnection getPasswordResetChallenge', function () { context('when the client does not have state', function () { before(function () { this.auth0 = new Authentication(this.webAuthSpy, { @@ -243,7 +243,7 @@ describe('auth0.authentication', function () { }); it('should return nothing', function (done) { - this.auth0.dbConnection.getChallenge((err, challenge) => { + this.auth0.dbConnection.getPasswordResetChallenge((err, challenge) => { expect(err).to.not.be.ok(); expect(challenge).to.not.be.ok(); done(); @@ -269,7 +269,7 @@ describe('auth0.authentication', function () { it('should post state and returns the image/type', function (done) { sinon.stub(request, 'post').callsFake(function (url) { - expect(url).to.be('https://me.auth0.com/dbconnections/challenge'); + expect(url).to.be('https://me.auth0.com/dbconnections/change_password/challenge'); return new RequestMock({ body: { state: '123abc' @@ -288,7 +288,7 @@ describe('auth0.authentication', function () { }); }); - this.auth0.dbConnection.getChallenge((err, challenge) => { + this.auth0.dbConnection.getPasswordResetChallenge((err, challenge) => { expect(err).to.not.be.ok(); expect(challenge.image).to.be('svg+yadayada'); expect(challenge.type).to.be('code'); @@ -298,7 +298,7 @@ describe('auth0.authentication', function () { it('should return the error if network fails', function (done) { sinon.stub(request, 'post').callsFake(function (url) { - expect(url).to.be('https://me.auth0.com/dbconnections/challenge'); + expect(url).to.be('https://me.auth0.com/dbconnections/change_password/challenge'); return new RequestMock({ body: { state: '123abc' @@ -312,7 +312,7 @@ describe('auth0.authentication', function () { }); }); - this.auth0.dbConnection.getChallenge((err, challenge) => { + this.auth0.dbConnection.getPasswordResetChallenge((err, challenge) => { expect(err.original.message).to.equal('error error error'); done(); }); diff --git a/test/web-auth/captcha.test.js b/test/web-auth/captcha.test.js index b7ef7eed..6460f50b 100644 --- a/test/web-auth/captcha.test.js +++ b/test/web-auth/captcha.test.js @@ -14,7 +14,7 @@ describe('captcha rendering', function () { const mockClient = { getChallenge: cb => cb(null, { required: false }) }; - c = captcha.render(mockClient, element); + c = captcha.render(mockClient, captcha.Flow.DEFAULT, element); }); it('should hide the element', function () { @@ -39,7 +39,7 @@ describe('captcha rendering', function () { const mockClient = { getChallenge: cb => cb(new Error('network error')) }; - captcha.render(mockClient, element, {}, callbackStub); + captcha.render(mockClient, captcha.Flow.DEFAULT, element, {}, callbackStub); }); it('should show the element', function () { @@ -84,10 +84,10 @@ describe('captcha rendering', function () { const mockClient = { challengeIndex: 0, getChallenge(cb) { - cb(null, challenges[this.challengeIndex++]); + cb(null, challenges[mockClient.challengeIndex++]); } }; - c = captcha.render(mockClient, element, {}, callbackStub); + c = captcha.render(mockClient, captcha.Flow.DEFAULT, element, {}, callbackStub); }); it('should call the optional callback', function () { @@ -166,10 +166,10 @@ describe('captcha rendering', function () { const mockClient = { challengeIndex: 0, getChallenge(cb) { - cb(null, challenges[this.challengeIndex++]); + cb(null, challenges[mockClient.challengeIndex++]); } }; - captcha.render(mockClient, element, { + captcha.render(mockClient, captcha.Flow.DEFAULT, element, { templates: { auth0: challenge => `custom template: ${challenge.image}` } @@ -290,7 +290,7 @@ describe('captcha rendering', function () { cb(null, challenge); } }; - c = captcha.render(mockClient, element); + c = captcha.render(mockClient, captcha.Flow.DEFAULT, element); captchaScript = [...window.document.querySelectorAll('script')].find( s => s.src.match(getHostname()) ); @@ -466,7 +466,7 @@ describe('captcha rendering', function () { doneCallback = (err, apis) => { triggerCaptcha = apis.triggerCaptcha; }; - c = captcha.render(mockClient, element, null, doneCallback); + c = captcha.render(mockClient, captcha.Flow.DEFAULT, element, null, doneCallback); captchaScript = [...window.document.querySelectorAll('script')].find(s => s.src.match('arkoselabs.com') ); @@ -524,8 +524,8 @@ describe('captcha rendering', function () { let configOptions, setConfigSpy, runSpy, resetSpy; this.beforeEach(function () { arkose = { - run() {}, - reset() {}, + run() { }, + reset() { }, setConfig(options) { configOptions = options; } @@ -609,7 +609,7 @@ describe('passwordless captcha rendering', function () { const mockClient = { passwordless: { getChallenge: cb => cb(null, { required: false }) } }; - c = captcha.renderPasswordless(mockClient, element); + c = captcha.render(mockClient, captcha.Flow.PASSWORDLESS, element); }); it('should hide the element', function () { @@ -634,7 +634,7 @@ describe('passwordless captcha rendering', function () { const mockClient = { passwordless: { getChallenge: cb => cb(new Error('network error')) } }; - captcha.renderPasswordless(mockClient, element, {}, callbackStub); + captcha.render(mockClient, captcha.Flow.PASSWORDLESS, element, {}, callbackStub); }); it('should show the element', function () { @@ -684,7 +684,7 @@ describe('passwordless captcha rendering', function () { } } }; - c = captcha.renderPasswordless(mockClient, element, {}, callbackStub); + c = captcha.render(mockClient, captcha.Flow.PASSWORDLESS, element, {}, callbackStub); }); it('should call the optional callback', function () { @@ -768,7 +768,7 @@ describe('passwordless captcha rendering', function () { } } }; - captcha.renderPasswordless(mockClient, element, { + captcha.render(mockClient, captcha.Flow.PASSWORDLESS, element, { templates: { auth0: challenge => `custom template: ${challenge.image}` } @@ -891,7 +891,7 @@ describe('passwordless captcha rendering', function () { } } }; - c = captcha.renderPasswordless(mockClient, element); + c = captcha.render(mockClient, captcha.Flow.PASSWORDLESS, element); captchaScript = [...window.document.querySelectorAll('script')].find( s => s.src.match(getHostname()) ); @@ -1013,7 +1013,7 @@ describe('passwordless captcha rendering', function () { expect(input.value).to.equal('BYPASS_CAPTCHA'); }); - + it('should clear token on error before until the third attempt and set bypass token after more than 3 errors', function () { const input = element.querySelector('input[name="captcha"]'); input.value = 'token'; @@ -1070,7 +1070,7 @@ describe('passwordless captcha rendering', function () { doneCallback = (err, apis) => { triggerCaptcha = apis.triggerCaptcha; }; - c = captcha.renderPasswordless(mockClient, element, null, doneCallback); + c = captcha.render(mockClient, captcha.Flow.PASSWORDLESS, element, null, doneCallback); captchaScript = [...window.document.querySelectorAll('script')].find(s => s.src.match('arkoselabs.com') ); @@ -1098,8 +1098,8 @@ describe('passwordless captcha rendering', function () { let configOptions, setConfigSpy, runSpy, resetSpy; this.beforeEach(function () { arkose = { - run() {}, - reset() {}, + run() { }, + reset() { }, setConfig(options) { configOptions = options; } @@ -1172,3 +1172,577 @@ describe('passwordless captcha rendering', function () { }); }); }); + +describe('password reset captcha rendering', function () { + describe('when challenge is not required', function () { + const { window } = new JSDOM('
'); + const element = window.document.querySelector('.captcha'); + let c; + + beforeEach(function () { + const mockClient = { + dbConnection: { getPasswordResetChallenge: cb => cb(null, { required: false }) } + }; + c = captcha.render(mockClient, captcha.Flow.PASSWORD_RESET, element); + }); + + it('should hide the element', function () { + expect(element.style.display).to.equal('none'); + }); + + it('should clean the innerHTML', function () { + expect(element.innerHTML).to.equal(''); + }); + + it('should return undefined when calling getValue', function () { + expect(c.getValue()).to.be.equal(undefined); + }); + }); + + describe('when challenge request fail', function () { + const { window } = new JSDOM('
'); + const element = window.document.querySelector('.captcha'); + const callbackStub = sinon.stub(); + + beforeEach(function () { + const mockClient = { + dbConnection: { getPasswordResetChallenge: cb => cb(new Error('network error')) } + }; + captcha.render(mockClient, captcha.Flow.PASSWORD_RESET, element, {}, callbackStub); + }); + + it('should show the element', function () { + expect(element.style.display).to.equal(''); + }); + + it('should show an error', function () { + expect(element.querySelector('div.error').innerHTML).to.equal( + 'Error getting the bot detection challenge. Please contact the system administrator.' + ); + }); + + it('should call the optional callback with the error', function () { + expect(callbackStub.called).to.equal(true); + expect(callbackStub.args[0][0].message).to.equal('network error'); + }); + }); + + describe('when challenge is required and the provider is auth0', function () { + const { window } = new JSDOM( + '