UNPKG

obsly-sdk-js-full

Version:

This is the Obsly SDK for javascript...

2 lines 90 kB
/*! For license information please see index.umd.js.LICENSE.txt */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ObslySDK=t():e.ObslySDK=t()}(self,(()=>(()=>{var e={397:()=>{(()=>{var e,t,n,r,i={705:(e,t,n)=>{"use strict";n.a(e,(async(e,r)=>{try{n.d(t,{y:()=>p});var i=n(498),a=n(480),o=n(959),s=n(242),c=n(477),l=n(575),u=n(601),f=n(315),d=n(847),y=n(275),w=n(359),v=n(502),g=n(540),h=n(29);const e=async function(){(0,d.s)(),(0,y.i)(),(0,f.m)(),(0,v.J)(),!0===await(0,c.OU)()&&(0,l.Z)(),(0,w.W)(),(0,w.h)(),(0,u.EU)(),(0,u.dB)()},p={init:async function(){let{ObslyKey:t,instanceURL:n=null,remoteConfigURL:r=null,proEnv:s=!0,appVersion:l,appName:u,logLevel:f="error",config:d=null,debugMode:y=!1,sessionID:w=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!await(0,o.iG)(t,n,s,l,u))return(0,h.vF)("warn","SDK will be down until you fix it."),void(0,c.Vv)(!1);await(0,o.iM)(d,n),await(0,c.pM)(y),await(0,c.Ax)(r);const v=await(0,a.d)(s,l);return(0,a.k)(v),await(0,c.Vv)(!0),await(0,c.He)(f),await(0,o.zP)(w),e(),(0,g._h)(),(0,h.vF)("log",`INITIALIZE OBSLY SDK. VERSION: ${i.MF}`),window.dispatchEvent(new Event("obsly_sdk_ready")),await(0,c.pi)()}};await(0,s.Ie)(),r()}catch(e){r(e)}}),1)},97:(e,t,n)=>{"use strict";n.a(e,(async(e,t)=>{try{var r=n(705),i=e([r]);r=(i.then?(await i)():i)[0],window.ObslySDK=window.obsly_sdk=window.obslySDK=r.y,window.dispatchEvent(new Event("obsly_sdk_attached")),t()}catch(e){t(e)}}))},543:(e,t,n)=>{"use strict";n.a(e,(async(e,t)=>{try{var r=n(705),i=n(932),a=n(364),o=n(611),s=n(692),c=n(264),l=n(97),u=e([r,i,a,o,s,c,l]);[r,i,a,o,s,c,l]=u.then?(await u)():u,t()}catch(e){t(e)}}))},498:(e,t,n)=>{"use strict";n.d(t,{MF:()=>r,Qj:()=>i});const r="1.1.5",i=[]},723:(e,t,n)=>{"use strict";n.d(t,{$V:()=>de,A9:()=>Te,B4:()=>fe,BS:()=>U,Bo:()=>u,Bx:()=>s,C3:()=>K,E$:()=>L,E1:()=>V,E2:()=>j,F:()=>p,FZ:()=>H,Gq:()=>we,HV:()=>B,I0:()=>O,IK:()=>ae,IT:()=>se,JH:()=>Ee,Ju:()=>Ie,K5:()=>J,Ky:()=>me,LC:()=>be,Lq:()=>S,M:()=>$,MQ:()=>ke,MU:()=>De,Ol:()=>ee,PZ:()=>F,QE:()=>Z,Qb:()=>ue,RC:()=>ye,RY:()=>xe,Rk:()=>Y,SC:()=>g,UB:()=>x,UI:()=>l,Uk:()=>d,VN:()=>b,VQ:()=>ne,Vr:()=>G,Wh:()=>W,Xc:()=>T,Y5:()=>le,ZV:()=>he,Zq:()=>a,_A:()=>v,a4:()=>_e,ce:()=>ce,dv:()=>Se,eR:()=>M,eS:()=>Ke,eo:()=>R,es:()=>C,ff:()=>c,gL:()=>r,gR:()=>Ne,gl:()=>i,gp:()=>f,hl:()=>P,ir:()=>D,ju:()=>ie,kd:()=>o,n9:()=>X,n_:()=>m,nc:()=>A,nd:()=>h,oG:()=>ve,oy:()=>Q,p2:()=>_,pU:()=>q,pZ:()=>pe,qR:()=>Re,qh:()=>te,s:()=>Oe,tu:()=>N,u$:()=>E,u0:()=>k,uk:()=>z,wl:()=>ge,x3:()=>Fe,xe:()=>y,xh:()=>w,yY:()=>I,zO:()=>re,zh:()=>oe});const r=3e4,i=!0,a=2,o=3,s=100,c=0,l=2,u=3,f=4,d=5,y=10,w={ERROR:c,INTERNAL:1,UI:l,HTTP:u,TAGS:f,LIFE_CYCLE:d,PERFORMANCE:y,METRIC:80},v={COUNTER:1,GAUGE:2,HISTOGRAM:3},g=[.1,.3,1,3,10],h="OBSLY_SESSION_ID",p="OBSLY_SESSION_EXPIRATION",m="INSTALLATION_ID",b="OBSLY_EXECUTION_ID",S="API_KEY",E="SEND_ACTIVE",_="DELETE_ACTIVE",O="TRACKER_ACTIVE",I="EVENT_TYPE_BLACKLIST",T="REQUESTS_BLACKLIST",D="USER_ID",R="PERSON_ID",N="CONTRACT_ID",F="PASSPORT_ID",K="APP_NAME",k="PRO_ENV",x="INSTANCE_URL",C="REMOTE_CONFIG_URL",A="USER_INFO",L="LOG_LEVEL",P="APP_VERSION",M="REMOTE_CONFIG",B="Unknown",$="DEBUG_MODE",H="HOST_BLACKLIST",j="HOST_BODY_WHITELIST",q="SESSION_MAX_LENGTH_MINS",U="KEEP_SESSION_ON_REFRESH",V="BLACKLIST_TAG_KEYS",X="BLACKLIST_CATEGORIES",W="BODY_ON_ERROR",G="REQUEST_HEADERS",Y="LIFE_CYCLE_DEST_PARAMS",J="LIFE_CYCLE_ORIGIN_PARAMS",z="LIFE_CYCLE_CHANGE_PARAMS",Z="parentViewName",Q="viewName",ee="OBSLY_AVAILABLE_SESSIONS",te="KNOWN_SESSIONS",ne="ObslySDKConfig",re="CAPTURE_CONSOLE",ie={PRO:"PRO",PRE:"PRE"},ae={REQUEST:"request",RESPONSE:"body",REQUEST_HEADERS:"request_headers",RESPONSE_HEADERS:"response_headers"},oe={NAME:"name",VERSION:"os_version",MANUFACTURER:"manufacturer",RESOLUTION:"resolution",ORIENTATION:"orientation",FORM_FACTOR:"form_factor"},se={NAME:"name",SDK_OBSLY:"sdk_obsly",ENVIRONMENT:"environment",RELEASE:"release",PLATFORM:"platform",APP_VERSION:"app_version"},ce={USER_ID:"user_id",PASSPORT_ID:"passport_id",CONTRACT_ID:"contract_id",PERSON_ID:"person_id"},le={PHONE:"phone",TABLET:"tablet",COMPUTER:"computer"},ue=["Macintosh","MacIntel","MacPPC","Mac68K"],fe=["Win32","Win64","Windows","WinCE"],de=["iPhone","iPad","iPod"],ye="WEB",we=" (WEB)",ve=864e5,ge=6e4,he=0,pe=60,me=700,be=50,Se=3,Ee="RAGE_CLICK",_e="AUTOMATIC_VIEW_DETECTION",Oe="SS_RAGE_CLICK",Ie=.25,Te="SS_RAGE_CLICK_PERCENT",De="FUNCTIONAL_BLOCK",Re="OPERATION",Ne="VIEW",Fe="VIEWNAME",Ke="PARENT_VIEWNAME",ke="ENABLE_SS_ON_UI",xe="PAGE_RELOADED_OBSLY"},511:(e,t,n)=>{"use strict";n.d(t,{Rs:()=>r,r1:()=>i,yI:()=>a});class r extends Error{constructor(e){super(e),this.name="MaxRetriesError"}}class i extends Error{constructor(e){super(e),this.name="NotReadyError"}}Error,Error,Error;class a extends Error{constructor(e){super(e),this.name="ValidationError"}}},480:(e,t,n)=>{"use strict";n.d(t,{d:()=>s,k:()=>c});var r=n(477),i=n(498),a=n(723),o=n(29);async function s(e,t){try{const o=await(0,r.oZ)();let s=await(0,r.LO)();if(null!=s&&Date.now()-s.timestamp<=a.oG*a.ZV)return s;if(null==o)return;if(null==e)return;if(null==t)return;const c=await(0,r.CG)(),l=await(0,r.m3)(),u=!0===e?"PRO":"PRE";var n="?sdk_obsly="+i.MF;n+="&release="+u,n+="&platform=WEB",n+="&version="+t,n+="&installation_id="+l,n+="&cfg_type=all";const f=await fetch(o+"v2/config/effective"+n,{method:"GET",headers:{"Content-Type":"application/json","Access-Control-Allow-Credentials":!0,"access-token":c}});let d={...await f.json()};return d.timestamp=Date.now(),await(0,r.hV)(d),d}catch(e){return(0,o.vF)("warning","Error during retrieving remote config:"),(0,o.vF)("warning",e),null}}async function c(e){if(null!=e){if("object"==typeof e){try{var t=!1;e?.capture_body_on_error&&("boolean"==typeof e?.capture_body_on_error?((0,r.mk)(e?.capture_body_on_error),t=!0):"string"==typeof e?.capture_body_on_error&&("true"===e?.capture_body_on_error&&((0,r.mk)(!0),t=!0),"false"===e?.capture_body_on_error&&((0,r.mk)(!1),t=!0)),t||(0,o.vF)("debug","capture_body_on_error is not in a correct format, must be a boolean.")),t||(0,r.mk)(!1)}catch(e){(0,o.vF)("debug","Error setting CaptureBodyOnError: ",e)}try{var n=!1;if(e?.tags_blacklist&&"object"==typeof e?.tags_blacklist){var i=e?.tags_blacklist?.categories;i&&"object"==typeof i&&((0,r.lz)(i),n=!0);var s=e?.tags_blacklist?.keys;s&&"object"==typeof s&&((0,r.$p)(s),n=!0)}n||(0,r.lz)([]),(0,r.$p)([])}catch(e){(0,o.vF)("debug","Error setting tags_blacklist: ",e)}try{var c=!1;if(void 0!==e?.event_type_blacklist&&("object"==typeof e?.event_type_blacklist&&(await(0,r.EZ)(e?.event_type_blacklist),c=!0),!1===c)){let e=await(0,r.IF)();null!=e?0===e.length&&await(0,r.EZ)([]):await(0,r.EZ)([])}}catch(e){(0,o.vF)("debug","Error setting setEventTypeBlacklist: ",e)}try{var l=!1;e?.capture_body_hosts_whitelist&&("object"==typeof e?.capture_body_hosts_whitelist?((0,r.Ys)(e?.capture_body_hosts_whitelist),l=!0):(0,o.vF)("debug","capture_body_hosts_whitelist is not in a correct format, must be an object.")),l||(0,r.Ys)(null)}catch(e){(0,o.vF)("debug","Error setting CaptureBodyHostWhitelist: ",e)}try{if(e?.hosts_blacklist){var u=e?.hosts_blacklist?.hosts_to_add,f=e?.hosts_blacklist?.hosts_to_remove;if(!0===(void 0!==e?.hosts_blacklist?.replace_host_list&&e?.hosts_blacklist?.replace_host_list))"object"==typeof u?(0,r.qc)(u):(0,o.vF)("debug","hosts_to_add is not in a correct format, must be an array.");else{var d=await(0,r.yy)(),y=[];void 0!==u&&null!=u&&("object"==typeof u?y=[...new Set([...d,...u])]:(0,o.vF)("debug","hosts_to_add is not in a correct format, must be an array.")),void 0!==f&&null!=f&&("object"==typeof f?y=y.filter((e=>!f.includes(e))):(0,o.vF)("debug","hosts_to_remove is not in a correct format, must be an array.")),(0,r.qc)(y)}}}catch(e){(0,o.vF)("debug","Error setting setHostBlacklist: ",e)}}try{e?.service_url&&"string"==typeof e?.service_url&&(0,r.P$)(e?.service_url)}catch(e){(0,o.vF)("debug","Error setting service_url: ",e)}var w=!1;try{if(e?.session_max_length_mins){let t=0;t="number"!=typeof e?.session_max_length_mins?parseInt(e?.session_max_length_mins):e?.session_max_length_mins,t>=0?((0,r._c)(t),w=!0):(0,o.vF)("debug","Error setting session_max_length_mins, must be an integer higher than 0")}}catch(e){(0,o.vF)("debug","Error setting session_max_length_mins: ",e)}try{var v=!1;if(e?.keepSessionOnRefresh)if("boolean"!=typeof e?.keepSessionOnRefresh)(0,o.vF)("warn","keep_session_on_refresh Must be boolean");else{v=!0===e?.keepSessionOnRefresh,(0,r.Eu)(v);let t=await(0,r.Gg)();w||!v||t||(0,r._c)(a.pZ)}}catch(e){(0,o.vF)("debug","Error setting keepSessionOnRefresh: ",e)}try{e?.rageClick&&(e?.rageClick?.active&&(0,r.MH)(e?.rageClick?.active),e?.rageClick?.screenshot&&(0,r.BF)(e?.rageClick?.screenshot),e?.rageClick?.screenshotPercent&&(0,r.$H)(e?.rageClick?.screenshotPercent))}catch(e){(0,o.vF)("debug","Error setting RageClick values: ",e)}try{e?.fullDebug&&"boolean"==typeof e?.fullDebug&&(0,r.pM)(e?.fullDebug)}catch(e){(0,o.vF)("debug","Error setting FullDebug values: ",e)}try{void 0!==e?.enableScreenshotOnUi&&"boolean"==typeof e?.enableScreenshotOnUi&&(0,r.Kq)(!0===e?.enableScreenshotOnUi)}catch(e){(0,o.vF)("debug","Error setting enableScreenshotOnUi values: ",e)}}}},888:(e,t,n)=>{"use strict";n.d(t,{GK:()=>D,xB:()=>S,xJ:()=>b,$H:()=>O,PQ:()=>E,A0:()=>h,jB:()=>p,XZ:()=>m});var r=n(498),i=n(723),a=n(351),o=n(477),s=n(29),c=!1;function l(){try{return function(){try{var e=window.navigator.userAgent;if(window.navigator.platform){var t=window.navigator.platform,n=null;return-1!==i.Qb.indexOf(t)?n="MacOS":-1!==i.$V.indexOf(t)?n="iOS":-1!==i.B4.indexOf(t)?n="Windows":/Android/.test(e)?n="Android":!n&&/Linux/.test(t)&&(n="Linux"),n}return i.HV}catch(e){return i.HV}}()+i.Gq}catch(e){return i.RC}}function u(){try{return"hidden"===document.visibilityState}catch(e){return!1}}function f(e){return void 0===e||null==e?null:e.split("?")[0]}function d(e){try{return e.split("?")[1]}catch(e){return null}}function y(e){try{return e.split("?").length>1}catch(e){return!1}}var w=n(918),v=n(570),g=n(981);async function h(){let{url:e,method:t,status:n,requestHeaders:r,responseHeaders:a,request:c,data_sent:l=0,body:u,data_received:f=0,duration:d=0,timestamp:y=Date.now()}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const v=await(0,o.Bb)(),g=parseInt(l)||0,h=parseInt(f)||0,p=parseInt(d)||0,m=await(0,o.IF)();if(!v&&m?.includes(i.xh.HTTP))return void(0,s.vF)("log","Events HTTP are blacklisted. It will not be stored.");const b=c?String(c):null,S=u?String(u):null,E=await async function(e){if(await(0,o.Bb)())return!0;let t=await(0,o.yy)();return null==t||!1===await(0,w.ZD)(e,t)||((0,s.vF)("debug",`This URL: ${e} is blacklisted. It will not be stored.`),!1)}(e);if(!v&&!E)return void(0,s.vF)("debug","Cannot capture this HTTP event. It will not be stored.");const _=await(0,o.r5)();if(e.includes(_+"events/")&&n>=200&&n<300)return void(0,s.vF)("debug","API events are not stored.");const O={request:{url:e,method:t,status_code:n,data_received:h,data_sent:g,duration:p,timestamp:y}};await async function(){return await N(void 0,void 0,"capture_request_body")}()&&b&&(O.request[i.IK.REQUEST]=b),await async function(){return await N(void 0,void 0,"capture_response_body")}()&&S&&(O.request[i.IK.RESPONSE]=S),await async function(e){if(await(0,o.Bb)())return!0;let t=await(0,o.Nb)();return!!(0,w.ZD)(e,t)}(e)&&(O.request[i.IK.REQUEST_HEADERS]=r,O.request[i.IK.RESPONSE_HEADERS]=a),(0,s.vF)("debug","Create new request event: ",O),D({type:i.xh.HTTP,extra:O})}async function p(e){let{tags:t,category:n}=e;const r=await(0,o.Bb)();let a=await(0,o.IF)();if(!r&&null!=a&&a.includes(i.xh.TAGS))return;let c=await(0,o.nS)();if(null!==c&&c.includes(n))return;var l=[];if("object"==typeof t){l=t;let e=await(0,o.d8)();if(null!==e)for(let n of t)if(e.includes(n))return}else(0,s.vF)("error","Tags not formatted correctly!");let u={category:n,tags:l};(0,s.vF)("debug","Create new tag event: ",u),D({type:i.xh.TAGS,extra:u})}async function m(){let{elementId:e,label:t,arialabel:n,domHierarchy:r,text:l,placeholder:u,elementType:f,touchPoint:d,action:y,screenImage:w,className:v,aspectRatio:g,href:h,type:p}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},m=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,S=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const E=JSON.stringify({id:e,ariaLabel:n,text:l,label:t,placeholder:u,domHierarchy:r,className:v,elementType:f,aspectRatio:g,type:p,href:h}),_={ui:{view_name:await(0,o.dm)(),parent_view_name:await(0,o.f5)(),action_mode:t,touch_point:d,texts:E,action_type:y,screen_image:w}};["click","Empty click"].includes(y)&&m&&async function(e,t){if(await(0,o.un)())try{for(;c;)await new Promise((e=>setTimeout(e,100)));c=!0,await async function(e,t){let n=e.pageX,r=e.pageY;if("true"===e.target.getAttribute("data-ignore-rage-click"))return void(0,s.vF)("debug","Ignoring element for rage click");let c=e.target.closest("[data-ignore-rage-click-deep]");if(null!==c&&"true"===c.getAttribute("data-ignore-rage-click-deep"))return void(0,s.vF)("debug","Ignoring element for rage click deep.");const l=await(0,o.KZ)(),u=await(0,o.uy)(),f=await(0,o.eu)();var d=await(0,a.Xn)(n,r,l),y=performance.now();for(const[e,n]of Object.entries(d))if(y-d[e].timestamp<=i.Ky&&y-d[e].timestamp>=0){if(d[e].count=d[e].count+1,d[e].count>=i.dv){var w=l;b({key:i.JH,type:i._A.COUNTER,count:1,duration:null,fbl:u,operation:f,view:w,state:null,le:null},t);for(const[e,t]of Object.entries(d))(0,a.G9)(e);break}(0,a.C1)(e,d[e])}else d[e].count=1,d[e].timestamp=performance.now(),(0,a.C1)(e,d[e])}(e,t),c=!1}catch(e){(0,s.vF)("info",`error proccesing rage click function ${e}`),c=!1}}(m,_.ui);const O=await(0,o.Bb)(),I=await(0,o.IF)();!O&&I?.includes(i.xh.UI)||D({type:i.xh.UI,extra:_,timestamp:S})}async function b(){let{key:e,type:t,count:n,duration:r,fbl:a,operation:c,view:u,state:f,le:d}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},y=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,w=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const v=await(0,o.Bb)();let g=await(0,o.IF)();if(!v&&null!=g&&g.includes(i.xh.METRIC))return;let h=await(0,o.fj)(),p=await(0,o.su)(),m=await(0,o.KZ)(),b=await(0,o.eu)(),S=await(0,o.uy)();var E={metric:{key:e,dimensions:{fbl:a??S??"",operation:c??b??"",view:u??m??"",app:h??"",platform:l()??"",version:p??"",state:f??"",le:d??0},type:t,count:n,duration:r}};null!=y&&(E.ui=y),(0,s.vF)("debug",`Creating ${t} metric event with values:`,E),D({type:i.xh.METRIC,extra:E,timestamp:w})}async function S(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{trace_id:t,title:n,subtitle:r,message:a,original_message:c,message_status:l,hash:u}=e,f=await(0,o.Bb)(),d=await(0,o.IF)();if(!f&&d?.includes(i.xh.ERROR))return;const y={error:{trace_id:t,title:n,subtitle:r,message:a,original_message:c,message_status:l,hash:u}};(0,s.vF)("debug","Creating crash event with values:",y),D({type:i.xh.ERROR,extra:y})}async function E(){let{name:e,timestamp:t,elapsed_ms:n,debug:r,steps:a=[]}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const c=await(0,o.Bb)();let l=await(0,o.IF)();if(!c&&null!=l&&l.includes(i.xh.PERFORMANCE))return;let u={performance_block:{name:e,timestamp:t,elapsed_ms:n,debug:r,steps:a}};(0,s.vF)("debug","Creating perforance event with values:",u),D({type:i.xh.PERFORMANCE,extra:u})}function _(e,t,n){var r=n;for(let t of e)r.push({key:t.split("=")[0],value:t.split("=")[1]});let a={category:t,tags:r};(0,s.vF)("debug","Creating a new tag event for changing params: ",a),D({type:i.xh.TAGS,extra:a})}async function O(){let{origin:e,destination:t,stage:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!t||!e)return;const r=await(0,o.Bb)(),a=await(0,o.IF)();if(!r&&a?.includes(i.xh.LIFE_CYCLE))return;const c={life_cycle:{view_name:f(t),parent_view_name:f(e),stage:n}},[l,u]=[e.split("?")[0],t.split("?")[0]],w=y(e)?d(e):"",v=y(t)?d(t):"";try{if(l!==u)return I(c),T(e,i.K5,i.QE),void T(t,i.Rk,i.oy);if(w||v){if(w!==v)return void _(v.split("&"),i.uk,[{key:i.QE,value:t}]);const e=sessionStorage.getItem(i.RY);if(performance.navigation.type===performance.navigation.TYPE_RELOAD&&"true"!==e)return sessionStorage.setItem(i.RY,"true"),void I(c)}I(c)}catch(e){!function(e){(0,s.vF)("warn",`Error creating navigation event: ${e}`),(0,s.vF)("warn",`Stacktrace: ${e.stack}`)}(e)}}function I(e){(0,s.vF)("debug","Creating a new lifeCycle event: ",e),D({type:i.xh.LIFE_CYCLE,extra:e})}function T(e,t,n){y(e)&&_(d(e).split("&"),t,[{key:n,value:e}])}async function D(){let{type:e,extra:t,timestamp:n=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const a=await(0,o.Bb)();if(!1===await(0,o.Zb)()&&!1===a)return void(0,s.vF)("log","Tracker is not active. Events will not be stored.");let c=await(0,o.IF)();if(!a&&null!=c&&c.includes(e))return;const f=await async function(){let e={},t=await(0,o.Fk)();null!=t&&(e[i.ce.USER_ID]=t);let n=await(0,o.I3)();null!=n&&(e[i.ce.CONTRACT_ID]=n);let r=await(0,o.Wy)();null!=r&&(e[i.ce.PASSPORT_ID]=r);let a=await(0,o.LW)();return null!=a&&(e[i.ce.PERSON_ID]=a),e}();Object.keys(f).length>0&&(t.user=f);const d=await async function(){let e={},t=await(0,o.fj)();null!==t&&(e[i.IT.NAME]=t);let n=await(0,o.$1)();null!==n&&(e[i.IT.RELEASE]=n?i.ju.PRO:i.ju.PRE);let a=await(0,o.su)();null!==a&&(e[i.IT.APP_VERSION]=a),e[i.IT.SDK_OBSLY]=r.MF,e[i.IT.PLATFORM]=l();try{void 0!==window&&void 0!==window.openFrontData&&(a[i.IT.PLATFORM]=window.openFrontData?.identifier?.platform,a[i.IT.APP_VERSION]=window.openFrontData?.version?.app)}catch(e){}return e}();Object.keys(d).length>0&&(t.app=d);const y=await async function(){let e={},t=function(){try{var e,t=navigator.userAgent,n=t.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];return/trident/i.test(n[1])?{name:"IE",version:(e=/\brv[ :]+(\d+)/g.exec(t)||[])[1]||""}:"Chrome"===n[1]&&null!=(e=t.match(/\b(OPR|Edge)\/(\d+)/))?{name:e[1].replace("OPR","Opera"),version:e[2]}:(n=n[2]?[n[1],n[2]]:[navigator.appName,navigator.appVersion,"-?"],null!=(e=t.match(/version\/(\d+)/i))&&n.splice(1,1,e[1]),{name:n[0],version:n[1]})}catch(e){return{name:i.HV,version:i.HV}}}();e[i.zh.NAME]=t.name,e[i.zh.VERSION]=t.version,e[i.zh.MANUFACTURER]=function(){try{var e,t=navigator.userAgent,n=t.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];return/trident/i.test(n[1])?"Microsoft":"Chrome"===n[1]?null!=(e=t.match(/\b(OPR|Edge)\/(\d+)/))?e[1].replace("OPR","Opera Software"):"Google":"Safari"===n[1]?"Apple":"Firefox"===n[1]?"Mozilla":i.HV}catch(e){return i.HV}}();try{if(void 0!==window){void 0!==window.openFrontData&&(e[i.zh.NAME]=window.openFrontData?.identifier?.device,e[i.zh.VERSION]=window.openFrontData?.version?.SO);try{e[i.zh.RESOLUTION]=window.screen.width+"x"+window.screen.height}catch(e){(0,s.vF)("warn","Window Screen Resolution cannot be captured:",e)}try{e[i.zh.ORIENTATION]=window.screen.orientation.type}catch(e){(0,s.vF)("warn","Window Screen orientation cannot be captured:",e)}try{e[i.zh.FORM_FACTOR]=function(){try{var e=window.innerWidth;return e<=480?i.Y5.PHONE:e<=768?i.Y5.TABLET:i.Y5.COMPUTER}catch(e){return i.HV}}()}catch(e){(0,s.vF)("warn","Window Screen form factor cannot be captured:",e)}}}catch(e){}return e}();Object.keys(y).length>0&&(t.device=y),t&&(t.tags&&(t.tags=R(t.tags,"extra.tags",16e3)),t=R(t,"extra",1024,["extra.ui.screen_image","extra.request","extra.tags"]));let w=await(0,o.pi)(),h={installation_id:await(0,o.m3)(),session_id:w,execution_id:await(0,o.eZ)(),timestamp:null!=n?n:Date.now(),event_id:(0,v.l)(),type:e,extra:t,api_key:await(0,o.CG)(),bg:u(),sequence:await(0,o.ey)(w)};(function(e){for(let t of Object.keys(e))if(void 0===e[t]||null===e[t])return!1;return!0})(h)&&(async function(){let e=new Date,t=await(0,o.Gg)();e.setTime(e.getTime()+60*t*1e3),(0,o.W)(e.toUTCString())}(),h.performance=performance.now(),await(0,g.Kh)(h))}function R(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1024,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];for(let i of Object.keys(e)){let a=i;if(""!==t&&(a=`${t}.${i}`),r.includes(a))return e;if("string"==typeof e[i]){const t=e[i].length;if(t>n){(0,s.vF)("debug",`Truncating ${a} from ${t} to ${n}: ${e[i]}`);const r=` [Truncated by SDK: original length ${t}]`;e[i]=e[i].substring(0,n-r.length)+r,(0,s.vF)("debug",`New value: ${e[i]}`)}}else"object"==typeof e[i]&&null!==e[i]&&(e[i]=R(e[i],a,n,r))}return e}async function N(e,t,n){if(await(0,o.Bb)())return!0;if(!0===await(0,o.OM)()&&(t>=400||t<0))return!0;var r=await(0,o.OR)();if(null==r)return!1;if(Array.isArray(r)){for(let i of r){let r=i.from_status,a=i.to_status,o=i.url;if(!0===i[n]&&r<=t&&a>=t&&!0===(0,w.cd)(e,o))return!0}return!1}return!0===(0,w.ZD)(e,r)}},959:(e,t,n)=>{"use strict";n.d(t,{iG:()=>u,iM:()=>f,zP:()=>l});var r=n(981),i=n(540),a=n(477),o=n(160),s=n(723),c=n(29);async function l(e){if(await(0,a.Vv)(!0),await(0,a.pu)(),await(0,a.kP)(),await(0,a.Ii)(),await(0,o.sv)(),null!=await(0,a.pi)()){let e=await(0,r.KH)(1).events;if(e&&e.length>0){var t=new Date(e[0].timestamp);(new Date-t)/s.oG>2?(0,r._O)():(0,i.Tl)()}}else(0,r._O)();await(0,a.J0)(e,null!=e)}const u=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;if("string"!=typeof e)return(0,c.vF)("warn","Api Key is not valid! SDK will no work."),!1;if(0===e.trim().length)return(0,c.vF)("warn","Api Key is not valid! SDK will no work."),!1;if((0,a.wt)(e),(0,c.vF)("debug","API KEY: "+e),null!==t){if("string"!=typeof t)return(0,c.vF)("warn","Instance URL is not valid!"),!1;if(0===t.trim().length)return(0,c.vF)("warn","Instance URL is not valid!"),!1;await(0,a.P$)(t)}return null!=r&&("string"!=typeof r?(0,c.vF)("warn","App version is not valid!"):0===r.trim().length?(0,c.vF)("warn","App Version is not valid!"):await(0,a.eh)(r)),null!=i&&("string"!=typeof i||0===i.trim().length?(0,c.vF)("warn","App Name is not valid!"):await(0,a.Xf)(i)),"boolean"!=typeof n?((0,c.vF)("warn","Be careful! proEnv is not a valid boolean. It must be true or false. By default, it's false."),(0,a.Ld)(!1)):(0,a.Ld)(n),!0},f=async function(e,t){if("object"!=typeof e)return void(0,c.vF)("warn","Local config is invalid. Must be an object with an specific structure.");let n=[];!1===e?.enableCrashes&&n.push(s.ff),!1===e?.enableLifeCycleLog&&n.push(s.Uk),!1===e?.enableRequestLog&&n.push(s.Bo),!1===e?.enableTagger&&n.push(s.gp),!1===e?.enablePerformance&&n.push(s.xe),!1===e?.enableUI&&n.push(s.UI),n.length>0?(0,a.EZ)(n):(0,a.EZ)([]),"object"==typeof e?.hostBlacklist&&null!=e?.hostBlacklist&&e?.hostBlacklist.length>0?(0,a.qc)(e?.hostBlacklist):(0,a.qc)([t+"*"]),"object"==typeof e?.hostBodyWhitelist&&e?.hostBodyWhitelist.length>0?(0,a.Ys)(e?.hostBodyWhitelist):(0,a.Ys)(null),"object"==typeof e?.requestHeadersWhitelist&&(e?.requestHeadersWhitelist.length>0?(0,a.$_)(e?.requestHeadersWhitelist):(0,a.$_)([])),!0===e?.automaticViewDetection?(0,a.EY)(!0):(0,a.EY)(!1),e?.rageClick?!1===e.rageClick?(0,a.MH)(!1):(e?.rageClick?.active&&(0,a.MH)(!0===e?.rageClick?.active),e?.rageClick?.screenshot&&(0,a.BF)(!0===e?.rageClick?.screenshot),e?.rageClick?.screenshotPercent?(0,a.$H)(e?.rageClick?.screenshotPercent):(0,a.$H)(s.Ju)):((0,a.MH)(!0),(0,a.BF)(!1));var r=!1;if(e?.sessionMaxLengthMins){var i=e?.sessionMaxLengthMins,o=!0;if(!Number.isInteger(i))try{i=parseInt(i)}catch(e){o=!1}o?i<=0?(0,c.vF)("warn","sessionMaxLengthMins Must be greather than 0"):((0,a._c)(i),r=!0):(0,c.vF)("warn","sessionMaxLengthMins Must be an integer")}void 0!==e?.keepSessionOnRefresh?"boolean"!=typeof e?.keepSessionOnRefresh?((0,c.vF)("warn","keepSessionOnRefresh Must be boolean"),(0,a.Eu)(!1)):(!1===e?.keepSessionOnRefresh&&(0,c.vF)("warn","It is highly recommended to keep Session on Refresh. Otherwise, we might be loose information with navigation."),(0,a.Eu)(!0===e?.keepSessionOnRefresh),!0!==e?.keepSessionOnRefresh||r||(0,a._c)(s.pZ)):(0,a.Eu)(!0),!0===e?.enableScreenshotOnUi?(0,a.Kq)(!0):(0,a.Kq)(!1),!1===e?.captureConsole?(0,a.q)(!1):(0,a.q)(!0)}},242:(e,t,n)=>{"use strict";n.d(t,{FO:()=>a,Ie:()=>u,KX:()=>o,rE:()=>c,tl:()=>s});var r=n(691),i=n.n(r);window.localforage=i();var a=null,o=null,s=null,c=null;const l={events:{storeName:"events"},performanceEvents:{storeName:"performanceEvents"},internalState:{storeName:"internalState"},rageClick:{storeName:"rageClick"}};async function u(){const e=Date.now(),t="obsly_sdk_db";a=f(t,l.events.storeName,"",e),s=f(t,l.performanceEvents.storeName,"",e),o=f(t,l.internalState.storeName,"",e),c=f(t,l.rageClick.storeName,"",e)}function f(e,t,n,r){return i().createInstance({driver:i().INDEXEDDB,name:e,storeName:t,description:n,version:r})}},981:(e,t,n)=>{"use strict";n.d(t,{KH:()=>u,Kh:()=>l,VD:()=>s,_O:()=>c,l$:()=>o});var r=n(477),i=n(242),a=n(29);async function o(){let e=await i.FO.keys();if(0===e.length)return{events:[],keys:[]};var t=[];e.sort(((e,t)=>parseInt(e.split("_")[1])-parseInt(t.split("_")[1])));for(let n in e)t.push(await i.FO.getItem(String(e[n])).catch((function(e){(0,a.vF)("warn","Error during retrieve an event from db:",e)})));return{events:t,keys:e}}async function s(e){for(let t in e){let n=String(e[t]);await i.FO.removeItem(n)}}async function c(){let e=await i.FO.keys();if(null!=e&&void 0!==e&&0!==e.length)try{for(let t in e){let n=String(e[t]);await i.FO.removeItem(n).catch((function(e){(0,a.vF)("warn","Error during retrieve an event from db:",e)}))}}catch(e){}}async function l(e){try{const t=await(0,r.Zb)();let n=await(0,r.pi)();!0===t&&i.FO.setItem(String(n)+"_"+String(performance.now()),e)}catch(e){}}async function u(e){let t=await i.FO.keys();if(null==t||void 0===t)return{events:[],keys:[]};if(0===t.length)return{events:[],keys:[]};var n=t.length<e?t.slice(0,t.length):t.slice(0,e),r=[];for(let e in n){let t=n[e],a=await i.FO.getItem(String(t));null!==a&&r.push(a)}return{events:r,keys:n}}},477:(e,t,n)=>{"use strict";n.d(t,{Ii:()=>p,Gl:()=>xe,kP:()=>I,pu:()=>O,CG:()=>k,fj:()=>ee,su:()=>re,nS:()=>Ie,d8:()=>Te,OM:()=>Oe,OU:()=>h,I3:()=>G,si:()=>T,IF:()=>M,eZ:()=>v,uy:()=>Me,yy:()=>ve,OR:()=>De,m3:()=>F,r5:()=>oe,Wt:()=>_e,XM:()=>de,eu:()=>Be,f5:()=>We,Wy:()=>W,LW:()=>X,$1:()=>ne,LO:()=>le,oZ:()=>se,Nb:()=>ge,xJ:()=>D,ey:()=>_,pi:()=>Y,TT:()=>b,Gg:()=>Re,Zb:()=>N,Fk:()=>V,KZ:()=>Pe,dm:()=>Xe,Bb:()=>Fe,un:()=>Le,PO:()=>x,wt:()=>K,Xf:()=>Q,eh:()=>ae,EY:()=>ke,lz:()=>pe,$p:()=>me,mk:()=>he,q:()=>g,Ir:()=>U,pM:()=>Ne,EZ:()=>B,LY:()=>je,qc:()=>ye,Ys:()=>be,P$:()=>ie,Eu:()=>Ee,He:()=>fe,MF:()=>He,z9:()=>Ve,aQ:()=>q,z4:()=>j,Ld:()=>te,MH:()=>Ke,hV:()=>ue,Ax:()=>ce,$_:()=>we,I$:()=>$,BF:()=>Ce,$H:()=>Ae,Kq:()=>qe,W:()=>z,_c:()=>Se,Vv:()=>R,Hk:()=>H,g6:()=>$e,nd:()=>Ue,J0:()=>P});var r=n(242),i=n(570),a=n(723),o=n(29),s=n(498);async function c(e){return await async function(e,t){const n=(new TextEncoder).encode(t),r=await crypto.subtle.digest("SHA-1",n);return Array.from(new Uint8Array(r)).map((e=>e.toString(16).padStart(2,"0"))).join("")}(0,e)}class l{getPlugins=e=>{const t=[];for(const n in e)if({}.hasOwnProperty.call(e,n)){const r=e[n];t.push([r.name,r.filename])}return t};getMimeTypes=e=>{const t=[];for(const n in e)if({}.hasOwnProperty.call(e,n)){const r=e[n];t.push([r.suffixes,r.type])}return t}}class u{helpers=new l;generateHeaderID=()=>{const e=[];return e.push(navigator.userAgent),e.push(navigator.platform),e.push(navigator.product),e.push(navigator.productSub),e.push(navigator.vendor),e.push(navigator.vendorSub),e.push(navigator.plugins.length),e.push(this.helpers.getPlugins(navigator.plugins)),e.push(navigator.mimeTypes.length),e.push(this.helpers.getMimeTypes(navigator.mimeTypes)),e.push(navigator.productSub),e.push(navigator.languages),e.push(navigator.hardwareConcurrency),e.push(Object.keys(navigator).length),c(JSON.stringify(e))};generateCanvasID=()=>{const e=document.createElement("canvas");e.height=100,e.width=800;const t=e.getContext("2d");return null!==t&&(t.font="30px Arial",t?.fillText("Hello World",20,90)),c(e.toDataURL())};generateWebGlID=()=>{const e=[],t=document.createElement("canvas").getContext("webgl2");e.push(t?.getParameter(t.RENDERER)),e.push(t?.getParameter(t.VENDOR));const n=t?.getExtension("WEBGL_debug_renderer_info");return e.push(n?.UNMASKED_RENDERER_WEBGL),e.push(n?.UNMASKED_VENDOR_WEBGL),c(JSON.stringify(e))};completeID=()=>c(this.generateHeaderID()+this.generateCanvasID()+this.generateWebGlID())}var f=n(540),d=n(888);async function y(){var e=await ne();await Y();let t=await b();!0!==await Fe()&&!1!==e||null!=t&&!0===t.sentConfig||function(){const e=[];return r.KX.iterate(((t,n)=>{e.push({key:n,value:t})})).then((()=>e)).catch((e=>{(0,o.vF)("error",`Error reading config:${e}`)}))}().then((e=>{(0,d.jB)({tags:e,category:a.VQ}),async function(){for(;S;)await new Promise((e=>setTimeout(e,100)));S=!0;var e=await b(),t={sentConfig:!0};null!=e&&(t={...e,sentConfig:!0}),await m({info:t}),S=!1}()}))}async function w(e,t){return await r.KX.setItem(e,t),await r.KX.getItem(e)}async function v(){let e=await sessionStorage.getItem(a.VN);return null===e?await async function(){var e;return e=(0,i.l)(),await sessionStorage.setItem(a.VN,e),e}():e}async function g(e){await w(a.zO,!0===e)}async function h(){return await r.KX.getItem(a.zO)}async function p(){if(null==await F()){let e=new u;const t=await e.completeID();await async function(e){await w(a.n_,e)}(t)}}async function m(){let{info:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};await w("ObslySessionInfo",JSON.stringify(e))}async function b(){let e=await r.KX.getItem("ObslySessionInfo");return null==e?{}:JSON.parse(e)}let S=!1;async function E(){for(;S;)await new Promise((e=>setTimeout(e,100)));await m({sequence:0}),S=!1}async function _(e){for(;S;)await new Promise((e=>setTimeout(e,100)));S=!0;var t=await b(),n=1,r={sequence:1};return null!=t&&(void 0!==t.sequence?(n=t.sequence,r={...t,sequence:t.sequence+1}):r={...t,sequence:1}),await m({info:r}),S=!1,n}async function O(){return await w(a.u$,!0)}async function I(){return await w(a.p2,!0)}async function T(){return await r.KX.getItem(a.p2)}async function D(){return await r.KX.getItem(a.u$)}async function R(e){return await w(a.I0,e)}async function N(){let e=await r.KX.getItem(a.I0);return"true"===String(e)}async function F(){return await r.KX.getItem(a.n_)}async function K(e){await w(a.Lq,e)}async function k(){return await r.KX.getItem(a.Lq)}async function x(){if(!0!==await _e())try{let e=await Y(),t=C();if(!t.length)return;t=t.filter((t=>t!==e)),A(t),await async function(e){await r.KX.removeItem("SessionInfo_"+e)}(e)}catch(e){(0,o.vF)("debug","Error during event beforeunload: ",e)}}function C(){const e=localStorage.getItem(a.Ol);return e?JSON.parse(e).sessions:[]}function A(e){localStorage.setItem(a.Ol,JSON.stringify({sessions:e}))}async function L(e){null!=e&&setTimeout((async()=>{let e=await J();var t=new Date(e),n=new Date;if(t<n)(0,o.vF)("debug","Session Timeout expired. Starting new session..."),(0,f.Tl)(),P();else{(0,o.vF)("debug",`Session was increment until ${t}`);const e=t.getTime()-n;L(Math.ceil(e/1e3/60))}}),e*a.wl+100)}async function P(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=await _e(),r=await Re();if(n){let n=await async function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=await Re();L(n);const r=await Y(),a=null==e?(0,i.l)():e;if(r===a){let e=new Date;return e.setTime(e.getTime()+60*n*1e3),await z(e.toUTCString()),a}if(!1===t){let e=await J();if(new Date<=new Date(e)&&null!==r)return r}let o=new Date;return o.setTime(o.getTime()+60*n*1e3),await Z(a),await z(o.toUTCString()),E(),y(),a}(e,t);return(0,o.vF)("debug",`Session is stateful, it will be kept for ${r} ${r>1?"minutes":"minute"}. Session ID: ${n}`),n}{let t=await async function(e){L(await Re());let t=null==e?(0,i.l)():e;return await Z(t),E(),function(e){try{let t=C();t.push(e),A(t)}catch(e){(0,o.vF)("error","Error during detecting sessions:",e)}}(t),y(),t}(e);return(0,o.vF)("debug",`Session is stateless, it restarts on reload page. Session ID: ${t}`),t}}async function M(){return await r.KX.getItem(a.yY)}async function B(e){await w(a.yY,e)}async function $(e){await w(a.Xc,e)}async function H(e){await w(a.ir,e)}async function j(e){await w(a.eo,e)}async function q(e){await w(a.PZ,e)}async function U(e){await w(a.nc,e)}async function V(){return r.KX.getItem(a.ir)}async function X(){return await r.KX.getItem(a.eo)}async function W(){return await r.KX.getItem(a.PZ)}async function G(){return await r.KX.getItem(a.tu)}async function Y(){return!0===await _e()?await r.KX.getItem(a.nd):await sessionStorage.getItem(a.nd)}async function J(){return!0===await _e()?await r.KX.getItem(a.F):await sessionStorage.getItem(a.F)}async function z(e){return!0===await _e()?await r.KX.setItem(a.F,e):await sessionStorage.setItem(a.F,e)}async function Z(e){return!0===await _e()?await r.KX.setItem(a.nd,e):await sessionStorage.setItem(a.nd,e)}async function Q(e){await w(a.C3,e)}async function ee(){return await r.KX.getItem(a.C3)}async function te(e){await w(a.u0,!0===e)}async function ne(){let e=await r.KX.getItem(a.u0);return"true"===String(e)}async function re(){return await r.KX.getItem(a.hl)}async function ie(e){return await w(a.UB,e)}async function ae(e){return await w(a.hl,e)}async function oe(){return await r.KX.getItem(a.UB)}async function se(){return await r.KX.getItem(a.es)}async function ce(e){return await w(a.es,e)}async function le(){return await r.KX.getItem(a.eR)}async function ue(e){return await w(a.eR,e)}async function fe(e){if(null!==e)return await w(a.E$,e)}async function de(){return await r.KX.getItem(a.E$)}async function ye(e){let t=e.concat(s.Qj);return await w(a.FZ,t)}async function we(e){return await w(a.Vr,e)}async function ve(){return await r.KX.getItem(a.FZ)}async function ge(){return await r.KX.getItem(a.Vr)}async function he(e){return await w(a.Wh,e)}async function pe(e){return await w(a.n9,e)}async function me(e){return await w(a.E1,e)}async function be(e){return await w(a.E2,e)}async function Se(e){return await w(a.pU,e)}async function Ee(e){return await w(a.BS,!0===e)}async function _e(){let e=await r.KX.getItem(a.BS);return null!=e&&!0===e}async function Oe(){return!0===await r.KX.getItem(a.Wh)}async function Ie(){return await r.KX.getItem(a.n9)}async function Te(){return await r.KX.getItem(a.E1)}async function De(){return await r.KX.getItem(a.E2)}async function Re(){let e=await r.KX.getItem(a.pU);return"number"!=typeof e?null:e}const Ne=async e=>await w(a.M,!0===e),Fe=async()=>!0===await r.KX.getItem(a.M),Ke=async e=>await w(a.JH,!0===e),ke=async e=>await w(a.a4,!0===e),xe=async()=>await r.KX.getItem(a.a4),Ce=async e=>await w(a.s,!0===e),Ae=async e=>(("number"!=typeof e||e<0||e>1)&&((0,o.vF)("info","SS RAGE CLICK error: Value must be a float between 0 and 1. By default, it will be set to 0.25."),e=a.Ju),await w(a.A9,e)),Le=async()=>!0===await r.KX.getItem(a.JH);async function Pe(){return await r.KX.getItem(a.gR)}async function Me(){return await r.KX.getItem(a.MU)}async function Be(){return await r.KX.getItem(a.qR)}const $e=async e=>await w(a.gR,e),He=async e=>await w(a.qR,e),je=async e=>await w(a.MU,e);async function qe(e){return await w(a.MQ,!0===e)}const Ue=async e=>await w(a.x3,e),Ve=async e=>await w(a.eS,e),Xe=async e=>await r.KX.getItem(a.x3),We=async e=>await r.KX.getItem(a.eS)},351:(e,t,n)=>{"use strict";n.d(t,{C1:()=>s,Cl:()=>l,G9:()=>u,Xn:()=>c});var r=n(242),i=n(723),a=n(29);function o(e,t,n){return`${Math.floor(e/i.LC)},${Math.floor(t/i.LC)},${n}`}async function s(e,t){await async function(e,t){try{return await r.rE.setItem(e,t),await r.rE.getItem(e)}catch(e){(0,a.vF)("warning",`Error: ${e}`)}}(e,t)}async function c(e,t,n){try{let s=function(e,t,n){const r=[];for(let a=-1;a<=1;a++)for(let s=-1;s<=1;s++)r.push(o(e+a*i.LC,t+s*i.LC,n));return r}(e,t,n),c={};for(let e of s){var a=await r.rE.getItem(e);c[e]=null!==a?a:{count:0,page:n,timestamp:performance.now()}}return c}catch(e){return{}}}async function l(){try{if(null===r.rE)return;return await r.rE.clear(),"OK"}catch(e){(0,a.vF)("warn",e)}}async function u(e){try{if(null===r.rE)return;return await r.rE.removeItem(e),"OK"}catch(e){(0,a.vF)("warn",e)}}},160:(e,t,n)=>{"use strict";n.d(t,{Dh:()=>o,VU:()=>s,Y3:()=>c,sv:()=>l});var r=n(242),i=n(477),a=n(29);async function o(e){let t=await(0,i.pi)(),n=await r.tl.getItem(t+"_"+e);return null!==n?n:null}async function s(e,t){let n=await(0,i.pi)();await r.tl.setItem(n+"_"+e,t)}async function c(e){let t=await(0,i.pi)();return await r.tl.removeItem(t+"_"+e)}async function l(){let e=await r.tl.keys(),t=await(0,i.pi)();if(null!=e){e=e.filter((e=>e.includes(t)));for(let t in e){let n=String(e[t]);await r.tl.removeItem(n).catch((function(e){(0,a.vF)("warn","Error during retrieve an event from db:",e)}))}}}},575:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(888);function i(){const e=console.error,t=console.warn,n=(e,t,n)=>{let i=function(e){return Array.prototype.slice.call(e).map((e=>{try{return"object"==typeof e?"[OBJ]"+JSON.stringify(e)+"[OBJ]":String(e)}catch(t){return e}})).join("; ")}(n),a=i.trim();i.length>5e3&&(a=a.slice(0,5e3)+"..."),(0,r.jB)({tags:[{key:t,value:a}],category:t}),e.apply(console,n)};console.error=function(){n(e,"CONSOLE.ERROR",arguments)},console.warn=function(){n(t,"CONSOLE.WARN",arguments)}}},932:(e,t,n)=>{"use strict";n.a(e,(async(e,t)=>{try{var r=n(477),i=n(705),a=n(29),o=n(723),s=n(888),c=n(959),l=n(981),u=n(540),f=n(511),d=e([i]);i=(d.then?(await d)():d)[0],(0,a.vF)("log","Control functions initialized"),i.y.setLogLevel=async function(e){if(null!=e&&void 0!==e&&"string"==typeof e){var t=e.trim();a.yr.includes(t)||((0,a.vF)("error","[SDK-OBSLY] Log level must be one of these: null, error, warn, log. Be default, it will be setted to error."),t="error"),i.y.logLevel=a.x1[t],(0,r.He)(a.x1[t])}else(0,a.vF)("error","[SDK-OBSLY] Cannot set an undefined log level.")},i.y.startSession=async function(){await(0,c.zP)()},i.y.closeCurrentSession=function(){(0,u.Tl)(),(0,r.J0)(null,!0)},i.y.createNewSession=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;null!=await(0,r.pi)()&&((0,u.Tl)(),(0,l._O)());var t=null;"string"==typeof e&&(e.trim().length>0?t=e.trim():(0,a.vF)("warn","You are trying to set a new Session with an empty name.")),(0,r.J0)(t,!0)},i.y.pauseTracker=async function(){!1===await(0,r.Zb)()&&(0,a.vF)("warn","Tracker is already paused."),(0,r.Vv)(!1)},i.y.resumeTracker=async function(){!0===await(0,r.Zb)()&&(0,a.vF)("warn","Tracker is already on."),(0,r.Vv)(!0)},i.y.setUserID=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;var t=null;if("string"==typeof e){if(!(e.trim().length>0))throw new f.yI("You are trying to set an user ID with an empty name.");t=e.trim()}(0,r.Hk)(t)},i.y.setPersonID=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;var t=null;if("string"==typeof e){if(!(e.trim().length>0))throw new f.yI("You are trying to set a person ID with an empty name.");t=e.trim()}(0,r.z4)(t)},i.y.setPassportID=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;var t=null;if("string"==typeof e){if(!(e.trim().length>0))throw new f.yI("You are trying to set a passport ID with an empty name.");t=e.trim()}(0,r.aQ)(t)},i.y.setContractID=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;var t=null;if("string"==typeof e){if(!(e.trim().length>0))throw new f.yI("You are trying to set a contract ID with an empty name.");t=e.trim()}(0,r.Ir)(t)},i.y.setAppName=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;var t=null;if("string"==typeof e){if(!(e.trim().length>0))throw new f.yI("You are trying to set an App Name with an empty name.");t=e.trim()}(0,r.Xf)(t)},i.y.setAppVersion=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;var t=null;if("string"==typeof e){if(!(e.trim().length>0))throw new f.yI("warn","You are trying to set an App Name with an empty name.");t=e.trim()}(0,r.eh)(t)},i.y.setRequestsBlacklist=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];var t=null;if("object"!=typeof e)throw new f.yI("You are trying to set an invalid requests blacklist. Check that the current parameter is a list of strings.");e.length>0&&(t=e.filter((e=>e.trim().length>0)),(0,r.I$)(t))},i.y.getSessionInfo=async function(){return{sessionID:await(0,r.pi)(),installationID:await(0,r.m3)()}},i.y.addFeedback=async function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;if(null==e)throw new f.yI("Cannot create feedback without rating.");if(null==t)throw new f.yI("Cannot create feedback without message.");let i={tags:[{key:"rating",value:e},{key:"message",value:t}],category:"feedback"};null!=n&&void 0!==n&&(i.ui={screen_image:n}),(0,s.GK)({type:o.xh.TAGS,extra:i,timestamp:r})},i.y.activateFullDebug=async()=>{await(0,r.pM)(!0)},i.y.deactivateFullDebug=async()=>{await(0,r.pM)(!1)},t()}catch(e){t(e)}}))},601:(e,t,n)=>{"use strict";n.d(t,{EU:()=>l,dB:()=>u});var r=n(888),i=n(29),a=n(540),o=n(477);let s=0;function c(){const e=performance.getEntriesByType("resource");e.forEach((e=>{e.startTime>s&&function(e,t){"video"!==e.initiatorType&&"img"!==e.initiatorType&&"css"!==e.initiatorType||(0,r.A0)({url:e.name,method:"GET",status:e.responseStatus,body:null,response:null,duration:Math.floor(t.toFixed(2)),responseHeaders:null,requestHeaders:null,timestamp:performance.timeOrigin+e.startTime})}(e,e.responseEnd-e.startTime)})),e.length>0&&(s=e[e.length-1].startTime)}function l(){setInterval(c,1e3)}function u(){function e(){const e=document.getElementsByTagName("img");for(let t of e)t.crossOrigin=""}function t(){const e=document.getElementsByTagName("video");for(let t of e)t.crossOrigin=""}(0,i.vF)("log","DOM Interceptor Available"),document.addEventListener("DOMContentLoaded",(function(){e(),t()})),new MutationObserver((n=>{n.forEach((n=>{n.addedNodes.forEach((n=>{"IMG"===n.tagName&&e(),"VIDEO"===n.tagName&&t()}))}))})).observe(document.body,{childList:!0,subtree:!0}),document.addEventListener("visibilitychange",(function(e){let t="visible"===e.target.visibilityState?"foreground":"background";(0,r.$H)({origin:window.location.href,destination:window.location.href,stage:t})}),!0),window.addEventListener("beforeunload",(async function(e){await(0,a.Tl)(),await(0,o.PO)()}))}},315:(e,t,n)=>{"use strict";n.d(t,{m:()=>o});var r=n(888),i=n(29),a=n(570);async function o(){(0,i.vF)("log","Crash Events Available"),window.onerror=function(e,t,n,i,o){(0,r.xB)({trace_id:(0,a.l)(),title:e,subtitle:"",message:o.stack,original_message:o.stack,message_status:"",hash:""})}}},364:(e,t,n)=>{"use strict";n.a(e,(async(e,t)=>{try{var r=n(888),i=n(723),a=n(29),o=n(351),s=n(477),c=n(705),l=n(511),u=e([c]);c=(u.then?(await u)():u)[0],(0,a.vF)("log","Metrics interceptor Running");const f={};function d(e,t,n,r){return`${e}:${t}:${n}:${r}`}function y(e){if("string"!=typeof e||e.trim().length<5)throw new l.yI("Key must be a valid string with at least 5 characters.")}function w(e,t,n){let r=null;"string"==typeof e&&e.trim().length>0?r=e.trim():(0,a.vF)("warn",`You are trying to set a new ${n} with an empty name.`),t(r)}(0,o.Cl)(),c.y.incCounter=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null;y(e),(0,r.xJ)({key:e.toString(),type:i._A.COUNTER,count:1,duration:void 0,fbl:t.toString(),operation:n.toString(),view:a.toString(),state:o.toString()},null,s)},c.y.setGauge=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null;if(y(e),"number"==typeof t&&!isNaN(t))throw new l.yI("Value must be a number.");(0,r.xJ)({key:e.toString(),type:i._A.GAUGE,count:t,duration:void 0,fbl:n.toString(),operation:a.toString(),view:o.toString(),state:s.toString()},null,c)},c.y.startHistogramTimer=function(e,t,n,r){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;y(e);const o=d(e,t,n,r);f[o]&&(0,a.vF)("warn","Timer already started"),f[o]=null==i?Date.now():i},c.y.endHistogramTimer=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null;y(e);const l=d(e,t,n,o);if(!f[l])return void(0,a.vF)("error","Timer not found");const u=(Date.now()-f[l])/1e3;let w;i.SC.forEach((function(e){void 0===w&&u<=e&&(w=e)})),(0,r.xJ)({key:e,type:i._A.HISTOGRAM,count:1,duration:u,fbl:t,operation:n,view:o,state:s,le:w},null,c),delete f[l]},c.y.setFunctionalBlock=async function(){w(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,s.LY,"Functional block")},c.y.setOperation=async function(){w(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,s.MF,"Operation")},c.y.setView=async function(){w(arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,s.g6,"View")},t()}catch(v){t(v)}}))},847:(e,t,n)=>{"use strict";n.d(t,{s:()=>l});var r=n(888),i=n(29),a=n(351),o=n(477);function s(e){return e.split("?")[0]}function c(e,t){(0,i.vF)("debug",`Navigating from: ${e} to: ${t}`),(0,r.$H)({origin:e,destination:t,stage:"load"}),(0,o.nd)(s(t)),(0,o.z9)(s(e)),(0,a.Cl)(),async function(e){await(0,o.Gl)()&&(0,o.g6)(e)}(t)}async function l(){(0,i.vF)("log","Navigation events available"),async function(){let e=await(0,o.dm)();var t=document.referrer,n=window.location.href;e===n&&(t=n),c(t,n)}(),function(e){const t=e.pushState,n=e.replaceState;let r=window.location.href;e.pushState=function(n){for(var i=arguments.length,a=new Array(i>1?i-1:0),o=1;o<i;o++)a[o-1]=arguments[o];const s=window.location.origin+window.location.pathname+a[1];return c(r,s),r=s,t.apply(e,[n,...a])},e.replaceState=function(t){for(var i=arguments.length,a=new Array(i>1?i-1:0),o=1;o<i;o++)a[o-1]=arguments[o];const s=window.location.origin+window.location.pathname+a[1];return c(r,s),r=s,n.apply(e,[t,...a])},window.addEventListener("popstate",(()=>{const e=window.location.href;(0,i.vF)("log",`Navigated from: ${r} to: ${e}`),r=e}))}(window.history)}},611:(e,t,n)=>{"use strict";n.a(e,(async(e,t)=>{try{var r=n(888),i=n(160),a=n(29),o=n(705),s=n(511),c=e([o]);o=(c.then?(await c)():c)[0],(0,a.vF)("log","Performance events available"),o.y.startTransaction=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;if(!e||"string"!=typeof e||0===e.trim().length)throw new s.yI("Start transaction: requires a valid non-empty string as name.");const o=e.trim(),c=t?.trim()||null;let l=null;null!==r&&(l=parseInt(r),(isNaN(l)||0===l)&&((0,a.vF)("warn","Start transaction: autofinishWithStepsCount must be a non-zero number. It will be ignored."),l=null));let u=null;null!==n&&(u=parseInt(n),(isNaN(u)||0===u)&&((0,a.vF)("warn","Start transaction: startNanoTime must be a non-zero number. It will be ignored."),u=null)),await(0,i.Dh)(o)&&(0,a.vF)("warn",`Transaction ${o} already exists. It will be overwritten.`),await(0,i.VU)(o,{name:o,timestamp:Date.now(),description:c,startNanoTime:u||performance.now(),autofinishWithStepsCount:l,steps:[]}),(0,a.vF)("debug",`Starting transaction ${o}`)},o.y.endTransaction=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e||"string"!=typeof e||0===e.trim().length)throw new s.yI("Finish transaction: requires a valid non-empty string as name.");const n=e.trim(),o=t?.trim()||null,c=await(0,i.Dh)(n);if(!c)throw new s.yI(`Finish transaction error: transaction ${n} does not exist.`);const l=o||c.description||null;await(0,r.PQ)({name:c.name,timestamp:c.timestamp,elapsed_ms:performance.now()-c.startNanoTime,debug:l,steps:c.steps.map((e=>{let{open:t,...n}=e;return n}))}),await(0,i.Y3)(n),(0,a.vF)("log",`Finish transaction ${n}`)},o.y.startStep=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;if(!e||"string"!=typeof e||0===e.trim().length)throw new s.yI("Start Step: requires a valid non-empty string as name.");if(!t||"string"!=typeof t||0===t.trim().length)throw new s.yI("Start Step: requires a valid non-empty string as transactionName.");const o=e.trim(),c=t.trim(),l=n?.trim()||null;let u=null;null!==r&&(u=parseInt(r),(isNaN(u)||0===u)&&((0,a.vF)("warn","Start Step: startNanoTime must be a non-zero number. It will be ignored."),u=null));const f=await(0,i.Dh)(c);if(!f)throw new s.yI(`Start step error: transaction ${c} does not exist. (Step: ${o})`);if(f.steps.some((e=>e.name===o&&e.open)))throw new s.yI(`Start step error: transaction ${c} start step ${o} cannot be executed. A step with the same name must be closed first.`);let d=f.steps.length>0?f.steps.slice(-1)[0].elapsed_ms:f.elapsed_ms;const y={name:o,open:!0,timestamp:Date.now(),debug:l,elapsed_ms:u&&u>=d?u:performance.now()};f.steps.push(y),await(0,i.VU)(c,f),(0,a.vF)("log","Start step complete!")},o.y.finishStep=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n