loupe-typescript
Version:
Loupe Agent for Web clients
7 lines • 475 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["loupe-typescript"]=t():e["loupe-typescript"]=t()}(this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=5)}([function(e,t){t.getArg=function(e,t,n){if(t in e)return e[t];if(3===arguments.length)return n;throw new Error('"'+t+'" is a required argument.')};var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,r=/^data:.+\,.+$/;function o(e){var t=e.match(n);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function i(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function s(e){var n=e,r=o(e);if(r){if(!r.path)return e;n=r.path}for(var s,a=t.isAbsolute(n),u=n.split(/\/+/),l=0,c=u.length-1;c>=0;c--)"."===(s=u[c])?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return""===(n=u.join("/"))&&(n=a?"/":"."),r?(r.path=n,i(r)):n}t.urlParse=o,t.urlGenerate=i,t.normalize=s,t.join=function(e,t){""===e&&(e="."),""===t&&(t=".");var n=o(t),a=o(e);if(a&&(e=a.path||"/"),n&&!n.scheme)return a&&(n.scheme=a.scheme),i(n);if(n||t.match(r))return t;if(a&&!a.host&&!a.path)return a.host=t,i(a);var u="/"===t.charAt(0)?t:s(e.replace(/\/+$/,"")+"/"+t);return a?(a.path=u,i(a)):u},t.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(n)},t.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)};var a=!("__proto__"in Object.create(null));function u(e){return e}function l(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function c(e,t){return e===t?0:e>t?1:-1}t.toSetString=a?u:function(e){return l(e)?"$"+e:e},t.fromSetString=a?u:function(e){return l(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,n){var r=e.source-t.source;return 0!==r||0!==(r=e.originalLine-t.originalLine)||0!==(r=e.originalColumn-t.originalColumn)||n||0!==(r=e.generatedColumn-t.generatedColumn)||0!==(r=e.generatedLine-t.generatedLine)?r:e.name-t.name},t.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r||0!==(r=e.generatedColumn-t.generatedColumn)||n||0!==(r=e.source-t.source)||0!==(r=e.originalLine-t.originalLine)||0!==(r=e.originalColumn-t.originalColumn)?r:e.name-t.name},t.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n||0!==(n=e.generatedColumn-t.generatedColumn)||0!==(n=c(e.source,t.source))||0!==(n=e.originalLine-t.originalLine)||0!==(n=e.originalColumn-t.originalColumn)?n:c(e.name,t.name)}},function(e,t,n){var r,o,i;!function(n,s){"use strict";o=[],void 0===(i="function"==typeof(r=function(){function e(e){return e.charAt(0).toUpperCase()+e.substring(1)}function t(e){return function(){return this[e]}}var n=["isConstructor","isEval","isNative","isToplevel"],r=["columnNumber","lineNumber"],o=["fileName","functionName","source"],i=n.concat(r,o,["args"],["evalOrigin"]);function s(t){if(t)for(var n=0;n<i.length;n++)void 0!==t[i[n]]&&this["set"+e(i[n])](t[i[n]])}s.prototype={getArgs:function(){return this.args},setArgs:function(e){if("[object Array]"!==Object.prototype.toString.call(e))throw new TypeError("Args must be an Array");this.args=e},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(e){if(e instanceof s)this.evalOrigin=e;else{if(!(e instanceof Object))throw new TypeError("Eval Origin must be an Object or StackFrame");this.evalOrigin=new s(e)}},toString:function(){var e=this.getFileName()||"",t=this.getLineNumber()||"",n=this.getColumnNumber()||"",r=this.getFunctionName()||"";return this.getIsEval()?e?"[eval] ("+e+":"+t+":"+n+")":"[eval]:"+t+":"+n:r?r+" ("+e+":"+t+":"+n+")":e+":"+t+":"+n}},s.fromString=function(e){var t=e.indexOf("("),n=e.lastIndexOf(")"),r=e.substring(0,t),o=e.substring(t+1,n).split(","),i=e.substring(n+1);if(0===i.indexOf("@"))var a=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(i,""),u=a[1],l=a[2],c=a[3];return new s({functionName:r,args:o||void 0,fileName:u,lineNumber:l||void 0,columnNumber:c||void 0})};for(var a=0;a<n.length;a++)s.prototype["get"+e(n[a])]=t(n[a]),s.prototype["set"+e(n[a])]=function(e){return function(t){this[e]=Boolean(t)}}(n[a]);for(var u=0;u<r.length;u++)s.prototype["get"+e(r[u])]=t(r[u]),s.prototype["set"+e(r[u])]=function(e){return function(t){if(n=t,isNaN(parseFloat(n))||!isFinite(n))throw new TypeError(e+" must be a Number");var n;this[e]=Number(t)}}(r[u]);for(var l=0;l<o.length;l++)s.prototype["get"+e(o[l])]=t(o[l]),s.prototype["set"+e(o[l])]=function(e){return function(t){this[e]=String(t)}}(o[l]);return s})?r.apply(t,o):r)||(e.exports=i)}()},function(e,t,n){var r=n(3),o=n(0),i=n(4).ArraySet,s=n(15).MappingList;function a(e){e||(e={}),this._file=o.getArg(e,"file",null),this._sourceRoot=o.getArg(e,"sourceRoot",null),this._skipValidation=o.getArg(e,"skipValidation",!1),this._sources=new i,this._names=new i,this._mappings=new s,this._sourcesContents=null}a.prototype._version=3,a.fromSourceMap=function(e){var t=e.sourceRoot,n=new a({file:e.file,sourceRoot:t});return e.eachMapping((function(e){var r={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(r.source=e.source,null!=t&&(r.source=o.relative(t,r.source)),r.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(r.name=e.name)),n.addMapping(r)})),e.sources.forEach((function(t){var r=e.sourceContentFor(t);null!=r&&n.setSourceContent(t,r)})),n},a.prototype.addMapping=function(e){var t=o.getArg(e,"generated"),n=o.getArg(e,"original",null),r=o.getArg(e,"source",null),i=o.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,n,r,i),null!=r&&(r=String(r),this._sources.has(r)||this._sources.add(r)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=n&&n.line,originalColumn:null!=n&&n.column,source:r,name:i})},a.prototype.setSourceContent=function(e,t){var n=e;null!=this._sourceRoot&&(n=o.relative(this._sourceRoot,n)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[o.toSetString(n)]=t):this._sourcesContents&&(delete this._sourcesContents[o.toSetString(n)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},a.prototype.applySourceMap=function(e,t,n){var r=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');r=e.file}var s=this._sourceRoot;null!=s&&(r=o.relative(s,r));var a=new i,u=new i;this._mappings.unsortedForEach((function(t){if(t.source===r&&null!=t.originalLine){var i=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=i.source&&(t.source=i.source,null!=n&&(t.source=o.join(n,t.source)),null!=s&&(t.source=o.relative(s,t.source)),t.originalLine=i.line,t.originalColumn=i.column,null!=i.name&&(t.name=i.name))}var l=t.source;null==l||a.has(l)||a.add(l);var c=t.name;null==c||u.has(c)||u.add(c)}),this),this._sources=a,this._names=u,e.sources.forEach((function(t){var r=e.sourceContentFor(t);null!=r&&(null!=n&&(t=o.join(n,t)),null!=s&&(t=o.relative(s,t)),this.setSourceContent(t,r))}),this)},a.prototype._validateMapping=function(e,t,n,r){if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},a.prototype._serializeMappings=function(){for(var e,t,n,i,s=0,a=1,u=0,l=0,c=0,g=0,h="",p=this._mappings.toArray(),f=0,d=p.length;f<d;f++){if(e="",(t=p[f]).generatedLine!==a)for(s=0;t.generatedLine!==a;)e+=";",a++;else if(f>0){if(!o.compareByGeneratedPositionsInflated(t,p[f-1]))continue;e+=","}e+=r.encode(t.generatedColumn-s),s=t.generatedColumn,null!=t.source&&(i=this._sources.indexOf(t.source),e+=r.encode(i-g),g=i,e+=r.encode(t.originalLine-1-l),l=t.originalLine-1,e+=r.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=r.encode(n-c),c=n)),h+=e}return h},a.prototype._generateSourcesContent=function(e,t){return e.map((function(e){if(!this._sourcesContents)return null;null!=t&&(e=o.relative(t,e));var n=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null}),this)},a.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},a.prototype.toString=function(){return JSON.stringify(this.toJSON())},t.SourceMapGenerator=a},function(e,t,n){var r=n(14);t.encode=function(e){var t,n="",o=function(e){return e<0?1+(-e<<1):0+(e<<1)}(e);do{t=31&o,(o>>>=5)>0&&(t|=32),n+=r.encode(t)}while(o>0);return n},t.decode=function(e,t,n){var o,i,s,a,u=e.length,l=0,c=0;do{if(t>=u)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=r.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));o=!!(32&i),l+=(i&=31)<<c,c+=5}while(o);n.value=(a=(s=l)>>1,1==(1&s)?-a:a),n.rest=t}},function(e,t,n){var r=n(0),o=Object.prototype.hasOwnProperty;function i(){this._array=[],this._set=Object.create(null)}i.fromArray=function(e,t){for(var n=new i,r=0,o=e.length;r<o;r++)n.add(e[r],t);return n},i.prototype.size=function(){return Object.getOwnPropertyNames(this._set).length},i.prototype.add=function(e,t){var n=r.toSetString(e),i=o.call(this._set,n),s=this._array.length;i&&!t||this._array.push(e),i||(this._set[n]=s)},i.prototype.has=function(e){var t=r.toSetString(e);return o.call(this._set,t)},i.prototype.indexOf=function(e){var t=r.toSetString(e);if(o.call(this._set,t))return this._set[t];throw new Error('"'+e+'" is not in the set.')},i.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},i.prototype.toArray=function(){return this._array.slice()},t.ArraySet=i},function(e,t,n){"use strict";var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(6)),i=r(n(9)),s=n(20),a=n(21),u=n(22),l=n(23),c=n(24);t.LoupeAgent=class{constructor(e,t){this.window=e,this.document=t,this.propagateError=!1,this.maxRequestSize=204800,this.messageInterval=10,this.sequenceNumber=0,this.messageStorage=[],this.storageAvailable=this.storageSupported(),this.storageFull=!1,this.corsOrigin=null,this.globalKeyList=[],this.debounce=(e,t)=>{let n=0;return(...r)=>{clearTimeout(n),n=setTimeout(()=>e(...r),t)}},void 0!==this.window&&void 0!==this.window.onerror&&(this.existingOnError=this.window.onerror,this.setUpOnError(this.window)),this.setUpClientSessionId(),this.setUpSequenceNumber(),this.addSendMessageCommandToEventQueue()}verbose(e,t,n,r,o,i,s){this.write(l.LogMessageSeverity.verbose,e,t,n,r,o,i,s)}information(e,t,n,r,o,i,s){this.write(l.LogMessageSeverity.information,e,t,n,r,o,i,s)}warning(e,t,n,r,o,i,s){this.write(l.LogMessageSeverity.warning,e,t,n,r,o,i,s)}error(e,t,n,r,o,i,s){this.write(l.LogMessageSeverity.error,e,t,n,r,o,i,s)}critical(e,t,n,r,o,i,s){this.write(l.LogMessageSeverity.critical,e,t,n,r,o,i,s)}write(e,t,n,r,o,i,s,a){i=this.sanitiseArgument(i),(s=this.sanitiseArgument(s))&&"string"!=typeof s&&(s=JSON.stringify(s)),!(a=this.sanitiseArgument(a))||a instanceof c.MethodSourceInfo||(a=this.buildMessageSourceInfo(a)),this.createMessage(e,t,n,r,o,i,s,a),this.addSendMessageCommandToEventQueue()}addSendMessageCommandToEventQueue(){(this.storageAvailable&&localStorage.length||this.messageStorage.length)&&setTimeout(()=>this.logMessageToServer(),this.messageInterval)}setSessionId(e){this.sessionId=e}setCORSOrigin(e){this.corsOrigin=e}setAuthorizationHeader(e){e?e.name&&e.value?this.authHeader=e:this.consoleLog("setAuthorizationHeader failed. The header provided appears invalid as it doesn't have name & value"):this.consoleLog("setAuthorizationHeader failed. No header object provided")}clientSessionHeader(){return new a.Header("loupe-agent-sessionId",this.agentSessionId)}resetMessageInterval(e){let t=e||10;t<10&&(t=10),t<this.messageInterval&&(this.messageInterval=t)}storageSupported(){const e="_loupe_storage_test_";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(e){return!1}}sanitiseArgument(e){return void 0===e?null:e}buildMessageSourceInfo(e){return new c.MethodSourceInfo(e.file||null,e.method||null,e.line||null,e.column||null)}setUpOnError(e){void 0!==this.window.onerror?this.window.onerror=(e,t,n,r,o)=>(this.existingOnError&&this.existingOnError(e,t,n,r,o),setTimeout(()=>this.logError(e,t,n,r,o),10),!this.propagateError):this.consoleLog("Gibraltar Loupe JavaScript Logger: No onerror event; errors cannot be logged to Loupe")}getPlatform(){const e=o;return e.size={height:this.window.innerHeight||this.document.body.clientHeight,width:this.window.innerWidth||this.document.body.clientWidth},e}getStackTrace(e,t){return null!=e&&e.stack?this.createStackFromError(e):this.createStackFromMessage(t)}createStackFromMessage(e){if(i)try{i.fromError(new Error(e)).then(e=>this.stripLoupeStackFrames(e.reverse()))}catch(e){}return[]}createStackFromError(e){return"\n"===e.stack.substring(e.stack.length-1)&&(e.stack=e.stack.substring(0,e.stack.length-1)),e.stack.split("\n")}stripLoupeStackFrames(e){if(e){const t=this.userFramesStartAt(e);t>0&&(e=e.slice(t))}return e}userFramesStartAt(e){const t=["logError","getStackTrace","createStackFromMessage","createStackTrace"];let n=0;for(e[0].toString().indexOf("Cannot access caller")>-1&&n++;n<t.length&&!(e.length<n);n++){let r=e[n].functionName;if(r||(r=e[n].toString()),-1===r.indexOf(t[n]))break}return n}logError(e,t,n,r,o){let i="";o&&(i=o.name||"Exception");const s={cause:i,column:r,line:n,message:e,stackTrace:this.getStackTrace(o,e),url:t};return this.createMessage(l.LogMessageSeverity.error,"JavaScript",i,"",null,s,null,null),this.logMessageToServer()}checkForStorageQuotaReached(e){return("QUOTA_EXCEEDED_ERR"===e.name||"NS_ERROR_DOM_QUOTA_REACHED"===e.name||"QuotaExceededError"===e.name)&&(this.storageFull=!0,!0)}setUpClientSessionId(){const e=this.getClientSessionHeader();e?this.agentSessionId=e:(this.agentSessionId=this.generateUUID(),this.storeClientSessionId(this.agentSessionId))}storeClientSessionId(e){if(this.storageAvailable&&!this.storageFull)try{sessionStorage.setItem("LoupeAgentSessionId",e)}catch(e){if(this.checkForStorageQuotaReached(e))return;this.consoleLog("Unable to store clientSessionId in session storage. "+e.message)}}getClientSessionHeader(){try{const e=sessionStorage.getItem("LoupeAgentSessionId");if(e)return e}catch(e){this.consoleLog("Unable to retrieve clientSessionId number from session storage. "+e.message)}return null}setUpSequenceNumber(){const e=this.getSequenceNumber();-1===e&&this.storageAvailable?this.sequenceNumber=0:this.sequenceNumber=e}getNextSequenceNumber(){let e;return this.storageAvailable&&(e=this.getSequenceNumber(),e<this.sequenceNumber&&(e=this.sequenceNumber),-1!==e&&(e++,this.setSequenceNumber(e)))?(this.sequenceNumber=e,this.sequenceNumber):(this.sequenceNumber++,this.sequenceNumber)}getSequenceNumber(){if(this.storageAvailable)try{const e=sessionStorage.getItem("LoupeSequenceNumber");return e?parseInt(e):0}catch(e){this.consoleLog("Unable to retrieve sequence number from session storage. "+e.message)}return-1}setSequenceNumber(e){try{return sessionStorage.setItem("LoupeSequenceNumber",e.toString()),!0}catch(e){return this.checkForStorageQuotaReached(e)?(this.consoleLog("Unable to store sequence number as storage quote reached: "+e.message),!1):(this.consoleLog("Unable to store sequence number: "+e.message),!1)}}createMessage(e,t,n,r,o,i,s,a){const l=this.getNextSequenceNumber(),c=this.createTimeStamp();i&&(i=this.createExceptionFromError(i,null));const g=new u.LocalStorageMessage(e,t,n,r,o,i,s,a,c,l,this.agentSessionId,this.sessionId);this.storeMessage(g)}storeMessage(e){if(this.storageAvailable&&!this.storageFull)try{localStorage.setItem("Loupe-message-"+this.generateUUID(),JSON.stringify(e))}catch(t){this.checkForStorageQuotaReached(t),this.consoleLog("Error occured trying to add item to localStorage: "+t.message),this.messageStorage.push(JSON.stringify(e))}else 5e3===this.messageStorage.length&&this.messageStorage.shift(),this.messageStorage.push(JSON.stringify(e))}createExceptionFromError(e,t){return"string"==typeof e?new s.Exception(t||"",null,null,e,[],this.window.location.href):"url"in e?e:new s.Exception(t||"",e.columnNumber||null,e.lineNumber||null,e.message,e.stackTrace||e.stack||null,this.window.location.href)}createTimeStamp(){const e=new Date,t=-e.getTimezoneOffset(),n=t>=0?"+":"-",r=e=>{const t=Math.abs(Math.floor(e));return(t<10?"0":"")+t};return e.getFullYear()+"-"+r(e.getMonth()+1)+"-"+r(e.getDate())+"T"+r(e.getHours())+":"+r(e.getMinutes())+":"+r(e.getSeconds())+"."+r(e.getMilliseconds())+n+r(t/60)+":"+r(t%60)}generateUUID(){let e=Date.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>{const n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===t?n:3&n|8).toString(16)})}truncateDetails(e){if(e.message.details){if(e.size-e.message.details.length<this.maxRequestSize){const t={message:"User supplied details truncated as log message exceeded maximum size."};e.message.details=JSON.stringify(t);const n=JSON.stringify(e);e.size=n.length}}return e}dropMessage(e){this.removeMessagesFromStorage([e.key]);const t=e.message.caption,n=e.message.description;t.length+n.length<this.maxRequestSize-400?this.createMessage(l.LogMessageSeverity.error,"Loupe","Dropped message","Message was dropped as its size exceeded our max request size. Caption was {0} and description {1}",[t,n]):t.length<this.maxRequestSize-400?this.createMessage(l.LogMessageSeverity.error,"Loupe","Dropped message","Message was dropped as its size exceeded our max request size. Caption was {0}",[t]):this.createMessage(l.LogMessageSeverity.error,"Loupe","Dropped message","Message was dropped as its size exceeded our max request size.\nUnable to log caption or description as they exceed max request size")}overSizeMessage(e){let t=!1;return e.size>this.maxRequestSize&&(e=this.truncateDetails(e)).size>this.maxRequestSize&&(this.dropMessage(e),t=!0),t}messageSort(e,t){const n=new Date(e.message.timeStamp),r=new Date(t.message.timeStamp);return n>r?-1:n<r?1:e.message.sequence-t.message.sequence}getMessagesToSend(){let e=[];const t=[];let n=!1,r=[];if(this.messageStorage.length&&(e=this.messageStorage.slice(),this.messageStorage.length=0),this.storageAvailable)for(let e=0;e<localStorage.length;e++){const t=localStorage.key(e);if(null!=t&&t.indexOf("Loupe-message-")>-1&&-1===this.globalKeyList.indexOf(t)){const n=localStorage.getItem(t);null!=n&&r.push({key:localStorage.key(e),message:JSON.parse(n),size:n.length})}}r.length&&r.length>1&&r.sort(this.messageSort),r.length>10&&(n=!0,r=r.splice(0,10)),10!==this.messageInterval&&(r=r.splice(0,1));let o=0;for(const n of r)if(!this.overSizeMessage(n)){if(o+=n.size,o>this.maxRequestSize)break;e.push(n.message),n.key&&t.push(n.key)}return t.length&&Array.prototype.push.apply(this.globalKeyList,t),{messages:e,keys:t,moreMessagesInStorage:n}}removeKeysFromGlobalList(e){if(this.globalKeyList.length&&e){const t=this.globalKeyList.indexOf(e[0]);this.globalKeyList.splice(t,e.length)}}removeMessagesFromStorage(e){if(e)for(const t of e)try{localStorage.removeItem(t)}catch(e){this.consoleLog("Unable to remove message from localStorage: "+e.message)}}setMessageInterval(e){(e||10!==this.messageInterval)&&(this.messageInterval<1e4?e?this.messageInterval=10*this.messageInterval:(this.messageInterval=this.messageInterval/10,this.messageInterval<10&&(this.messageInterval=10)):1e4!==this.messageInterval?e||3e4!==this.messageInterval?e?this.messageInterval<96e4&&(this.messageInterval=2*this.messageInterval):this.messageInterval=this.messageInterval/2:this.messageInterval=1e4:this.messageInterval=e?3e4:1e3)}logMessageToServer(){const{messages:e,keys:t,moreMessagesInStorage:n}=this.getMessagesToSend();if(!e.length)return!1;const r={logMessages:e,session:{client:this.getPlatform(),currentAgentSessionId:this.agentSessionId}},o=this.debounce(()=>this.setMessageInterval,500);return this.sendMessageToServer(r,t,n,o)}afterRequest(e,t,n){n(e),this.storageFull&&!e&&(this.storageFull=!1),t&&this.addSendMessageCommandToEventQueue()}requestSucceeded(e,t,n){this.removeMessagesFromStorage(e),this.afterRequest(!1,t,n)}requestFailed(e,t,n,r){0===e.status||401===e.status?this.removeKeysFromGlobalList(t):this.removeMessagesFromStorage(t),this.consoleLog("Loupe JavaScript Logger: Failed to log to "+this.window.location.origin+"/loupe/log"),this.consoleLog(" Status: "+e.status+": "+e.statusText),this.afterRequest(!0,n,r)}sendMessageToServer(e,t,n,r){try{let o=this.corsOrigin||this.window.location.origin;o=this.stripTrailingSlash(o);const i=this.createCORSRequest(o+"/loupe/log");return i?(i.onreadystatechange=()=>{i&&4===i.readyState&&(i.status>=200&&i.status<=204?this.requestSucceeded(t,n,r):this.requestFailed(i,t,n,r))},i.send(JSON.stringify(e)),!0):(this.consoleLog("Loupe JavaScript Logger: No XMLHttpRequest; error cannot be logged to Loupe"),!1)}catch(e){return this.consoleLog("Loupe JavaScript Logger: Exception while attempting to log"),!1}}stripTrailingSlash(e){return e.replace(/\/$/,"")}createCORSRequest(e){if("undefined"==typeof XMLHttpRequest)return null;const t=new XMLHttpRequest;return"withCredentials"in t?(t.open("POST",e,!0),t.setRequestHeader("Content-type","application/json"),this.authHeader&&t.setRequestHeader(this.authHeader.name,this.authHeader.value),t):null}consoleLog(e){console&&"function"==typeof console.log&&console.log(e)}}},function(e,t,n){(function(e,r){var o;
/*!
* Platform.js <https://mths.be/platform>
* Copyright 2014-2018 Benjamin Tan <https://bnjmnt4n.now.sh/>
* Copyright 2011-2013 John-David Dalton <http://allyoucanleet.com/>
* Available under MIT license <https://mths.be/mit>
*/(function(){"use strict";var i={function:!0,object:!0},s=i[typeof window]&&window||this,a=i[typeof t]&&t,u=i[typeof e]&&e&&!e.nodeType&&e,l=a&&u&&"object"==typeof r&&r;!l||l.global!==l&&l.window!==l&&l.self!==l||(s=l);var c=Math.pow(2,53)-1,g=/\bOpera/,h=Object.prototype,p=h.hasOwnProperty,f=h.toString;function d(e){return(e=String(e)).charAt(0).toUpperCase()+e.slice(1)}function m(e){return e=w(e),/^(?:webOS|i(?:OS|P))/.test(e)?e:d(e)}function b(e,t){for(var n in e)p.call(e,n)&&t(e[n],n,e)}function v(e){return null==e?d(e):f.call(e).slice(8,-1)}function S(e){return String(e).replace(/([ -])(?!$)/g,"$1?")}function y(e,t){var n=null;return function(e,t){var n=-1,r=e?e.length:0;if("number"==typeof r&&r>-1&&r<=c)for(;++n<r;)t(e[n],n,e);else b(e,t)}(e,(function(r,o){n=t(n,r,o,e)})),n}function w(e){return String(e).replace(/^ +| +$/g,"")}var _=function e(t){var n=s,r=t&&"object"==typeof t&&"String"!=v(t);r&&(n=t,t=null);var o=n.navigator||{},i=o.userAgent||"";t||(t=i);var a,u,l,c,h,p=r?!!o.likeChrome:/\bChrome\b/.test(t)&&!/internal|\n/i.test(f.toString()),d=r?"Object":"ScriptBridgingProxyObject",_=r?"Object":"Environment",O=r&&n.java?"JavaPackage":v(n.java),x=r?"Object":"RuntimeObject",M=/\bJava/.test(O)&&n.java,C=M&&v(n.environment)==_,E=M?"a":"α",A=M?"b":"β",L=n.document||{},N=n.operamini||n.opera,P=g.test(P=r&&N?N["[[Class]]"]:v(N))?P:N=null,R=t,k=[],I=null,T=t==i,F=T&&N&&"function"==typeof N.version&&N.version(),j=y([{label:"EdgeHTML",pattern:"Edge"},"Trident",{label:"WebKit",pattern:"AppleWebKit"},"iCab","Presto","NetFront","Tasman","KHTML","Gecko"],(function(e,n){return e||RegExp("\\b"+(n.pattern||S(n))+"\\b","i").exec(t)&&(n.label||n)})),G=function(e){return y(e,(function(e,n){return e||RegExp("\\b"+(n.pattern||S(n))+"\\b","i").exec(t)&&(n.label||n)}))}(["Adobe AIR","Arora","Avant Browser","Breach","Camino","Electron","Epiphany","Fennec","Flock","Galeon","GreenBrowser","iCab","Iceweasel","K-Meleon","Konqueror","Lunascape","Maxthon",{label:"Microsoft Edge",pattern:"Edge"},"Midori","Nook Browser","PaleMoon","PhantomJS","Raven","Rekonq","RockMelt",{label:"Samsung Internet",pattern:"SamsungBrowser"},"SeaMonkey",{label:"Silk",pattern:"(?:Cloud9|Silk-Accelerated)"},"Sleipnir","SlimBrowser",{label:"SRWare Iron",pattern:"Iron"},"Sunrise","Swiftfox","Waterfox","WebPositive","Opera Mini",{label:"Opera Mini",pattern:"OPiOS"},"Opera",{label:"Opera",pattern:"OPR"},"Chrome",{label:"Chrome Mobile",pattern:"(?:CriOS|CrMo)"},{label:"Firefox",pattern:"(?:Firefox|Minefield)"},{label:"Firefox for iOS",pattern:"FxiOS"},{label:"IE",pattern:"IEMobile"},{label:"IE",pattern:"MSIE"},"Safari"]),q=z([{label:"BlackBerry",pattern:"BB10"},"BlackBerry",{label:"Galaxy S",pattern:"GT-I9000"},{label:"Galaxy S2",pattern:"GT-I9100"},{label:"Galaxy S3",pattern:"GT-I9300"},{label:"Galaxy S4",pattern:"GT-I9500"},{label:"Galaxy S5",pattern:"SM-G900"},{label:"Galaxy S6",pattern:"SM-G920"},{label:"Galaxy S6 Edge",pattern:"SM-G925"},{label:"Galaxy S7",pattern:"SM-G930"},{label:"Galaxy S7 Edge",pattern:"SM-G935"},"Google TV","Lumia","iPad","iPod","iPhone","Kindle",{label:"Kindle Fire",pattern:"(?:Cloud9|Silk-Accelerated)"},"Nexus","Nook","PlayBook","PlayStation Vita","PlayStation","TouchPad","Transformer",{label:"Wii U",pattern:"WiiU"},"Wii","Xbox One",{label:"Xbox 360",pattern:"Xbox"},"Xoom"]),$=function(e){return y(e,(function(e,n,r){return e||(n[q]||n[/^[a-z]+(?: +[a-z]+\b)*/i.exec(q)]||RegExp("\\b"+S(r)+"(?:\\b|\\w*\\d)","i").exec(t))&&r}))}({Apple:{iPad:1,iPhone:1,iPod:1},Archos:{},Amazon:{Kindle:1,"Kindle Fire":1},Asus:{Transformer:1},"Barnes & Noble":{Nook:1},BlackBerry:{PlayBook:1},Google:{"Google TV":1,Nexus:1},HP:{TouchPad:1},HTC:{},LG:{},Microsoft:{Xbox:1,"Xbox One":1},Motorola:{Xoom:1},Nintendo:{"Wii U":1,Wii:1},Nokia:{Lumia:1},Samsung:{"Galaxy S":1,"Galaxy S2":1,"Galaxy S3":1,"Galaxy S4":1},Sony:{PlayStation:1,"PlayStation Vita":1}}),B=function(e){return y(e,(function(e,n){var r=n.pattern||S(n);return!e&&(e=RegExp("\\b"+r+"(?:/[\\d.]+|[ \\w.]*)","i").exec(t))&&(e=function(e,t,n){var r={"10.0":"10",6.4:"10 Technical Preview",6.3:"8.1",6.2:"8",6.1:"Server 2008 R2 / 7","6.0":"Server 2008 / Vista",5.2:"Server 2003 / XP 64-bit",5.1:"XP",5.01:"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"};return t&&n&&/^Win/i.test(e)&&!/^Windows Phone /i.test(e)&&(r=r[/[\d.]+$/.exec(e)])&&(e="Windows "+r),e=String(e),t&&n&&(e=e.replace(RegExp(t,"i"),n)),e=m(e.replace(/ ce$/i," CE").replace(/\bhpw/i,"web").replace(/\bMacintosh\b/,"Mac OS").replace(/_PowerPC\b/i," OS").replace(/\b(OS X) [^ \d]+/i,"$1").replace(/\bMac (OS X)\b/,"$1").replace(/\/(\d)/," $1").replace(/_/g,".").replace(/(?: BePC|[ .]*fc[ \d.]+)$/i,"").replace(/\bx86\.64\b/gi,"x86_64").replace(/\b(Windows Phone) OS\b/,"$1").replace(/\b(Chrome OS \w+) [\d.]+\b/,"$1").split(" on ")[0])}(e,r,n.label||n)),e}))}(["Windows Phone","Android","CentOS",{label:"Chrome OS",pattern:"CrOS"},"Debian","Fedora","FreeBSD","Gentoo","Haiku","Kubuntu","Linux Mint","OpenBSD","Red Hat","SuSE","Ubuntu","Xubuntu","Cygwin","Symbian OS","hpwOS","webOS ","webOS","Tablet OS","Tizen","Linux","Mac OS X","Macintosh","Mac","Windows 98;","Windows "]);function z(e){return y(e,(function(e,n){var r=n.pattern||S(n);return!e&&(e=RegExp("\\b"+r+" *\\d+[.\\w_]*","i").exec(t)||RegExp("\\b"+r+" *\\w+-[\\w]*","i").exec(t)||RegExp("\\b"+r+"(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)","i").exec(t))&&((e=String(n.label&&!RegExp(r,"i").test(n.label)?n.label:e).split("/"))[1]&&!/[\d.]+/.test(e[0])&&(e[0]+=" "+e[1]),n=n.label||n,e=m(e[0].replace(RegExp(r,"i"),n).replace(RegExp("; *(?:"+n+"[_-])?","i")," ").replace(RegExp("("+n+")[-_.]?(\\w)","i"),"$1 $2"))),e}))}if(j&&(j=[j]),$&&!q&&(q=z([$])),(a=/\bGoogle TV\b/.exec(q))&&(q=a[0]),/\bSimulator\b/i.test(t)&&(q=(q?q+" ":"")+"Simulator"),"Opera Mini"==G&&/\bOPiOS\b/.test(t)&&k.push("running in Turbo/Uncompressed mode"),"IE"==G&&/\blike iPhone OS\b/.test(t)?($=(a=e(t.replace(/like iPhone OS/,""))).manufacturer,q=a.product):/^iP/.test(q)?(G||(G="Safari"),B="iOS"+((a=/ OS ([\d_]+)/i.exec(t))?" "+a[1].replace(/_/g,"."):"")):"Konqueror"!=G||/buntu/i.test(B)?$&&"Google"!=$&&(/Chrome/.test(G)&&!/\bMobile Safari\b/i.test(t)||/\bVita\b/.test(q))||/\bAndroid\b/.test(B)&&/^Chrome/.test(G)&&/\bVersion\//i.test(t)?(G="Android Browser",B=/\bAndroid\b/.test(B)?B:"Android"):"Silk"==G?(/\bMobi/i.test(t)||(B="Android",k.unshift("desktop mode")),/Accelerated *= *true/i.test(t)&&k.unshift("accelerated")):"PaleMoon"==G&&(a=/\bFirefox\/([\d.]+)\b/.exec(t))?k.push("identifying as Firefox "+a[1]):"Firefox"==G&&(a=/\b(Mobile|Tablet|TV)\b/i.exec(t))?(B||(B="Firefox OS"),q||(q=a[1])):!G||(a=!/\bMinefield\b/i.test(t)&&/\b(?:Firefox|Safari)\b/.exec(G))?(G&&!q&&/[\/,]|^[^(]+?\)/.test(t.slice(t.indexOf(a+"/")+8))&&(G=null),(a=q||$||B)&&(q||$||/\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(B))&&(G=/[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(B)?B:a)+" Browser")):"Electron"==G&&(a=(/\bChrome\/([\d.]+)\b/.exec(t)||0)[1])&&k.push("Chromium "+a):B="Kubuntu",F||(F=y(["(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$))","Version",S(G),"(?:Firefox|Minefield|NetFront)"],(function(e,n){return e||(RegExp(n+"(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)","i").exec(t)||0)[1]||null}))),(a=("iCab"==j&&parseFloat(F)>3?"WebKit":/\bOpera\b/.test(G)&&(/\bOPR\b/.test(t)?"Blink":"Presto"))||/\b(?:Midori|Nook|Safari)\b/i.test(t)&&!/^(?:Trident|EdgeHTML)$/.test(j)&&"WebKit"||!j&&/\bMSIE\b/i.test(t)&&("Mac OS"==B?"Tasman":"Trident")||"WebKit"==j&&/\bPlayStation\b(?! Vita\b)/i.test(G)&&"NetFront")&&(j=[a]),"IE"==G&&(a=(/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(t)||0)[1])?(G+=" Mobile",B="Windows Phone "+(/\+$/.test(a)?a:a+".x"),k.unshift("desktop mode")):/\bWPDesktop\b/i.test(t)?(G="IE Mobile",B="Windows Phone 8.x",k.unshift("desktop mode"),F||(F=(/\brv:([\d.]+)/.exec(t)||0)[1])):"IE"!=G&&"Trident"==j&&(a=/\brv:([\d.]+)/.exec(t))&&(G&&k.push("identifying as "+G+(F?" "+F:"")),G="IE",F=a[1]),T){if(c="global",h=null!=(l=n)?typeof l[c]:"number",/^(?:boolean|number|string|undefined)$/.test(h)||"object"==h&&!l[c])v(a=n.runtime)==d?(G="Adobe AIR",B=a.flash.system.Capabilities.os):v(a=n.phantom)==x?(G="PhantomJS",F=(a=a.version||null)&&a.major+"."+a.minor+"."+a.patch):"number"==typeof L.documentMode&&(a=/\bTrident\/(\d+)/i.exec(t))?(F=[F,L.documentMode],(a=+a[1]+4)!=F[1]&&(k.push("IE "+F[1]+" mode"),j&&(j[1]=""),F[1]=a),F="IE"==G?String(F[1].toFixed(1)):F[0]):"number"==typeof L.documentMode&&/^(?:Chrome|Firefox)\b/.test(G)&&(k.push("masking as "+G+" "+F),G="IE",F="11.0",j=["Trident"],B="Windows");else if(M&&(R=(a=M.lang.System).getProperty("os.arch"),B=B||a.getProperty("os.name")+" "+a.getProperty("os.version")),C){try{F=n.require("ringo/engine").version.join("."),G="RingoJS"}catch(e){(a=n.system)&&a.global.system==n.system&&(G="Narwhal",B||(B=a[0].os||null))}G||(G="Rhino")}else"object"==typeof n.process&&!n.process.browser&&(a=n.process)&&("object"==typeof a.versions&&("string"==typeof a.versions.electron?(k.push("Node "+a.versions.node),G="Electron",F=a.versions.electron):"string"==typeof a.versions.nw&&(k.push("Chromium "+F,"Node "+a.versions.node),G="NW.js",F=a.versions.nw)),G||(G="Node.js",R=a.arch,B=a.platform,F=(F=/[\d.]+/.exec(a.version))?F[0]:null));B=B&&m(B)}if(F&&(a=/(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(F)||/(?:alpha|beta)(?: ?\d)?/i.exec(t+";"+(T&&o.appMinorVersion))||/\bMinefield\b/i.test(t)&&"a")&&(I=/b/i.test(a)?"beta":"alpha",F=F.replace(RegExp(a+"\\+?$"),"")+("beta"==I?A:E)+(/\d+\+?/.exec(a)||"")),"Fennec"==G||"Firefox"==G&&/\b(?:Android|Firefox OS)\b/.test(B))G="Firefox Mobile";else if("Maxthon"==G&&F)F=F.replace(/\.[\d.]+/,".x");else if(/\bXbox\b/i.test(q))"Xbox 360"==q&&(B=null),"Xbox 360"==q&&/\bIEMobile\b/.test(t)&&k.unshift("mobile mode");else if(!/^(?:Chrome|IE|Opera)$/.test(G)&&(!G||q||/Browser|Mobi/.test(G))||"Windows CE"!=B&&!/Mobi/i.test(t))if("IE"==G&&T)try{null===n.external&&k.unshift("platform preview")}catch(e){k.unshift("embedded")}else(/\bBlackBerry\b/.test(q)||/\bBB10\b/.test(t))&&(a=(RegExp(q.replace(/ +/g," *")+"/([.\\d]+)","i").exec(t)||0)[1]||F)?(B=((a=[a,/BB10/.test(t)])[1]?(q=null,$="BlackBerry"):"Device Software")+" "+a[0],F=null):this!=b&&"Wii"!=q&&(T&&N||/Opera/.test(G)&&/\b(?:MSIE|Firefox)\b/i.test(t)||"Firefox"==G&&/\bOS X (?:\d+\.){2,}/.test(B)||"IE"==G&&(B&&!/^Win/.test(B)&&F>5.5||/\bWindows XP\b/.test(B)&&F>8||8==F&&!/\bTrident\b/.test(t)))&&!g.test(a=e.call(b,t.replace(g,"")+";"))&&a.name&&(a="ing as "+a.name+((a=a.version)?" "+a:""),g.test(G)?(/\bIE\b/.test(a)&&"Mac OS"==B&&(B=null),a="identify"+a):(a="mask"+a,G=P?m(P.replace(/([a-z])([A-Z])/g,"$1 $2")):"Opera",/\bIE\b/.test(a)&&(B=null),T||(F=null)),j=["Presto"],k.push(a));else G+=" Mobile";(a=(/\bAppleWebKit\/([\d.]+\+?)/i.exec(t)||0)[1])&&(a=[parseFloat(a.replace(/\.(\d)$/,".0$1")),a],"Safari"==G&&"+"==a[1].slice(-1)?(G="WebKit Nightly",I="alpha",F=a[1].slice(0,-1)):F!=a[1]&&F!=(a[2]=(/\bSafari\/([\d.]+\+?)/i.exec(t)||0)[1])||(F=null),a[1]=(/\bChrome\/([\d.]+)/i.exec(t)||0)[1],537.36==a[0]&&537.36==a[2]&&parseFloat(a[1])>=28&&"WebKit"==j&&(j=["Blink"]),T&&(p||a[1])?(j&&(j[1]="like Chrome"),a=a[1]||((a=a[0])<530?1:a<532?2:a<532.05?3:a<533?4:a<534.03?5:a<534.07?6:a<534.1?7:a<534.13?8:a<534.16?9:a<534.24?10:a<534.3?11:a<535.01?12:a<535.02?"13+":a<535.07?15:a<535.11?16:a<535.19?17:a<536.05?18:a<536.1?19:a<537.01?20:a<537.11?"21+":a<537.13?23:a<537.18?24:a<537.24?25:a<537.36?26:"Blink"!=j?"27":"28")):(j&&(j[1]="like Safari"),a=(a=a[0])<400?1:a<500?2:a<526?3:a<533?4:a<534?"4+":a<535?5:a<537?6:a<538?7:a<601?8:"8"),j&&(j[1]+=" "+(a+="number"==typeof a?".x":/[.+]/.test(a)?"":"+")),"Safari"==G&&(!F||parseInt(F)>45)&&(F=a)),"Opera"==G&&(a=/\bzbov|zvav$/.exec(B))?(G+=" ",k.unshift("desktop mode"),"zvav"==a?(G+="Mini",F=null):G+="Mobile",B=B.replace(RegExp(" *"+a+"$"),"")):"Safari"==G&&/\bChrome\b/.exec(j&&j[1])&&(k.unshift("desktop mode"),G="Chrome Mobile",F=null,/\bOS X\b/.test(B)?($="Apple",B="iOS 4.3+"):B=null),F&&0==F.indexOf(a=/[\d.]+$/.exec(B))&&t.indexOf("/"+a+"-")>-1&&(B=w(B.replace(a,""))),j&&!/\b(?:Avant|Nook)\b/.test(G)&&(/Browser|Lunascape|Maxthon/.test(G)||"Safari"!=G&&/^iOS/.test(B)&&/\bSafari\b/.test(j[1])||/^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|Web)/.test(G)&&j[1])&&(a=j[j.length-1])&&k.push(a),k.length&&(k=["("+k.join("; ")+")"]),$&&q&&q.indexOf($)<0&&k.push("on "+$),q&&k.push((/^on /.test(k[k.length-1])?"":"on ")+q),B&&(a=/ ([\d.+]+)$/.exec(B),u=a&&"/"==B.charAt(B.length-a[0].length-1),B={architecture:32,family:a&&!u?B.replace(a[0],""):B,version:a?a[1]:null,toString:function(){var e=this.version;return this.family+(e&&!u?" "+e:"")+(64==this.architecture?" 64-bit":"")}}),(a=/\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(R))&&!/\bi686\b/i.test(R)?(B&&(B.architecture=64,B.family=B.family.replace(RegExp(" *"+a),"")),G&&(/\bWOW64\b/i.test(t)||T&&/\w(?:86|32)$/.test(o.cpuClass||o.platform)&&!/\bWin64; x64\b/i.test(t))&&k.unshift("32-bit")):B&&/^OS X/.test(B.family)&&"Chrome"==G&&parseFloat(F)>=39&&(B.architecture=64),t||(t=null);var U={};return U.description=t,U.layout=j&&j[0],U.manufacturer=$,U.name=G,U.prerelease=I,U.product=q,U.ua=t,U.version=G&&F,U.os=B||{architecture:null,family:null,version:null,toString:function(){return"null"}},U.parse=e,U.toString=function(){return this.description||""},U.version&&k.unshift(F),U.name&&k.unshift(G),B&&G&&(B!=String(B).split(" ")[0]||B!=G.split(" ")[0]&&!q)&&k.push(q?"("+B+")":"on "+B),k.length&&(U.description=k.join(" ")),U}();s.platform=_,void 0===(o=function(){return _}.call(t,n,t,e))||(e.exports=o)}).call(this)}).call(this,n(7)(e),n(8))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){var r,o,i;!function(s,a){"use strict";o=[n(10),n(11),n(12)],void 0===(i="function"==typeof(r=function(e,t,n){var r={filter:function(e){return-1===(e.functionName||"").indexOf("StackTrace$$")&&-1===(e.functionName||"").indexOf("ErrorStackParser$$")&&-1===(e.functionName||"").indexOf("StackTraceGPS$$")&&-1===(e.functionName||"").indexOf("StackGenerator$$")},sourceCache:{}},o=function(){try{throw new Error}catch(e){return e}};function i(e,t){var n={};return[e,t].forEach((function(e){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t]);return n})),n}function s(e){return e.stack||e["opera#sourceloc"]}function a(e,t){return"function"==typeof t?e.filter(t):e}return{get:function(e){var t=o();return s(t)?this.fromError(t,e):this.generateArtificially(e)},getSync:function(n){n=i(r,n);var u=o();return a(s(u)?e.parse(u):t.backtrace(n),n.filter)},fromError:function(t,o){o=i(r,o);var s=new n(o);return new Promise(function(n){var r=a(e.parse(t),o.filter);n(Promise.all(r.map((function(e){return new Promise((function(t){function n(){t(e)}s.pinpoint(e).then(t,n).catch(n)}))}))))}.bind(this))},generateArtificially:function(e){e=i(r,e);var n=t.backtrace(e);return"function"==typeof e.filter&&(n=n.filter(e.filter)),Promise.resolve(n)},instrument:function(e,t,n,r){if("function"!=typeof e)throw new Error("Cannot instrument non-function object");if("function"==typeof e.__stacktraceOriginalFn)return e;var o=function(){try{return this.get().then(t,n).catch(n),e.apply(r||this,arguments)}catch(e){throw s(e)&&this.fromError(e).then(t,n).catch(n),e}}.bind(this);return o.__stacktraceOriginalFn=e,o},deinstrument:function(e){if("function"!=typeof e)throw new Error("Cannot de-instrument non-function object");return"function"==typeof e.__stacktraceOriginalFn?e.__stacktraceOriginalFn:e},report:function(e,t,n,r){return new Promise((function(o,i){var s=new XMLHttpRequest;if(s.onerror=i,s.onreadystatechange=function(){4===s.readyState&&(s.status>=200&&s.status<400?o(s.responseText):i(new Error("POST to "+t+" failed with status: "+s.status)))},s.open("post",t),s.setRequestHeader("Content-Type","application/json"),r&&"object"==typeof r.headers){var a=r.headers;for(var u in a)Object.prototype.hasOwnProperty.call(a,u)&&s.setRequestHeader(u,a[u])}var l={stack:e};null!=n&&(l.message=n),s.send(JSON.stringify(l))}))}}})?r.apply(t,o):r)||(e.exports=i)}()},function(e,t,n){var r,o,i;!function(s,a){"use strict";o=[n(1)],void 0===(i="function"==typeof(r=function(e){var t=/(^|@)\S+:\d+/,n=/^\s*at .*(\S+:\d+|\(native\))/m,r=/^(eval@)?(\[native code])?$/;return{parse:function(e){if(void 0!==e.stacktrace||void 0!==e["opera#sourceloc"])return this.parseOpera(e);if(e.stack&&e.stack.match(n))return this.parseV8OrIE(e);if(e.stack)return this.parseFFOrSafari(e);throw new Error("Cannot parse given Error object")},extractLocation:function(e){if(-1===e.indexOf(":"))return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,""));return[t[1],t[2]||void 0,t[3]||void 0]},parseV8OrIE:function(t){return t.stack.split("\n").filter((function(e){return!!e.match(n)}),this).map((function(t){t.indexOf("(eval ")>-1&&(t=t.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var n=t.replace(/^\s+/,"").replace(/\(eval code/g,"("),r=n.match(/ (\((.+):(\d+):(\d+)\)$)/),o=(n=r?n.replace(r[0],""):n).split(/\s+/).slice(1),i=this.extractLocation(r?r[1]:o.pop()),s=o.join(" ")||void 0,a=["eval","<anonymous>"].indexOf(i[0])>-1?void 0:i[0];return new e({functionName:s,fileName:a,lineNumber:i[1],columnNumber:i[2],source:t})}),this)},parseFFOrSafari:function(t){return t.stack.split("\n").filter((function(e){return!e.match(r)}),this).map((function(t){if(t.indexOf(" > eval")>-1&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===t.indexOf("@")&&-1===t.indexOf(":"))return new e({functionName:t});var n=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=t.match(n),o=r&&r[1]?r[1]:void 0,i=this.extractLocation(t.replace(n,""));return new e({functionName:o,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:t})}),this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(t){for(var n=/Line (\d+).*script (?:in )?(\S+)/i,r=t.message.split("\n"),o=[],i=2,s=r.length;i<s;i+=2){var a=n.exec(r[i]);a&&o.push(new e({fileName:a[2],lineNumber:a[1],source:r[i]}))}return o},parseOpera10:function(t){for(var n=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,r=t.stacktrace.split("\n"),o=[],i=0,s=r.length;i<s;i+=2){var a=n.exec(r[i]);a&&o.push(new e({functionName:a[3]||void 0,fileName:a[2],lineNumber:a[1],source:r[i]}))}return o},parseOpera11:function(n){return n.stack.split("\n").filter((function(e){return!!e.match(t)&&!e.match(/^Error created at/)}),this).map((function(t){var n,r=t.split("@"),o=this.extractLocation(r.pop()),i=r.shift()||"",s=i.replace(/<anonymous function(: (\w+))?>/,"$2").replace(/\([^)]*\)/g,"")||void 0;i.match(/\(([^)]*)\)/)&&(n=i.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var a=void 0===n||"[arguments not available]"===n?void 0:n.split(",");return new e({functionName:s,args:a,fileName:o[0],lineNumber:o[1],columnNumber:o[2],source:t})}),this)}}})?r.apply(t,o):r)||(e.exports=i)}()},function(e,t,n){var r,o,i;!function(s,a){"use strict";o=[n(1)],void 0===(i="function"==typeof(r=function(e){return{backtrace:function(t){var n=[],r=10;"object"==typeof t&&"number"==typeof t.maxStackSize&&(r=t.maxStackSize);for(var o=arguments.callee;o&&n.length<r&&o.arguments;){for(var i=new Array(o.arguments.length),s=0;s<i.length;++s)i[s]=o.arguments[s];/function(?:\s+([\w$]+))+\s*\(/.test(o.toString())?n.push(new e({functionName:RegExp.$1||void 0,args:i})):n.push(new e({args:i}));try{o=o.caller}catch(e){break}}return n}}})?r.apply(t,o):r)||(e.exports=i)}()},function(e,t,n){var r,o,i;!function(s,a){"use strict";o=[n(13),n(1)],void 0===(i="function"==typeof(r=function(e,t){function n(e){return new Promise((function(t,n){var r=new XMLHttpRequest;r.open("get",e),r.onerror=n,r.onreadystatechange=function(){4===r.readyState&&(r.status>=200&&r.status<300||"file://"===e.substr(0,7)&&r.responseText?t(r.responseText):n(new Error("HTTP status: "+r.status+" retrieving "+e)))},r.send()}))}function r(e){if("undefined"!=typeof window&&window.atob)return window.atob(e);throw new Error("You must supply a polyfill for window.atob in this environment")}function o(e){if("object"!=typeof e)throw new TypeError("Given StackFrame is not an object");if("string"!=typeof e.fileName)throw new TypeError("Given file name is not a String");if("number"!=typeof e.lineNumber||e.lineNumber%1!=0||e.lineNumber<1)throw new TypeError("Given line number must be a positive integer");if("number"!=typeof e.columnNumber||e.columnNumber%1!=0||e.columnNumber<0)throw new TypeError("Given column number must be a non-negative integer");return!0}return function i(s){if(!(this instanceof i))return new i(s);s=s||{},this.sourceCache=s.sourceCache||{},this.sourceMapConsumerCache=s.sourceMapConsumerCache||{},this.ajax=s.ajax||n,this._atob=s.atob||r,this._get=function(e){return new Promise(function(t,n){var r="data:"===e.substr(0,5);if(this.sourceCache[e])t(this.sourceCache[e]);else if(s.offline&&!r)n(new Error("Cannot make network requests in offline mode"));else if(r){var o=e.match(/^data:application\/json;([\w=:"-]+;)*base64,/);if(o){var i=o[0].length,a=e.substr(i),u=this._atob(a);this.sourceCache[e]=u,t(u)}else n(new Error("The encoding of the inline sourcemap is not supported"))}else{var l=this.ajax(e,{method:"get"});this.sourceCache[e]=l,l.then(t,n)}}.bind(this))},this._getSourceMapConsumer=function(t,n){return new Promise(function(r){if(this.sourceMapConsumerCache[t])r(this.sourceMapConsumerCache[t]);else{var o=new Promise(function(r,o){return this._get(t).then((function(t){"string"==typeof t&&(t=function(e){if("undefined"!=typeof JSON&&JSON.parse)return JSON.parse(e);throw new Error("You must supply a polyfill for JSON.parse in this environment")}(t.replace(/^\)\]\}'/,""))),void 0===t.sourceRoot&&(t.sourceRoot=n),r(new e.SourceMapConsumer(t))}),o)}.bind(this));this.sourceMapConsumerCache[t]=o,r(o)}}.bind(this))},this.pinpoint=function(e){return new Promise(function(t,n){this.getMappedLocation(e).then(function(e){function n(){t(e)}this.findFunctionName(e).then(t,n).catch(n)}.bind(this),n)}.bind(this))},this.findFunctionName=function(e){return new Promise(function(n,r){o(e),this._get(e.fileName).then((function(r){var o=e.lineNumber,i=e.columnNumber,s=function(e,t){for(var n=[/['"]?([$_A-Za-z][$_A-Za-z0-9]*)['"]?\s*[:=]\s*function\b/,/function\s+([^('"`]*?)\s*\(([^)]*)\)/,/['"]?([$_A-Za-z][$_A-Za-z0-9]*)['"]?\s*[:=]\s*(?:eval|new Function)\b/,/\b(?!(?:if|for|switch|while|with|catch)\b)(?:(?:static)\s+)?(\S+)\s*\(.*?\)\s*\{/,/['"]?([$_A-Za-z][$_A-Za-z0-9]*)['"]?\s*[:=]\s*\(.*?\)\s*=>/],r=e.split("\n"),o="",i=Math.min(t,20),s=0;s<i;++s){var a=r[t-s-1],u=a.indexOf("//");if(u>=0&&(a=a.substr(0,u)),a){o=a+o;for(var l=n.length,c=0;c<l;c++){var g=n[c].exec(o);if(g&&g[1])return g[1]}}}}(r,o);n(s?new t({functionName:s,args:e.args,fileName:e.fileName,lineNumber:o,columnNumber:i}):e)}),r).catch(r)}.bind(this))},this.getMappedLocation=function(e){return new Promise(function(n,r){!function(){if("function"!=typeof Object.defineProperty||"function"!=typeof Object.create)throw new Error("Unable to consume source maps in older browsers")}(),o(e);var i=this.sourceCache,s=e.fileName;this._get(s).then(function(r){var o=function(e){for(var t,n,r=/\/\/[#@] ?sourceMappingURL=([^\s'"]+)\s*$/gm;n=r.exec(e);)t=n[1];if(t)return t;throw new Error("sourceMappingURL not found")}(r),a="data:"===o.substr(0,5),u=s.substring(0,s.lastIndexOf("/")+1);return"/"===o[0]||a||/^https?:\/\/|^\/\//i.test(o)||(o=u+o),this._getSourceMapConsumer(o,u).then((function(r){return function(e,n,r){return new Promise((function(o,i){var s=n.originalPositionFor({line:e.lineNumber,column:e.columnNumber});if(s.source){var a=n.sourceContentFor(s.source);a&&(r[s.source]=a),o(new t({functionName:s.name||e.functionName,args:e.args,fileName:s.source,lineNumber:s.line,columnNumber:s.column}))}else i(new Error("Could not get original source for given stackframe and source map"))}))}(e,r,i).then(n).catch((function(){n(e)}))}))}.bind(this),r).catch(r)}.bind(this))}}})?r.apply(t,o):r)||(e.exports=i)}()},function(e,t,n){t.SourceMapGenerator=n(2).SourceMapGenerator,t.SourceMapConsumer=n(16).SourceMapConsumer,t.SourceNode=n(19).SourceNode},function(e,t){var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");t.encode=function(e){if(0<=e&&e<n.length)return n[e];throw new TypeError("Must be between 0 and 63: "+e)},t.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1}},function(e,t,n){var r=n(0);function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}o.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},o.prototype.add=function(e){var t,n,o,i,s,a;t=this._last,n=e,o=t.generatedLine,i=n.generatedLine,s=t.generatedColumn,a=n.generatedColumn,i>o||i==o&&a>=s||r.compareByGeneratedPositionsInflated(t,n)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(r.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},t.MappingList=o},function(e,t,n){var r=n(0),o=n(17),i=n(4).ArraySet,s=n(3),a=n(18).quickSort;function u(e){var t=e;return"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,""))),null!=t.sections?new g(t):new l(t)}function l(e){var t=e;"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,"")));var n=r.getArg(t,"version"),o=r.getArg(t,"sources"),s=r.getArg(t,"names",[]),a=r.getArg(t,"sourceRoot",null),u=r.getArg(t,"sourcesContent",null),l=r.getArg(t,"mappings"),c=r.getArg(t,"file",null);if(n!=this._version)throw new Error("Unsupported version: "+n);o=o.map(String).map(r.normalize).map((function(e){return a&&r.isAbsolute(a)&&r.isAbsolute(e)?r.relative(a,e):e})),this._names=i.fromArray(s.map(S