@zoho_apptics/apptics-js-sdk 2.0.0-beta → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +111 -5
- package/README.md +399 -300
- package/dist/apptics.esm.min.js +2 -2
- package/dist/apptics.esm.min.js.map +1 -1
- package/dist/apptics.min.js +2 -2
- package/dist/apptics.min.js.map +1 -1
- package/dist/chunks/lifecycle-VYr43KcB.min.js +3 -0
- package/dist/chunks/lifecycle-VYr43KcB.min.js.map +1 -0
- package/dist/cjs/auto-init.d.ts +3 -3
- package/dist/cjs/auto-init.js +1 -1
- package/dist/cjs/core/attempts.js +1 -1
- package/dist/cjs/core/batch.js +2 -1
- package/dist/cjs/core/callsite.d.ts +6 -0
- package/dist/cjs/core/callsite.js +25 -3
- package/dist/cjs/core/consent.d.ts +5 -1
- package/dist/cjs/core/consent.js +8 -6
- package/dist/cjs/core/constants.d.ts +35 -10
- package/dist/cjs/core/constants.js +31 -15
- package/dist/cjs/core/db.d.ts +12 -4
- package/dist/cjs/core/db.js +167 -34
- package/dist/cjs/core/debug.js +1 -1
- package/dist/cjs/core/env.js +1 -1
- package/dist/cjs/core/framework-id.d.ts +1 -1
- package/dist/cjs/core/framework-id.js +3 -3
- package/dist/cjs/core/guard.d.ts +9 -0
- package/dist/cjs/core/guard.js +27 -13
- package/dist/cjs/core/hooks.d.ts +2 -4
- package/dist/cjs/core/hooks.js +2 -3
- package/dist/cjs/core/locks.d.ts +9 -0
- package/dist/cjs/core/locks.js +22 -0
- package/dist/cjs/core/logger.d.ts +3 -4
- package/dist/cjs/core/logger.js +4 -40
- package/dist/cjs/core/state.d.ts +3 -2
- package/dist/cjs/core/state.js +2 -2
- package/dist/cjs/core/storage.d.ts +20 -5
- package/dist/cjs/core/storage.js +115 -17
- package/dist/cjs/core/stylesheet.d.ts +8 -0
- package/dist/cjs/core/stylesheet.js +29 -0
- package/dist/cjs/core/transport.d.ts +2 -0
- package/dist/cjs/core/transport.js +19 -4
- package/dist/cjs/core/utils.js +1 -1
- package/dist/cjs/core/validate.js +2 -2
- package/dist/cjs/device/appversion.d.ts +1 -6
- package/dist/cjs/device/appversion.js +13 -1
- package/dist/cjs/device/index.d.ts +11 -0
- package/dist/cjs/device/index.js +120 -20
- package/dist/cjs/engagement/api-rules.d.ts +32 -67
- package/dist/cjs/engagement/api-rules.js +144 -157
- package/dist/cjs/engagement/auto-api.js +2 -2
- package/dist/cjs/engagement/auto-screen.d.ts +2 -0
- package/dist/cjs/engagement/auto-screen.js +67 -3
- package/dist/cjs/engagement/defined-events.js +1 -1
- package/dist/cjs/engagement/send.js +6 -1
- package/dist/cjs/engagement/session.d.ts +12 -3
- package/dist/cjs/engagement/session.js +161 -25
- package/dist/cjs/engagement/track.js +45 -20
- package/dist/cjs/errors/send.js +1 -1
- package/dist/cjs/errors/track.d.ts +1 -1
- package/dist/cjs/errors/track.js +46 -6
- package/dist/cjs/feedback/controls.d.ts +6 -0
- package/dist/cjs/feedback/controls.js +31 -1
- package/dist/cjs/feedback/index.d.ts +8 -7
- package/dist/cjs/feedback/index.js +32 -13
- package/dist/cjs/feedback/logs.d.ts +10 -5
- package/dist/cjs/feedback/logs.js +52 -13
- package/dist/cjs/feedback/quartz.d.ts +18 -0
- package/dist/cjs/feedback/quartz.js +105 -0
- package/dist/cjs/feedback/send.d.ts +3 -0
- package/dist/cjs/feedback/send.js +28 -3
- package/dist/cjs/feedback/styles.d.ts +10 -0
- package/dist/cjs/feedback/styles.js +8 -0
- package/dist/cjs/feedback/template.d.ts +1 -1
- package/dist/cjs/feedback/template.js +12 -12
- package/dist/cjs/feedback/ui.d.ts +14 -6
- package/dist/cjs/feedback/ui.js +126 -48
- package/dist/cjs/heatmap/send.js +1 -1
- package/dist/cjs/heatmap/track.d.ts +1 -1
- package/dist/cjs/heatmap/track.js +87 -16
- package/dist/cjs/index.d.ts +17 -63
- package/dist/cjs/index.js +104 -92
- package/dist/cjs/lifecycle.d.ts +8 -1
- package/dist/cjs/lifecycle.js +258 -62
- package/dist/cjs/remoteconfig/country.d.ts +4 -0
- package/dist/cjs/remoteconfig/country.js +73 -0
- package/dist/cjs/remoteconfig/custom.d.ts +7 -7
- package/dist/cjs/remoteconfig/custom.js +31 -51
- package/dist/cjs/remoteconfig/evaluate.d.ts +3 -3
- package/dist/cjs/remoteconfig/evaluate.js +56 -43
- package/dist/cjs/remoteconfig/fetch.d.ts +3 -3
- package/dist/cjs/remoteconfig/fetch.js +9 -23
- package/dist/cjs/remoteconfig/index.d.ts +10 -8
- package/dist/cjs/remoteconfig/index.js +65 -39
- package/dist/cjs/remoteconfig/store.js +1 -1
- package/dist/cjs/remoteconfig/tz-countries.d.ts +8 -0
- package/dist/cjs/remoteconfig/tz-countries.js +13 -0
- package/dist/cjs/remotelog/gate.d.ts +2 -11
- package/dist/cjs/remotelog/gate.js +9 -35
- package/dist/cjs/remotelog/index.d.ts +4 -21
- package/dist/cjs/remotelog/logger.d.ts +11 -17
- package/dist/cjs/remotelog/logger.js +30 -58
- package/dist/cjs/remotelog/send.js +10 -10
- package/dist/cjs/remotelogger/index.d.ts +12 -0
- package/dist/cjs/remotelogger/index.js +18 -0
- package/dist/cjs/scheduler.js +2 -2
- package/dist/cjs/types.d.ts +155 -82
- package/dist/cjs/user/index.js +11 -6
- package/dist/esm/auto-init.d.ts +3 -3
- package/dist/esm/auto-init.js +1 -1
- package/dist/esm/core/attempts.js +1 -1
- package/dist/esm/core/batch.js +2 -1
- package/dist/esm/core/callsite.d.ts +6 -0
- package/dist/esm/core/callsite.js +25 -4
- package/dist/esm/core/consent.d.ts +5 -1
- package/dist/esm/core/consent.js +9 -7
- package/dist/esm/core/constants.d.ts +35 -10
- package/dist/esm/core/constants.js +30 -15
- package/dist/esm/core/db.d.ts +12 -4
- package/dist/esm/core/db.js +164 -35
- package/dist/esm/core/debug.js +1 -1
- package/dist/esm/core/env.js +1 -1
- package/dist/esm/core/framework-id.d.ts +1 -1
- package/dist/esm/core/framework-id.js +3 -3
- package/dist/esm/core/guard.d.ts +9 -0
- package/dist/esm/core/guard.js +27 -14
- package/dist/esm/core/hooks.d.ts +2 -4
- package/dist/esm/core/hooks.js +2 -3
- package/dist/esm/core/locks.d.ts +9 -0
- package/dist/esm/core/locks.js +20 -0
- package/dist/esm/core/logger.d.ts +3 -4
- package/dist/esm/core/logger.js +4 -40
- package/dist/esm/core/state.d.ts +3 -2
- package/dist/esm/core/state.js +2 -2
- package/dist/esm/core/storage.d.ts +20 -5
- package/dist/esm/core/storage.js +113 -18
- package/dist/esm/core/stylesheet.d.ts +8 -0
- package/dist/esm/core/stylesheet.js +27 -0
- package/dist/esm/core/transport.d.ts +2 -0
- package/dist/esm/core/transport.js +19 -5
- package/dist/esm/core/utils.js +1 -1
- package/dist/esm/core/validate.js +2 -2
- package/dist/esm/device/appversion.d.ts +1 -6
- package/dist/esm/device/appversion.js +13 -2
- package/dist/esm/device/index.d.ts +11 -0
- package/dist/esm/device/index.js +123 -24
- package/dist/esm/engagement/api-rules.d.ts +32 -67
- package/dist/esm/engagement/api-rules.js +143 -155
- package/dist/esm/engagement/auto-api.js +3 -3
- package/dist/esm/engagement/auto-screen.d.ts +2 -0
- package/dist/esm/engagement/auto-screen.js +67 -4
- package/dist/esm/engagement/defined-events.js +1 -1
- package/dist/esm/engagement/send.js +6 -1
- package/dist/esm/engagement/session.d.ts +12 -3
- package/dist/esm/engagement/session.js +162 -29
- package/dist/esm/engagement/track.js +52 -27
- package/dist/esm/errors/send.js +1 -1
- package/dist/esm/errors/track.d.ts +1 -1
- package/dist/esm/errors/track.js +46 -6
- package/dist/esm/feedback/controls.d.ts +6 -0
- package/dist/esm/feedback/controls.js +31 -2
- package/dist/esm/feedback/index.d.ts +8 -7
- package/dist/esm/feedback/index.js +34 -13
- package/dist/esm/feedback/logs.d.ts +10 -5
- package/dist/esm/feedback/logs.js +54 -15
- package/dist/esm/feedback/quartz.d.ts +18 -0
- package/dist/esm/feedback/quartz.js +99 -0
- package/dist/esm/feedback/send.d.ts +3 -0
- package/dist/esm/feedback/send.js +28 -5
- package/dist/esm/feedback/styles.d.ts +10 -0
- package/dist/esm/feedback/styles.js +4 -0
- package/dist/esm/feedback/template.d.ts +1 -1
- package/dist/esm/feedback/template.js +12 -12
- package/dist/esm/feedback/ui.d.ts +14 -6
- package/dist/esm/feedback/ui.js +126 -49
- package/dist/esm/heatmap/send.js +1 -1
- package/dist/esm/heatmap/track.d.ts +1 -1
- package/dist/esm/heatmap/track.js +87 -16
- package/dist/esm/index.d.ts +17 -63
- package/dist/esm/index.js +108 -80
- package/dist/esm/lifecycle.d.ts +8 -1
- package/dist/esm/lifecycle.js +266 -71
- package/dist/esm/remoteconfig/country.d.ts +4 -0
- package/dist/esm/remoteconfig/country.js +70 -0
- package/dist/esm/remoteconfig/custom.d.ts +7 -7
- package/dist/esm/remoteconfig/custom.js +32 -52
- package/dist/esm/remoteconfig/evaluate.d.ts +3 -3
- package/dist/esm/remoteconfig/evaluate.js +57 -44
- package/dist/esm/remoteconfig/fetch.d.ts +3 -3
- package/dist/esm/remoteconfig/fetch.js +9 -23
- package/dist/esm/remoteconfig/index.d.ts +10 -8
- package/dist/esm/remoteconfig/index.js +66 -40
- package/dist/esm/remoteconfig/store.js +1 -1
- package/dist/esm/remoteconfig/tz-countries.d.ts +8 -0
- package/dist/esm/remoteconfig/tz-countries.js +11 -0
- package/dist/esm/remotelog/gate.d.ts +2 -11
- package/dist/esm/remotelog/gate.js +10 -32
- package/dist/esm/remotelog/index.d.ts +4 -21
- package/dist/esm/remotelog/logger.d.ts +11 -17
- package/dist/esm/remotelog/logger.js +32 -60
- package/dist/esm/remotelog/send.js +12 -12
- package/dist/esm/remotelogger/index.d.ts +12 -0
- package/dist/esm/remotelogger/index.js +13 -0
- package/dist/esm/scheduler.js +2 -2
- package/dist/esm/types.d.ts +155 -82
- package/dist/esm/user/index.js +12 -6
- package/dist/feedback.esm.min.js +2 -2
- package/dist/feedback.esm.min.js.map +1 -1
- package/package.json +14 -16
- package/dist/chunks/batch-BU_mTpm1.min.js +0 -3
- package/dist/chunks/batch-BU_mTpm1.min.js.map +0 -1
- package/dist/chunks/logs-Bea5zUW_.min.js +0 -3
- package/dist/chunks/logs-Bea5zUW_.min.js.map +0 -1
- package/dist/cjs/heatmap/index.d.ts +0 -16
- package/dist/cjs/heatmap/index.js +0 -22
- package/dist/cjs/remotelog/index.js +0 -55
- package/dist/esm/heatmap/index.d.ts +0 -16
- package/dist/esm/heatmap/index.js +0 -17
- package/dist/esm/remotelog/index.js +0 -51
- package/dist/heatmap.esm.min.js +0 -3
- package/dist/heatmap.esm.min.js.map +0 -1
- package/dist/style.css +0 -1
package/dist/apptics.min.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! @zoho_apptics/apptics-js-sdk v2.0.0-beta | (c) Zoho Corporation Private Limited | see LICENSE */
|
|
2
|
-
!function(){"use strict";const e=Object.freeze({USAGE_TRACKING_WITH_PII:1,USAGE_TRACKING_WITHOUT_PII:4,NO_TRACKING:-1}),t=Object.freeze({BUG:0,FEEDBACK:1,HELP:2,REPORT:3}),n=Object.freeze({SCREEN:"screen",SESSION:"session",EVENT:"event",API:"api",ERROR:"error",SUCCESS:"success",BROWSER:"Browser"}),r=Object.freeze({addversion:"app/addversion",regdevice:"device/add",reguser:"user/register",engagement:"engagement/add",error:"exception/error",feedback:"feedback/add",sdkconfig:"getsdkconfig",getupdates:"getupdates",consolelog:"log/add",heatmap:"heatmap/add"}),i=Object.freeze({addversion:"v2",regdevice:"v2",engagement:"v2",error:"v2",reguser:"v2",feedback:"v2",sdkconfig:"v2",getupdates:"v2",consolelog:"v2",heatmap:"v2"}),o=Object.freeze({SESSION:"Session",SCREEN:"Screen",EVENT:"Event",API:"API",HEATMAP:"Heatmap",PROPERTIES:"Properties"}),a=Object.freeze({REMOTE_CONFIG:"2",SESSION:"11",FEEDBACK:"12",CRASH:"13",REMOTE_LOGGER:"17",HEATMAP:"18"}),s=36e5,c=Object.freeze({endpoint:"/sdk/web/",method:"POST",transport:"XHR",track_link_timeout:300,cookie_expiration_days:365,storage_type:"localStorage",enable_batch_requests:!0,batch_size:50,batch_flush_interval:3e4,getupdates_interval:12e4,batch_request_timeout:7,auto_starts_batch:!0,mode:1,default_group_name:"default",default_optin_status:e.USAGE_TRACKING_WITHOUT_PII,enable_pageview_tracking:!1,save_referrer:!0,debug:!1,track_by_default:!0,ignore_do_not_track:!1,remote_log:!1,track_api:!1,track_screen:!0,show_logs:!1,track_session:!0,min_session_duration:5e3,track_heatmap:!1,debug_api:!1,device_name:"",heatmap_max_per_session:500}),d=Object.freeze(["serviceUrl","zak","identifier","appversion"]),u=Object.freeze({engagement:!0,error:!0,consolelog:!0}),l=Object.freeze({regdevice:!0,reguser:!0,engagement:!0,error:!0,heatmap:!0,consolelog:!0,feedback:!0,getupdates:!0}),f=Object.freeze({addversion:!0}),p=Object.freeze({serviceUrl:"base_domain",zak:"token"}),g=Object.freeze(["ahrefsbot","ahrefssiteaudit","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandexbot","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"]),m={};function v(){return Math.round((new Date).getTime())}function h(e){return!!e&&"object"==typeof e&&e.result==n.SUCCESS}function _(e){return null==e||""===e}function k(e){return!!e&&"object"==typeof e&&0===Object.keys(e).length&&e.constructor===Object}function y(e,t){return JSON.stringify(e)===JSON.stringify(t)}function b(e,t){const n={};for(let r in e)t.includes(r)||(n[r]=e[r]);return n}function S(e){return JSON.parse(JSON.stringify(e))}function w(e){let t=0;return function e(n){if(null!==n&&"object"==typeof n)for(const r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t+=2*r.length,e(n[r]));else"string"==typeof n?t+=2*n.length:"number"==typeof n?t+=8:"boolean"==typeof n&&(t+=4)}(e),t}function E(e,t){return-1!==e.indexOf(t)}function A(){var e=function(){for(var e=Date.now(),t=0;e==Date.now();)t++;return e.toString(16)+t.toString(16)},t=(screen.height*screen.width).toString(16);return e()+"-"+Math.random().toString(16).replace(".","")+"-"+function(){var e,t,n=navigator.userAgent,r=[],i=0;function o(e,t){var n,i=0;for(n=0;n<t.length;n++)i|=r[n]<<8*n;return e^i}for(e=0;e<n.length;e++)t=n.charCodeAt(e),r.unshift(255&t),r.length>=4&&(i=o(i,r),r=[]);return r.length>0&&(i=o(i,r)),i.toString(16)}()+"-"+t+"-"+e()}const z={_initialised:!1,_ready:!1,_pending:[],_readyPromise:null,_regDeviceSending:!1,_regDeviceResolve:[],_regDeviceReject:[],_sending:!1,_deferSendTimer:null,_config:{...c},_defaultoptions:{},inactiveduration:30,_token:"",_frameworkID:5996,_platform:n.BROWSER,_isanonrequired:!0,_devicestatus:e.USAGE_TRACKING_WITHOUT_PII,_uuid:"",_apid:"",_mapid:"",_device_info:{},_user_info:{},_current_screen:{},_current_session:{},_properties:{},_ignoreDnt:!1,_isGlobalErrorTracking:!0,_shouldTrack:!0,_engagementTracking:!0,_heatmapTracking:!0,_remoteLoggerEnabled:!0,_remoteConfigEnabled:!0,_remoteConfigReported:!0,_feedbackEnabled:!0,_nextConfigCheck:0,_debugUntil:0,_errorTracking:!0,_quartzEnabled:!0,_trackinfo:{}};function T(e){return z._config[e]}function O(e){return!("number"!=typeof e||!isFinite(e))&&(e<v()-24*T("batch_request_timeout")*60*60*1e3||e>v()+6e4)}const P={updateDevice:()=>Promise.reject("apptics: device module not loaded"),refreshDeviceInfo:()=>{},remoteLog:()=>{},feedbackUser:()=>null,sendHeatmaps:()=>Promise.resolve(),enableHeatmap:()=>{},resetHeatmap:()=>{},resetRemoteConfig:()=>{},screenTrackedByApp:()=>{},remoteConfigStarted:()=>{},remoteConfigUserChanged:()=>{}},I={filename:"",linenumber:0,fn:""},C=/([^\s(@]+):(\d+):(\d+)\)?$/;const D=/^at\s+(?:async\s+)?(.+?)\s+\(/,N=/^([^@\s]+)@/;function R(e){var t=D.exec(e)||N.exec(e);return t&&t[1]||""}function L(e){var t=e.trim(),n=C.exec(t);if(null===n)return null;var r,i,o,a=Number(n[2]);return isFinite(a)?{filename:(r=n[1]||"",i=r.split(/[?#]/)[0]||r,o=i.split("/"),(o[o.length-1]||i).slice(0,100)),linenumber:a,fn:R(t)}:null}function x(e,t){if(!e)return I;for(var n=e.split("\n"),r=0,i=0;i<n.length;i++){var o=L(n[i]||"");if(null!==o&&!(r++<t))return o}return I}function q(e){try{return x((new Error).stack,e+1)}catch(e){return I}}const j="undefined"!=typeof console?console:null;function M(e){return function(...t){if(z._config.debug&&j)try{j[e].apply(j,t)}catch(n){!function(e,t,n){if(null!=e)if(Array.prototype.forEach&&e.forEach===Array.prototype.forEach)e.forEach(t,n);else if(e.length===+e.length){for(var r=0,i=e.length;r<i;r++)if(r in e&&t.call(n,e[r],r,e)===m)return}else for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&t.call(n,e[o],o,e)===m)return}(t,function(t){j[e](t)})}}}const F={log:M("log"),warn:M("warn"),error:M("error"),info:M("info"),dir(e){z._config.debug&&j&&j.dir(e)}};function U(...e){j&&j.warn(...e)}function B(e,...t){F.error.apply(null,t),P.remoteLog(e,t.map(function(e){return e instanceof Error?e.stack||e.name+": "+e.message:"string"==typeof e?e:function(e){try{return JSON.stringify(e)||String(e)}catch(t){return String(e)}}(e)}).join(" "),function(e){for(var t=0;t<e.length;t++){var n=e[t];if(n instanceof Error){var r=x(n.stack,0);if(r.linenumber>0)return r}}return q(2)}(t))}const H={"Apptics.init":!0,ready:!0,reset:!0,getUser:!0,getTrackingStatus:!0,sendFeedback:!0,addFeedbackLog:!0,addDiagnosticsInfo:!0,"AppticsLogger.enable":!0,"AppticsLogger.disable":!0,"AppticsLogger.isEnabled":!0,"AppticsApiTracker.configure":!0,"AppticsApiTracker.startTrackApi":!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0,"AppticsRemoteConfig.setFallbackWithOfflineValue":!0,"AppticsRemoteConfig.setCustomConditionValue":!0,enableDebug:!0,disableDebug:!0},V={"AppticsEvents.addEvent":!0,"AppticsScreenTracker.inScreen":!0,"AppticsScreenTracker.outScreen":!0,"AppticsApiTracker.endTrackApi":!0,AppticsTrackError:!0,AppticsSetUser:!0,flush:!0,AppticsLogger:!0,sendFeedback:!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0};function G(e){return 0===e.indexOf("Apptics")?e:"apptics."+e}var Z=!1;function W(e,t){const n=function(...r){if(z._initialised||!V[e]||Z||(Z=!0,U(G(e)+": the SDK has not started, so this call is ignored. Call Apptics.init() first, and check its warnings if you did.")),!z._initialised||z._ready||H[e])try{return t(...r)}catch(t){return U(G(e)+" failed:",t),void B(e,t)}else z._pending.push(function(){n(...r)})};return n}const J="apptics",K=["engagements","errors","logs","consolelogs","heatmaps"],Y=Object.freeze({settings:"apptics-device-info",engagements:"apptics-engagements-transactions",errors:"apptics-errors-transactions",logs:"apptics-log-transactions",consolelogs:"apptics-consolelog-transactions",heatmaps:"apptics-heatmap-transactions"});function $(e){return Array.isArray(e)?e:[]}function X(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function Q(e){try{const t=localStorage.getItem(e);return null===t||""===t?null:JSON.parse(t)}catch(t){return F.warn("apptics: could not read "+e+", treating it as empty"),null}}function ee(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch(t){F.warn("apptics: could not write "+e+": "+String(t))}}let te=0;function ne(){const e=1e3*v();return te=e>te?e:te+1,te}function re(e){return new Promise(function(t,n){e.onsuccess=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function ie(e){return new Promise(function(t,n){e.oncomplete=function(){t()},e.onerror=function(){n(e.error)},e.onabort=function(){n(e.error)}})}function oe(e,t,n){const r=String(t.id),i=e.get(r);i.onsuccess=function(){const o=i.result;o&&n||e.put({id:r,seq:o?o.seq:ne(),type:t.type,item:t})}}function ae(e){return e.objectStoreNames.contains("settings")&&K.every(function(t){return e.objectStoreNames.contains(t)})}function se(e=indexedDB,t=3e3){return ce(e,t).then(function(n){return ae(n)?n:(F.warn('apptics: the "'+J+'" database is missing its stores, recreating it'),n.close(),function(e){return new Promise(function(t){var n=e.deleteDatabase(J);n.onsuccess=function(){t()},n.onerror=function(){t()},n.onblocked=function(){t()}})}(e).then(function(){return ce(e,t)}).then(function(e){if(!ae(e))throw e.close(),new Error("indexedDB: stores could not be created");return e}))})}function ce(e,t){return new Promise(function(n,r){let i=!1;const o=function(e){i||(i=!0,clearTimeout(a),r(e))},a=setTimeout(function(){o(new Error("indexedDB open timed out"))},t);let s;try{s=e.open(J,3)}catch(e){return void o(e)}s.onupgradeneeded=function(){const e=s.result;e.objectStoreNames.contains("settings")||e.createObjectStore("settings"),K.forEach(function(t){e.objectStoreNames.contains(t)||e.createObjectStore(t,{keyPath:"id"}).createIndex("seq","seq")})},s.onsuccess=function(){i?s.result.close():(i=!0,clearTimeout(a),s.result.onversionchange=function(){F.warn("apptics: another tab is upgrading the database, closing this connection"),s.result.close()},n(s.result))},s.onerror=function(){o(s.error)},s.onblocked=function(){F.warn("apptics: waiting for another tab to release the database")}})}function de(e){return{kind:"indexeddb",loadSettings(){const t=e.transaction("settings","readonly").objectStore("settings");return Promise.all([re(t.getAllKeys()),re(t.getAll())]).then(function([e,t]){const n={};return e.forEach(function(e,r){n[String(e)]=t[r]}),n})},putSetting(t,n){const r=e.transaction("settings","readwrite");return r.objectStore("settings").put(n,t),ie(r)},clearSettings(){const t=e.transaction("settings","readwrite");return t.objectStore("settings").clear(),ie(t)},queueAll:t=>re(e.transaction(t,"readonly").objectStore(t).index("seq").getAll()).then(function(e){return e.map(function(e){return e.item})}),queuePut(t,n){const r=e.transaction(t,"readwrite"),i=r.objectStore(t);return n.forEach(function(e){oe(i,e,!1)}),ie(r)},queueDelete(t,n){const r=e.transaction(t,"readwrite"),i=r.objectStore(t);return n.forEach(function(e){i.delete(e)}),ie(r)},queueClear(t){const n=e.transaction(t,"readwrite");return n.objectStore(t).clear(),ie(n)},importAll(t,n){const r=e.transaction(["settings"].concat(K),"readwrite"),i=r.objectStore("settings");return Object.keys(t).forEach(function(e){const n=i.get(e);n.onsuccess=function(){void 0===n.result&&i.put(t[e],e)}}),K.forEach(function(e){const t=r.objectStore(e);n[e].forEach(function(e){oe(t,e,!0)})}),ie(r)}}}function ue(){const e=function(e){return F.warn("apptics: IndexedDB unavailable ("+String(e)+"), using localStorage"),function(){try{const e="__apptics_probe__";return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch(e){return!1}}()?{kind:"localstorage",loadSettings:()=>Promise.resolve(X(Q(Y.settings))),putSetting(e,t){const n=X(Q(Y.settings));return n[e]=t,ee(Y.settings,n),Promise.resolve()},clearSettings:()=>(ee(Y.settings,{}),Promise.resolve()),queueAll:e=>Promise.resolve($(Q(Y[e]))),queuePut(e,t){const n=$(Q(Y[e]));return t.forEach(function(e){const t=n.findIndex(function(t){return t.id===e.id});-1===t?n.push(e):n[t]=e}),ee(Y[e],n),Promise.resolve()},queueDelete(e,t){const n=$(Q(Y[e])).filter(function(e){return-1===t.indexOf(e.id)});return ee(Y[e],n),Promise.resolve()},queueClear:e=>(ee(Y[e],[]),Promise.resolve())}:null};let t;try{t="undefined"!=typeof indexedDB?indexedDB:void 0}catch(e){t=void 0}return t?se(t).then(de,e):Promise.resolve(e("not supported"))}var le=null,fe={};function pe(e,t,n){return ge().then(function(e){return e?n(e):t}).catch(function(n){return F.warn("apptics: storage "+e+" failed: "+String(n)),t})}function ge(){return le||(le=ue().then(function(e){return e?function(e){if("indexeddb"!==e.kind||!e.importAll)return Promise.resolve();var t;try{t={settings:localStorage.getItem(Y.settings),engagements:localStorage.getItem(Y.engagements),errors:localStorage.getItem(Y.errors),logs:localStorage.getItem(Y.logs),consolelogs:localStorage.getItem(Y.consolelogs),heatmaps:null}}catch(e){return Promise.resolve()}if(null===t.settings&&null===t.engagements&&null===t.errors&&null===t.logs&&null===t.consolelogs)return Promise.resolve();var n=function(e){try{return null===e?null:JSON.parse(e)}catch(e){return null}},r={engagements:$(n(t.engagements)),errors:$(n(t.errors)),logs:$(n(t.logs)),consolelogs:$(n(t.consolelogs)),heatmaps:[]};r.engagements.concat(r.errors,r.logs,r.consolelogs).forEach(function(e){e.id||(e.id=A())});var i=e.importAll.bind(e);return Promise.resolve().then(function(){return i(X(n(t.settings)),r)}).then(function(){Object.values(Y).forEach(function(e){try{localStorage.removeItem(e)}catch(e){}}),F.log("apptics: moved 1.x data from localStorage to IndexedDB")}).catch(function(e){F.warn("apptics: 1.x data migration failed, will retry next load: "+String(e))})}(e).then(function(){return e.loadSettings()}).then(function(t){return fe=Object.assign({},t,fe),e}):null}).catch(function(e){return F.warn("apptics: storage unavailable: "+String(e)),null})),le}function me(e){let t=0;const n=[];for(const r of e.slice(0,T("batch_size"))){const e=w(JSON.stringify(r));if(t+e>1048576)break;n.push(r),t+=e}return n}function ve(e){const t={name:e,all:()=>pe("read "+e,[],function(t){return t.queueAll(e)}),payload:()=>t.all().then(me),add:t=>(t.id||(t.id=A()),O(function(e){return void 0!==e.starttime?e.starttime:e.happenedat}(t))?(F.warn("apptics: dropping a "+e+" item older than "+T("batch_request_timeout")+" days"),Promise.resolve()):pe("add "+e,void 0,function(n){return n.queuePut(e,[t])})),update:t=>pe("update "+e,void 0,function(n){return n.queuePut(e,[t])}),remove(t){const n=(t||[]).map(function(e){return String(e.id)});return pe("remove "+e,void 0,function(t){return t.queueDelete(e,n)})},clear:()=>pe("clear "+e,void 0,function(t){return t.queueClear(e)})};return t}const he=ve("engagements"),_e=ve("errors"),ke=ve("logs"),ye=ve("heatmaps"),be=ve("consolelogs");function Se(e,t){fe[e]=void 0===t?void 0:S(t),pe("save "+e,void 0,function(t){return t.putSetting(e,fe[e])})}const we={all:()=>S(fe),item(e){const t=fe[e];return void 0===t?void 0:S(t)},add(e,t){Se(e,t)},clear(){fe={},pe("clear settings",void 0,function(e){return e.clearSettings()})}},Ee={_tracking_status:"tracking_status",all:()=>we.all(),opt_in_status:()=>fe[Ee._tracking_status]||e.USAGE_TRACKING_WITHOUT_PII,update_status(t){z._devicestatus=t,z._isanonrequired=Ee.opt_in_status()!=e.USAGE_TRACKING_WITH_PII&&z._isanonrequired,Se(Ee._tracking_status,t)}};function Ae(e){var t=fe.device_info;return null!=t&&""!==t&&void 0!==t[e]&&null!==t[e]&&""!==t[e]?S(t[e]):null}function ze(){return!0===z._config.debug_api&&!Te()}function Te(){return z._debugUntil>0&&v()>z._debugUntil}function Oe(){!0===z._config.debug_api&&(z._debugUntil=v()+s)}var Pe=null;function Ie(e){z._config.debug_api=e,z._debugUntil=e?v()+s:0,F.log("apptics: debug mode "+(e?"on":"off"))}function Ce(){var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{};return e.effectiveType||e.type||""}function De(){return window.navigator.onLine?0:-1}function Ne(){try{var e=navigator.getBattery;return"function"!=typeof e?Promise.resolve(null):e.call(navigator).then(function(e){var t=e&&"number"==typeof e.level?e.level:-1;return t>=0&&t<=1?Math.round(100*t):null},function(){return null})}catch(e){return Promise.resolve(null)}}function Re(){var e=window.screen&&window.screen.orientation&&window.screen.orientation.type||"";return E(e,"portrait-primary")?0:E(e,"landscape-primary")?1:E(e,"landscape-secondary")?2:E(e,"portrait-secondary")?3:-1}function Le(){var e=navigator.userAgent;return/Windows/i.test(e)?/Phone/.test(e)||/WPDesktop/.test(e)?"Windows Phone":"Windows":/iPad/.test(e)?"iPad":/iPod/.test(e)?"iPod Touch":/iPhone/.test(e)?"iPhone":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":/Android/.test(e)?"Android":/Mac/i.test(e)?"Mac":/Linux/.test(e)?"Linux":/CrOS/.test(e)?"Chrome":""}function xe(){var e=navigator.userAgent,t=navigator.vendor||"";return window.opera||E(e," OPR/")?E(e,"Mini")?"Opera Mini":"Opera":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":E(e,"IEMobile")||E(e,"WPDesktop")?"Internet Explorer Mobile":E(e,"SamsungBrowser/")?"Samsung Internet":E(e,"Edge")||E(e,"Edg/")?"Microsoft Edge":E(e,"FBIOS")?"Facebook Mobile":E(e,"Chrome")?"object"==typeof ulaa?"Ulaa":null!=window.navigator.brave&&"isBrave"==window.navigator.brave.isBrave.name?"Brave":"Chrome":E(e,"CriOS")?"Chrome iOS":E(e,"UCWEB")||E(e,"UCBrowser")?"UC Browser":E(e,"FxiOS")?"Firefox iOS":E(t,"Apple")?E(e,"Mobile")?"Mobile Safari":"Safari":E(e,"Android")?"Android Mobile":E(e,"Konqueror")?"Konqueror":E(e,"Firefox")?"Firefox":E(e,"MSIE")||E(e,"Trident/")?"Internet Explorer":E(e,"Gecko")?"Mozilla":""}function qe(){var e=xe(),t=navigator.userAgent;if("Ulaa"===e&&"object"==typeof ulaa)return ulaa.getVersion();var n={"Internet Explorer Mobile":/rv:(\d+(\.\d+)?)/,"Microsoft Edge":/Edg\/(\d+(\.\d+)?)/,Chrome:/Chrome\/(\d+(\.\d+)?)/,Brave:/Chrome\/(\d+(\.\d+)?)/,"Chrome iOS":/CriOS\/(\d+(\.\d+)?)/,"UC Browser":/(UCBrowser|UCWEB)\/(\d+(\.\d+)?)/,Safari:/Version\/(\d+(\.\d+)?)/,"Mobile Safari":/Version\/(\d+(\.\d+)?)/,Opera:/(Opera|OPR)\/(\d+(\.\d+)?)/,Firefox:/Firefox\/(\d+(\.\d+)?)/,"Firefox iOS":/FxiOS\/(\d+(\.\d+)?)/,Konqueror:/Konqueror:(\d+(\.\d+)?)/,BlackBerry:/BlackBerry (\d+(\.\d+)?)/,"Android Mobile":/android\s(\d+(\.\d+)?)/,"Internet Explorer":/(rv:|MSIE )(\d+(\.\d+)?)/,Mozilla:/rv:(\d+(\.\d+)?)/}[e];if(void 0===n)return"";var r=t.match(n);return r?parseFloat(r[r.length-2]):""}function je(){return"undefined"==typeof navigator||function(e){var t;for(e=e.toLowerCase(),t=0;t<g.length;t++)if(-1!==e.indexOf(g[t]))return!0;return!1}(navigator.userAgent||"")}function Me(){return!z._ignoreDnt&&(t=window.navigator||{},n=[!0,1,"1","yes"],!![t.doNotTrack,t.msDoNotTrack,window.doNotTrack].some(function(e){return E(n,e)})&&(F.warn("hasDoNotTrackEnabled: DoNotTrack is enabled"),Ge(e.NO_TRACKING),F.log("hasDoNotTrackEnabled: Setting tracking status to NO_TRACKING"),!0));var t,n}function Fe(){if(Me())return F.warn('opt_in_status: It seems "Do Not Track" is enabled in this browser. Please enable tracking in the browser settings to continue tracking.'),e.NO_TRACKING;var t=Ee.opt_in_status();return-1==t&&F.warn("opt_in_status: You are opted out of Apptics tracking. This will prevent the our SDK from sending no data to our server."),t}function Ue(){return Fe()>-1&&z._shouldTrack}function Be(e){return z._token?!je()&&Ue():(F.warn("apptics."+e+": You must call apptics.init() first"),!1)}function He(e){return!!Be(e)&&(!!z._engagementTracking||(F.log("apptics."+e+": engagement tracking is turned off by the server"),!1))}function Ve(e){return!!Be(e)&&(!!z._heatmapTracking||(F.log("apptics."+e+": heatmap tracking is turned off by the server"),!1))}function Ge(t){_(t)?F.warn("setTrackingStatus: trackingStatus is Empty"):Ee.opt_in_status()!=t&&(Ee.update_status(t),z._devicestatus=Ee.opt_in_status(),z._isanonrequired=Ee.opt_in_status()!=e.USAGE_TRACKING_WITH_PII&&z._isanonrequired,Ee.opt_in_status()!=e.NO_TRACKING&&(F.log("setTrackingStatus: Updating device info with new tracking status"),P.updateDevice(z._device_info).then(function(e){h(e)?(F.log("setTrackingStatus: Device info updated with new tracking status"+JSON.stringify(e.data)),F.dir(e.data)):F.log("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))}).catch(function(e){F.warn("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))})))}function Ze(){return Fe()}const We="sendstate";function Je(){var e=we.item(We);return e&&"object"==typeof e?e:{}}function Ke(e){var t=Je()[e];return t&&"object"==typeof t?{attempt:Number(t.attempt)||1,firstattempttime:Number(t.firstattempttime)||0,lst:Number(t.lst)||0}:{attempt:1,firstattempttime:0,lst:0}}function Ye(e,t){var n=Je();n[e]=t,we.add(We,n)}function $e(e){if(!l[e])return{};var t=Ke(e),n=v();(t.attempt<=1||0===t.firstattempttime)&&(t.attempt=1,t.firstattempttime=n);var r={attempt:String(Math.min(t.attempt,5)),firstattempttime:t.firstattempttime};return t.lst>0&&(r.lst=t.lst),Ye(e,{attempt:t.attempt+1,firstattempttime:t.firstattempttime,lst:t.lst}),r}function Xe(e,t,n,r){return new Promise((i,o)=>{let a=new XMLHttpRequest;a.open(t,e),r&&Object.keys(r).forEach(e=>{a.setRequestHeader(e,r[e])}),a.withCredentials=!1,a.timeout=3e4,a.onreadystatechange=function(){4===a.readyState&&(200==a.status?i(a.responseText):o(a.statusText))},a.onerror=function(){o("makeRequest: Network Error")},a.ontimeout=function(){o("makeRequest: timed out after 30000 ms")},a.send(n)})}function Qe(e){return"zak"==e?z._defaultoptions.zak:"uuid"==e?z._uuid:"apid"==e?z._apid||Ae(e):"mapid"==e?z._mapid||Ae(e):""}function et(e){var t="",n=z._device_info.appversionid,r=_(z._device_info.frameworkid)?z._frameworkID:z._device_info.frameworkid;return _(n)||(t+="&appversionid="+encodeURIComponent(String(n))),_(r)||(t+="&frameworkid="+encodeURIComponent(String(r))),""===t?t:void 0===e||""===e?"?"+t.slice(1):t}function tt(e,t){if(!u[e])return"";var n=T("device_name"),r=_(n)?ze()?function(){var e=z._device_info,t=_(e.browser)?"":String(e.browser),n=_(e.browserversion)?"":String(e.browserversion),r=_(e.osversion)?"":String(e.osversion),i=""===t?"":""===n?t:t+" "+n;return""===r?i:""===i?r:i+" on "+r}():"":String(n);return""===r?"":(""===t?"?":"&")+("devicename="+encodeURIComponent(r.slice(0,100)))}function nt(t,n){var o=z._defaultoptions.base_domain+T("endpoint")+i[t]+"/"+(f[t]?"":z._defaultoptions.zsoid+"/"+z._defaultoptions.projectID+"/")+((function(e){return ze()&&!0===u[e]}(t)?"debug/":"")+r[t])+function(t){let n="";if("addversion"==t){var r=_(z._device_info.frameworkid)?z._frameworkID:z._device_info.frameworkid;return"?version="+encodeURIComponent(z._defaultoptions.appversion)+"&platform="+encodeURIComponent(z._platform)+"&identifier="+encodeURIComponent(z._defaultoptions.identifier)+"&frameworkid="+encodeURIComponent(String(r))}if("regdevice"==t)return n="?isanonrequired="+z._isanonrequired+"&devicestatus="+z._devicestatus,_(z._device_info.deviceid)||(n+="&deviceid="+encodeURIComponent(String(z._device_info.deviceid))),n+et(n);var i="sdkconfig"!=t;if(i){if(_(z._device_info.deviceid))return P.refreshDeviceInfo(),n+et(n);n="?deviceid="+encodeURIComponent(String(z._device_info.deviceid))}if("feedback"===t){var o=P.feedbackUser();return o&&(n+="&userid="+encodeURIComponent(String(o.userid)),_(o.groupid)||(n+="&customergroupid="+encodeURIComponent(String(o.groupid)))),n+et(n)}return"reguser"!=t&&i&&Fe()==e.USAGE_TRACKING_WITH_PII&&(z._user_info.hasOwnProperty("userid")&&!_(z._user_info.userid)&&(n+="&userid="+encodeURIComponent(String(z._user_info.userid))),z._user_info.hasOwnProperty("groupid")&&!_(z._user_info.groupid)&&(n+="&customergroupid="+encodeURIComponent(String(z._user_info.groupid)))),n+=tt(t,n),n+et(n)}(t);if(!n)return o;var a=-1===o.indexOf("?")?"?":"&";return Object.keys(n).forEach(function(e){void 0!==n[e]&&null!==n[e]&&""!==n[e]&&(o+=a+e+"="+encodeURIComponent(String(n[e])),a="&")}),o}function rt(){return{apid:Qe("apid"),mapid:Qe("mapid")}}const it={PATTERN_NOT_MATCHED:!0,EXTRA_PARAM_FOUND:!0,INVALID_INPUTSTREAM:!0,INVALID_PARAM:!0};function ot(e){var t=e?e.serverResult:void 0,n=t?t.error_code:void 0;return!_(n)&&!0===it[String(n)]}function at(e,t,n){var r=JSON.parse(n);if(h(r))return function(e){l[e]&&Ye(e,{attempt:1,firstattempttime:0,lst:v()})}(e),function(e,t){var n=t.data;n&&!_(n.req_id)&&F.log(e+": req_id "+String(n.req_id)+(_(n.path)?"":", path "+String(n.path))+(_(n.producerLogsUrl)?"":", logs "+String(n.producerLogsUrl)))}(t,r),Promise.resolve(r);var i=function(e,t,n){var r=t&&!_(t.error_code)?String(t.error_code):String(t?t.result:n),i=new Error(e+": "+r);return t&&(i.serverResult=t),i}(t,r,n);return Promise.reject(i)}function st(e,t,n,r,i){return Xe(nt(e,Object.assign($e(e),{})),T("method"),t,n).then(function(t){return at(e,r,t)},function(e){return Promise.reject(r+": "+e)})}var ct=0;function dt(e,t,n,r,i){var o=function(e){if(null==e)return 0;if("string"==typeof e)return"function"==typeof TextEncoder?(new TextEncoder).encode(e).length:3*e.length;var t=e;return Number(t.size||t.byteLength||0)}(t);if("function"==typeof fetch&&ct+o>61440)return F.log(r+": "+o+" bytes is over the keepalive budget, kept for the next send"),Promise.reject(r+": too large to send while the page closes");var a=nt(e,Object.assign($e(e),{}));if("function"==typeof fetch){var s;try{s=fetch(a,{method:T("method"),headers:Object.assign({"content-type":"text/plain"},n),body:t,keepalive:!0,credentials:"omit"})}catch(e){return Promise.reject(r+": keepalive send not accepted: "+String(e))}ct+=o;var c=function(){ct=Math.max(0,ct-o)};return s.then(function(t){if(c(),!t||!0!==t.ok){var n=t?String(t.status):"";return Promise.reject(r+": "+n)}return("function"==typeof t.text?t.text():Promise.resolve("")).then(function(t){return _(t)?at(e,r,JSON.stringify({result:"success"})):at(e,r,t)})},function(e){return c(),Promise.reject(r+": "+String(e))})}return Xe(a,T("method"),t,n).then(function(t){return at(e,r,t)},function(e){return Promise.reject(r+": "+e)})}function ut(e){return je()?Promise.reject(e+": apptics is disabled for this client"):null}function lt(e){return 0==navigator.onLine?(F.warn(e+": No Network"),Promise.reject(e+": No Network")):null}function ft(){return{frameworkid:z._device_info.frameworkid||Ae("frameworkid"),aaid:z._device_info.aaid||Ae("aaid"),apid:z._device_info.apid||Ae("apid"),appversionid:z._device_info.appversionid||Ae("appversionid"),modelid:z._device_info.modelid||Ae("modelid"),appreleaseversionid:z._device_info.appreleaseversionid||Ae("appreleaseversionid"),osversionid:z._device_info.osversionid||Ae("osversionid"),timezoneid:z._device_info.timezoneid||Ae("timezoneid"),platformid:z._device_info.platformid||Ae("platformid"),devicetypeid:z._device_info.devicetypeid||Ae("devicetypeid")}}function pt(e){return _(Qe("apid"))&&_(Qe("mapid"))?(P.refreshDeviceInfo(),Promise.reject(e+": You must call apptics.init() first")):null}const gt="registerAppVersion",mt="app_version_info",vt=["apid","mapid","aaid","appversionid","appreleaseversionid","platformid","projectid","portalid"];var ht=null;function _t(){var e=we.item(mt);return e&&"object"==typeof e?e:{}}const kt=["aaid","portalid","projectid","apid","mapid","appversionid"];function yt(e){return kt.filter(function(t){return _(e[t])})}function bt(e){vt.forEach(function(t){_(e[t])||(z._device_info[t]=e[t])}),_(e.aaid)||(z._defaultoptions.aaid=e.aaid),_(e.portalid)||(z._defaultoptions.zsoid=String(e.portalid)),_(e.projectid)||(z._defaultoptions.projectID=String(e.projectid)),_(e.apid)||(z._apid=String(e.apid)),_(e.mapid)||(z._mapid=String(e.mapid))}function St(){if(0===yt(e=_t()).length&&e.appversion===z._defaultoptions.appversion&&e.identifier===z._defaultoptions.identifier&&e.serviceUrl===z._defaultoptions.serviceUrl)return bt(_t()),F.log(gt+": reusing the ids stored for "+z._defaultoptions.appversion),Promise.resolve(!0);var e;if(null!==ht)return ht;var t=_(z._device_info.frameworkid)?z._frameworkID:z._device_info.frameworkid;return 0===t&&U(gt+": this build has no registered framework id; build the package with npm pack"),_(t)||_(z._defaultoptions.identifier)||_(z._defaultoptions.zak)?(U(gt+": need zak, an identifier and a frameworkid to register this app version"),Promise.resolve(!1)):ht=st("addversion","",{zak:Qe("zak")},gt).then(function(e){if(!h(e)||!e.data)return U(gt+": the server did not return the app ids"),!1;var t=e.data,n=yt(t);if(n.length>0)return U(gt+": the answer has no "+n.join(", ")),!1;bt(t);var r={appversion:z._defaultoptions.appversion,identifier:z._defaultoptions.identifier,serviceUrl:z._defaultoptions.serviceUrl};return vt.forEach(function(e){_(t[e])||(r[e]=t[e])}),we.add(mt,r),F.log(gt+": registered "+z._defaultoptions.appversion+" as apid "+t.apid),!0}).catch(function(e){return U(gt+": could not register this app version: "+String(e&&e.message?e.message:e)),!1}).then(function(e){return ht=null,e})}const wt=["devicetype","osversion","timezone","screenheight","screenwidth","referrer","referringdomain","browser","browserversion","donottrackenabled","platformid"],Et=["screenheight","screenwidth","donottrackenabled","platformid"];function At(e){var t={};return wt.forEach(function(n){var r=e[n],i=-1!==Et.indexOf(n);t[n]=_(r)?i?0:"":r}),JSON.stringify(t)}const zt=["osversion","browser","browserversion","devicetype","screenheight","screenwidth","timezone","donottrackenabled","frameworkid"];function Tt(e){var t={};return zt.forEach(function(n){t[n]=e?e[n]:void 0}),t}function Ot(){var e,t,n=we.item("device_info");z._device_info={osversion:(t=navigator.userAgent,/Windows/i.test(t)?/Phone/.test(t)||/WPDesktop/.test(t)?"Windows Phone":"Windows":/(iPhone|iPad|iPod)/.test(t)?"iOS":/Android/.test(t)?"Android":/(BlackBerry|PlayBook|BB10)/i.test(t)?"BlackBerry":/Mac/i.test(t)?"Mac OS X":/Linux/.test(t)?"Linux":/CrOS/.test(t)?"Chrome OS":""),browser:xe(),browserversion:String(qe()),donottrackenabled:Me()?1:0,devicetype:Le(),screenheight:screen.height,screenwidth:screen.width,referrer:(e=String(window.location.href||"").split(window.location.pathname),e.length>=2?e[1].length>500?e[1].substring(0,500):e[1]:""),connectionType:Ce(),referringdomain:window.location.hostname||"",deviceid:Ae("deviceid"),anonymousid:Ae("anonymousid"),frameworkid:z._frameworkID,mapid:Ae("mapid"),aaid:Ae("aaid"),apid:Ae("apid"),appversionid:Ae("appversionid"),platformid:Ae("platformid"),devicetypeid:Ae("devicetypeid"),osversionid:Ae("osversionid"),timezoneid:Ae("timezoneid"),modelid:Ae("modelid"),appreleaseversionid:Ae("appreleaseversionid"),timezone:Intl.DateTimeFormat().resolvedOptions().timeZone},bt(_t()),we.add("device_info",z._device_info),function(e,t){var n=void 0!==t?t:we.item("device_info")||{};null==e.deviceid||null==e.frameworkid||null==e.anonymousid?(e.frameworkid=z._frameworkID,F.log("addOrUpdateDeviceID: Initiated register the device"),function(){var e="registerDeviceWithApptics",t=ut(e);if(t)return t;if(!z._token)return F.warn(e+": You must call apptics.init() first"),Promise.reject(e+": You must call apptics.init() first");var n=lt(e);if(n)return n;if(z._device_info.deviceid&&z._device_info.anonymousid)return Promise.resolve(z._device_info);return new Promise((t,n)=>{if(z._regDeviceSending)return z._regDeviceResolve.push(t),void z._regDeviceReject.push(n);z._regDeviceSending=!0,st("regdevice",At(z._device_info),{zak:Qe("zak"),uuid:Qe("uuid"),...rt()},e).then(function(e){It(e.data||{}),Dt(!0,e),t(e),qt()}).catch(function(e){Dt(!1,e),n(e)})})}().then(function(e){h(e)?(F.log("addOrUpdateDeviceID: Success register the device "+JSON.stringify(e.data)),F.dir(e.data)):F.log("addOrUpdateDeviceID: Error registering the device: "+e)}).catch(function(e){F.log("addOrUpdateDeviceID: Error registering the device: "+e)})):_(n)||function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(!t.hasOwnProperty(n))return!1;for(let n in e)if(!y(e[n],t[n]))return!1;return!0}(Tt(e),Tt(n))||(F.log("addOrUpdateDeviceID: Device info changed, so updating new changes"),F.dir(Tt(e)),Nt(e).catch(function(e){F.log("addOrUpdateDeviceID: Error updating the device: "+e)}))}(z._device_info,n)}const Pt=["deviceid","anonymousid","aaid","apid","mapid","appversionid","osversionid","timezoneid","platformid","devicetypeid","modelid"];function It(e){Pt.forEach(function(t){_(e[t])||(z._device_info[t]=e[t])}),_(e.apid)||(z._apid=e.apid),_(e.mapid)||(z._mapid=e.mapid),we.add("device_info",z._device_info)}function Ct(){return z._regDeviceSending?new Promise(function(e){z._regDeviceResolve.push(function(){e()}),z._regDeviceReject.push(function(){e()})}):Promise.resolve()}function Dt(e,t){var n=e?z._regDeviceResolve:z._regDeviceReject;z._regDeviceSending=!1,z._regDeviceResolve=[],z._regDeviceReject=[],n.forEach(function(e){e(t)})}function Nt(e){var t="updateDeviceWithApptics",n=ut(t)||lt(t);return n||st("regdevice",At(e),{zak:Qe("zak"),uuid:Qe("uuid"),...rt()},t).then(function(e){return It(e.data||{}),e})}function Rt(){var e="getUpdatesFromServer",t=lt(e)||pt(e);return t||st("sdkconfig","",rt(),e).then(function(e){var t=e.data||{};return xt(t),we.add("trackinfo",z._trackinfo),F.log("getUpdatesFromServer: "+JSON.stringify(z._trackinfo)),t})}function Lt(e,t){var n=e[t];return!n||"object"!=typeof n||!1!==n.enabled}function xt(e){var t=e.tracking_status&&"object"==typeof e.tracking_status?e.tracking_status:{},n=Object.keys(t).length>0;if(e.hasOwnProperty("tracking_enabled"))z._shouldTrack=!1!==e.tracking_enabled;else{var r=!(e.hasOwnProperty("versionarchivestatus")&&!_(e.versionarchivestatus))||e.versionarchivestatus,i=!(e.hasOwnProperty("customergrouptracking")&&!_(e.customergrouptracking))||e.customergrouptracking;z._shouldTrack=r||!i}n?(z._engagementTracking=Lt(t,a.SESSION),z._errorTracking=Lt(t,a.CRASH),z._heatmapTracking=Lt(t,a.HEATMAP),z._remoteLoggerEnabled=Lt(t,a.REMOTE_LOGGER),z._feedbackEnabled=Lt(t,a.FEEDBACK),z._remoteConfigEnabled=Lt(t,a.REMOTE_CONFIG)):(z._engagementTracking=!1!==e.engagementtracking,z._errorTracking=!1!==e.errortracking,z._heatmapTracking=!1!==e.heatmaptracking,z._remoteLoggerEnabled=!1!==e.remoteloggerenabled,z._feedbackEnabled=!1!==e.feedbackenabled);var o=e.quartz&&"object"==typeof e.quartz?e.quartz:{};z._quartzEnabled=o.hasOwnProperty("quartz_enabled")?!1!==o.quartz_enabled:!1!==e.quartzenabled,"number"==typeof e.next_check_after&&e.next_check_after>0&&(z._nextConfigCheck=e.next_check_after),z._trackinfo={engagementtracking:z._engagementTracking,errortracking:z._errorTracking,heatmaptracking:z._heatmapTracking,remoteloggerenabled:z._remoteLoggerEnabled,feedbackenabled:z._feedbackEnabled,quartzenabled:z._quartzEnabled,shouldtrack:z._shouldTrack,next_check_after:z._nextConfigCheck}}function qt(){_(Qe("apid"))&&_(Qe("mapid"))||Rt().catch(function(e){F.log(e)})}function jt(e,t){return _(e)?Promise.resolve():(z._current_screen&&z._current_screen.id===e&&!z._current_screen.endtime&&(z._current_screen=Object.assign({},z._current_screen,{endtime:t})),he.all().then(function(r){var i=r.filter(function(t){return t.type==n.SCREEN&&t.id===e&&0===t.endtime})[0];if(i)return he.update(Object.assign({},i,{endtime:Math.max(t,i.starttime)}))}))}function Mt(){var e=z._current_screen;return e&&e.id?jt(e.id,v()):Promise.resolve()}function Ft(e,t){return he.all().then(function(r){return r.filter(function(t){return t.type==n.SCREEN&&0===t.endtime&&t.sessionstarttime===e.starttime}).reduce(function(e,n){return e.then(function(){return he.update(Object.assign({},n,{endtime:Math.max(t,n.starttime)}))})},Promise.resolve())})}function Ut(){return!1===T("track_session")}function Bt(e){if(!He("trackSession"))return Promise.resolve();if(e&&"object"!=typeof e)return B(o.SESSION,"apptics.trackSession: sessionData param must be an object"),Promise.resolve();var t=he.add(e);return F.log("apptics.trackSession("+JSON.stringify(e||{})+")"),F.dir(e),t}function Ht(){var e=Gt();return he.all().then(function(t){if(e){var r=t.filter(function(t){return t.type==n.SESSION&&t.id===e})[0];if(r)return r}return function(e,t){return t.filter(function(t){return t.type==e&&0===t.endtime}).sort(function(e,t){return t.starttime-e.starttime})[0]}(n.SESSION,t)})}P.updateDevice=Nt,P.refreshDeviceInfo=Ot;const Vt="apptics-session";function Gt(){try{return sessionStorage.getItem(Vt)||""}catch(e){return""}}const Zt="hadsession";var Wt=null,Jt=null;function Kt(){null!==Jt&&(clearTimeout(Jt),Jt=null)}function Yt(){if(!Wt)return Promise.resolve();var e=Wt;return Wt=null,Kt(),e.firstsession&&we.add(Zt,!0),Bt(e)}function $t(e){z._current_session={id:A(),type:n.SESSION,starttime:e,endtime:0,edge:Ce(),orientation:Re(),firstsession:_(we.item(Zt)),networkstatus:De(),lastactivetime:e};var t,r="number"==typeof(t=navigator.deviceMemory)&&t>0?t+" GB":"";_(r)||(z._current_session.ram=r),function(e){try{sessionStorage.setItem(Vt,e)}catch(e){}}(z._current_session.id);var i=Number(T("min_session_duration"));return i>0?(Wt=z._current_session,Kt(),Jt=setTimeout(function(){Jt=null,Yt()},i),Promise.resolve()):function(e){e.firstsession&&we.add(Zt,!0);return Bt(e)}(z._current_session)}function Xt(){var e=v();return Wt&&(F.log("session: dropped, shorter than the minimum with nothing tracked in it"),Wt=null,Kt(),1)?Promise.resolve():Ht().then(function(t){if(t&&0===t.endtime){var n=Object.assign({},t,{endtime:e,lastactivetime:e});return z._current_session=n,F.log("endCurrentSession: closing the session opened at "+n.starttime),he.update(n).then(function(){return Ft(n,e)})}})}function Qt(){if(!z._token)return B(o.SESSION,"checkAndUpdateSession: You must call apptics.init() first"),Promise.resolve();if(je())return Promise.resolve();if(Ut())return Promise.resolve();var e=v();return function(){var e=v()-60*z.inactiveduration*1e3,t=Gt();return he.all().then(function(r){var i=r.filter(function(r){return r.type==n.SESSION&&0===r.endtime&&r.id!==t&&r.lastactivetime<e});return i.length?(F.log("closeAbandonedSessions: closing "+i.length+" session(s) left open by a closed tab"),i.reduce(function(e,t){return e.then(function(){return he.update(Object.assign({},t,{endtime:t.lastactivetime}))}).then(function(){return Ft(t,t.lastactivetime)})},Promise.resolve())):Promise.resolve()})}().then(Ht).then(function(t){if(!t||0!==t.endtime)return $t(e);if(z._current_session=t,e-t.lastactivetime>1e3*z.inactiveduration*60){F.log("checkAndUpdateSession: User is inactive for the past "+z.inactiveduration+" minutes so starting a new session");var n=Object.assign({},t,{endtime:t.lastactivetime});return F.log("checkAndUpdateSession: ("+JSON.stringify(n)+")"),F.dir(n),he.update(n).then(function(){return Ft(n,n.endtime)}).then(function(){return $t(e)})}return F.log("checkAndUpdateSession: User is back before "+z.inactiveduration+" minutes so updating the lastactivitytime - "+e),en()})}function en(){if(Ut())return Promise.resolve();var e=v();return Wt?(Wt.lastactivetime=e,z._current_session=Wt,Promise.resolve()):Ht().then(function(t){if(t){F.log("updateLastActiveTimeOfSession: Updating the lastactivitytime - "+e);var n=Object.assign({},t,{lastactivetime:e});return z._current_session=n,he.update(n)}})}const tn=/^ap_/i;function nn(e){if(!e||""===e)return F.warn("validateEventOrGroup: Invalid event or group name"),!1;return tn.test(e)?(F.warn('validateEventOrGroup: "'+e+'" starts with ap_, which is reserved for defined events'),!1):/^[a-zA-Z][a-zA-Z0-9_]{0,99}$/.test(e)}const rn=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/;function on(e){if(_(e)||k(e))return{};var t=e,n={},r={},i=[],o=[],a=[];function s(e){-1===i.indexOf(e)&&i.push(e)}return Object.keys(t).forEach(function(e){if(!rn.test(e)||tn.test(e))return F.warn("validateJSON: dropped the property '"+e+"': a key is a letter, then up to 49 letters, digits or _, and not ap_"),o.push(e.substring(0,50)),void s(103);var i=function(e){if("number"==typeof e&&isFinite(e))return{value:e,type:"Number"};if("boolean"==typeof e)return{value:e?1:0,type:"Boolean"};if("string"==typeof e)return{value:e,type:"String"};var t;try{t=void 0===e?"undefined":JSON.stringify(e)}catch(n){t=String(e)}return{value:void 0===t?String(e):t,type:"String"}}(t[e]);if(String(i.value).length>250)return F.warn("validateJSON: dropped the property '"+e+"': its value is longer than 250 characters"),a.push(e),void s(104);if(Object.keys(n).length>=24)return F.warn("validateJSON: dropped the property '"+e+"': at most 24 properties"),void s(102);var c=Object.assign({},n);if(c[e]=i.value,JSON.stringify(c).length>7666)return F.warn("validateJSON: dropped the property '"+e+"': properties are at most 7666 characters in all"),void s(101);n[e]=i.value,r[e]=i.type}),Object.keys(n).length>0?{data:n,datatype:r,isvalid:!0}:0===i.length?{}:{isvalid:!1,message:{code:i,keys:o,valuekeys:a}}}function an(e){const t={},n={},r=[],i={101:[],102:[],103:[],104:[]},o=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/,a=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;let s=0;const c=["first_name","last_name","company_name","contact_number","country","region","city","geo_location","gender","plan_type","timezone","language"],d=["engagement_score","date_of_birth"];for(const[r,u]of Object.entries(e))if(s++,"string"!=typeof r||r.length>50||!o.test(r))i[103].push(r);else if(c.includes(r)){if("string"!=typeof u||u.length>255){i[103].push(r);continue}t[r]=u,n[r]="String"}else if("email_address"!==r)if(d.includes(r)){if("number"!=typeof u||!Number.isFinite(u)){i[103].push(r);continue}t[r]=u,n[r]="Number"}else if("boolean"==typeof u)t[r]=u,n[r]="Boolean";else if("string"==typeof u){if(u.length>255){i[103].push(r);continue}t[r]=u,n[r]="String"}else{if("number"!=typeof u){i[104].push(r);continue}if(!Number.isFinite(u)){i[104].push(r);continue}t[r]=u,n[r]="Number"}else{if("string"!=typeof u||u.length>255||!a.test(u)){i[103].push(r);continue}t[r]=u,n[r]="String"}s>45&&(i[102]=Object.keys(e));JSON.stringify(t).length+JSON.stringify(n).length>1e4&&(i[101]=Object.keys(e));for(const e of[101,102,103,104])i[e].length>0&&r.push({code:e,keys:i[e]});return{data:t,datatype:n,message:r}}function sn(e){if(!e||""===e)return F.warn("validateScreenName: Invalid screenName"),!1;return/^[\w\s.\-_&/:]{0,99}$/.test(e)}function cn(e,t){var n=[];return e.forEach(function(e){if("string"==typeof e){var r=e.trim();""!==r&&n.push(t?r.toLowerCase():r)}}),n}function dn(e){return"."===e.charAt(0)?e:"."+e}class un{constructor(){this.rules={ignoreDomains:[],allowOnlyDomains:[],allowOnlyTLDs:[],ignoreTLDs:[],ignoreDomainPrefixes:[],ignoreDomainSuffixes:[],groupDomains:[],ignoreEndpoints:[],patterns:[],preserveSegments:[],autoDetection:!0}}ignoreDomains(...e){return this.rules.ignoreDomains.push(...cn(e,!0)),this}allowOnlyDomains(...e){return this.rules.allowOnlyDomains.push(...cn(e,!0)),this}allowOnlyTLDs(...e){return this.rules.allowOnlyTLDs.push(...cn(e,!0).map(dn)),this}ignoreTLDs(...e){return this.rules.ignoreTLDs.push(...cn(e,!0).map(dn)),this}ignoreDomainPrefixes(...e){return this.rules.ignoreDomainPrefixes.push(...cn(e,!0)),this}ignoreDomainSuffixes(...e){return this.rules.ignoreDomainSuffixes.push(...cn(e,!0)),this}groupDomains(...e){return this.rules.groupDomains.push(...cn(e,!0)),this}ignoreEndpoint(...e){return this.rules.ignoreEndpoints.push(...cn(e,!1)),this}addPattern(...e){return this.rules.patterns.push(...cn(e,!1)),this}preserveSegments(...e){return this.rules.preserveSegments.push(...cn(e,!1)),this}autoDetection(e){return this.rules.autoDetection=!1!==e,this}build(){var e={ignoreDomains:[],allowOnlyDomains:[],allowOnlyTLDs:[],ignoreTLDs:[],ignoreDomainPrefixes:[],ignoreDomainSuffixes:[],groupDomains:[],ignoreEndpoints:[],patterns:[],preserveSegments:[],autoDetection:!0};return Object.keys(e).forEach(t=>{var n=this.rules[t];e[t]=Array.isArray(n)?n.slice():n}),e}}var ln={ignoreDomains:[],allowOnlyDomains:[],allowOnlyTLDs:[],ignoreTLDs:[],ignoreDomainPrefixes:[],ignoreDomainSuffixes:[],groupDomains:[],ignoreEndpoints:[],patterns:[],preserveSegments:[],autoDetection:!0};function fn(e,t){return t.some(function(t){return e.length>=t.length&&e.slice(e.length-t.length)===t})}function pn(e){var t=String(e||"").toLowerCase();return!(-1!==ln.ignoreDomains.indexOf(t)||fn(t,ln.ignoreTLDs)||fn(t,ln.ignoreDomainSuffixes)||ln.ignoreDomainPrefixes.some(function(e){return 0===t.indexOf(e)}))&&(!(ln.allowOnlyDomains.length>0&&-1===ln.allowOnlyDomains.indexOf(t))&&!(ln.allowOnlyTLDs.length>0&&!fn(t,ln.allowOnlyTLDs)))}function gn(e){var t=e.split("*").map(function(e){return e.replace(/[.+?^${}()|[\]\\]/g,"\\$&")}).join("[a-z0-9.-]+");return new RegExp("^"+t+"$")}function mn(e){var t=String(e||"").split(/[?#]/)[0];return""===t?"/":t}function vn(e){return(e.length>1?e.replace(/\/+$/,""):e).split("/").slice(1)}const hn=/^(\*|\{[^/{}]*\})$/;function _n(e,t){for(var n=vn(e),r=vn(t),i=0;i<n.length;i++){var o=n[i];if("**"===o&&i===n.length-1)return!0;if(i>=r.length)return!1;if(hn.test(o)){if(""===r[i])return!1}else if(o!==r[i])return!1}return n.length===r.length}function kn(e){var t=mn(e);return ln.ignoreEndpoints.some(function(e){return _n(e,t)})}const yn=/^\d+$/,bn=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Sn=/^eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/;const wn={AP_APP_LIFE_CYCLE:["AP_APP_INSTALL","AP_APP_UNINSTALL","AP_APP_UPDATE","AP_APP_CRACKED","AP_APP_OPEN","AP_APP_CLEAR_DATA","AP_APP_FOREGROUND","AP_APP_BACKGROUND","AP_APP_OUT_OF_MEMORY","AP_APP_FIRST_OPEN","AP_APP_LAUNCHING","AP_APP_RESIGN_ACTIVE","AP_APP_WILL_CONNECT"],AP_USER_LIFE_CYCLE:["AP_USER_SIGNUP","AP_USER_LOGIN","AP_USER_LOGOUT"],AP_APPLICATION:["AP_DEEP_LINK_OPEN","AP_DEEP_LINK_UPDATE","AP_DEEP_LINK_FIRST_OPEN","AP_IN_APP_PURCHASE","AP_NOTIFICATION_RECEIVE","AP_NOTIFICATION_OPEN","AP_NOTIFICATION_DISMISS","AP_NOTIFICATION_FOREGROUND","AP_SEARCH","AP_BATTERY_LOW","AP_BATTERY_FULL","AP_LOW_POWER_MODE_ON","AP_LOW_POWER_MODE_OFF"],AP_OTHERS:["AP_NETWORK_REACHABILITY_CHANGE","AP_NETWORK_BANDWIDTH_CHANGE","AP_SWITCH_THEME_LIGHT","AP_SWITCH_THEME_DARK","AP_SWITCH_THEME_CUSTOM","AP_SWITCH_ORIENTATION_LANDSCAPE","AP_SWITCH_ORIENTATION_PORTRAIT"],AP_OS:["AP_OS_UPDATE","AP_OS_UNSUPPORTED"]};const En=(An={},Object.keys(wn).forEach(function(e){wn[e].forEach(function(t){An[t]=Object.freeze({event:t,group:e})})}),Object.freeze(An));var An;const zn=/[^\w\s.\-&/:]/g;var Tn=!1,On="",Pn=null,In=300,Cn="",Dn=null,Nn=!1,Rn=0,Ln=null,xn=null,qn=null,jn=null;function Mn(){try{return function(e){var t=e;try{t=decodeURIComponent(e)}catch(e){}return t.replace(zn,"_").trim().slice(0,99)}(function(e){var t=e.pathname,n=e.hash;if(/^#!?\//.test(n)){var r=n.replace(/^#!?/,"").split("?")[0];t=t.replace(/\/+$/,"")+r}return t}(new URL(window.location.href)))}catch(e){return""}}function Fn(){if(Pn=null,Tn){var e=Mn();""!==e&&e!==On&&(On=e,Nn||(z._current_screen=Object.assign({},z._current_screen,{screen:e}),Cn=e,Rn=v(),Dn=setTimeout(Un,In)))}}function Un(){Dn=null;var e=Cn;if(Cn="",Tn&&!Nn&&""!==e)try{Zn(e,void 0,void 0,Rn||void 0)}catch(e){F.log("automatic screen tracking: "+String(e))}}function Bn(){null!==Dn&&(clearTimeout(Dn),Dn=null),Cn=""}function Hn(){null===Pn&&(Nn=!1,Bn(),Pn=setTimeout(Fn,0))}function Vn(e,t){var n="boolean"!=typeof e||e;if(n&&(In=300),n!==Tn){if(n)return On="",r=history.pushState,i=history.replaceState,qn=r,jn=i,Ln=function(){var e=r.apply(this,arguments);return Hn(),e},xn=function(){var e=i.apply(this,arguments);return Hn(),e},history.pushState=Ln,history.replaceState=xn,window.addEventListener("popstate",Hn),window.addEventListener("hashchange",Hn),Tn=!0,F.log("automatic screen tracking: on"),void(null===Pn&&(Pn=setTimeout(Fn,0)));var r,i;Ln&&history.pushState===Ln&&qn&&(history.pushState=qn),xn&&history.replaceState===xn&&jn&&(history.replaceState=jn),Ln=xn=qn=jn=null,window.removeEventListener("popstate",Hn),window.removeEventListener("hashchange",Hn),null!==Pn&&(clearTimeout(Pn),Pn=null),Bn(),Tn=!1,On="",Nn=!1,F.log("automatic screen tracking: off")}}function Gn(e,t,r){if(He("trackEvent")){var i=function(e){if(e&&"object"==typeof e){var t=e.event;return"string"==typeof t&&En[t]===e?e:void 0}}(e);if(i)r=t&&"object"==typeof t?t:r,t=i.group,e=i.event;else{if("string"!=typeof e||!nn(e))return void B(o.EVENT,"AppticsEvents.addEvent: Invalid eventName: "+String(e));if(null==t||""===t)t=c.default_group_name;else if("string"!=typeof t||!nn(t))return void B(o.EVENT,'AppticsEvents.addEvent: Invalid groupName for "'+e+'": '+String(t))}var a=on(r=r||{}),s=v(),d={id:A(),type:n.EVENT,group:t,event:e,starttime:s,endtime:s,edge:z._device_info.connectionType||Ce(),networkstatus:De(),screen:z._current_screen.screen||"",sessionstarttime:z._current_session.starttime||s,customproperties:a};Yt(),Oe(),he.add(d),F.log("AppticsEvents.addEvent('"+e+"','"+t+"',"+JSON.stringify(a||{})+")"),F.dir(d)}}function Zn(e,t,r,i,a){if(He("inScreen"))if(sn(e)){var s=on(t=t||{}),c="number"==typeof i?i:v(),d={id:r||A(),type:n.SCREEN,screen:e,starttime:c,endtime:0,edge:z._device_info.connectionType||Ce(),networkstatus:De(),orientation:Re(),sessionstarttime:z._current_session.starttime||c,customproperties:s},u=z._current_screen&&z._current_screen.id;u&&u!==d.id&&jt(u,c),Yt(),Oe(),he.add(d),z._current_screen=a?Object.assign({},d,{implicit:!0}):d,F.log("AppticsScreenTracker.inScreen('"+e+"',"+JSON.stringify(s||{})+")"),F.dir(d)}else B(o.SCREEN,"AppticsScreenTracker.inScreen: Invalid screenName: "+String(e))}function Wn(){var e=z._current_screen;if(e&&!_(e.screen)&&!e.implicit)return String(e.screen);var t=Mn()||"/";return e&&e.id&&e.screen===t&&!e.endtime||Zn(t,void 0,void 0,void 0,!0),t}function Jn(){var e=z._current_screen;e&&e.id&&e.endtime&&!_(e.screen)&&Zn(String(e.screen))}P.screenTrackedByApp=function(){Nn=!0,Bn()};const Kn=/^([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Yn=/[^a-zA-Z0-9\-._*\/]+/g;function $n(e){if(He("trackApi")){var t,r=(e=e||{}).url||e.path||"",i=(e.method||"GET").toString(),a="number"==typeof e.responsecode?e.responsecode:"number"==typeof e.status?e.status:0,s=e.responsemessage||e.statusText||e.error||"-",c=v(),d="number"==typeof e.starttime?e.starttime:c;t="number"==typeof e.endtime?e.endtime:"number"==typeof e.duration?d+e.duration:c;var u=e.scheme||"",l=e.hostname||"",f="number"==typeof e.port?e.port:0,p=e.path||"";if(!_(r))try{var g=new URL(r,window.location.origin);_(u)&&(u=g.protocol.replace(":","")),_(l)&&(l=g.hostname),f||(f=g.port?parseInt(g.port,10):"https:"===g.protocol?443:80),_(p)&&(p=g.pathname)}catch(e){_(p)&&(p=r)}if(u="https"===u||"http"===u?u:"https",Kn.test(l))if(pn(l)&&!kn(p)){p=function(e){if(_(e))return"/";var t=e.replace(Yn,"*");return"/"===t.charAt(0)?t:"/"+t}(function(e){for(var t=mn(e),n=0;n<ln.patterns.length;n++){var r=ln.patterns[n];if(_n(r,t))return r.replace(/\{[^/{}]*\}/g,"*")}return ln.autoDetection?t.split("/").map(function(e){return""===e||-1!==ln.preserveSegments.indexOf(e)?e:yn.test(e)||bn.test(e)||Sn.test(e)?"*":e}).join("/"):t}(p)),l=function(e){for(var t=String(e||"").toLowerCase(),n=0;n<ln.groupDomains.length;n++){var r=ln.groupDomains[n];if(-1!==r.indexOf("*")&&gn(r).test(t))return r}return e}(l);var m=z._current_session.starttime||d,h={id:A(),type:n.API,scheme:u,port:f,hostname:l,path:p,method:i,responsecode:a,responsemessage:s,starttime:d,endtime:t,sessionstarttime:m,networkstatus:De(),edge:z._device_info.connectionType||Ce()};Yt(),Oe(),he.add(h),F.log("AppticsApiTracker('"+i+" "+u+"://"+l+p+"')"),F.dir(h)}else F.log("AppticsApiTracker: "+l+function(e){return String(e||"").split(/[?#]/)[0]}(p)+" is left out by configureApiTracking");else B(o.API,"AppticsApiTracker: hostname not accepted by the server: "+String(l))}}var Xn={},Qn=[];var er=!1,tr=null,nr=null,rr=null;function ir(e){if(_(e))return!1;var t;try{t=new URL(e,window.location.href)}catch(e){return!1}return("https:"===t.protocol||"http:"===t.protocol)&&(!function(e,t){for(var n=[z._defaultoptions.base_domain,z._defaultoptions.serviceUrl],r=0;r<n.length;r++)if(!_(n[r])&&0===e.indexOf(n[r]))return!0;var i=T("endpoint");return!_(i)&&0===t.indexOf(i)}(t.href,t.pathname)&&(pn(t.hostname)&&!kn(t.pathname)))}function or(e,t,n,r,i){try{$n({url:t,method:e,responsecode:r,responsemessage:i,starttime:n,endtime:v()})}catch(e){F.log("auto api tracking: "+String(e))}}function ar(){"function"==typeof fetch&&(rr=fetch,window.fetch=function(e,t){var n,r,i;try{n=function(e){return"string"==typeof e?e:"undefined"!=typeof Request&&e instanceof Request?e.url:String(e)}(e),r=function(e,t){return t&&t.method?t.method:"undefined"!=typeof Request&&e instanceof Request?e.method:"GET"}(e,t),i=v()}catch(n){return rr(e,t)}return ir(n)?rr(e,t).then(function(e){return or(r,n,i,e.status,e.statusText||"-"),e},function(e){throw or(r,n,i,0,String(e&&e.message?e.message:e)||"Network Error"),e}):rr(e,t)})}function sr(e){var t="boolean"!=typeof e||e;if(t!==er){if(t)return"function"==typeof XMLHttpRequest&&(tr=XMLHttpRequest.prototype.open,nr=XMLHttpRequest.prototype.send,XMLHttpRequest.prototype.open=function(e,t){try{var n=String(t);ir(n)?this._ap_api={method:String(e||"GET"),url:n,starttime:0}:this._ap_api=void 0}catch(e){this._ap_api=void 0}return tr.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){const e=this._ap_api;return e&&(e.starttime=v(),this.addEventListener("loadend",function(){var t=0===this.status?"Network Error":this.statusText||"-";or(e.method,e.url,e.starttime,this.status,t)})),nr.apply(this,arguments)}),ar(),er=!0,void F.log("automatic api tracking: on");tr&&(XMLHttpRequest.prototype.open=tr),nr&&(XMLHttpRequest.prototype.send=nr),rr&&(window.fetch=rr),tr=nr=rr=null,er=!1,F.log("automatic api tracking: off")}}function cr(e,t){var r;if(Be(r="trackError")&&(z._errorTracking||(F.log("apptics."+r+": error tracking is turned off by the server"),0)))if(_(e))F.warn("AppticsTrackError: Invalid error");else{var i=on(t),o=function(e){var t=e.reason?.stack||e.error?.stack||e.stack||"";if(!_(t))return t;var n=e.filename||e.fileName||"";if(_(n))return"";var r=void 0!==e.lineno?e.lineno:e.lineNumber,i=void 0!==e.colno?e.colno:e.columnNumber;return"at "+n+(_(r)?"":":"+r)+(_(i)?"":":"+i)}(e),a=function(e){let t="";if(_(e))return t;const n=e.split("\n");if(n.length<2)return t;const r=/at (\S+) \(/,i=/^(\w+)@/;for(let e of n){const n=e.match(r),o=e.match(i);if(n&&n[1]){const r=/\((.*)\)/.exec(e),i=r?r[1]:"Unknown URL";t=n[1],i.split("/").pop();break}if(o&&o[1]){t=o[1],e.split("@")[1].split("/").pop();break}}return t}(o)||"",s=e.type||"",c=e.reason||e.error||e.message||"",d=(_(String(c))?_(s)?"Unknown error":String(s):String(c))+(_(a)?"":" at "+a),u=v(),l={id:A(),type:n.ERROR,edge:z._device_info.connectionType||Ce(),networkstatus:De(),happenedat:u,issuename:d,message:_(o)?_(String(c))?"no stack available":String(c):o,screenname:z._current_screen.screen||window.location.pathname,sessionstarttime:z._current_session.starttime||u,customproperties:i};Yt(),Oe(),_e.add(l),F.log("AppticsTrackError('"+s+"','"+d+"',"+JSON.stringify(i||{})+")"),F.dir(l)}}function dr(e){z._deferSendTimer&&clearTimeout(z._deferSendTimer),z._deferSendTimer=setTimeout(e,500)}function ur(){z._deferSendTimer&&(clearTimeout(z._deferSendTimer),z._deferSendTimer=null)}function lr(e,t){var n="undefined"!=typeof navigator?navigator.locks:void 0;return n&&"function"==typeof n.request?n.request("apptics-send-"+e,{ifAvailable:!0},function(e){return e?t():void 0}).then(function(){}):t()}function fr(e,t,n){return e.payload().then(function(r){var i=[],o=[];return r.forEach(function(e){t(e)&&(O(n(e))?o:i).push(e)}),o.length?e.remove(o).then(function(){return i}):i})}function pr(e,t,n,r){var i=ut(t);if(i)return i;if(!Ue())return Promise.reject(t+": tracking is off");if(k(n))return Promise.reject(t+": nothing to send");var o=pt(t);if(o)return o;if(n.hasOwnProperty("meta")||(n.meta=ft()),function(e){return Ke(e).attempt>5}(e))return U("apptics: dropping a "+t+" batch after 5 attempts"),function(e){l[e]&&Ye(e,{attempt:1,firstattempttime:0,lst:Ke(e).lst})}(e),Promise.resolve({result:"success"});F.log(t+": Payload size : "+w(n)/1024);var a=JSON.stringify(n);return r?dt(e,a,rt(),t):st(e,a,rt(),t)}function gr(e,t,n){if(!t)return e.then(function(){});e.catch(function(e){F.log(n+": not confirmed before the page closed, kept for the next send: "+String(e))})}function mr(e){return!je()&&Ue()&&z._engagementTracking?0==navigator.onLine?(F.warn("sendEngagementData: No Network"),Promise.resolve()):z._sending?(dr(mr),Promise.resolve()):(z._sending=!0,ur(),lr("engagements",function(){return fr(he,function(e){return 0!=e.endtime},function(e){return e.starttime}).then(function(t){if(0==t.length)return;let r=[],i=[],o=[],a=[];var s={},c=[];return S(t).forEach(function(e){const t={...e};if(e.type==n.EVENT)o.push(e);else if(e.type==n.SCREEN)i.push(e);else if(e.type==n.SESSION)r.push(e);else{if(e.type!=n.API)return;a.push(e)}c.push(t),delete e.id,delete e.type}),o.length>0&&(s.events=o),i.length>0&&(s.screens=i),r.length>0&&(s.sessions=r),a.length>0&&(s.apis=a),k(s)?void 0:gr(function(e,t){return pr("engagement","requestToSendEngagements",e,t)}(s,e).then(function(){return he.remove(c)},function(e){return ot(e)?(U("apptics: the server refused these engagement items, so they were dropped: "+String(e&&e.message)),he.remove(c)):Promise.reject(e)}),e,"sendEngagementData")})}).catch(function(e){B(o.API,"sendEngagementData: "+e)}).then(function(){z._sending=!1})):Promise.resolve()}function vr(e){return!je()&&Ue()&&z._errorTracking?0==navigator.onLine?(F.warn("sendErrorData: No Network"),Promise.resolve()):z._sending?(dr(vr),Promise.resolve()):(z._sending=!0,ur(),lr("errors",function(){return fr(_e,function(e){return 0!=e.happenedat},function(e){return e.happenedat}).then(function(t){if(0==t.length)return;let n=[];var r=[];return S(t).forEach(function(e){r.push({...e}),e.hasOwnProperty("screenname")||(e.screenname=""),delete e.id,delete e.type,n.push(e)}),gr(function(e,t){return pr("error","requestToSendErrors",e,t)}({exceptiondetails:n},e).then(function(){return _e.remove(r)},function(e){return ot(e)?(U("apptics: the server refused these errors, so they were dropped: "+String(e&&e.message)),_e.remove(r)):Promise.reject(e)}),e,"sendErrorData")})}).catch(function(e){F.log("sendErrorData:"+e)}).then(function(){z._sending=!1})):Promise.resolve()}function hr(e){return Be("flush")?(z._sending=!1,mr(e).then(function(){return vr(e)}).then(function(){return P.sendHeatmaps(e)})):Promise.resolve()}var _r=null,kr=null;function yr(){null===_r&&(_r=setInterval(function(){Te()&&(F.log("apptics: debug mode has been idle for an hour, switching it off"),Ie(!1)),F.log("scheduleToSendDataToServer: Scheduling to send engagement data to the server after sometime"),mr().then(function(){return vr()}).then(function(){return P.sendHeatmaps()})},T("batch_flush_interval"))),null===kr&&(kr=setInterval(function(){z._nextConfigCheck>0&&v()<z._nextConfigCheck||(F.log("scheduleToGetUpdatesFromServer: asking the server for its config"),Rt().catch(function(e){F.log(e)}))},T("getupdates_interval")))}let br=!1;function Sr(e){br=e}function wr(){return!(!z._token||je())&&(!!z._remoteLoggerEnabled&&Ue())}function Er(){return(T("remote_log")||br)&&wr()}const Ar="remoteLog";let zr=!1,Tr=!1;function Or(e){var t={sessionstarttime:z._current_session.starttime||e.happenedat||v(),logtime:e.happenedat||v(),level:Number(e.level)||3,logmessage:String(e.exceptionlog).slice(0,1e4),function:String(e.module||"SDK").slice(0,100),linenumber:Number(e.linenumber)||0};return _(e.filename)||(t.filename=String(e.filename).slice(0,100)),t}function Pr(e){return JSON.stringify({logs:e.map(Or),meta:ft()})}function Ir(){zr||(zr=!0,setTimeout(function(){zr=!1,Cr()},1e3))}function Cr(){return Tr||!Er()||!1===navigator.onLine?Promise.resolve():(Tr=!0,be.all().then(function(e){var t=function(e){for(var t=0,n=e.length,r=e.length-1;r>=0&&!((t+=JSON.stringify(e[r]).length)>1048576);r--)n=r;return 0===n?e:(be.remove(e.slice(0,n)),e.slice(n))}(e).slice(0,50);if(0!==t.length)return st("consolelog",Pr(t),rt(),Ar).then(function(){return be.remove(t)},function(e){if(ot(e))return U("apptics: the server refused these log lines, so they were dropped: "+String(e&&e.message)),be.remove(t);F.log(Ar+": "+String(e))})}).then(function(){Tr=!1}).catch(function(){Tr=!1}))}function Dr(){var e=we.item("users")||[],t={};e.length>0&&(t=e.filter(e=>1===e.status)[0]||{}),z._user_info=t}P.remoteLog=function(e,t,n){try{if(!T("remote_log")||!wr())return;var r=n||I;be.add({module:e,happenedat:v(),exceptionlog:String(t),attempt:1,filename:r.filename,linenumber:r.linenumber}),Ir()}catch(e){}};const Nr={UserBuilder:class{setFirstName(e){return this.first_name=e,this}setLastName(e){return this.last_name=e,this}setCompanyName(e){return this.company_name=e,this}setEmailAddress(e){return this.email_address=e,this}setContactNumber(e){return this.contact_number=e,this}setCountry(e){return this.country=e,this}setRegion(e){return this.region=e,this}setCity(e){return this.city=e,this}setGeoLocation(e){return this.geo_location=e,this}setGender(e){return this.gender=e,this}setPlanType(e){return this.plan_type=e,this}setTimezone(e){return this.timezone=e,this}setLanguage(e){return this.language=e,this}setEngagementScore(e){return this.engagement_score=e,this}setDateOfBirth(e){return this.date_of_birth=e,this}addStringProperty(e,t){return"string"==typeof t&&(this[e]=t),this}addBooleanProperty(e,t){return"boolean"==typeof t&&(this[e]=t),this}addNumberProperty(e,t){return"number"==typeof t&&Number.isFinite(t)&&(this[e]=t),this}setCustomProperties(e){if("object"==typeof e&&null!==e)for(const[t,n]of Object.entries(e))this[t]=n;return this}build(){const e={},t=["first_name","last_name","company_name","email_address","contact_number","country","region","city","geo_location","gender","plan_type","timezone","language","engagement_score","date_of_birth"];return t.forEach(t=>{void 0!==this[t]&&(e[t]=this[t])}),Object.entries(this).forEach(([n,r])=>{-1===t.indexOf(n)&&"function"!=typeof r&&(e[n]=r)}),an(e)}}};let Rr=!1,Lr=null,xr=0;function qr(e){var t=Object.assign({},e);return Object.keys(p).forEach(function(e){_(t[e])&&!_(t[p[e]])&&(t[e]=t[p[e]])}),_(t.serviceUrl)||(t.serviceUrl=String(t.serviceUrl).replace(/\/+$/,"")),t.appversion=function(e){if("number"==typeof e)return isFinite(e)?String(e):"";return"string"==typeof e?e.trim():""}(t.appversion),t}const jr=["YOUR_APP_VERSION","YOUR_BUILD_OR_APP_VERSION","YOUR_APPVERSION"];function Mr(e){return e.serviceUrl+"|"+e.identifier}const Fr=Object.freeze([{key:"batch_flush_interval",min:1e3,max:36e5},{key:"getupdates_interval",min:1e4,max:864e5},{key:"batch_size",min:1,max:500},{key:"batch_request_timeout",min:1,max:30},{key:"min_session_duration",min:0,max:6e4},{key:"heatmap_max_per_session",min:0,max:1e4}]);function Ur(){we.add(We,void 0),we.clear(),he.clear(),_e.clear()}function Br(e){if(!e||"object"!=typeof e)return U("Apptics.init: a config object is required, e.g. apptics.init({ serviceUrl, zak, identifier, appversion })"),!1;if(z._initialised)return F.warn("Apptics.init: already initialised; call apptics.reset() to start again"),!1;if(!function(){if("undefined"==typeof window||"undefined"==typeof document||"undefined"==typeof Promise)return!1;try{return"undefined"!=typeof indexedDB||!!window.localStorage}catch(e){return!1}}())return U("Apptics.init: skipped, no browser with storage and Promise support"),!1;var t,n,r=qr(e),i=d.filter(function(e){return _(r[e])});if(i.length>0)return U("Apptics.init: missing required config: "+i.join(", ")),!1;if(t=r.appversion,-1!==jr.indexOf(t.toUpperCase()))return U('Apptics.init: appversion is still the placeholder "'+r.appversion+"\"; replace it with your app's version or build number, e.g. '2.4.0'"),!1;z._defaultoptions=r,z._defaultoptions.base_domain=r.serviceUrl,z._token=r.identifier,_(e.console_log)||(z._config.debug=!!e.console_log),z._config.track_session="boolean"==typeof e.track_session?e.track_session:c.track_session,z._config.show_logs="boolean"==typeof e.show_logs?e.show_logs:c.show_logs,"boolean"==typeof e.ignore_do_not_track&&(z._config.ignore_do_not_track=e.ignore_do_not_track),z._config.debug_api="boolean"==typeof e.debug?e.debug:"boolean"==typeof e.debug_api?e.debug_api:c.debug_api,n=z._config.debug_api,Ie(null!==Pe?Pe:n),z._config.device_name="string"==typeof e.device_name?e.device_name:c.device_name,z._config.remote_log=c.remote_log,"boolean"==typeof e.remote_log&&(z._config.remote_log=e.remote_log),z._config.track_api=c.track_api,["track_api_hosts","track_api_exclude_hosts"].forEach(function(t){void 0!==e[t]&&U("Apptics.init: "+t+" is no longer supported; use configureApiTracking(new ApiTrackingBuilder()."+("track_api_hosts"===t?"allowOnlyDomains":"ignoreDomains")+"(...).build())")}),"boolean"==typeof e.track_api&&(z._config.track_api=e.track_api),sr(z._config.track_api),z._config.track_heatmap="boolean"==typeof e.track_heatmap?e.track_heatmap:c.track_heatmap,P.enableHeatmap(z._config.track_heatmap),z._config.track_screen="boolean"==typeof e.track_screen?e.track_screen:c.track_screen,function(e){if(Fr.forEach(function(t){var n=e[t.key];if(z._config[t.key]=c[t.key],!_(n)){var r=Number(n);!isFinite(r)||r<t.min||r>t.max?U("Apptics.init: "+t.key+" must be between "+t.min+" and "+t.max+", keeping "+z._config[t.key]):(z._config[t.key]=r,F.log("Apptics.init: "+t.key+" set to "+r))}}),z.inactiveduration=30,!_(e.inactiveduration)){var t=Number(e.inactiveduration);!isFinite(t)||t<1||t>1440?U("Apptics.init: inactiveduration must be between 1 and 1440 minutes, keeping "+z.inactiveduration):(z.inactiveduration=t,F.log("Apptics.init: inactiveduration set to "+t))}}(e),Lr=e,z._initialised=!0,z._ready=!1,z._pending=[];var o=++xr;return z._readyPromise=ge().then(function(e){return o===xr&&(e?(function(e){var t=we.item("appkey");_(t)||t===Mr(e)||(F.log("init: stored data belongs to another app, resetting"),Ur()),we.add("appkey",Mr(e))}(z._defaultoptions),St().then(function(e){return o===xr&&(e?function(e,t){z._token=String(z._defaultoptions.aaid),we.add("token",z._token),n=we.item("trackinfo"),n&&"object"==typeof n&&(xt(n),F.log("restoreServerSettings: "+JSON.stringify(z._trackinfo)));var n;var r=we.item("uuid");_(r)&&(r=A(),we.add("uuid",r));z._uuid=r;var i=we.item("appversion");_(i)&&(we.add("appversion",z._defaultoptions.appversion),i=z._defaultoptions.appversion);var o=i!=z._defaultoptions.appversion;z._ignoreDnt=z._config.ignore_do_not_track,Ee.update_status(Ze()),Ot(),qt(),o&&(z._device_info.appversionid="",Nt(z._device_info).then(function(e){h(e)&&(we.add("appversion",z._defaultoptions.appversion),F.log("init: appversion updated to "+z._defaultoptions.appversion))}).catch(function(e){F.log("init: error updating appversion: "+e)}));return z._device_info.connectionType=Ce(),function(){if(Rr)return;Rr=!0;var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;e&&e.addEventListener&&e.addEventListener("change",function(){z._device_info.connectionType=Ce()});window.addEventListener("blur",function(){Vr()&&(F.log("Window lost focus, user switched to another window or application"),en())}),window.addEventListener("focus",function(){Vr()&&(F.log("Window regained focus, user switched back to the window"),Qt(),yr())}),window.addEventListener("pagehide",Zr),window.addEventListener("pageshow",function(e){Vr()&&e.persisted&&(F.log("restored from the back/forward cache: starting a new session"),Qt().then(Jn),yr())}),document.addEventListener("visibilitychange",function(){Vr()&&("hidden"!==document.visibilityState?(F.log("page visible: refreshing the server settings"),Qt().then(Jn),qt()):function(){if(!Vr())return;Mt(),hr(!0),F.log("page hidden: closing the open screen and flushing")}())}),window.addEventListener(window.cordova?"deviceready":"load",function(){Vr()&&Qt()},{passive:!0}),window.addEventListener("online",function(){if(Vr()){if(_(Qe("apid"))&&_(Qe("mapid")))return F.log("back online: registering this device before sending"),Ot(),void Ct().then(function(){Vr()&&(hr(),Cr())});hr(),Cr()}},{passive:!0}),window.screen&&window.screen.orientation&&"function"==typeof window.screen.orientation.addEventListener&&window.screen.orientation.addEventListener("change",function(){z._properties.orientation=Re()});window.addEventListener("unhandledrejection",function(e){Vr()&&z._isGlobalErrorTracking&&cr(e)}),window.addEventListener("error",function(e){Vr()&&z._isGlobalErrorTracking&&cr(e)}),window.addEventListener("click",Gr,!0)}(),z._properties.orientation=Re(),Dr(),Qt().then(function(){if(t!==xr)return!1;yr(),Cr(),z._ready=!0;var e=z._pending;return z._pending=[],e.forEach(function(e){try{e()}catch(e){F.error("apptics: buffered call failed",e)}}),Vn(z._config.track_screen),P.remoteConfigStarted(),window.appticsReadyStatus=!0,"function"==typeof window.appticsReady&&window.appticsReady(),!0})}(0,o):(U("Apptics.init: app/addversion did not return the app ids, not starting"),z._initialised=!1,z._token="",z._pending=[],!1))})):(U("Apptics.init: no usable storage (IndexedDB or localStorage), not starting"),z._initialised=!1,z._token="",z._pending=[],!1))}).catch(function(e){return F.error("Apptics.init: start-up failed",e),!1}),!0}function Hr(){return z._readyPromise||Promise.resolve(!1)}function Vr(){return z._ready}function Gr(e){if(window.appticsReadyStatus&&Vr()){var t=e.target;if(t&&"function"!=typeof t.closest&&(t=t.parentElement),t){var n=t.closest('[apeventaction]:not([apeventaction=""])');if(n){var r=n.getAttribute("apeventaction")||"",i=n.closest("[apgroupaction]"),o=i&&i.getAttribute("apgroupaction")||c.default_group_name,a={},s=n.getAttribute("apeventprops");if(!_(s))try{a=JSON.parse(s)}catch(e){F.warn('apptics: invalid JSON in apeventprops for "'+r+'", sending no properties'),a={}}_(r)||Gn(r,o,a)}}}}function Zr(){Vr()&&(F.log("page closing: ending the session and sending what is queued"),Mt(),Er()?be.all().then(function(e){if(0!==e.length){var t=e.slice(0,50);dt("consolelog",Pr(t),rt(),Ar).then(function(){return be.remove(t)},function(e){if(ot(e))return be.remove(t);F.log(Ar+": "+String(e))})}}):Promise.resolve(),Xt().then(function(){return hr(!0)}))}const Wr=2097152,Jr="log",Kr="diagnostics";let Yr=!1;function $r(){Yr||(Yr=!0,setTimeout(function(){Yr=!1,ke.all().then(function(e){const t=e.length-1e3;if(!(t<=0))return F.warn("apptics: dropping "+t+" oldest feedback log entries (cap is 1000)"),ke.remove(e.slice(0,t))})},2e3))}function Xr(e){ke.add(e),$r()}function Qr(e){return e.length>1e4?e.slice(0,1e4)+"…":e}function ei(e){return ke.all().then(function(t){return t.filter(function(t){return t.type===e&&!O(t.happenedat)})})}function ti(e){return e.map(function(e){return String(e.id)})}function ni(e){const t=[],n={};return e.forEach(function(e){const r=String(e.heading);n[r]||(n[r]=[],t.push(r)),n[r].push(e.key+": "+e.value)}),t.map(function(e){return"["+e+"]\n"+n[e].join("\n")}).join("\n\n")}function ri(e,t,n){const r=new File([t],e,{type:"text/plain"});return r.size>Wr?(F.warn("apptics: "+e+" is over 2 MB, not sending it"),null):{file:r,ids:ti(n)}}function ii(e){return e.map(function(e){return"["+function(e){return"string"==typeof e.timestamp&&e.timestamp.length>0?e.timestamp:new Date("number"==typeof e.happenedat?e.happenedat:v()).toISOString()}(e)+"] "+e.message}).join("\n")}function oi(){return ei(Kr).then(function(e){return e.length>0})}function ai(e){if(z._initialised)return!1;var t=function(){if("undefined"!=typeof window&&window.appticssettings)return window.appticssettings._defaultoptions}();return!(!t||"object"!=typeof t)&&e.init(t)}const si=Object.freeze({VERBOSE:1,DEBUG:2,INFO:3,WARN:4,ERROR:5});function ci(e){var t=String(e.fn||"").replace(/<anonymous>/g,"").replace(/[<>]/g,"").trim();return""===t||/^(Object|Module|eval)\.?$/.test(t)?"App":t.slice(0,100)}function di(e){if(e instanceof Error){var t=e.name+": "+e.message;return e.stack&&-1!==e.stack.indexOf(e.message)?e.stack:t}if("string"==typeof e)return e;try{var n=JSON.stringify(e);return void 0===n?String(e):n}catch(t){return String(e)}}const ui=W("AppticsLogger",function(e,t,n,r,i){if(br&&wr()){var o=[t].concat(n).map(di).join(" ");be.add({module:ci(i),level:e,happenedat:r,exceptionlog:o,attempt:1,filename:i.filename,linenumber:i.linenumber}),Ir()}}),li=Object.freeze({1:"debug",2:"debug",3:"info",4:"warn",5:"error"});function fi(e){return function(t,n,...r){try{var i=null==t?"":String(t).trim(),o=""===i?[n].concat(r):["["+i+"]",n].concat(r);!function(e,t){if(!0===T("show_logs")){var n=li[e]||"log";"undefined"!=typeof console&&"function"==typeof console[n]&&console[n].apply(console,t)}}(e,o),ui(e,o[0],o.slice(1),v(),q(1))}catch(e){}}}const pi={enable:W("AppticsLogger.enable",function(){Sr(!1!==!0)}),disable:W("AppticsLogger.disable",function(){Sr(!1)}),isEnabled:W("AppticsLogger.isEnabled",function(){return br}),v:fi(si.VERBOSE),d:fi(si.DEBUG),i:fi(si.INFO),w:fi(si.WARN),e:fi(si.ERROR)},gi={init:W("Apptics.init",Br)},mi=W("ready",Hr),vi={addEvent:W("AppticsEvents.addEvent",Gn)},hi=W("AppticsScreenTracker.inScreen",function(e,t,n,r){sn(e)?(P.screenTrackedByApp(),Zn(e,t,n,r)):B(o.SCREEN,"AppticsScreenTracker.inScreen: Invalid screenName: "+String(e))}),_i=W("AppticsScreenTracker.outScreen",function(e,t){_(e)?B(o.SCREEN,"AppticsScreenTracker.outScreen: no screen id given"):jt(e,t)}),ki={inScreen:function(e,t){if(!sn(e))return hi(e,t,"",v()),"";var n=A();return hi(e,t,n,v()),n},outScreen:function(e){_i(e,v())}},yi=W("AppticsApiTracker.endTrackApi",function(e,t,n,r){var i=Xn[e];i?(delete Xn[e],Qn=Qn.filter(function(t){return t!==e}),$n({url:i.url,method:i.method,responsecode:"number"==typeof t?t:0,responsemessage:n,starttime:i.starttime,endtime:r})):B(o.API,"AppticsApiTracker.endTrackApi: no call started with id "+String(e))}),bi={startTrackApi:W("AppticsApiTracker.startTrackApi",function(e,t){var n=A();return Xn[n]={url:String(e||""),method:String(t||"GET").toUpperCase(),starttime:v()},Qn.push(n),Qn.length>500&&delete Xn[Qn.shift()],n}),endTrackApi:function(e,t,n){yi(e,t,n,v())},configure:W("AppticsApiTracker.configure",function(e){var t=e instanceof un?e.build():e,n={ignoreDomains:[],allowOnlyDomains:[],allowOnlyTLDs:[],ignoreTLDs:[],ignoreDomainPrefixes:[],ignoreDomainSuffixes:[],groupDomains:[],ignoreEndpoints:[],patterns:[],preserveSegments:[],autoDetection:!0};t&&"object"==typeof t&&Object.keys(n).forEach(function(e){var r=t[e];"autoDetection"===e?n.autoDetection=!1!==r:Array.isArray(r)&&(n[e]=r.slice())}),ln=n})},Si=W("enableApiTracking",sr),wi=W("AppticsTrackError",cr),Ei=W("enableGlobalErrorHandler",function(e){z._isGlobalErrorTracking="boolean"!=typeof e||e}),Ai=W("AppticsSetUser",function(t,n,r){let i=r||{};if(t=t||"",n=n||"",Be("setUser"))if(_(t))B(o.PROPERTIES,"AppticsSetUser: Invalid userid");else{var a={mam:t,customergroupid:n,appversionid:z._device_info.appversionid||"",status:1,happendat:v()};k(i)||(a.userproperties=function(e){var t=e,n=t&&"object"==typeof t&&t.data&&t.datatype?t:an(e);return n.message.forEach(function(e){B(o.PROPERTIES,"AppticsSetUser: dropped "+e.keys.join(", ")+" (error "+e.code+")")}),n}(i)),function(t){var n="registerUserWithApptics",r=ut(n)||lt(n);if(r)return r;if(k(t))return Promise.reject(n+": nothing to register");var i=pt(n);if(i)return i;var o=JSON.stringify(b(t,["userid","groupid","happendat"]));return st("reguser",o,rt(),n).then(function(n){var r=n.data||{};return t.userid=r.userid,t.groupid=r.customergroupid,Ge(e.USAGE_TRACKING_WITH_PII),function(e){e.status=1;var t=we.item("users")||[];t=t.map(e=>({...e,status:0}));var n=t.findIndex(t=>t.userid===e.userid);-1!==n?t[n]={...t[n],...e}:t.push(e);we.add("users",t)}(t),Dr(),P.remoteConfigUserChanged(),r})}(a).then(function(e){F.log("setUser: "+JSON.stringify(e))}).catch(function(e){F.log(e)})}}),zi=W("getUser",function(){return z._user_info||{}}),Ti=W("setTrackingStatus",Ge),Oi=W("getTrackingStatus",Ze),Pi=W("flush",hr),Ii=W("addFeedbackLog",function(e){"string"==typeof e&&0!==e.length&&Xr({type:Jr,happenedat:v(),message:Qr(e)})}),Ci=W("addDiagnosticsInfo",function(e,t,n){"string"==typeof e&&0!==e.length&&"string"==typeof t&&0!==t.length&&Xr({type:Kr,happenedat:v(),heading:e,key:t,value:Qr(String(void 0===n?"":n))})}),Di=W("enableDebug",function(){Pe=!0,Ie(!0)}),Ni=W("disableDebug",function(){Pe=!1,Ie(!1)}),Ri=W("reset",function(){xr++,null!==_r&&clearInterval(_r),null!==kr&&clearInterval(kr),_r=null,kr=null,ur(),sr(!1),Vn(!1),ht=null,we.add(mt,void 0),P.enableHeatmap(!1),P.resetHeatmap(),P.resetRemoteConfig(),Ur(),z._initialised=!1,z._ready=!1,z._pending=[],z._readyPromise=null,z._device_info={},z._user_info={},z._current_screen={},z._current_session={},z._uuid="",z._apid="",z._mapid="",z._sending=!1,F.log("apptics.reset()"),Lr&&Br(Lr)}),Li={Apptics:gi,AppticsEvents:vi,AppticsScreenTracker:ki,AppticsApiTracker:bi,AppticsLogger:pi,DefinedEvents:En,ApiTrackingBuilder:un,ready:mi,enableDebug:Di,disableDebug:Ni,enableApiTracking:Si,AppticsTrackError:wi,enableGlobalErrorHandler:Ei,AppticsSetUser:Ai,getUser:zi,users:Nr,setTrackingStatus:Ti,getTrackingStatus:Oi,flush:Pi,addFeedbackLog:Ii,addDiagnosticsInfo:Ci,reset:Ri,AP_TRACKING_STATUS:e,AP_FEEDBACK_TYPE:t};!function(e){"undefined"!=typeof window&&queueMicrotask(function(){ai(e)})}(gi);const xi="Feedback sent successfully",qi="Something went wrong. Send feedback again",ji=["deviceid","anonymousid","aaid","apid","mapid","devicetypeid","osversionid","platformid","appversionid","appreleaseversionid","modelid","timezoneid","frameworkid","projectid","portalid","donottrackenabled"];function Mi(e){if(je())return Promise.resolve(null);if(0==navigator.onLine)return F.warn("sendFeedbackData: No Network"),Promise.resolve(null);var t=_(e.attachment)?null:e.attachment,n=t?t.length:0,r=e&&e.logsFiles?e.logsFiles:null,i=r&&r.length?r.length:0,o=v();return Promise.all([Fi(e),Ne()]).then(function([a,s]){var c=new FormData,d={networkstatus:De(),orientation:Re(),edge:Ce(),screenname:z._current_screen.screen||"",sessionstarttime:z._current_session.starttime||o,report:e.message,type:e.type,source:0,attachmentcount:n||0,logfilecount:i+(a.logFile?1:0),happendat:o};_(e.quartzid)||(d.quartzid=e.quartzid),null!==s&&(d.battery=s),c.append("feedinfo",JSON.stringify({feedinfo:d,meta:ft()}));var u=Promise.resolve();return t&&n>0&&n<=5&&(u=function(e){var t=[];for(let n=0;n<e.length;n++){const r=e[n];t.push(new Promise(function(e,t){const i=new FileReader;i.onload=function(t){const i=t.target.result;e(new File([i],"image_"+(n+1),{type:r.type}))},i.onerror=function(){t(i.error)},i.readAsArrayBuffer(r)}))}return Promise.all(t)}(t).then(function(e){e.forEach(function(e){c.append("attachment",e)})})),u.then(function(){return function(e,t,n){if(t&&t.length>0)for(let n=0;n<t.length;n++)e.append("logfile",t[n]);n.logFile&&e.append("logfile",n.logFile);n.dyninfoFile&&e.append("dyninfo",n.dyninfoFile)}(c,r,a),i=c,o=a.ids,(e=i,t="requestToFeedback",n=ut(t)||pt(t),n||(F.log(t+": Feedback Payload size : "+w(e)/1024),st("feedback",e,rt(),t))).then(function(){return z._sending=!1,o.length>0&&function(e){ke.remove(e.map(function(e){return{id:e}}))}(o),{ok:!0,message:xi}}).catch(function(e){return z._sending=!1,F.log("sendFeedbackData:"+e),{ok:!1,message:qi}});var e,t,n,i,o})}).catch(function(e){return F.error("sendFeedbackData: "+e),{ok:!1,message:qi}})}function Fi(e){var t=!1!==e.includeLog,n=e.includeDyninfo,r=!0===n?Promise.resolve(!0):!1===n?Promise.resolve(!1):oi();return Promise.all([t?ei(Jr).then(function(e){return 0===e.length?null:ri("feedbacklog.txt",ii(e),e)}):Promise.resolve(null),r.then(function(e){return e?(t=function(){try{return JSON.stringify(b(z._device_info,ji)||{},null,2)}catch(e){return F.error("Failed to prepare dyninfo file",e),null}}(),ei(Kr).then(function(e){const n=[];return e.length>0&&n.push(ni(e)),t&&n.push("[Device Info]\n"+t),0===n.length?null:ri("dyninfo.txt",n.join("\n\n"),e)})):null;var t})]).then(function([e,t]){return{logFile:e?e.file:null,dyninfoFile:t?t.file:null,ids:(e?e.ids:[]).concat(t?t.ids:[])}})}const Ui="anonymous",Bi="Anonymous",Hi={anonymous:!0,userid:"",groupid:""},Vi={};const Gi="http://www.w3.org/2000/svg";function Zi(e,t){var n=e.querySelector("#zasdkEmailTrigger"),r=e.querySelector("#zasdkEmailPanel"),i=e.querySelector("#zasdkEmailLabel"),o=e.querySelector("#zasdkEmailList"),a=e.querySelector("#zasdkEmailDropdown");if(n&&r&&i&&o&&a){var s=function(){var e=we.item("users");return Array.isArray(e)?e:[]}(),c=function(e){var t=[{value:Ui,label:Bi}],n={};return e.forEach(function(e){var r=e&&e.mam;_(r)||n[r]||(n[r]=!0,t.push({value:String(r),label:String(r)}))}),t}(s),d=Ui;if(Hi.anonymous=!0,Hi.userid="",Hi.groupid="",!t){var u=null;s.forEach(function(e){u||!e||1!=e.status||_(e.mam)||(u=e)}),u&&l(String(u.mam))}n.addEventListener("click",function(e){e.stopPropagation();var t="none"!==r.style.display;r.style.display=t?"none":"block",t||f()}),o.addEventListener("click",function(e){var t=e.target.closest(".zasdk-select-option");t&&(l(String(t.getAttribute("data-value"))),r.style.display="none")}),a.setAttribute("tabindex","0"),a.addEventListener("focusout",function(e){a.contains(e.relatedTarget)||(r.style.display="none")}),f()}function l(e){d=e,Hi.anonymous=e===Ui;var t=null;Hi.anonymous||s.forEach(function(n){!t&&n&&n.mam===e&&(t=n)}),Hi.userid=t?String(t.userid||""):"",Hi.groupid=t?String(t.groupid||""):"",i.textContent=Hi.anonymous?Bi:e,f()}function f(){if(o.innerHTML="",0===c.length){var e=document.createElement("div");return e.className="zasdk-select-empty",e.textContent="No users to choose from",void o.appendChild(e)}c.forEach(function(e){var t=e.value===d,n=document.createElement("li");n.className="zasdk-select-option"+(t?" zasdk-option-selected":""),n.setAttribute("data-value",e.value);var r=document.createElement("span");r.textContent=e.label,n.appendChild(r),t&&n.appendChild(function(){var e=document.createElementNS(Gi,"svg");e.setAttribute("viewBox","0 0 14 10"),e.setAttribute("width","14"),e.setAttribute("height","10"),e.setAttribute("fill","none");var t=document.createElementNS(Gi,"path");return t.setAttribute("d","M1 5l4 4 8-8"),t.setAttribute("stroke","#0078d4"),t.setAttribute("stroke-width","2"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),e.appendChild(t),e}()),o.appendChild(n)})}}function Wi(e,t,n){var r=e.querySelector("#zasdkDataViewer"),i=e.querySelector("#zasdkViewerTitle"),o=e.querySelector("#zasdkViewerContent");r&&i&&o&&(i.textContent=t,o.textContent=n||"(No data available)",r.style.display="flex")}function Ji(e,t){var n=e.querySelector("#zasdkIncludeLogToggle"),r=e.querySelector("#zasdkIncludeDiagToggle"),i=e.querySelector(".zasdk-toggles-section"),o=e.querySelector(".zasdk-toggle-separator"),a=e.querySelector("#zasdkViewLogsBtn"),s=e.querySelector("#zasdkViewDiagBtn"),c=e.querySelector("#zasdkViewerClose"),d=e.querySelector("#zasdkDataViewer");if(n&&r&&i){var u=n.closest(".zasdk-toggle-row"),l=r.closest(".zasdk-toggle-row");Vi.includeLog=!0===t.includeLog||void 0,Vi.includeDyninfo=!0===t.includeDyninfo||void 0,i.style.display="none",Promise.all([ei(Jr).then(function(e){return e.length>0}),oi()]).then(function([e,a]){u&&(u.style.display=e?"":"none"),l&&(l.style.display=a?"":"none"),o&&(o.style.display=e&&a?"":"none"),i.style.display=e||a?"":"none",n.checked=!0===t.includeLog||e,r.checked=!0===t.includeDyninfo||a,Vi.includeLog=n.checked,Vi.includeDyninfo=r.checked}).catch(function(e){F.warn("apptics: could not read the stored logs: "+String(e))}),n.addEventListener("change",function(){Vi.includeLog=n.checked}),r.addEventListener("change",function(){Vi.includeDyninfo=r.checked}),a&&a.addEventListener("click",function(){ei(Jr).then(ii).then(function(t){Wi(e,"System Logs",t)})}),s&&s.addEventListener("click",function(){ei(Kr).then(ni).then(function(t){Wi(e,"Diagnostic Information",t)})}),c&&d&&c.addEventListener("click",function(){d.style.display="none"})}}P.feedbackUser=function(){return Hi.anonymous||_(Hi.userid)?null:Hi};const Ki={startRecording(){},previewVideo(){},editVideo(){},clearFeedback(){},endRecording(){},setVideoContent(){},submitRecording:()=>Promise.resolve({})},Yi={ErrorType:{},FeedbackState:{}};function $i(){return"undefined"!=typeof Quartz&&!!Quartz}function Xi(){return"undefined"!=typeof Quartz&&Quartz?Quartz:Ki}function Qi(){return"undefined"!=typeof QuartzConstants&&QuartzConstants?QuartzConstants:Yi}function eo(e){return Mi(e).then(function(e){return e?(ro.handleStatusmsg(e.ok,e.message),e.ok&&setTimeout(()=>{ro.close()},2e3),e):null})}function to(e,t,n){var r=e.querySelector(".zasdk-selected").getAttribute("data-type"),i=e.querySelector("#zasdkFileInput").files;return{type:_(r)?1:ro.typeObj[r],message:t,attachment:i&&i.length>0?i:ro._opts.attachments||null,logsFiles:ro._opts.logFiles||null,includeLog:Vi.includeLog,includeDyninfo:Vi.includeDyninfo,quartzid:n}}function no(){try{return"function"==typeof DataTransfer?new DataTransfer:null}catch(e){return F.warn("apptics.feedback: this browser cannot build a file list, attachments are off"),null}}const ro={feedbackUIHtml:'<div id="zasdkFeedbackconatiner" class="zasdk-modal-content">\n <div class="zasdk-header">\n <h2 class="zasdk-title">Share feedback</h2>\n <span id="appticsfeedbackclose" class="zasdk-close"><svg viewBox="0 0 24 24" style=" width: 20px; "><path d="M19.92,19.08c.23.23.23.61,0,.85-.12.12-.27.18-.42.18s-.31-.06-.42-.18l-7.08-7.08-7.08,7.08c-.12.12-.27.18-.42.18s-.31-.06-.42-.18c-.23-.23-.23-.61,0-.85l7.08-7.08-7.08-7.08c-.23-.23-.23-.61,0-.85s.61-.23.85,0l7.08,7.08,7.08-7.08c.23-.23.61-.23.85,0s.23.61,0,.85l-7.08,7.08,7.08,7.08Z"/></svg></span>\n </div>\n <div class="zasdk-feedback-types" data-type="">\n <div class="zasdk-feedback-type zasdk-selected" data-type="bug">\n <div class="zasdk-iconcnt zasdkfeedback__icon-report">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M15.6,6.58c-.13-.37-.3-.7-.5-.97l1.23-1.18c.24-.23.25-.61.02-.85-.23-.24-.61-.25-.85-.02l-1.26,1.21c-.66-.45-1.37-.62-1.79-.68-.25-.04-.51-.04-.76-.02-.83.08-1.45.35-1.93.7l-1.22-1.2c-.24-.23-.62-.23-.85,0-.23.24-.23.62,0,.85l1.21,1.19c-.24.34-.41.68-.51.96-2.02,1.37-3.27,3.82-3.27,6.44,0,4.18,3.08,7.58,6.87,7.58s6.87-3.4,6.87-7.58c0-2.62-1.25-5.06-3.26-6.44ZM11.82,5.27c.15-.02.31-.01.47.01.69.1,1.86.48,2.26,1.9-.17.17-.51.44-1.14.65-1.08.36-2.31.28-3.36-.23-.24-.11-.44-.23-.6-.36,0-.01,0-.03.01-.04.18-.65.73-1.77,2.36-1.93ZM12,19.4c-3.12,0-5.67-2.86-5.67-6.38,0-1.98.82-3.82,2.19-5.02.26.25.59.48,1.01.68.78.38,1.65.57,2.5.57.6,0,1.19-.09,1.76-.28.88-.29,1.39-.7,1.67-1,1.38,1.2,2.21,3.06,2.21,5.05,0,3.52-2.54,6.38-5.67,6.38ZM9.12,9.86c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM9.12,11.99c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47ZM14.88,9.86c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM14.88,11.99c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47ZM12,14.49c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM12,16.62c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47Z"/></svg></i>\n </div>\n <div>Bug</div>\n </div>\n <div class="zasdk-feedback-type" data-type="feedback">\n <div class="zasdk-iconcnt zasdkfeedback__icon-reqest">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M6.69,9.25h10.81c.41,0,.75-.34.75-.75s-.34-.75-.75-.75H6.69c-.41,0-.75.34-.75.75s.34.75.75.75Z"/><path d="M6.69,13.07h8.11c.41,0,.75-.34.75-.75s-.34-.75-.75-.75H6.69c-.41,0-.75.34-.75.75s.34.75.75.75Z"/><path d="M20.72,5.17c0-.68-.55-1.23-1.23-1.23H4.48c-.68,0-1.23.55-1.23,1.23v11.84c0,.68.55,1.23,1.23,1.23h13.49l1.25,1.51c.17.2.41.31.67.31.1,0,.2-.02.3-.05.34-.13.57-.46.56-.83l-.03-14.01ZM19.22,17.39l-.17-.2c-.24-.29-.58-.45-.95-.45H4.75V5.44h14.47v11.95Z"/></svg></i>\n </div>\n <div>Feedback</div>\n </div>\n <div class="zasdk-feedback-type" data-type="help">\n <div class="zasdk-iconcnt zasdkfeedback__icon-help">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M12.45,16.47c-.33,0-.6-.27-.6-.6v-2.7c0-.43.25-.82.64-.99.95-.42,3.15-1.62,3.15-3.51,0-1.6-1.01-3.03-2.51-3.55-.95-.33-1.97-.28-2.87.16-.91.43-1.59,1.2-1.92,2.14-.11.31-.45.48-.77.37-.31-.11-.48-.45-.37-.77.44-1.25,1.34-2.25,2.54-2.83,1.2-.57,2.54-.65,3.79-.21,1.99.7,3.32,2.58,3.31,4.69,0,2.46-2.34,3.91-3.79,4.57v2.63c0,.33-.27.6-.6.6ZM13.21,19.1c0-.66-.54-1.2-1.2-1.2h-.03c-.66,0-1.19.54-1.19,1.2s.55,1.2,1.21,1.2,1.2-.54,1.2-1.2Z"/></svg></i>\n </div>\n <div>Help</div>\n </div>\n <div class="zasdk-feedback-type" data-type="report">\n <div class="zasdk-iconcnt zasdkfeedback__icon-appreciate">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M20.47,16.72l-6.66-11.53c-.37-.65-1.07-1.05-1.81-1.05s-1.44.4-1.81,1.05l-6.66,11.53c-.37.65-.37,1.45,0,2.09.37.65,1.07,1.05,1.81,1.05h13.32c.75,0,1.44-.4,1.81-1.05.37-.64.37-1.45,0-2.09ZM19.17,18.06c-.11.18-.3.3-.51.3H5.34c-.21,0-.41-.11-.51-.3-.1-.18-.1-.41,0-.59l6.66-11.53h0c.11-.18.3-.3.51-.3s.41.11.51.3l6.66,11.53c.11.18.11.41,0,.59Z"/><path d="M12.35,13.9s.37-4.72.37-4.72c.05-1.08-1.58-1.06-1.5.02l.48,4.71c.03.38.62.37.64,0Z"/><path d="M11.97,15.06c-.52,0-.94.42-.94.94s.42.94.94.94.94-.42.94-.94-.42-.94-.94-.94Z"/></svg></i>\n </div>\n <div>Report</div>\n </div>\n </div>\n <div id="zasdkFeedbackForm" class="zasdk-form">\n <label class="zasdkdesclbl">User<span class="zasdkmadfeld">*</span></label>\n <div id="zasdkEmailDropdown" class="zasdk-custom-select">\n <div id="zasdkEmailTrigger" class="zasdk-select-trigger">\n <span id="zasdkEmailLabel" class="zasdk-select-label">Anonymous</span>\n <svg class="zasdk-select-arrow" viewBox="0 0 12 8" width="12" height="8"><path d="M1 1l5 5 5-5" stroke="#999" stroke-width="1.5" fill="none" stroke-linecap="round"/></svg>\n </div>\n <div id="zasdkEmailPanel" class="zasdk-select-panel" style="display:none">\n <ul id="zasdkEmailList" class="zasdk-select-list"></ul>\n </div>\n </div>\n <label class="zasdkdesclbl" for="zasdkDescription">Add details here<span class="zasdkmadfeld">*</span> <span class="zaleftcharspan"><span class="zaleftcharcnt">5000</span><span class="zaleftchartxt">character left</span></span></label>\n <textarea id="zasdkDescription" name="description" placeholder="Please provide more details for us to help you better." reqname="name" maxlength="5000"></textarea>\n <div id="zasdkreccheckcnt" class="zasdkqz-container">\n <div class="zasdkqz-checkbox-wrapper">\n <input type="checkbox" id="zasdkqz-consent" class="zasdkqz-checkbox">\n <label for="zasdkqz-consent">By agreeing to record screen, I allow the collection of the required information for further analysis.</label>\n </div>\n <div id="zasdkqz-content" class="zasdkqz-content">\n <div class="zasdkqz-prop-content">Data collected while screen recording.\n <div class="zasdk_rec_hdr_icon zasdk-tooltip-container zasdk_rec_hdr">\n <i><svg viewBox="0 0 24 24"><path d="M12,20.6c-4.74,0-8.6-3.86-8.6-8.6S7.26,3.4,12,3.4s8.6,3.86,8.6,8.6-3.86,8.6-8.6,8.6ZM12,4.6c-4.08,0-7.4,3.32-7.4,7.4s3.32,7.4,7.4,7.4,7.4-3.32,7.4-7.4-3.32-7.4-7.4-7.4ZM12.6,15.97v-4.91c0-.33-.27-.6-.6-.6s-.6.27-.6.6v4.91c0,.33.27.6.6.6s.6-.27.6-.6ZM12.61,9.03c0-.33-.27-.6-.6-.6h-.01c-.33,0-.59.27-.59.6s.28.6.61.6.6-.27.6-.6Z"/></svg></i>\n <div class="zasdk-tooltip-top zasdk-prop-info">\n <ul>\n <li>- A recording of the window or region specified.</li>\n <li>- Audio captured during recording. (You can mute or re-record)</li>\n <li>- IP address.</li>\n <li>- Browser console logs generated while recording.</li>\n <li>- Device details (screen resolution, OS, and browser version).</li>\n <li>- Client-side performance metrics (DNS lookup time, TCP connection time, etc.).</li>\n </ul>\n </div>\n </div>\n </div>\n <div id="zasdkqz_rec_button" class="zasdkqz-button">Start screen recording</div>\n </div>\n </div>\n <div id="editRecordedVideo" class="zasdk_recordedClipArea" style="">\n <div id="recordScreenDesc" class="zasdk_rec_hdr"> Recorded Clip\n <div class="zasdk_rec_hdr_icon zasdk-tooltip-container">\n <i><svg viewBox="0 0 24 24"><path d="M12,20.6c-4.74,0-8.6-3.86-8.6-8.6S7.26,3.4,12,3.4s8.6,3.86,8.6,8.6-3.86,8.6-8.6,8.6ZM12,4.6c-4.08,0-7.4,3.32-7.4,7.4s3.32,7.4,7.4,7.4,7.4-3.32,7.4-7.4-3.32-7.4-7.4-7.4ZM12.6,15.97v-4.91c0-.33-.27-.6-.6-.6s-.6.27-.6.6v4.91c0,.33.27.6.6.6s.6-.27.6-.6ZM12.61,9.03c0-.33-.27-.6-.6-.6h-.01c-.33,0-.59.27-.59.6s.28.6.61.6.6-.27.6-.6Z"/></svg></i>\n <div class="zasdk-tooltip">This recording will be sent along with your feedback for further analysis.</div>\n </div>\n </div>\n <div class="zasdk_playEdit">\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="preivewPlayButton" class="zasdk_clipAreaButton" title="Preview">\n <svg viewBox="0 0 24 24"><path d="M6.24,20.6c-.2,0-.39-.05-.57-.15-.38-.21-.62-.61-.62-1.05V4.59c0-.44.24-.84.62-1.05.38-.21.85-.19,1.22.04l11.52,7.41c.34.22.55.6.55,1,0,.41-.2.78-.55,1l-11.52,7.41c-.2.13-.42.19-.64.19ZM6.56,4.1l-.33.5v14.81s11.52-7.41,11.52-7.41L6.23,4.6l.33-.5Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Preview</div>\n </div>\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="videoEditButton" class="zasdk_clipAreaButton">\n <svg id="Layer_2" viewBox="0 0 24 24"><path d="M20.6,7.18c0-.58-.23-1.13-.65-1.54l-1.53-1.51c-.83-.83-2.29-.83-3.12,0l-1.31,1.3h0S4.88,14.41,4.88,14.41c-.12.12-.21.27-.26.44l-1.19,4.4c-.09.34,0,.7.26.95.19.18.44.29.7.29.09,0,.17-.01.26-.04l4.44-1.2c.16-.05.31-.13.44-.25l8.54-8.43h0s1.88-1.86,1.88-1.86c.06-.06.12-.12.17-.19h0c.31-.39.48-.86.48-1.36ZM8.72,18.12l-4.03,1.09,1.08-3.98L13.97,7.12l2.88,2.97-8.13,8.03ZM17.71,9.25l-2.88-2.97,1.32-1.3c.38-.38,1.04-.38,1.43,0l1.53,1.51c.19.18.29.43.29.69,0,.22-.08.43-.21.6h0s-.04.05-.08.08l-1.4,1.39Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Edit</div>\n </div>\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="videoDelButton" class="zasdk_clipAreaButton">\n <svg id="Layer_2" viewBox="0 0 24 24"><path d="M19.2,6.6h-3.4v-1c0-1.21-.99-2.2-2.2-2.2h-3.2c-1.21,0-2.2.99-2.2,2.2v1h-3.4c-.33,0-.6.27-.6.6s.27.6.6.6h1v10.6c0,1.21.99,2.2,2.2,2.2h8c1.21,0,2.2-.99,2.2-2.2V7.8h1c.33,0,.6-.27.6-.6s-.27-.6-.6-.6ZM9.4,5.6c0-.55.45-1,1-1h3.2c.55,0,1,.45,1,1v1h-5.2v-1ZM17,18.4c0,.55-.45,1-1,1h-8c-.55,0-1-.45-1-1V7.8h10v10.6ZM11,11.2v4.8c0,.33-.27.6-.6.6s-.6-.27-.6-.6v-4.8c0-.33.27-.6.6-.6s.6.27.6.6ZM14.2,11.2v4.8c0,.33-.27.6-.6.6s-.6-.27-.6-.6v-4.8c0-.33.27-.6.6-.6s.6.27.6.6Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Delete</div>\n </div>\n </div>\n <div class="zasdk_videoPrev">\n <video id="previewVideoElemId" width="320" height="240" src=""></video>\n </div>\n </div>\n\n <div class="zasdk-buttons">\n <div class="zasdk-btncnt">\n <div id="zasdkattachinfo" class="zasdkattachinf">Maximum 5 attachments with a total file size of 10MB is allowed</div>\n <input type="file" id="zasdkFileInput" class="zasdk-file-input" multiple accept=".png, .jpg, .txt">\n <label id="zasdkAttachBtn" class="zasdk-btn zasdk-attach-btn" for="zasdkFileInput">\n <svg id="Layer_2" viewBox="0 0 24 24" style=" width: 25px; "><path d="M12,20.6c-2.63,0-4.78-2.14-4.78-4.78V6.78c0-1.87,1.52-3.38,3.38-3.38s3.38,1.52,3.38,3.38v9.04c0,1.1-.9,1.99-2,1.99s-1.99-.89-1.99-1.99V7.48c0-.33.27-.6.6-.6h0c.33,0,.6.27.6.6v8.35c0,.44.35.79.79.79s.79-.36.79-.79V6.78c0-1.2-.98-2.18-2.18-2.18s-2.18.98-2.18,2.18v9.04c0,1.97,1.6,3.58,3.58,3.58s3.58-1.6,3.58-3.58V6.78c0-.33.27-.6.6-.6s.6.27.6.6v9.04c0,2.63-2.14,4.78-4.78,4.78Z"/></svg>\n <span>Attachments</span>\n </label>\n <div id="zasdkfilesizeinfo" class="zasdkfilesizeinf"></div>\n <ul id="zasakfileList" class="zasakfilelstcnt"></ul>\n </div>\n </div>\n </div>\n <div class="zasdk-toggles-section">\n <div class="zasdk-toggle-row">\n <div class="zasdk-toggle-info">\n <span class="zasdk-toggle-label">Include System Logs</span>\n <span class="zasdk-view-link" id="zasdkViewLogsBtn">View</span>\n </div>\n <label class="zasdk-switch">\n <input type="checkbox" id="zasdkIncludeLogToggle">\n <span class="zasdk-slider"></span>\n </label>\n </div>\n <div class="zasdk-toggle-separator"></div>\n <div class="zasdk-toggle-row">\n <div class="zasdk-toggle-info">\n <span class="zasdk-toggle-label">Include Diagnostic Information</span>\n <span class="zasdk-view-link" id="zasdkViewDiagBtn">View</span>\n </div>\n <label class="zasdk-switch">\n <input type="checkbox" id="zasdkIncludeDiagToggle">\n <span class="zasdk-slider"></span>\n </label>\n </div>\n </div>\n <div class="zasdk_submit_btncnt">\n <div id="zasdksubmitstatus" class="zasdkstsmsg" style="display:none;" ></div>\n <div id="zasdk_submit_btnsubcnt" class="zasdk_submit_btnsubcnt">\n <input type="button" id="zasdk_submit_btn" class="zasdk-btn zasdk-send-btn zasdkbtndisableclr" value="Send">\n </div>\n </div>\n <div id="zasdkDataViewer" class="zasdk-data-viewer" style="display:none">\n <div class="zasdk-viewer-hdr">\n <span id="zasdkViewerClose" class="zasdk-viewer-back"><svg viewBox="0 0 24 24" width="20" height="20" fill="none"><path d="M15 19l-7-7 7-7" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span>\n <span id="zasdkViewerTitle" class="zasdk-viewer-title"></span>\n </div>\n <pre id="zasdkViewerContent" class="zasdk-viewer-content"></pre>\n </div>\n </div>',timerHtml:'<div id="zasdkrectimer" class="zasdk-timer-container zasdk-tooltip-container">\n <div class="zasdk-timer-control" id="zasdkRecordButton"><div class="zasdk-timer-stopcricle"></div></div>\n <span class="zasdk-timer-display" id="zasdkTimerDisplay">05:00</span>\n <div class="zasdk-tooltip-top">Stop Recording</div>\n </div>',uploadFileAry:[],fileInput:null,selectedFiles:null,isScaled:!1,isHidden:!1,timerDisplay:null,recordButton:null,TOTAL_TIME:300,remainingTime:300,isRecording:!1,timerInterval:null,uploadTotalSize:0,MaxFileSize:10485760,_opts:{},typeObj:{bug:0,feedback:1,help:2,report:3},init:function(e){if(ro._opts=e||{},!_(n=document.getElementById("zasdkFeedbackModal")))return;const t=document.createElement("div");ro.uploadFileAry=[],t.id="zasdkFeedbackModal",t.className="zasdk-modal",t.innerHTML=ro.feedbackUIHtml,document.body.appendChild(t);var n=document.getElementById("zasdkFeedbackModal"),r=z._defaultoptions,i=r.quartz_workspace_key,o=r.quartz_department_key,a=_(r.DC)||"-"===r.DC?"":{Local:"https://quartz.localzoho.com",US:"https://quartz.zoho.com",EU:"https://quartz.zoho.eu",IN:"https://quartz.zoho.in",AU:"https://quartz.zoho.com.au",CN:"https://quartz.zoho.com.cn",CA:"https://quartz.zohocloud.ca",JP:"https://quartz.zoho.jp",SA:"https://quartz.zoho.sa",AE:"https://quartz.zoho.ae"}[r.DC]||"",s=n.querySelector("#appticsfeedbackclose"),c=n.querySelectorAll(".zasdk-feedback-type");ro.fileInput=n.querySelector("#zasdkFileInput");var d=n.querySelector("#zasdkqz_rec_button"),u=n.querySelector("#zasdk_submit_btn"),l=n.querySelector("#zasdk_submit_btnsubcnt");const f=n.querySelector("#zasdkqz-consent"),p=n.querySelector("#zasdkqz-content"),g=n.querySelector("#preivewPlayButton"),m=n.querySelector("#videoEditButton"),v=n.querySelector("#videoDelButton"),h=n.querySelector("#zasdkFeedbackconatiner"),k=n.querySelector("#zasdkDescription");!function(e){var t=e.querySelector(".zasdk-header");if(t){var n=0,r=0,i=0,o=0,a=!1;t.addEventListener("mousedown",function(s){if(!s.target.closest(".zasdk-close")){if(!e.style.left||"auto"===e.style.left){var c=e.getBoundingClientRect();e.style.right="auto",e.style.bottom="auto",e.style.left=c.left+"px",e.style.top=c.top+"px"}a=!0,n=s.clientX,r=s.clientY,i=parseInt(e.style.left,10),o=parseInt(e.style.top,10),t.style.cursor="grabbing",s.preventDefault()}}),document.addEventListener("mousemove",function(t){if(a){var s=i+(t.clientX-n),c=o+(t.clientY-r);e.style.left=Math.max(0,Math.min(s,window.innerWidth-e.offsetWidth))+"px",e.style.top=Math.max(0,Math.min(c,window.innerHeight-e.offsetHeight))+"px"}}),document.addEventListener("mouseup",function(){a&&(a=!1,t.style.cursor="grab")})}}(h),Zi(n,!0===ro._opts.isAnonymous),Ji(n,ro._opts),ro.isScaled=!1,ro.isHidden=!1,document.removeEventListener("quartz-feedback-state",ro.bindQuartzEvent),document.addEventListener("quartz-feedback-state",ro.bindQuartzEvent),document.removeEventListener("quartz-feedback-error",ro.handleErrorQuartzEvent),document.addEventListener("quartz-feedback-error",ro.handleErrorQuartzEvent);var y=$i()&&!_(a)&&!_(i)&&"-"!==i&&!_(o)&&"-"!==o;if(n.querySelector("#zasdkreccheckcnt").style.display=y?"block":"none",h.addEventListener("transitionend",function(e){"transform"===e.propertyName&&ro.isScaled&&ro.toggleWindowAnimation()}),d.onclick=function(e){e.stopImmediatePropagation();let t={workspaceLinkName:i,departmentLinkName:o,recordingDomain:a};ro.handleStatusmsg(),$i()?_(i)||_(o)||_(a)?ro.handleStatusmsg(!1,"Screen recording is not configured for this app."):Xi().startRecording(t):ro.handleStatusmsg(!1,"Screen recording is unavailable on this page.")},s.onclick=function(){ro.close()},g.addEventListener("click",function(){Xi().previewVideo()}),m.addEventListener("click",function(){Xi().editVideo({quartzBranding:!1})}),v.addEventListener("click",function(){var e=document.getElementById("zasdkFeedbackModal");Xi().clearFeedback(),f.checked=!1,p.classList.remove("zasdkqz-show"),e.querySelector("#editRecordedVideo").style.display="none",e.querySelector("#zasdkreccheckcnt").style.display="block",ro.validateFeedbackField()}),u.addEventListener("click",async()=>{ro.validateFeedbackField(),u.disabled=!0,l.classList.add("zasdkbtndisabled"),u.value="";try{let e=n.querySelector("#previewVideoElemId");if(e&&null!==e.offsetParent)ro.submitRecording();else{let e=n.querySelector("#zasdkDescription").value.trim();e.length>0?eo(to(n,e,"")):ro.handleStatusmsg(!1,"Please provide more details for us to help you better.")}}catch(e){F.error("sendFeedbackData : "+e)}}),f.addEventListener("change",function(){this.checked?p.classList.add("zasdkqz-show"):p.classList.remove("zasdkqz-show")}),k.addEventListener("input",ro.validateFeedbackField),c.forEach(function(e){e.addEventListener("click",function(){c.forEach(function(e){e.classList.remove("zasdk-selected")}),this.classList.add("zasdk-selected")})}),"number"==typeof ro._opts.type){var b=Object.keys(ro.typeObj).filter(function(e){return ro.typeObj[e]===ro._opts.type})[0],S=b?n.querySelector('.zasdk-feedback-type[data-type="'+b+'"]'):null;S&&(c.forEach(function(e){e.classList.remove("zasdk-selected")}),S.classList.add("zasdk-selected"))}_(ro._opts.message)||(k.value=String(ro._opts.message),ro.updateLeftCount(),ro.validateFeedbackField()),ro.selectedFiles=no(),ro.fileInput.onchange=function(){const e=this;var t=ro.selectedFiles;if(null!==t){if(t.files.length+e.files.length>5)return ro.handleStatusmsg(!1,"Maximum 5 attachments is allowed"),ro.fileInput.files=t.files,void(e.files=t.files);if(e.files.length>0){let n=0;for(let r of e.files){if(n+=r.size,n>10485760)return ro.handleStatusmsg(!1,"Maximum limit reached. The total file size cannot exceed 10MB."),void(e.files=t.files);t.items.add(r)}e.files=t.files,ro.fileAttachment()}else t.files.length>0&&(e.files=t.files)}},ro.handleStatusmsg(),ro.updateLeftCount()},updateLeftCount:function(){document.querySelectorAll("[reqname]").forEach(function(e){let t=e.value,n=parseInt(e.getAttribute("maxlength")||"",10),r=e.parentElement?e.parentElement.querySelector(".zaleftcharcnt"):null;r&&(r.textContent=String(n-t.length))})},handleStatusmsg:function(e,t){var n=document.getElementById("zasdkFeedbackModal");if(!_(n)){var r=n.querySelector("#zasdksubmitstatus"),i=n.querySelector("#zasdk_submit_btn"),o=n.querySelector("#zasdk_submit_btnsubcnt"),a="",s="";r.style.display="none",_(e)||(a=e?"zasdkstssucs":"zasdkstserror",s=_(t)?"":t,r.textContent=s,r.classList.add(a),r.style.display="block",o.classList.remove("zasdkbtndisabled"),i.disabled=!1,i.value="Send")}},handleErrorQuartzEvent:function(e){let t=e.detail.error.name,n=e.detail.error.message;t!=Qi().ErrorType.RECORDING_INTERRUPTED&&t!=Qi().ErrorType.FEEDBACK_TIMEOUT||ro.stopRecording(),ro.handleStatusmsg(!1,n)},bindQuartzEvent:function(e){if(e.detail.feedbackState==Qi().FeedbackState.RECORDING_IN_PROGRESS){_(t=document.getElementById("zasdkrectimer"))||t.remove();const e=document.createElement("div");e.innerHTML=ro.timerHtml;const n=e.firstElementChild;document.body.appendChild(n);var t=document.getElementById("zasdkrectimer");ro.timerDisplay=t.querySelector("#zasdkTimerDisplay"),ro.recordButton=t,ro.TOTAL_TIME=300,ro.remainingTime=ro.TOTAL_TIME,ro.isRecording=!0,ro.recordButton.addEventListener("click",ro.toggleRecording),ro.startRecording(),ro.toggleWindowAnimation()}},close:function(){var e=document.getElementById("zasdkFeedbackModal");document.removeEventListener("quartz-feedback-state",ro.bindQuartzEvent),Xi().clearFeedback(),_(e)||e.remove()},toggleWindowAnimation:function(){var e=document.getElementById("zasdkFeedbackModal");const t=e.querySelector("#zasdkFeedbackconatiner");ro.isHidden?(e.style.display="block",setTimeout(()=>{t.style.transform="scale(1)",ro.validateFeedbackField()},10),ro.isHidden=!1,ro.isScaled=!1):ro.isScaled?(e.style.display="none",ro.isHidden=!0):(t.style.transform="scale(0)",ro.isScaled=!0)},fileAttachment:function(){var e=ro.fileInput.files;ro.uploadTotalSize=0,ro.MaxFileSize=10485760;var t=document.getElementById("zasdkFeedbackModal"),n=t.querySelector("#zasdkfilesizeinfo"),r=t.querySelector("#zasakfileList");if(n.textContent="",e.length>5)return ro.fileLimitExceeded(!1,!0),void ro.validateFeedbackField();if(r.innerHTML="",e.length>0){for(var i=0,o=0;o<e.length;o++){var a=e[o].name,s=a.substring(0,a.lastIndexOf(".")),c=a.substring(a.lastIndexOf(".")+1);i+=e[o].size;var d=ro.elementCreator("li");d.title=a;var u=ro.elementCreator("span");u.className="zaskFdBckFlName",u.innerText=s.length>10?s.slice(0,3)+"..."+s.slice(-3):s;var l=ro.elementCreator("span");l.innerText="."+c;var f=ro.elementCreator("span");f.className="zasdkFdBckFlCls",f.setAttribute("data-name",a),f.innerHTML="×",d.appendChild(u),d.appendChild(l),d.appendChild(f),r.appendChild(d)}var p=i>ro.MaxFileSize;ro.fileLimitExceeded(p),n.textContent=`${ro.formatFileSize(i)} Used / 10 MB`;const g=t.querySelectorAll(".zasdkFdBckFlCls");Array.from(g).forEach(function(e){e.addEventListener("click",function(){ro.handleStatusmsg(),ro.removeFileFromList(this),ro.fileAttachment()})})}ro.validateFeedbackField()},elementCreator:function(e){return document.createElement(e)},fileLimitExceeded:function(e,t){var n="";(t||e)&&(n=t?"Maximum 5 attachments is allowed":"Maximum limit reached. The total file size cannot exceed 10MB."),ro.handleStatusmsg(!1,n)},removeFileFromList:function(e){e.getAttribute("data-name");const t=e.parentElement,n=Array.from(t.parentElement.children).indexOf(t);t.remove();let r=no();if(ro.selectedFiles=no(),null!==r&&null!==ro.selectedFiles){for(let e=0;e<ro.fileInput.files.length;e++)e!==n&&(r.items.add(ro.fileInput.files[e]),ro.selectedFiles.items.add(ro.fileInput.files[e]));ro.fileInput.files=r.files}},formatFileSize:function(e){if(0===e)return"0 KB";const t=1024,n=e/t,r=e/(t*t),i=e/(t*t*t);return i>=1?i.toFixed(2)+" GB":r>=1?r.toFixed(2)+" MB":n.toFixed(2)+" KB"},toggleRecording:function(){ro.isRecording=!ro.isRecording,ro.isRecording?ro.startRecording():ro.stopRecording()},startRecording:function(){ro.timerInterval||(ro.timerInterval=setInterval(ro.updateTimer,1e3))},stopRecording:function(){var e=document.getElementById("zasdkFeedbackModal");clearInterval(ro.timerInterval||void 0),ro.timerInterval=null,document.querySelector("#zasdkrectimer").remove(),ro.toggleWindowAnimation(),e.querySelector("#editRecordedVideo").style.display="block",e.querySelector("#zasdkreccheckcnt").style.display="none";let t=e.querySelector("#previewVideoElemId");Xi().endRecording(),Xi().setVideoContent(t)},submitRecording:function(){var t=document.getElementById("zasdkFeedbackModal");let n=Hi.anonymous?"":String(Hi.userid||""),r=_(z._user_info.userid)?"":String(z._user_info.userid),i=_(n)?r:n,o=t.querySelector("#zasdkDescription").value.trim()||"-";i=/^[\w]([\w\-\.\+\'=]*)@([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,22}$/.test(i)&&Fe()==e.USAGE_TRACKING_WITH_PII?i:"user@example.com",Xi().submitRecording({email:i,subject:o}).then(e=>{var n=!k(e)&&e&&e.hasOwnProperty("feedbackLink")&&e.feedbackLink||"";eo(to(t,o,n))}).catch(e=>{F.error("submitRecording : "+e),ro.handleStatusmsg(!1,"Could not upload the recording. Please try again.")})},updateTimer:function(){ro.remainingTime>0?(ro.remainingTime--,ro.updateDisplay()):ro.stopRecording()},updateDisplay:function(){const e=Math.floor(ro.remainingTime/60),t=ro.remainingTime%60;ro.timerDisplay.textContent=`${e.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}`},validateFeedbackField:function(){ro.updateLeftCount();var e=document.getElementById("zasdkFeedbackModal");const t=e.querySelector("#zasdkDescription"),n=e.querySelector("#zasdkFileInput"),r=e.querySelector("#previewVideoElemId"),i=e.querySelector("#zasdk_submit_btn"),o=t&&""!==t.value.trim()&&t.value.trim().length>0;n&&n.files&&n.files.length,r&&r.offsetParent;const a=e.querySelectorAll(".zasdkmaxerror");!(ro.getVisibleErrorCount(a)>0)&&o?(i.classList.remove("zasdkbtndisableclr"),ro.handleStatusmsg()):i.classList.add("zasdkbtndisableclr")},getVisibleErrorCount:function(e){return Array.from(e).filter(e=>null!==e.offsetParent).length}},io={feedbackOpen:W("feedbackOpen",function(e,t,n,r,i,o,a){const s={includeLog:!0===n,includeDyninfo:!0===r,isAnonymous:!0===a};"number"==typeof e&&(s.type=e),"string"==typeof t&&t.length>0&&(s.message=t),i&&i.length>0&&(s.attachments=i),o&&o.length>0&&(s.logFiles=o),ro.init(s)}),feedbackClose:W("feedbackClose",function(){ro.close()}),sendFeedback:W("sendFeedback",function(...e){return Hr().then(function(t){if(!t)throw new Error("apptics.sendFeedback: not sent, the SDK has not started; call init() first");return function(e,t,n,r,i,o){return eo({type:_(e)?1:e,message:t||"",attachment:n||null,logsFiles:r||null,includeDyninfo:i,includeLog:o,quartzid:""}).then(function(e){if(!e)throw new Error("apptics.sendFeedback: not sent, the browser is offline or Apptics is disabled for this client");if(!e.ok)throw new Error("apptics.sendFeedback: not sent, "+e.message)})}(...e)}).catch(function(e){throw F.error("apptics.sendFeedback failed:",e),e})})};var oo=!1,ao=0,so=[],co=0,uo=0,lo=0,fo=null,po=0,go=0;function mo(){var e=T("heatmap_max_per_session");return("number"!=typeof e||e<=0)&&(e=c.heatmap_max_per_session),!(ao>=e)||(ao===e&&(ao++,F.log("apptics.heatmap: reached "+e+" records for this session, pausing capture")),!1)}function vo(){var e=document.documentElement,t=document.body;return Math.max(e?e.scrollHeight:0,t?t.scrollHeight:0,e?e.clientHeight:0)}function ho(e,t){if(!t||t<=0)return 0;var n=e/t;return n<0&&(n=0),n>1&&(n=1),Math.round(1e3*n)/1e3}function _o(t){if(!t)return"";for(var n=["data-ap-label","apeventaction","aria-label","name","id","title"],r=0;r<n.length;r++){var i=t.getAttribute?t.getAttribute(n[r]):null;if(!_(i))return String(i).slice(0,80)}var o=t.tagName?t.tagName.toLowerCase():"element";if(Ze()!==e.USAGE_TRACKING_WITH_PII){var a=t.getAttribute?t.getAttribute("role"):null;return _(a)?o:o+"["+a+"]"}var s=(t.textContent||"").replace(/\s+/g," ").trim();return _(s)?o:s.slice(0,80)}function ko(e){if(!e)return 0;for(var t="",n=e,r=0;n&&r<12;){var i=n.parentElement,o=0;if(i)for(var a=i.children,s=0;s<a.length;s++)if(a[s]===n){o=s;break}t="/"+(n.tagName||"?")+":"+o+t,n=i,r++}for(var c=2166136261,d=0;d<t.length;d++)c=16777619*(c^=t.charCodeAt(d))>>>0;return c}function yo(e,t,n){return(so=so.filter(function(e){return n-e.at<=1e3})).push({at:n,x:e,y:t}),so.filter(function(n){return Math.abs(n.x-e)<=30&&Math.abs(n.y-t)<=30}).length>=3}function bo(){return{id:A(),session_start_time:z._current_session.starttime||v(),triggered_time:v(),screen:String(Wn()).slice(0,500),url_path:String(window.location.pathname).slice(0,500),screen_width:window.screen?window.screen.width:0,screen_height:window.screen?window.screen.height:0,content_height:vo(),orientation:Re(),network_status:De(),edge_type:z._device_info.connectionType||Ce(),scroll_offset_x:Math.round(window.scrollX||window.pageXOffset||0),scroll_offset_y:Math.round(window.scrollY||window.pageYOffset||0)}}function So(e){ao++,Oe(),Yt(),ye.add(e),F.dir(e)}function wo(e){if(Ve("heatmap")&&mo())try{var t=v(),n=e.target,r=function(e){for(var t=0;e&&t<10;){var n=e.tagName?e.tagName.toLowerCase():"",r=e.getAttribute?e.getAttribute("role"):null;if("a"===n||"button"===n||"input"===n||"select"===n||"textarea"===n||"summary"===n||"label"===n||"button"===r||"link"===r||"tab"===r||"menuitem"===r||e.hasAttribute&&e.hasAttribute("onclick"))return e;e=e.parentElement,t++}return null}(n),i=r||n,a=Math.round(e.clientX),s=Math.round(e.clientY),c=vo()||1,d=e.pointerType,u=Object.assign(bo(),{triggered_type:"default",gesture_type:"click",gesture_duration:0,input_type:_(d)?"mouse":String(d),element_label:_o(i),triggered_id:ko(i),coordinate_x:a,coordinate_y:s,normalized_x:ho(a,window.innerWidth||(document.documentElement?document.documentElement.clientWidth:0)||1),normalized_y:ho((window.scrollY||0)+s,c),velocity:0,is_clickable:r?1:0,is_rage_click:yo(a,s,t)?1:0,is_dead_click:0});So(u),function(e){if(1===e.is_clickable||"function"!=typeof MutationObserver)return;var t=!1,n=window.location.href,r=new MutationObserver(function(){t=!0});try{r.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0})}catch(e){return}setTimeout(function(){r.disconnect(),t||window.location.href!==n||(e.is_dead_click=1,ye.update(e))},1500)}(u)}catch(e){B(o.HEATMAP,"apptics.heatmap: click capture failed: "+String(e))}}function Eo(){Ve("heatmap")&&mo()&&(null===fo?(co=v(),uo=po,lo=go):clearTimeout(fo),fo=setTimeout(Ao,150))}function Ao(){fo=null;try{var e=Math.round(window.scrollX||0),t=Math.round(window.scrollY||0),n=e-uo,r=t-lo;if(po=e,go=t,0===n&&0===r)return;var i=Math.max(1,v()-co),a=Math.sqrt(n*n+r*r),s=Math.abs(r)>=Math.abs(n)?r>0?"down-scroll":"up-scroll":n>0?"right-scroll":"left-scroll",c=vo()||1;So(Object.assign(bo(),{triggered_type:"default",gesture_type:s,gesture_duration:Math.round(i),element_label:"",triggered_id:0,coordinate_x:e,coordinate_y:t,normalized_x:0,normalized_y:ho(t+(window.innerHeight||0),c),velocity:Math.round(a/i*1e3),is_clickable:0,is_rage_click:0,is_dead_click:0}))}catch(e){B(o.HEATMAP,"apptics.heatmap: scroll capture failed: "+String(e))}}function zo(e){var t="boolean"!=typeof e||e;if(t!==oo){if(t)return po=Math.round(window.scrollX||0),go=Math.round(window.scrollY||0),window.addEventListener("pointerdown",wo,{capture:!0,passive:!0}),window.addEventListener("scroll",Eo,{capture:!0,passive:!0}),oo=!0,void F.log("apptics.heatmap: capturing clicks and scrolls");window.removeEventListener("pointerdown",wo,!0),window.removeEventListener("scroll",Eo,!0),null!==fo&&(clearTimeout(fo),fo=null),oo=!1,F.log("apptics.heatmap: capture stopped")}}P.enableHeatmap=zo,P.resetHeatmap=function(){ao=0,so=[],po=0,go=0},P.sendHeatmaps=function e(t){return!je()&&Ue()&&z._heatmapTracking?0==navigator.onLine?(F.warn("sendHeatmapData: No Network"),Promise.resolve()):z._sending?(dr(e),Promise.resolve()):(z._sending=!0,ur(),lr("heatmaps",function(){return fr(ye,function(){return!0},function(e){return e.triggered_time||e.session_start_time}).then(function(e){if(0!=e.length){var n=[],r=[];return S(e).forEach(function(e){r.push({...e}),delete e.id,n.push(e)}),gr(function(e,t){return pr("heatmap","requestToSendHeatmaps",e,t)}({data:n},t).then(function(){return ye.remove(r)},function(e){return ot(e)?(U("apptics: the server refused these heatmap records, so they were dropped: "+String(e&&e.message)),ye.remove(r)):Promise.reject(e)}),t,"sendHeatmapData")}})}).catch(function(e){F.log("sendHeatmapData:"+e)}).then(function(){z._sending=!1})):Promise.resolve()};const To={enableHeatmap:W("enableHeatmap",zo)},Oo="remoteconfig_custom";var Po={};function Io(){var e=we.item(Oo);return e&&"object"==typeof e?e:{}}const Co=Object.freeze({1:"in"}),Do=Object.freeze({appversion:function(){return String(z._defaultoptions.appversion||"")},platform:function(){return String(z._platform||"")},browser:function(){return String(z._device_info.browser||"")},browserversion:function(){return String(z._device_info.browserversion||"")},osversion:function(){return String(z._device_info.osversion||"")},devicetype:function(){return String(z._device_info.devicetype||"")},language:function(){return String(navigator.language||"")},customergroupid:function(){return String(z._user_info.groupid||"")},userid:function(){return String(z._user_info.userid||"")}});var No={};function Ro(e,t){No[e]||(No[e]=!0,F.warn(t))}function Lo(){No={}}function xo(e){var t=String(e.key||"");if(void 0===Co[String(e.status)])return Ro("op:"+e.status,'AppticsRemoteConfig: unknown criteria operator "'+e.status+'", so conditions using it will not match'),!1;var n=Do[t],r=void 0!==n?n():function(e){if(Object.prototype.hasOwnProperty.call(Po,e)){var t=Po[e];return null===t?void 0:t}var n=Io();return Object.prototype.hasOwnProperty.call(n,e)?n[e]:void 0}(t);return void 0===r?(Ro("key:"+t,'AppticsRemoteConfig: no value for criteria "'+t+'"; set one with setCustomConditionValue, or conditions using it will not match'),!1):""!==r&&-1!==function(e){var t=e.value;return Array.isArray(t)?t.map(function(e){return String(e)}):_(t)?[]:[String(t)]}(e).indexOf(r)}function qo(e){var t=e&&e.criterias;if(!Array.isArray(t)||0===t.length)return!1;for(var n=0;n<t.length;n++)if(!xo(t[n]))return!1;return!0}function jo(e,t){for(var n=function(e){var t=e.conditions;return Array.isArray(t)?t.slice().sort(function(e,t){return Number(e.conditionorder||0)-Number(t.conditionorder||0)}):[]}(e),r=0;r<n.length;r++){var i=n[r],o=t[String(i.conditionid)];if(void 0!==o){if(qo(o))return String(void 0===i.value||null===i.value?"":i.value)}else Ro("missing:"+i.conditionid,'AppticsRemoteConfig: parameter "'+e.paramname+'" uses condition '+i.conditionid+", which the server did not send")}return String(void 0===e.defaultvalue||null===e.defaultvalue?"":e.defaultvalue)}function Mo(e){var t={},n=Array.isArray(e.all_parameter)?e.all_parameter:[],r=Array.isArray(e.all_condition)?e.all_condition:[],i={};return r.forEach(function(e){i[String(e.conditionid)]=e}),n.forEach(function(e){var n=String(e.paramname||"");""!==n&&(t[n]=jo(e,i))}),t}const Fo="remoteconfig";var Uo={},Bo=!1;function Ho(){var e=we.item(Fo);return e&&"object"==typeof e?e:null}function Vo(){var e=Ho();return e&&"number"==typeof e.flagtime?e.flagtime:0}function Go(e){var t=Array.isArray(e.version)?e.version:[],n=0;return t.forEach(function(e){var t=Number(e.date);isFinite(t)&&t>n&&(n=t)}),n}function Zo(){var e=Ho();Uo=e&&e.rules?Mo(e.rules):{},Bo=!0}function Wo(){return Bo||Zo(),Uo}const Jo="AppticsRemoteConfig",Ko=[Number(a.REMOTE_CONFIG)];var Yo=null,$o=0;var Xo=0,Qo=[];function ea(){if(null!==Yo)return Yo;if(!1===z._remoteConfigEnabled||!1===z._remoteConfigReported)return F.log(Jo+": switched off by the server, not asking"),Promise.resolve({});var e=lt(Jo)||pt(Jo);if(e)return e;var t,n,r=$o,i=st("getupdates",(t={appversionid:String(z._device_info.appversionid||""),moduleids:Ko,flagtime:Vo()},n=String(navigator.language||"").slice(0,10),""!==n&&(t.languagecode=n),JSON.stringify(t)),rt(),Jo).then(function(e){var t=e.data||{};if(r!==$o)return t;!function(e){var t=e.tracking_status;if(t&&"object"==typeof t){var n=t[a.REMOTE_CONFIG];n&&"object"==typeof n&&(z._remoteConfigReported=!1!==n.enabled)}}(t);var n=t.remoteconfig,i=v();return Xo=i,n&&"object"==typeof n?function(e,t){Lo();var n={flagtime:Go(e)||t,rules:e,fetchedat:t};we.add(Fo,n),Uo=Mo(e),Bo=!0,F.log("AppticsRemoteConfig: "+Object.keys(Uo).length+" parameters, published "+n.flagtime)}(n,i):(!function(e){var t=Ho();null!==t&&(t.fetchedat=e,we.add(Fo,t))}(i),F.log(Jo+": no changes since "+Vo())),t}).then(function(e){return o(),e},function(e){return o(),Promise.reject(e)});function o(){Yo===i&&(Yo=null)}return Yo=i}function ta(e){return Hr().then(function(t){if(!t)return!1;var n=v();if(!0!==e&&Xo>0&&n-Xo<3e5)return!0;if(!0===e){if((Qo=Qo.filter(function(e){return n-e<6e4})).length>=3)return F.warn(Jo+": coldFetch is limited to 3 a minute; this one is not sent"),!1;Qo.push(n)}return Ct().then(function(){return ea()}).then(function(){return!0},function(e){return F.log(Jo+": fetch failed: "+String(e)),!1})})}function na(){ta(!1)}function ra(e){var t=Wo();return Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0}P.resetRemoteConfig=function(){$o++,Yo=null,Xo=0,Qo=[],z._remoteConfigReported=!0,Po={},we.add(Fo,void 0),Uo={},Bo=!1,Lo()},P.remoteConfigStarted=na,P.remoteConfigUserChanged=Zo,z._ready&&na();var ia=!0;function oa(e,t){if("function"==typeof t)try{t(e)}catch(e){F.warn("AppticsRemoteConfig: the callback threw",e)}return e}const aa={fetchValue:W("AppticsRemoteConfig.fetchValue",function(e,t,n){return ta(n).then(function(n){var r=n||ia?ra(e):void 0;return oa(void 0===r?null:r,t)})}),fetchValues:W("AppticsRemoteConfig.fetchValues",function(e,t,n){return ta(n).then(function(n){var r={};return Object.keys(e||{}).forEach(function(t){var i=n||ia?ra(t):void 0;r[t]=void 0===i?e[t]:i}),oa(r,t)})}),setFallbackWithOfflineValue:W("AppticsRemoteConfig.setFallbackWithOfflineValue",function(e){ia="boolean"!=typeof e||e}),setCustomConditionValue:W("AppticsRemoteConfig.setCustomConditionValue",function(e,t){var n="string"==typeof e?e.trim():"";if(""!==n){var r=null==t?"":String(t).trim();Po[n]=""===r?null:r,ge().then(function(e){if(e){var t=Io();Object.keys(Po).forEach(function(e){var n=Po[e];null==n?delete t[e]:t[e]=n}),we.add(Oo,t),Zo()}})}else F.warn("AppticsRemoteConfig.setCustomConditionValue: a condition key is required")})};!function(e){try{if(!e||"undefined"==typeof document)return;for(var t=new URL("style.css",e).href,n=document.querySelectorAll('link[rel="stylesheet"]'),r=0;r<n.length;r++)if(n[r].href===t)return;var i=document.createElement("link");i.rel="stylesheet",i.href=t,i.setAttribute("data-apptics","style"),(document.head||document.documentElement).appendChild(i)}catch(e){}}(document.currentScript?document.currentScript.src:null);const sa=Object.assign(Li,io,To,{AppticsRemoteConfig:aa});window.apptics=sa,window.Apptics=sa.Apptics,window.AppticsEvents=sa.AppticsEvents,window.AppticsScreenTracker=sa.AppticsScreenTracker,window.AppticsApiTracker=sa.AppticsApiTracker,window.AppticsLogger=sa.AppticsLogger,window.AppticsTrackError=sa.AppticsTrackError,window.AppticsSetUser=sa.AppticsSetUser,window.AppticsRemoteConfig=aa,ai(sa.Apptics)}();
|
|
1
|
+
/*! @zoho_apptics/apptics-js-sdk v2.0.0-beta.1 | (c) Zoho Corporation Private Limited | see LICENSE */
|
|
2
|
+
!function(){"use strict";const e=Object.freeze({USAGE_TRACKING_WITH_PII:1,USAGE_TRACKING_WITHOUT_PII:4,NO_TRACKING:-1}),t=Object.freeze({BUG:0,FEEDBACK:1,HELP:2,REPORT:3}),n=Object.freeze({SCREEN:"screen",SESSION:"session",EVENT:"event",API:"api",ERROR:"error",SUCCESS:"success",BROWSER:"Browser"}),r=Object.freeze({addversion:"app/addversion",regdevice:"device/add",reguser:"user/register",engagement:"engagement/add",error:"exception/error",feedback:"feedback/add",sdkconfig:"getsdkconfig",getupdates:"getupdates",consolelog:"log/add",heatmap:"heatmap/add"}),i=Object.freeze({addversion:"v2",regdevice:"v2",engagement:"v2",error:"v2",reguser:"v2",feedback:"v2",sdkconfig:"v2",getupdates:"v2",consolelog:"v2",heatmap:"v2"}),a=Object.freeze({SESSION:"Session",SCREEN:"Screen",EVENT:"Event",API:"API",HEATMAP:"Heatmap",PROPERTIES:"Properties"}),o=Object.freeze({REMOTE_CONFIG:"2",SESSION:"11",FEEDBACK:"12",CRASH:"13",REMOTE_LOGGER:"17",HEATMAP:"18"}),s=36e5,c=Object.freeze({endpoint:"/sdk/web/",method:"POST",transport:"XHR",track_link_timeout:300,cookie_expiration_days:365,storage_type:"localStorage",enable_batch_requests:!0,batch_size:50,batch_flush_interval:3e4,getupdates_interval:12e4,batch_request_timeout:7,auto_starts_batch:!0,mode:1,default_group_name:"default",default_optin_status:e.USAGE_TRACKING_WITHOUT_PII,enable_pageview_tracking:!1,save_referrer:!0,debug:!1,track_by_default:!0,ignore_do_not_track:!1,track_api:!1,track_screen:!0,screen_routes:[],feedback_theme:"auto",min_session_duration:5e3,track_heatmap:!1,debug_api:!1,device_name:"",heatmap_max_per_session:500}),d=Object.freeze(["base_url","auth_key","app_domain","appversion"]),u=Object.freeze({base_url:"serviceUrl",auth_key:"zak",app_domain:"identifier"}),l=Object.freeze({engagement:!0,error:!0,consolelog:!0}),p=Object.freeze({regdevice:!0,reguser:!0,engagement:!0,error:!0,heatmap:!0,consolelog:!0,feedback:!0,getupdates:!0}),f=Object.freeze({addversion:!0}),g=Object.freeze({serviceUrl:"base_url",base_domain:"base_url",zak:"auth_key",token:"auth_key",identifier:"app_domain"}),m=Object.freeze(["ahrefsbot","ahrefssiteaudit","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandexbot","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"]),h={};function v(){return Math.round((new Date).getTime())}function k(e){return!!e&&"object"==typeof e&&e.result==n.SUCCESS}function _(e){return null==e||""===e}function b(e){return!!e&&"object"==typeof e&&0===Object.keys(e).length&&e.constructor===Object}function y(e,t){return JSON.stringify(e)===JSON.stringify(t)}function z(e,t){const n={};for(let key in e)t.includes(key)||(n[key]=e[key]);return n}function A(e){return JSON.parse(JSON.stringify(e))}function w(e){let t=0;return function e(value){if(null!==value&&"object"==typeof value)for(const key in value)Object.prototype.hasOwnProperty.call(value,key)&&(t+=2*key.length,e(value[key]));else"string"==typeof value?t+=2*value.length:"number"==typeof value?t+=8:"boolean"==typeof value&&(t+=4)}(e),t}function S(e,t){return-1!==e.indexOf(t)}function E(){var e=function(){for(var e=Date.now(),t=0;e==Date.now();)t++;return e.toString(16)+t.toString(16)},t=(screen.height*screen.width).toString(16);return e()+"-"+Math.random().toString(16).replace(".","")+"-"+function(){var e,t,n=navigator.userAgent,r=[],i=0;function a(e,t){var n,i=0;for(n=0;n<t.length;n++)i|=r[n]<<8*n;return e^i}for(e=0;e<n.length;e++)t=n.charCodeAt(e),r.unshift(255&t),r.length>=4&&(i=a(i,r),r=[]);return r.length>0&&(i=a(i,r)),i.toString(16)}()+"-"+t+"-"+e()}const x={_initialised:!1,_ready:!1,_pending:[],_readyPromise:null,_regDeviceSending:!1,_regDeviceResolve:[],_regDeviceReject:[],_sending:!1,_deferSendTimer:null,_config:{...c},_defaultoptions:{},inactiveduration:30,_token:"",_frameworkID:6002,_platform:n.BROWSER,_isanonrequired:!0,_devicestatus:e.USAGE_TRACKING_WITHOUT_PII,_uuid:"",_apid:"",_mapid:"",_device_info:{},_user_info:{},_current_screen:{},_current_session:{},_properties:{},_ignoreDnt:!1,_isGlobalErrorTracking:!0,_shouldTrack:!0,_engagementTracking:!0,_heatmapTracking:!0,_remoteLoggerEnabled:!0,_remoteConfigEnabled:!0,_remoteConfigReported:!0,_feedbackEnabled:!0,_nextConfigCheck:0,_debugUntil:0,_errorTracking:!0,_quartz:{enabled:!1,workspace:"",department:"",domain:"",cdnUrl:""},_trackinfo:{}};function P(key){return x._config[key]}function T(e){return!("number"!=typeof e||!isFinite(e))&&(e<v()-24*P("batch_request_timeout")*60*60*1e3||e>v()+6e4)}const O="undefined"!=typeof console?console:null;function I(method){return function(...e){if(x._config.debug&&O)try{O[method].apply(O,e)}catch(t){!function(e,t,n){if(null!=e)if(Array.prototype.forEach&&e.forEach===Array.prototype.forEach)e.forEach(t,n);else if(e.length===+e.length){for(var r=0,i=e.length;r<i;r++)if(r in e&&t.call(n,e[r],r,e)===h)return}else for(var key in e)if(Object.prototype.hasOwnProperty.call(e,key)&&t.call(n,e[key],key,e)===h)return}(e,function(e){O[method](e)})}}}const C={log:I("log"),warn:I("warn"),error:I("error"),info:I("info"),dir(e){x._config.debug&&O&&O.dir(e)}};function R(...e){O&&O.warn(...e)}function N(e,...t){C.error.apply(null,t)}const M={"Apptics.init":!0,"Apptics.ready":!0,"Apptics.reset":!0,"AppticsUser.getUser":!0,"AppticsSettings.getTrackingStatus":!0,"AppticsFeedback.sendFeedback":!0,"AppticsFeedback.addFeedbackLog":!0,"AppticsFeedback.addDiagnosticsInfo":!0,"AppticsFeedback.setFeedbackTheme":!0,"AppticsApi.configure":!0,"AppticsApi.startTrackApi":!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0,"AppticsRemoteConfig.setCustomConditionValue":!0,"Apptics.enableDebug":!0,"Apptics.disableDebug":!0},L={"AppticsEvent.addEvent":!0,"AppticsScreen.inScreen":!0,"AppticsScreen.outScreen":!0,"AppticsApi.endTrackApi":!0,"AppticsError.trackError":!0,"AppticsUser.setUser":!0,"Apptics.flush":!0,AppticsLogger:!0,"AppticsFeedback.sendFeedback":!0,"AppticsRemoteConfig.fetchValue":!0,"AppticsRemoteConfig.fetchValues":!0};function q(name){return 0===name.indexOf("Apptics")?name:"apptics."+name}var D=!1;function F(name,e){const t=function(...n){if(x._initialised||!L[name]||D||(D=!0,R(q(name)+": the SDK has not started, so this call is ignored. Call Apptics.init() first, and check its warnings if you did.")),!x._initialised||x._ready||M[name])try{return e(...n)}catch(e){return R(q(name)+" failed:",e),void N(0,e)}else x._pending.push(function(){t(...n)})};return t}function j(e,t){return e.apply(null,Array.prototype.slice.call(t))}const B="apptics",U=["engagements","errors","feedbacklogs","remotelogs","heatmaps"],H="queue",G="seq",V=[["logs","feedbacklogs"],["consolelogs","remotelogs"]],K="feedbacklog",W="feedbackdiagnostics",Z=Object.freeze({log:K,diagnostics:W});function J(e){var t=e&&"string"==typeof e.type?Z[e.type]:void 0;return t?{...e,type:t}:e}const Y=Object.freeze({settings:"apptics-device-info",engagements:"apptics-engagements-transactions",errors:"apptics-errors-transactions",logs:"apptics-log-transactions",consolelogs:"apptics-consolelog-transactions"}),Q=Object.freeze({settings:Y.settings,engagements:Y.engagements,errors:Y.errors,feedbacklogs:"apptics-feedbacklog-transactions",remotelogs:"apptics-remotelog-transactions",heatmaps:"apptics-heatmap-transactions"});function $(value){return Array.isArray(value)?value:[]}function X(value){return value&&"object"==typeof value&&!Array.isArray(value)?value:{}}function ee(key){try{const e=localStorage.getItem(key);return null===e||""===e?null:JSON.parse(e)}catch(e){return C.warn("apptics: could not read "+key+", treating it as empty"),null}}function te(key,value){try{localStorage.setItem(key,JSON.stringify(value))}catch(e){C.warn("apptics: could not write "+key+": "+String(e))}}function ne(){return[[Y.logs,Q.feedbacklogs],[Y.consolelogs,Q.remotelogs]].forEach(function(e){try{var t=e[0],n=e[1],r=localStorage.getItem(t);if(null===r)return;if(null===localStorage.getItem(n)){var i=$(JSON.parse(r));localStorage.setItem(n,JSON.stringify(n===Q.feedbacklogs?i.map(J):i))}localStorage.removeItem(t)}catch(e){}}),{kind:"localstorage",loadSettings:()=>Promise.resolve(X(ee(Q.settings))),putSetting(key,value){const e=X(ee(Q.settings));return e[key]=value,te(Q.settings,e),Promise.resolve()},deleteSetting(key){const e=X(ee(Q.settings));return delete e[key],te(Q.settings,e),Promise.resolve()},clearSettings:()=>(te(Q.settings,{}),Promise.resolve()),queueAll:e=>Promise.resolve($(ee(Q[e]))),queuePut(e,t){const n=$(ee(Q[e]));return t.forEach(function(e){const t=n.findIndex(function(t){return t.id===e.id});-1===t?n.push(e):n[t]=e}),te(Q[e],n),Promise.resolve()},queueDelete(e,t){const n=$(ee(Q[e])).filter(function(e){return-1===t.indexOf(e.id)});return te(Q[e],n),Promise.resolve()},queueClear:e=>(te(Q[e],[]),Promise.resolve())}}let re=0;function ie(){const e=1e3*v();return re=e>re?e:re+1,re}function ae(e){return new Promise(function(t,n){e.onsuccess=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function oe(e){return new Promise(function(t,n){e.oncomplete=function(){t()},e.onerror=function(){n(e.error)},e.onabort=function(){n(e.error)}})}const se=Object.freeze({engagements:"engagement",errors:"error",feedbacklogs:K,remotelogs:"remotelog",heatmaps:"heatmap"});function ce(e,t){return t&&"string"==typeof t.type&&""!==t.type?t.type:se[e]||e}function de(e,t,n){const id=String(t.id),r=e.get(id);r.onsuccess=function(){const i=r.result;i&&n||e.put({id:id,queue:i?i.queue:ie(),type:ce(e.name,t),item:t})}}function ue(e){return e.objectStoreNames.contains("settings")&&U.every(function(name){return e.objectStoreNames.contains(name)})}function le(e=indexedDB,t=3e3){return pe(e,t).then(function(n){return ue(n)?n:(C.warn('apptics: the "'+B+'" database is missing its stores, recreating it'),n.close(),function(e){return new Promise(function(t){var n=e.deleteDatabase(B);n.onsuccess=function(){t()},n.onerror=function(){t()},n.onblocked=function(){t()}})}(e).then(function(){return pe(e,t)}).then(function(e){if(!ue(e))throw e.close(),new Error("indexedDB: stores could not be created");return e}))})}function pe(e,t){return new Promise(function(n,r){let i=!1;const a=function(e){i||(i=!0,clearTimeout(o),r(e))},o=setTimeout(function(){a(new Error("indexedDB open timed out"))},t);let s;try{s=e.open(B,4)}catch(e){return void a(e)}s.onupgradeneeded=function(){!function(e,t){e.objectStoreNames.contains("settings")||e.createObjectStore("settings");U.forEach(function(name){e.objectStoreNames.contains(name)||e.createObjectStore(name,{keyPath:"id"}).createIndex(H,H)}),U.forEach(function(name){const e=t.objectStore(name);e.indexNames.contains(G)&&(e.deleteIndex(G),e.indexNames.contains(H)||e.createIndex(H,H),fe(e,function(e,t){t.update(ge(e,!1,name))}))}),V.forEach(function(n){const r=n[0],i=n[1];if(!e.objectStoreNames.contains(r))return;const a=t.objectStore(r),o=t.objectStore(i);fe(a,function(e){o.put(ge(e,"feedbacklogs"===i,i))},function(){e.deleteObjectStore(r)})})}(s.result,s.transaction)},s.onsuccess=function(){i?s.result.close():(i=!0,clearTimeout(o),s.result.onversionchange=function(){C.warn("apptics: another tab is upgrading the database, closing this connection"),s.result.close()},n(s.result))},s.onerror=function(){a(s.error)},s.onblocked=function(){C.warn("apptics: waiting for another tab to release the database")}})}function fe(e,t,n){const r=e.openCursor();r.onsuccess=function(){const e=r.result;e?(t(e.value,e),e.continue()):n&&n()}}function ge(e,t,n){const r="number"==typeof e[H]?e[H]:"number"==typeof e[G]?e[G]:ie(),i=t?J(e.item):e.item;return{id:String(e.id),queue:r,type:ce(n,i),item:i}}function me(e){return{kind:"indexeddb",loadSettings(){const t=e.transaction("settings","readonly").objectStore("settings");return Promise.all([ae(t.getAllKeys()),ae(t.getAll())]).then(function([e,t]){const n={};return e.forEach(function(key,e){n[String(key)]=t[e]}),n})},putSetting(key,value){const t=e.transaction("settings","readwrite");return t.objectStore("settings").put(value,key),oe(t)},deleteSetting(key){const t=e.transaction("settings","readwrite");return t.objectStore("settings").delete(key),oe(t)},clearSettings(){const t=e.transaction("settings","readwrite");return t.objectStore("settings").clear(),oe(t)},queueAll:t=>ae(e.transaction(t,"readonly").objectStore(t).index(H).getAll()).then(function(e){return e.map(function(e){return e.item})}),queuePut(t,n){const r=e.transaction(t,"readwrite"),i=r.objectStore(t);return n.forEach(function(e){de(i,e,!1)}),oe(r)},queueDelete(t,n){const r=e.transaction(t,"readwrite"),i=r.objectStore(t);return n.forEach(function(id){i.delete(id)}),oe(r)},queueClear(t){const n=e.transaction(t,"readwrite");return n.objectStore(t).clear(),oe(n)},importAll(t,n){const r=e.transaction(["settings"].concat(U),"readwrite"),i=r.objectStore("settings");return Object.keys(t).forEach(function(key){const e=i.get(key);e.onsuccess=function(){void 0===e.result&&i.put(t[key],key)}}),U.forEach(function(name){const e=r.objectStore(name);n[name].forEach(function(t){de(e,t,!0)})}),oe(r)}}}function he(){const e=function(e){return C.warn("apptics: IndexedDB unavailable ("+String(e)+"), using localStorage"),function(){try{const e="__apptics_probe__";return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch(e){return!1}}()?ne():null};let t;try{t="undefined"!=typeof indexedDB?indexedDB:void 0}catch(e){t=void 0}return t?le(t).then(me,e):Promise.resolve(e("not supported"))}var ve=null,ke={};function _e(e,t,n){return be().then(function(e){return e?n(e):t}).catch(function(n){return C.warn("apptics: storage "+e+" failed: "+String(n)),t})}function be(){return ve||(ve=he().then(function(e){return e?function(e){if("indexeddb"!==e.kind||!e.importAll)return Promise.resolve();var t;try{t={settings:localStorage.getItem(Y.settings),engagements:localStorage.getItem(Y.engagements),errors:localStorage.getItem(Y.errors),logs:localStorage.getItem(Y.logs),consolelogs:localStorage.getItem(Y.consolelogs)}}catch(e){return Promise.resolve()}if(null===t.settings&&null===t.engagements&&null===t.errors&&null===t.logs&&null===t.consolelogs)return Promise.resolve();var n=function(e){try{return null===e?null:JSON.parse(e)}catch(e){return null}},r={engagements:$(n(t.engagements)),errors:$(n(t.errors)),feedbacklogs:$(n(t.logs)).map(J),remotelogs:$(n(t.consolelogs)),heatmaps:[]};r.engagements.concat(r.errors,r.feedbacklogs,r.remotelogs).forEach(function(e){e.id||(e.id=E())});var i=e.importAll.bind(e);return Promise.resolve().then(function(){return i(X(n(t.settings)),r)}).then(function(){Object.values(Y).forEach(function(key){try{localStorage.removeItem(key)}catch(e){}}),C.log("apptics: moved 1.x data from localStorage to IndexedDB")}).catch(function(e){C.warn("apptics: 1.x data migration failed, will retry next load: "+String(e))})}(e).then(function(){return e.loadSettings()}).then(function(t){return ke=Object.assign({},t,ke),function(){var e=ke.device_info&&"object"==typeof ke.device_info?ke.device_info:null;void 0===ke.uuid&&void 0===ke.hadsession||(_((e=Object.assign({},e||{})).uuid)&&!_(ke.uuid)&&(e.uuid=ke.uuid),!0===ke.hadsession&&(e.hadsession=!0),Te("device_info",e),Te("uuid",void 0),Te("hadsession",void 0));if(void 0!==ke.tracking_status){var t=Object.assign({},ke.trackinfo&&"object"==typeof ke.trackinfo?ke.trackinfo:{});void 0===t.tracking_status&&(t.tracking_status=ke.tracking_status),Te("trackinfo",t),Te("tracking_status",void 0)}void 0!==ke.token&&Te("token",void 0)}(),e}):null}).catch(function(e){return C.warn("apptics: storage unavailable: "+String(e)),null})),ve}function ye(e){let t=0;const n=[];for(const r of e.slice(0,P("batch_size"))){const e=w(JSON.stringify(r));if(t+e>1048576)break;n.push(r),t+=e}return n}function ze(name){const e={name:name,all:()=>_e("read "+name,[],function(e){return e.queueAll(name)}),payload:()=>e.all().then(ye),add:e=>(e.id||(e.id=E()),T(function(e){return void 0!==e.starttime?e.starttime:e.happenedat}(e))?(C.warn("apptics: dropping a "+name+" item older than "+P("batch_request_timeout")+" days"),Promise.resolve()):_e("add "+name,void 0,function(t){return t.queuePut(name,[e])})),update:e=>_e("update "+name,void 0,function(t){return t.queuePut(name,[e])}),remove(e){const t=(e||[]).map(function(e){return String(e.id)});return _e("remove "+name,void 0,function(e){return e.queueDelete(name,t)})},clear:()=>_e("clear "+name,void 0,function(e){return e.queueClear(name)})};return e}const Ae=ze("engagements"),we=ze("errors"),Se=ze("feedbacklogs"),Ee=ze("heatmaps"),xe=ze("remotelogs");function Pe(e,key){return void 0===ke[key]?e.deleteSetting(key):e.putSetting(key,ke[key])}function Te(key,value){void 0===value?delete ke[key]:ke[key]=A(value),_e("save "+key,void 0,function(e){return Pe(e,key)})}function Oe(key,value){var e=Object.assign({},ke.device_info&&"object"==typeof ke.device_info?ke.device_info:{});e[key]=value,x._device_info&&"object"==typeof x._device_info&&(x._device_info[key]=value),Te("device_info",e)}const Ie={all:()=>A(ke),item(key){const value=ke[key];return void 0===value?void 0:A(value)},add(key,value){Te(key,value)},save:(key,value)=>(void 0===value?delete ke[key]:ke[key]=A(value),_e("save "+key,void 0,function(e){return Pe(e,key)})),clear(){ke={},_e("clear settings",void 0,function(e){return e.clearSettings()})}};function Ce(e){return _e("reload settings",void 0,function(t){return t.loadSettings().then(function(t){e.forEach(function(key){void 0!==t[key]&&(ke[key]=t[key])})})})}function Re(){var t=ke.trackinfo,status=t&&"object"==typeof t?t.tracking_status:void 0;return status===e.USAGE_TRACKING_WITH_PII||status===e.USAGE_TRACKING_WITHOUT_PII||status===e.NO_TRACKING?status:void 0}const Ne={_tracking_status:"tracking_status",all:()=>Ie.all(),opt_in_status:()=>Re()||e.USAGE_TRACKING_WITHOUT_PII,update_status(t){x._devicestatus=t,x._isanonrequired=Ne.opt_in_status()!=e.USAGE_TRACKING_WITH_PII&&x._isanonrequired;var n=Object.assign({},ke.trackinfo&&"object"==typeof ke.trackinfo?ke.trackinfo:{});n.tracking_status=t,x._trackinfo&&"object"==typeof x._trackinfo&&(x._trackinfo.tracking_status=t),Te("trackinfo",n)}};function Me(key){var e=ke.device_info;return null!=e&&""!==e&&void 0!==e[key]&&null!==e[key]&&""!==e[key]?A(e[key]):null}const Le={updateDevice:()=>Promise.reject("apptics: device module not loaded"),refreshDeviceInfo:()=>{},feedbackUser:()=>null,sendHeatmaps:()=>Promise.resolve(),trackHeatmap:()=>{},resetHeatmap:()=>{},resetRemoteConfig:()=>{},screenTrackedByApp:()=>{},remoteConfigStarted:()=>{},remoteConfigUserChanged:()=>{}};function qe(){return!0===x._config.debug_api&&!De()}function De(){return x._debugUntil>0&&v()>x._debugUntil}function Fe(){!0===x._config.debug_api&&(x._debugUntil=v()+s)}var je=null;function Be(on){x._config.debug_api=on,x._debugUntil=on?v()+s:0,C.log("apptics: debug mode "+(on?"on":"off"))}function Ue(){var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{};return e.effectiveType||e.type||""}function He(){return window.navigator.onLine?0:-1}function Ge(){try{var e=navigator.getBattery;return"function"!=typeof e?Promise.resolve(null):e.call(navigator).then(function(e){var t=e&&"number"==typeof e.level?e.level:-1;return t>=0&&t<=1?Math.round(100*t):null},function(){return null})}catch(e){return Promise.resolve(null)}}function Ve(){var e=window.screen&&window.screen.orientation&&window.screen.orientation.type||"";return S(e,"portrait-primary")?0:S(e,"landscape-primary")?1:S(e,"landscape-secondary")?2:S(e,"portrait-secondary")?3:-1}function Ke(){var e=navigator.userAgent;return/Windows/i.test(e)?/Phone/.test(e)||/WPDesktop/.test(e)?"Windows Phone":"Windows":/iPad/.test(e)?"iPad":/iPod/.test(e)?"iPod Touch":/iPhone/.test(e)?"iPhone":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":/Android/.test(e)?"Android":/Mac/i.test(e)?"Mac":/Linux/.test(e)?"Linux":/CrOS/.test(e)?"Chrome":""}function We(){var e=navigator.userAgent,t=navigator.vendor||"";return window.opera||S(e," OPR/")?S(e,"Mini")?"Opera Mini":"Opera":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":S(e,"IEMobile")||S(e,"WPDesktop")?"Internet Explorer Mobile":S(e,"SamsungBrowser/")?"Samsung Internet":S(e,"Edge")||S(e,"Edg/")?"Microsoft Edge":S(e,"FBIOS")?"Facebook Mobile":S(e,"Chrome")?"object"==typeof ulaa?"Ulaa":null!=window.navigator.brave&&"isBrave"==window.navigator.brave.isBrave.name?"Brave":"Chrome":S(e,"CriOS")?"Chrome iOS":S(e,"UCWEB")||S(e,"UCBrowser")?"UC Browser":S(e,"FxiOS")?"Firefox iOS":S(t,"Apple")?S(e,"Mobile")?"Mobile Safari":"Safari":S(e,"Android")?"Android Mobile":S(e,"Konqueror")?"Konqueror":S(e,"Firefox")?"Firefox":S(e,"MSIE")||S(e,"Trident/")?"Internet Explorer":S(e,"Gecko")?"Mozilla":""}function Ze(){var e=We(),t=navigator.userAgent;if("Ulaa"===e&&"object"==typeof ulaa)return ulaa.getVersion();var n={"Internet Explorer Mobile":/rv:(\d+(\.\d+)?)/,"Microsoft Edge":/Edg\/(\d+(\.\d+)?)/,Chrome:/Chrome\/(\d+(\.\d+)?)/,Brave:/Chrome\/(\d+(\.\d+)?)/,"Chrome iOS":/CriOS\/(\d+(\.\d+)?)/,"UC Browser":/(UCBrowser|UCWEB)\/(\d+(\.\d+)?)/,Safari:/Version\/(\d+(\.\d+)?)/,"Mobile Safari":/Version\/(\d+(\.\d+)?)/,Opera:/(Opera|OPR)\/(\d+(\.\d+)?)/,Firefox:/Firefox\/(\d+(\.\d+)?)/,"Firefox iOS":/FxiOS\/(\d+(\.\d+)?)/,Konqueror:/Konqueror:(\d+(\.\d+)?)/,BlackBerry:/BlackBerry (\d+(\.\d+)?)/,"Android Mobile":/android\s(\d+(\.\d+)?)/,"Internet Explorer":/(rv:|MSIE )(\d+(\.\d+)?)/,Mozilla:/rv:(\d+(\.\d+)?)/}[e];if(void 0===n)return"";var r=t.match(n);return r?parseFloat(r[r.length-2]):""}function Je(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function Ye(){return"undefined"==typeof navigator||function(e){var t;for(e=e.toLowerCase(),t=0;t<m.length;t++)if(-1!==e.indexOf(m[t]))return!0;return!1}(navigator.userAgent||"")}function Qe(name,e){var t="undefined"!=typeof navigator?navigator.locks:void 0;return t&&"function"==typeof t.request?t.request("apptics-"+name,function(){return e()}):e()}function $e(){return!x._ignoreDnt&&(e=window.navigator||{},t=[!0,1,"1","yes"],!![e.doNotTrack,e.msDoNotTrack,window.doNotTrack].some(function(e){return S(t,e)})&&(C.warn("hasDoNotTrackEnabled: DoNotTrack is enabled, so nothing is tracked"),!0));var e,t}function Xe(){if($e())return C.warn('opt_in_status: It seems "Do Not Track" is enabled in this browser. Please enable tracking in the browser settings to continue tracking.'),e.NO_TRACKING;var status=Ne.opt_in_status();return-1==status&&C.warn("opt_in_status: You are opted out of Apptics tracking. This will prevent the our SDK from sending no data to our server."),status}function et(){return Xe()>-1&&x._shouldTrack}function tt(e){return x._token?!Ye()&&et():(C.warn("apptics."+e+": You must call Apptics.init() first"),!1)}function nt(e){return!!tt(e)&&(!!x._engagementTracking||(C.log("apptics."+e+": engagement tracking is turned off by the server"),!1))}function rt(e){return!!tt(e)&&(!!x._heatmapTracking||(C.log("apptics."+e+": heatmap tracking is turned off by the server"),!1))}function setTrackingStatus(t){_(t)?C.warn("setTrackingStatus: trackingStatus is Empty"):Ne.opt_in_status()!=t&&(Ne.update_status(t),x._devicestatus=Ne.opt_in_status(),x._isanonrequired=Ne.opt_in_status()!=e.USAGE_TRACKING_WITH_PII&&x._isanonrequired,Ne.opt_in_status()!=e.NO_TRACKING&&(C.log("setTrackingStatus: Updating device info with new tracking status"),Le.updateDevice(x._device_info).then(function(e){k(e)?(C.log("setTrackingStatus: Device info updated with new tracking status"+JSON.stringify(e.data)),C.dir(e.data)):C.log("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))}).catch(function(e){C.warn("setTrackingStatus: Error updating device info with new tracking status: "+JSON.stringify(e))})))}function getTrackingStatus(){return Xe()}const it="sendstate";function at(){var e=Ie.item(it);return e&&"object"==typeof e?e:{}}function ot(e){var t=at()[e];return t&&"object"==typeof t?{attempt:Number(t.attempt)||1,firstattempttime:Number(t.firstattempttime)||0,lst:Number(t.lst)||0}:{attempt:1,firstattempttime:0,lst:0}}function st(e,t){var n=at();n[e]=t,Ie.add(it,n)}function ct(e){if(!p[e])return{};var t=ot(e),n=v();(t.attempt<=1||0===t.firstattempttime)&&(t.attempt=1,t.firstattempttime=n);var r={attempt:String(Math.min(t.attempt,5)),firstattempttime:t.firstattempttime};return t.lst>0&&(r.lst=t.lst),st(e,{attempt:t.attempt+1,firstattempttime:t.firstattempttime,lst:t.lst}),r}function dt(url,method,e,t){return new Promise((n,r)=>{let i=new XMLHttpRequest;i.open(method,url),t&&Object.keys(t).forEach(key=>{i.setRequestHeader(key,t[key])}),i.withCredentials=!1,i.timeout=3e4,i.onreadystatechange=function(){4===i.readyState&&(200==i.status?n(i.responseText):r(i.statusText))},i.onerror=function(){r("makeRequest: Network Error")},i.ontimeout=function(){r("makeRequest: timed out after 30000 ms")},i.send(e)})}function ut(key){return"zak"==key?x._defaultoptions.zak:"uuid"==key?x._uuid:"apid"==key?x._apid||Me(key):"mapid"==key?x._mapid||Me(key):""}function lt(e){var t="",n=x._device_info.appversionid,r=_(x._device_info.frameworkid)?x._frameworkID:x._device_info.frameworkid;return _(n)||(t+="&appversionid="+encodeURIComponent(String(n))),_(r)||(t+="&frameworkid="+encodeURIComponent(String(r))),""===t?t:void 0===e||""===e?"?"+t.slice(1):t}function pt(e,t){if(!l[e])return"";var n=P("device_name"),name=_(n)?qe()?function(){var e=x._device_info,t=_(e.browser)?"":String(e.browser),n=_(e.browserversion)?"":String(e.browserversion),r=_(e.osversion)?"":String(e.osversion),name=""===t?"":""===n?t:t+" "+n;return""===r?name:""===name?r:name+" on "+r}():"":String(n);return""===name?"":(""===t?"?":"&")+("devicename="+encodeURIComponent(name.slice(0,100)))}function ft(t,n){var url=x._defaultoptions.base_domain+P("endpoint")+i[t]+"/"+(f[t]?"":x._defaultoptions.zsoid+"/"+x._defaultoptions.projectID+"/")+((function(e){return qe()&&!0===l[e]}(t)?"debug/":"")+r[t])+function(t){let n="";if("addversion"==t){var r=_(x._device_info.frameworkid)?x._frameworkID:x._device_info.frameworkid;return"?version="+encodeURIComponent(x._defaultoptions.appversion)+"&platform="+encodeURIComponent(x._platform)+"&identifier="+encodeURIComponent(x._defaultoptions.identifier)+"&frameworkid="+encodeURIComponent(String(r))}if("regdevice"==t)return n="?isanonrequired="+x._isanonrequired+"&devicestatus="+x._devicestatus,_(x._device_info.deviceid)||(n+="&deviceid="+encodeURIComponent(String(x._device_info.deviceid))),n+lt(n);var i="sdkconfig"!=t;if(i){if(_(x._device_info.deviceid))return Le.refreshDeviceInfo(),n+lt(n);n="?deviceid="+encodeURIComponent(String(x._device_info.deviceid))}if("feedback"===t){var a=Le.feedbackUser();return a&&(n+="&userid="+encodeURIComponent(String(a.userid)),_(a.groupid)||(n+="&customergroupid="+encodeURIComponent(String(a.groupid)))),n+lt(n)}return"reguser"!=t&&"getupdates"!=t&&i&&Xe()==e.USAGE_TRACKING_WITH_PII&&(x._user_info.hasOwnProperty("userid")&&!_(x._user_info.userid)&&(n+="&userid="+encodeURIComponent(String(x._user_info.userid))),x._user_info.hasOwnProperty("groupid")&&!_(x._user_info.groupid)&&(n+="&customergroupid="+encodeURIComponent(String(x._user_info.groupid)))),n+=pt(t,n),n+lt(n)}(t);if(!n)return url;var a=-1===url.indexOf("?")?"?":"&";return Object.keys(n).forEach(function(key){void 0!==n[key]&&null!==n[key]&&""!==n[key]&&(url+=a+key+"="+encodeURIComponent(String(n[key])),a="&")}),url}function gt(){return{apid:ut("apid"),mapid:ut("mapid")}}const mt={PATTERN_NOT_MATCHED:!0,EXTRA_PARAM_FOUND:!0,INVALID_INPUTSTREAM:!0,INVALID_PARAM:!0};function ht(e){var t=e?e.serverResult:void 0,n=t?t.error_code:void 0;return!_(n)&&!0===mt[String(n)]}function vt(e,t,n){var r=JSON.parse(n);if(k(r))return function(e){p[e]&&st(e,{attempt:1,firstattempttime:0,lst:v()})}(e),function(e,t){var n=t.data;n&&!_(n.req_id)&&C.log(e+": req_id "+String(n.req_id)+(_(n.path)?"":", path "+String(n.path))+(_(n.producerLogsUrl)?"":", logs "+String(n.producerLogsUrl)))}(t,r),Promise.resolve(r);var i=function(e,t,n){var r=t&&!_(t.error_code)?String(t.error_code):String(t?t.result:n),i=new Error(e+": "+r);return t&&(i.serverResult=t),i}(t,r,n);return Promise.reject(i)}function kt(e,t,n,r,i){return dt(ft(e,Object.assign(ct(e),{})),P("method"),t,n).then(function(t){return vt(e,r,t)},function(e){return Promise.reject(r+": "+e)})}var _t=0;function bt(e,t,n,r,i){var a=function(e){if(null==e)return 0;if("string"==typeof e)return"function"==typeof TextEncoder?(new TextEncoder).encode(e).length:3*e.length;var t=e;return Number(t.size||t.byteLength||0)}(t);if("function"==typeof fetch&&_t+a>61440)return C.log(r+": "+a+" bytes is over the keepalive budget, kept for the next send"),Promise.reject(r+": too large to send while the page closes");var url=ft(e,Object.assign(ct(e),{}));if("function"==typeof fetch){var o;try{o=fetch(url,{method:P("method"),headers:Object.assign({"content-type":"text/plain"},n),body:t,keepalive:!0,credentials:"omit"})}catch(e){return Promise.reject(r+": keepalive send not accepted: "+String(e))}_t+=a;var s=function(){_t=Math.max(0,_t-a)};return o.then(function(t){if(s(),!t||!0!==t.ok){var status=t?String(t.status):"";return Promise.reject(r+": "+status)}return("function"==typeof t.text?t.text():Promise.resolve("")).then(function(t){return _(t)?vt(e,r,JSON.stringify({result:"success"})):vt(e,r,t)})},function(e){return s(),Promise.reject(r+": "+String(e))})}return dt(url,P("method"),t,n).then(function(t){return vt(e,r,t)},function(e){return Promise.reject(r+": "+e)})}function yt(e){return Ye()?Promise.reject(e+": apptics is disabled for this client"):null}function zt(e){return 0==navigator.onLine?(C.warn(e+": No Network"),Promise.reject(e+": No Network")):null}function At(){return{frameworkid:x._device_info.frameworkid||Me("frameworkid"),aaid:x._device_info.aaid||Me("aaid"),apid:x._device_info.apid||Me("apid"),appversionid:x._device_info.appversionid||Me("appversionid"),modelid:x._device_info.modelid||Me("modelid"),appreleaseversionid:x._device_info.appreleaseversionid||Me("appreleaseversionid"),osversionid:x._device_info.osversionid||Me("osversionid"),timezoneid:x._device_info.timezoneid||Me("timezoneid"),platformid:x._device_info.platformid||Me("platformid"),devicetypeid:x._device_info.devicetypeid||Me("devicetypeid")}}function wt(e){return _(ut("apid"))&&_(ut("mapid"))?(Le.refreshDeviceInfo(),Promise.reject(e+": You must call Apptics.init() first")):St()?null:(Le.refreshDeviceInfo(),Promise.reject(e+": the device is not registered yet, kept for the next send"))}function St(){return!_(x._device_info&&x._device_info.deviceid)||!_(Me("deviceid"))}const Et="registerAppVersion",xt="app_version_info",Pt=["apid","mapid","aaid","appversionid","appreleaseversionid","platformid","projectid","portalid"];var Tt=null;function Ot(){var e=Ie.item(xt);return e&&"object"==typeof e?e:{}}const It=["aaid","portalid","projectid","apid","mapid","appversionid"];function Ct(e){return It.filter(function(key){return _(e[key])})}function Rt(e){Pt.forEach(function(key){_(e[key])||(x._device_info[key]=e[key])}),_(e.aaid)||(x._defaultoptions.aaid=e.aaid),_(e.portalid)||(x._defaultoptions.zsoid=String(e.portalid)),_(e.projectid)||(x._defaultoptions.projectID=String(e.projectid)),_(e.apid)||(x._apid=String(e.apid)),_(e.mapid)||(x._mapid=String(e.mapid))}var Nt=!1;function Mt(){return Nt}function Lt(){if(Nt=!1,0===Ct(e=Ot()).length&&e.appversion===x._defaultoptions.appversion&&e.identifier===x._defaultoptions.identifier&&e.serviceUrl===x._defaultoptions.serviceUrl)return Rt(Ot()),C.log(Et+": reusing the ids stored for "+x._defaultoptions.appversion),Promise.resolve(!0);var e;if(null!==Tt)return Tt;var t=_(x._device_info.frameworkid)?x._frameworkID:x._device_info.frameworkid;return 0===t&&R(Et+": this build has no registered framework id; build the package with npm pack"),_(t)||_(x._defaultoptions.identifier)||_(x._defaultoptions.zak)?(R(Et+": need zak, an identifier and a frameworkid to register this app version"),Promise.resolve(!1)):Tt=kt("addversion","",{zak:ut("zak")},Et).then(function(e){if(!k(e)||!e.data)return R(Et+": the server did not return the app ids"),!1;var t=e.data,n=Ct(t);if(n.length>0)return R(Et+": the answer has no "+n.join(", ")),!1;Rt(t);var r={appversion:x._defaultoptions.appversion,identifier:x._defaultoptions.identifier,serviceUrl:x._defaultoptions.serviceUrl};return Pt.forEach(function(key){_(t[key])||(r[key]=t[key])}),Ie.add(xt,r),C.log(Et+": registered "+x._defaultoptions.appversion+" as apid "+t.apid),!0}).catch(function(e){return Nt=!(e&&e.serverResult)||!1===navigator.onLine,R(Et+": could not register this app version: "+String(e&&e.message?e.message:e)),!1}).then(function(e){return Tt=null,e})}const qt=["devicetype","osversion","timezone","screenheight","screenwidth","referrer","referringdomain","browser","browserversion","donottrackenabled","platformid"],Dt=["screenheight","screenwidth","donottrackenabled","platformid"];function Ft(e){var t={};return qt.forEach(function(key){var value=e[key],n=-1!==Dt.indexOf(key);t[key]=_(value)?n?0:"":value}),JSON.stringify(t)}const jt=["osversion","browser","browserversion","devicetype","screenheight","screenwidth","timezone","donottrackenabled","frameworkid"];function Bt(e){var t={};return jt.forEach(function(key){t[key]=e?e[key]:void 0}),t}function Ut(){var e,t,n=Ie.item("device_info");x._device_info={osversion:(t=navigator.userAgent,/Windows/i.test(t)?/Phone/.test(t)||/WPDesktop/.test(t)?"Windows Phone":"Windows":/(iPhone|iPad|iPod)/.test(t)?"iOS":/Android/.test(t)?"Android":/(BlackBerry|PlayBook|BB10)/i.test(t)?"BlackBerry":/Mac/i.test(t)?"Mac OS X":/Linux/.test(t)?"Linux":/CrOS/.test(t)?"Chrome OS":""),browser:We(),browserversion:String(Ze()),donottrackenabled:$e()?1:0,devicetype:Ke(),screenheight:screen.height,screenwidth:screen.width,referrer:(e=String(window.location.href||"").split(window.location.pathname),e.length>=2?e[1].length>500?e[1].substring(0,500):e[1]:""),connectionType:Ue(),referringdomain:window.location.hostname||"",deviceid:Me("deviceid"),anonymousid:Me("anonymousid"),frameworkid:x._frameworkID,mapid:Me("mapid"),aaid:Me("aaid"),apid:Me("apid"),appversionid:Me("appversionid"),platformid:Me("platformid"),devicetypeid:Me("devicetypeid"),osversionid:Me("osversionid"),timezoneid:Me("timezoneid"),modelid:Me("modelid"),appreleaseversionid:Me("appreleaseversionid"),timezone:Je(),uuid:x._uuid||Me("uuid"),hadsession:!0===Me("hadsession")||void 0},Rt(Ot()),Ie.add("device_info",x._device_info),function(e,t){var n=void 0!==t?t:Ie.item("device_info")||{};null==e.deviceid||null==e.frameworkid||null==e.anonymousid?(e.frameworkid=x._frameworkID,C.log("addOrUpdateDeviceID: Initiated register the device"),function(){var e="registerDeviceWithApptics",t=yt(e);if(t)return t;if(!x._token)return C.warn(e+": You must call Apptics.init() first"),Promise.reject(e+": You must call Apptics.init() first");var n=zt(e);if(n)return n;if(x._device_info.deviceid&&x._device_info.anonymousid)return Promise.resolve(x._device_info);return new Promise((t,n)=>{if(x._regDeviceSending)return x._regDeviceResolve.push(t),void x._regDeviceReject.push(n);x._regDeviceSending=!0,Ce(["device_info"]).then(function(){var e=Ie.item("device_info")||{};return _(e.deviceid)||_(e.anonymousid)?null:(_(e.uuid)||(x._uuid=e.uuid),C.log("registerDeviceWithApptics: another tab registered this browser, using its device "+e.deviceid),Gt(e).then(function(){return{result:"success",data:e}}))}).then(function(t){return t||kt("regdevice",Ft(x._device_info),{zak:ut("zak"),uuid:ut("uuid"),...gt()},e).then(function(e){return Gt(e.data||{}).then(function(){return e})})}).then(function(e){Zt(!0,e),t(e),Xt()}).catch(function(e){Zt(!1,e),n(e)})})}().then(function(e){k(e)?(C.log("addOrUpdateDeviceID: Success register the device "+JSON.stringify(e.data)),C.dir(e.data)):C.log("addOrUpdateDeviceID: Error registering the device: "+e)}).catch(function(e){C.log("addOrUpdateDeviceID: Error registering the device: "+e)})):_(n)||function(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let key in e)if(!t.hasOwnProperty(key))return!1;for(let key in e)if(!y(e[key],t[key]))return!1;return!0}(Bt(e),Bt(n))||(C.log("addOrUpdateDeviceID: Device info changed, so updating new changes"),C.dir(Bt(e)),Jt(e).catch(function(e){C.log("addOrUpdateDeviceID: Error updating the device: "+e)}))}(x._device_info,n)}const Ht=["deviceid","anonymousid","aaid","apid","mapid","appversionid","osversionid","timezoneid","platformid","devicetypeid","modelid"];function Gt(e){return Ht.forEach(function(key){_(e[key])||(x._device_info[key]=e[key])}),_(e.apid)||(x._apid=e.apid),_(e.mapid)||(x._mapid=e.mapid),Ie.save("device_info",x._device_info)}function Vt(){var e=Me("uuid");_(e)&&Oe("uuid",e=E()),x._uuid=e}function Kt(){var e=Ie.item("device_info")||{};return _(e.deviceid)||_(e.anonymousid)?new Promise(function(e){Qe("device",function(){return Ce(["device_info"]).then(function(){return Vt(),Ut(),e(),Wt()})}).catch(function(e){C.log("prepareDevice: "+e)}).then(function(){e()})}):(Vt(),Ut(),Promise.resolve())}function Wt(){return x._regDeviceSending?new Promise(function(e){x._regDeviceResolve.push(function(){e()}),x._regDeviceReject.push(function(){e()})}):Promise.resolve()}function Zt(e,value){var t=e?x._regDeviceResolve:x._regDeviceReject;x._regDeviceSending=!1,x._regDeviceResolve=[],x._regDeviceReject=[],t.forEach(function(e){e(value)})}function Jt(e){var t="updateDeviceWithApptics",n=yt(t)||zt(t);return n||kt("regdevice",Ft(e),{zak:ut("zak"),uuid:ut("uuid"),...gt()},t).then(function(e){return Gt(e.data||{}),e})}function Yt(){var e="getUpdatesFromServer",t=zt(e)||wt(e);return t||kt("sdkconfig","",gt(),e).then(function(e){var t=e.data||{};$t(t);var n=Re();return Ie.add("trackinfo",void 0===n?x._trackinfo:Object.assign({},x._trackinfo,{tracking_status:n})),C.log("getUpdatesFromServer: "+JSON.stringify(x._trackinfo)),t})}function Qt(status,id){var e=status[id];return!e||"object"!=typeof e||!1!==e.enabled}function $t(e){var status=e.tracking_status&&"object"==typeof e.tracking_status?e.tracking_status:{},t=Object.keys(status).length>0;if(e.hasOwnProperty("tracking_enabled"))x._shouldTrack=!1!==e.tracking_enabled;else{var n=!(e.hasOwnProperty("versionarchivestatus")&&!_(e.versionarchivestatus))||e.versionarchivestatus,r=!(e.hasOwnProperty("customergrouptracking")&&!_(e.customergrouptracking))||e.customergrouptracking;x._shouldTrack=n||!r}t?(x._engagementTracking=Qt(status,o.SESSION),x._errorTracking=Qt(status,o.CRASH),x._heatmapTracking=Qt(status,o.HEATMAP),x._remoteLoggerEnabled=Qt(status,o.REMOTE_LOGGER),x._feedbackEnabled=Qt(status,o.FEEDBACK),x._remoteConfigEnabled=Qt(status,o.REMOTE_CONFIG)):(x._engagementTracking=!1!==e.engagementtracking,x._errorTracking=!1!==e.errortracking,x._heatmapTracking=!1!==e.heatmaptracking,x._remoteLoggerEnabled=!1!==e.remoteloggerenabled,x._feedbackEnabled=!1!==e.feedbackenabled);var i=e.quartz&&"object"==typeof e.quartz?e.quartz:{},a=function(value){return"string"==typeof value?value.trim():""};x._quartz={enabled:i.hasOwnProperty("quartz_enabled")?!0===i.quartz_enabled:!0===e.quartzenabled,workspace:a(i.quartz_workspace),department:a(i.quartz_department),domain:a(i.quartz_domain),cdnUrl:a(i.quartz_cdn_url)},"number"==typeof e.next_check_after&&e.next_check_after>0&&(x._nextConfigCheck=e.next_check_after),x._trackinfo={engagementtracking:x._engagementTracking,errortracking:x._errorTracking,heatmaptracking:x._heatmapTracking,remoteloggerenabled:x._remoteLoggerEnabled,feedbackenabled:x._feedbackEnabled,quartz:{quartz_enabled:x._quartz.enabled,quartz_workspace:x._quartz.workspace,quartz_department:x._quartz.department,quartz_domain:x._quartz.domain,quartz_cdn_url:x._quartz.cdnUrl},shouldtrack:x._shouldTrack,next_check_after:x._nextConfigCheck}}function Xt(){_(ut("apid"))&&_(ut("mapid"))||Yt().catch(function(e){C.log(e)})}function en(id,e){return _(id)?Promise.resolve():(x._current_screen&&x._current_screen.id===id&&!x._current_screen.endtime&&(x._current_screen=Object.assign({},x._current_screen,{endtime:e})),Ae.all().then(function(t){var r=t.filter(function(e){return e.type==n.SCREEN&&e.id===id&&0===e.endtime})[0];if(r)return Ae.update(Object.assign({},r,{endtime:Math.max(e,r.starttime)}))}))}function tn(){var e=x._current_screen;return e&&e.id?en(e.id,v()):Promise.resolve()}function nn(e,t){return Ae.all().then(function(r){return r.filter(function(t){return t.type==n.SCREEN&&0===t.endtime&&t.sessionstarttime===e.starttime}).reduce(function(e,n){return e.then(function(){return Ae.update(Object.assign({},n,{endtime:Math.max(t,n.starttime)}))})},Promise.resolve())})}function rn(e){if(!nt("trackSession"))return Promise.resolve();if(e&&"object"!=typeof e)return N(a.SESSION,"apptics.trackSession: sessionData param must be an object"),Promise.resolve();var t=Ae.add(e);return C.log("apptics.trackSession("+JSON.stringify(e||{})+")"),C.dir(e),t}function an(){var e=hn();return Ae.all().then(function(t){if(e){var r=t.filter(function(t){return t.type==n.SESSION&&t.id===e&&0===t.endtime})[0];if(r)return r}return function(e,t){return t.filter(function(t){return t.type==e&&0===t.endtime}).sort(function(e,t){return t.starttime-e.starttime})[0]}(n.SESSION,t)})}Le.updateDevice=Jt,Le.refreshDeviceInfo=Ut;var sn="";function cn(){return""===sn&&(sn=E()),sn}function dn(e){return Array.isArray(e.tabs)?e.tabs.slice():[]}const un="apptics-tab-";function ln(){var e="undefined"!=typeof navigator?navigator.locks:void 0;return e&&"function"==typeof e.request&&"function"==typeof e.query?e:void 0}var pn=!1;function fn(){var e=ln();if(!e)return Promise.resolve();var t=cn();return e.query().then(function(e){var r={};(e.held||[]).concat(e.pending||[]).forEach(function(e){e.name&&0===e.name.indexOf(un)&&(r[e.name.slice(12)]=!0)});var i=v();return Ae.all().then(function(e){var a=e.filter(function(e){return e.type==n.SCREEN&&0===e.endtime&&"string"==typeof e.tab&&e.tab!==t&&!r[e.tab]&&i-e.starttime>5e3});return a.length&&C.log("closeScreensOfGoneTabs: ending "+a.length+" screen view(s) left open by a tab that is gone"),a.reduce(function(e,t){var n=Math.max(t.starttime,Number(t.lastseen)||t.starttime);return e.then(function(){return Ae.update(Object.assign({},t,{endtime:n}))})},Promise.resolve())})}).catch(function(e){C.log("closeScreensOfGoneTabs: "+e)})}function gn(e){return Qe("session",e)}const mn="apptics-session";function hn(){try{return sessionStorage.getItem(mn)||""}catch(e){return""}}const vn="hadsession";var kn=null,_n=null;function bn(){null!==_n&&(clearTimeout(_n),_n=null)}function yn(){if(!kn)return Promise.resolve();var e=kn;return kn=null,bn(),e.firstsession&&Oe(vn,!0),rn(e)}function zn(e){x._current_session={id:E(),type:n.SESSION,starttime:e,endtime:0,edge:Ue(),orientation:Ve(),firstsession:!0!==Me(vn),networkstatus:He(),lastactivetime:e,tabs:[cn()]};var t,r="number"==typeof(t=navigator.deviceMemory)&&t>0?t+" GB":"";_(r)||(x._current_session.ram=r),function(id){try{sessionStorage.setItem(mn,id)}catch(e){}}(x._current_session.id);var i=Number(P("min_session_duration"));return i>0?(kn=x._current_session,bn(),_n=setTimeout(function(){_n=null,yn()},i),Promise.resolve()):function(e){e.firstsession&&Oe(vn,!0);return rn(e)}(x._current_session)}function An(){var e=v();return kn&&(C.log("session: dropped, shorter than the minimum with nothing tracked in it"),kn=null,bn(),1)?Promise.resolve():gn(function(){return function(e){return an().then(function(t){if(t&&0===t.endtime){var n=dn(t).filter(function(e){return e!==cn()});if(n.length>0){var r=Object.assign({},t,{tabs:n,lastactivetime:e});return x._current_session=r,C.log("endCurrentSession: "+n.length+" other tab(s) still on this session, so it stays open"),Ae.update(r)}var i=Object.assign({},t,{endtime:e,lastactivetime:e,tabs:[]});return x._current_session=i,C.log("endCurrentSession: closing the session opened at "+i.starttime),Ae.update(i).then(function(){return nn(i,e)})}})}(e)})}function wn(){if(!x._token)return N(a.SESSION,"checkAndUpdateSession: You must call Apptics.init() first"),Promise.resolve();if(Ye())return Promise.resolve();var e=v();return gn(function(){return function(e){return function(){var e=v()-60*x.inactiveduration*1e3,t=hn();return Ae.all().then(function(r){var i=r.filter(function(r){return r.type==n.SESSION&&0===r.endtime&&r.id!==t&&r.lastactivetime<e});return i.length?(C.log("closeAbandonedSessions: closing "+i.length+" session(s) left open by a closed tab"),i.reduce(function(e,t){return e.then(function(){return Ae.update(Object.assign({},t,{endtime:t.lastactivetime}))}).then(function(){return nn(t,t.lastactivetime)})},Promise.resolve())):Promise.resolve()})}().then(fn).then(an).then(function(t){if(!t||0!==t.endtime)return zn(e);if(x._current_session=t,e-t.lastactivetime>1e3*x.inactiveduration*60){C.log("checkAndUpdateSession: User is inactive for the past "+x.inactiveduration+" minutes so starting a new session");var n=Object.assign({},t,{endtime:t.lastactivetime});return C.log("checkAndUpdateSession: ("+JSON.stringify(n)+")"),C.dir(n),Ae.update(n).then(function(){return nn(n,n.endtime)}).then(function(){return zn(e)})}return C.log("checkAndUpdateSession: User is back before "+x.inactiveduration+" minutes so updating the lastactivitytime - "+e),Sn()})}(e)})}function Sn(){var e=v();return kn?(kn.lastactivetime=e,x._current_session=kn,Promise.resolve()):an().then(function(t){if(t){C.log("updateLastActiveTimeOfSession: Updating the lastactivitytime - "+e);var n,r,i=Object.assign({},t,{lastactivetime:e,tabs:(n=t,r=dn(n),-1===r.indexOf(cn())&&r.push(cn()),r)});return x._current_session=i,Ae.update(i)}}).then(function(){return function(e){var t=x._current_screen;return t&&t.id&&!t.endtime?Ae.all().then(function(r){var i=r.filter(function(e){return e.type==n.SCREEN&&e.id===t.id&&0===e.endtime})[0];return i?Ae.update(Object.assign({},i,{lastseen:e})):void 0}):Promise.resolve()}(e)})}const En=/^ap_/i;function xn(e){if(!e||""===e)return C.warn("validateEventOrGroup: Invalid event or group name"),!1;return En.test(e)?(C.warn('validateEventOrGroup: "'+e+'" starts with ap_, which is reserved for defined events'),!1):/^[a-zA-Z][a-zA-Z0-9_]{0,99}$/.test(e)}const Pn=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/;function Tn(e){if(_(e)||b(e))return{};var t=e,n={},r={},i=[],a=[],o=[];function s(e){-1===i.indexOf(e)&&i.push(e)}return Object.keys(t).forEach(function(key){if(!Pn.test(key)||En.test(key))return C.warn("validateJSON: dropped the property '"+key+"': a key is a letter, then up to 49 letters, digits or _, and not ap_"),a.push(key.substring(0,50)),void s(103);var e=function(value){if("number"==typeof value&&isFinite(value))return{value:value,type:"Number"};if("boolean"==typeof value)return{value:value?1:0,type:"Boolean"};if("string"==typeof value)return{value:value,type:"String"};var e;try{e=void 0===value?"undefined":JSON.stringify(value)}catch(t){e=String(value)}return{value:void 0===e?String(value):e,type:"String"}}(t[key]);if(String(e.value).length>250)return C.warn("validateJSON: dropped the property '"+key+"': its value is longer than 250 characters"),o.push(key),void s(104);if(Object.keys(n).length>=24)return C.warn("validateJSON: dropped the property '"+key+"': at most 24 properties"),void s(102);var i=Object.assign({},n);if(i[key]=e.value,JSON.stringify(i).length>7666)return C.warn("validateJSON: dropped the property '"+key+"': properties are at most 7666 characters in all"),void s(101);n[key]=e.value,r[key]=e.type}),Object.keys(n).length>0?{data:n,datatype:r,isvalid:!0}:0===i.length?{}:{isvalid:!1,message:{code:i,keys:a,valuekeys:o}}}function On(e){const t={},n={},message=[],r={101:[],102:[],103:[],104:[]},i=/^[a-zA-Z][a-zA-Z0-9_]{0,49}$/,a=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;let o=0;const s=["first_name","last_name","company_name","contact_number","country","region","city","geo_location","gender","plan_type","timezone","language"],c=["engagement_score","date_of_birth"];for(const[key,value]of Object.entries(e))if(o++,"string"!=typeof key||key.length>50||!i.test(key))r[103].push(key);else if(s.includes(key)){if("string"!=typeof value||value.length>255){r[103].push(key);continue}t[key]=value,n[key]="String"}else if("email_address"!==key)if(c.includes(key)){if("number"!=typeof value||!Number.isFinite(value)){r[103].push(key);continue}t[key]=value,n[key]="Number"}else if("boolean"==typeof value)t[key]=value,n[key]="Boolean";else if("string"==typeof value){if(value.length>255){r[103].push(key);continue}t[key]=value,n[key]="String"}else{if("number"!=typeof value){r[104].push(key);continue}if(!Number.isFinite(value)){r[104].push(key);continue}t[key]=value,n[key]="Number"}else{if("string"!=typeof value||value.length>255||!a.test(value)){r[103].push(key);continue}t[key]=value,n[key]="String"}o>45&&(r[102]=Object.keys(e));JSON.stringify(t).length+JSON.stringify(n).length>1e4&&(r[101]=Object.keys(e));for(const e of[101,102,103,104])r[e].length>0&&message.push({code:e,keys:r[e]});return{data:t,datatype:n,message:message}}function In(e){if(!e||""===e)return C.warn("validateScreenName: Invalid screenName"),!1;return/^[\w\s.\-_&/:*]{0,99}$/.test(e)}function Cn(e){try{var url=new URL(String(e).trim());if("http:"!==url.protocol&&"https:"!==url.protocol)return"";var t=url.pathname.length>1?url.pathname.replace(/\/+$/,""):url.pathname;return url.protocol+"//"+url.host.toLowerCase()+t}catch(e){return""}}function Rn(method,e){var t=[];return e.forEach(function(value){var url="string"==typeof value?Cn(value):"";""!==url?-1===t.indexOf(url)&&t.push(url):R("ApiTrackingBuilder."+method+": "+JSON.stringify(value)+" is not a full http(s) URL, as https://api.example.com/health, and is left out")}),t}function Nn(method,e){var t=[];return e.forEach(function(value){if(value instanceof RegExp)t.push(value);else{if("string"==typeof value&&""!==value)try{return void t.push(new RegExp(value))}catch(e){}R("ApiTrackingBuilder."+method+": "+String(value)+" is not a regular expression, and is left out")}}),t}class Mn{constructor(){this.rules={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]}}allowEquals(...e){return this.rules.allowEquals.push(...Rn("allowEquals",e)),this}ignoreEquals(...e){return this.rules.ignoreEquals.push(...Rn("ignoreEquals",e)),this}allowRegex(...e){return this.rules.allowRegex.push(...Nn("allowRegex",e)),this}ignoreRegex(...e){return this.rules.ignoreRegex.push(...Nn("ignoreRegex",e)),this}build(){return{allowEquals:this.rules.allowEquals.slice(),ignoreEquals:this.rules.ignoreEquals.slice(),allowRegex:this.rules.allowRegex.slice(),ignoreRegex:this.rules.ignoreRegex.slice()}}}const Ln=Object.freeze({ignoreDomains:"ignoreRegex",allowOnlyDomains:"allowRegex",allowOnlyTLDs:"allowRegex",ignoreTLDs:"ignoreRegex",ignoreDomainPrefixes:"ignoreRegex",ignoreDomainSuffixes:"ignoreRegex",groupDomains:"",ignoreEndpoint:"ignoreEquals or ignoreRegex",addPattern:"",preserveSegments:"",autoDetection:""});Object.keys(Ln).forEach(function(name){Object.defineProperty(Mn.prototype,name,{configurable:!0,value:function(){var e=Ln[name];throw new TypeError("ApiTrackingBuilder."+name+"() is no longer supported: "+(e?"use "+e+", which match the URL without its query":"ids, UUIDs and tokens in a path become * on their own"))}})});var qn={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]};function Dn(value,e){return Array.isArray(value)?value.filter(e):[]}function Fn(e,url){return e.lastIndex=0,e.test(url)}function jn(url){var e=Cn(url);return""!==e&&(-1===qn.ignoreEquals.indexOf(e)&&!qn.ignoreRegex.some(function(t){return Fn(t,e)})&&(0===qn.allowEquals.length&&0===qn.allowRegex.length||(-1!==qn.allowEquals.indexOf(e)||qn.allowRegex.some(function(t){return Fn(t,e)}))))}const Bn=/^\d+$/,Un=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Hn=/^eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/;function Gn(e){return function(e){var t=String(e||"").split(/[?#]/)[0];return""===t?"/":t}(e).split("/").map(function(e){return""!==e&&(Bn.test(e)||Un.test(e)||Hn.test(e))?"*":e}).join("/")}const Vn={AP_APP_LIFE_CYCLE:["AP_APP_INSTALL","AP_APP_UNINSTALL","AP_APP_UPDATE","AP_APP_CRACKED","AP_APP_OPEN","AP_APP_CLEAR_DATA","AP_APP_FOREGROUND","AP_APP_BACKGROUND","AP_APP_OUT_OF_MEMORY","AP_APP_FIRST_OPEN","AP_APP_LAUNCHING","AP_APP_RESIGN_ACTIVE","AP_APP_WILL_CONNECT"],AP_USER_LIFE_CYCLE:["AP_USER_SIGNUP","AP_USER_LOGIN","AP_USER_LOGOUT"],AP_APPLICATION:["AP_DEEP_LINK_OPEN","AP_DEEP_LINK_UPDATE","AP_DEEP_LINK_FIRST_OPEN","AP_IN_APP_PURCHASE","AP_NOTIFICATION_RECEIVE","AP_NOTIFICATION_OPEN","AP_NOTIFICATION_DISMISS","AP_NOTIFICATION_FOREGROUND","AP_SEARCH","AP_BATTERY_LOW","AP_BATTERY_FULL","AP_LOW_POWER_MODE_ON","AP_LOW_POWER_MODE_OFF"],AP_OTHERS:["AP_NETWORK_REACHABILITY_CHANGE","AP_NETWORK_BANDWIDTH_CHANGE","AP_SWITCH_THEME_LIGHT","AP_SWITCH_THEME_DARK","AP_SWITCH_THEME_CUSTOM","AP_SWITCH_ORIENTATION_LANDSCAPE","AP_SWITCH_ORIENTATION_PORTRAIT"],AP_OS:["AP_OS_UPDATE","AP_OS_UNSUPPORTED"]};const Kn=(Wn={},Object.keys(Vn).forEach(function(e){Vn[e].forEach(function(t){Wn[t]=Object.freeze({event:t,group:e})})}),Object.freeze(Wn));var Wn;function Zn(e){var t=String(e||"").split(/[?#]/)[0]||"/";return t.length>1?t.replace(/\/+$/,""):t}const Jn=/[^\w\s.\-&/:*]/g;var Yn=!1,Qn="",$n=null,Xn=300,er="",tr=null,nr=!1,rr=0,ir=null,ar=null,or=null,sr=null;function cr(e){return"*"===e||/^\{[^/]*\}$/.test(e)||/^:[^/]+$/.test(e)}function dr(e,t){var n=Zn(e).split("/"),r=t.split("/");if(n.length!==r.length)return!1;for(var i=0;i<n.length;i++){var a=n[i];if(!cr(a)&&a!==r[i])return!1}return!0}function ur(){try{return function(e){var name=e;try{name=decodeURIComponent(e)}catch(e){}return name.replace(Jn,"_").trim().slice(0,99)}(function(e){var t=x._config.screen_routes;if(!t||0===t.length)return e;for(var n=Zn(e),r=0;r<t.length;r++){var i=t[r];if("equals"===i.kind&&i.path===n)return i.name;if("regex"===i.kind&&(i.regex.lastIndex=0,i.regex.test(n)))return i.name;if("pattern"===i.kind&&dr(i.pattern,n))return Zn(i.pattern).split("/").map(e=>cr(e)?"*":e).join("/")}return e}(function(url){var e=url.pathname,t=url.hash;if(/^#!?\//.test(t)){var n=t.replace(/^#!?/,"").split("?")[0];e=e.replace(/\/+$/,"")+n}return e}(new URL(window.location.href))))}catch(e){return""}}function lr(){if($n=null,Yn){var name=ur();""!==name&&name!==Qn&&(Qn=name,nr||(x._current_screen=Object.assign({},x._current_screen,{screen:name}),er=name,rr=v(),tr=setTimeout(pr,Xn)))}}function pr(){tr=null;var name=er;if(er="",Yn&&!nr&&""!==name)try{_r(name,void 0,void 0,rr||void 0)}catch(e){C.log("automatic screen tracking: "+String(e))}}function fr(){null!==tr&&(clearTimeout(tr),tr=null),er=""}function gr(){var name=ur();""!==name&&(name===er||""===er&&name===Qn)||null===$n&&(nr=!1,fr(),$n=setTimeout(lr,0))}function mr(enabled,e){var on="boolean"!=typeof enabled||enabled;if(on&&(Xn=300),on!==Yn){if(on)return Qn="",t=history.pushState,n=history.replaceState,or=t,sr=n,ir=function(){var e=t.apply(this,arguments);return gr(),e},ar=function(){var e=n.apply(this,arguments);return gr(),e},history.pushState=ir,history.replaceState=ar,window.addEventListener("popstate",gr),window.addEventListener("hashchange",gr),Yn=!0,C.log("automatic screen tracking: on"),void(null===$n&&($n=setTimeout(lr,0)));var t,n;ir&&history.pushState===ir&&or&&(history.pushState=or),ar&&history.replaceState===ar&&sr&&(history.replaceState=sr),ir=ar=or=sr=null,window.removeEventListener("popstate",gr),window.removeEventListener("hashchange",gr),null!==$n&&(clearTimeout($n),$n=null),fr(),Yn=!1,Qn="",nr=!1,C.log("automatic screen tracking: off")}}Le.screenTrackedByApp=function(){nr=!0,fr()};var hr={};function vr(e,message){N(0,message),hr[message]||(hr[message]=!0,R(message))}function kr(eventName,groupName,e){if(nt("trackEvent")){var t=function(value){if(value&&"object"==typeof value){var e=value.event;return"string"==typeof e&&Kn[e]===value?value:void 0}}(eventName);if(t)e=groupName&&"object"==typeof groupName?groupName:e,groupName=t.group,eventName=t.event;else{if("string"!=typeof eventName||!xn(eventName))return void vr(a.EVENT,"AppticsEvent.addEvent: Invalid eventName: "+String(eventName));if(null==groupName||""===groupName)groupName=c.default_group_name;else if("string"!=typeof groupName||!xn(groupName))return void vr(a.EVENT,'AppticsEvent.addEvent: Invalid groupName for "'+eventName+'": '+String(groupName))}var r=Tn(e=e||{}),i=v(),o={id:E(),type:n.EVENT,group:groupName,event:eventName,starttime:i,endtime:i,edge:x._device_info.connectionType||Ue(),networkstatus:He(),screen:x._current_screen.screen||"",sessionstarttime:x._current_session.starttime||i,customproperties:r};yn(),Fe(),Ae.add(o),C.log("AppticsEvent.addEvent('"+eventName+"','"+groupName+"',"+JSON.stringify(r||{})+")"),C.dir(o)}}function _r(screenName,e,id,t,r){if(nt("inScreen"))if(In(screenName)){var i=Tn(e=e||{}),o="number"==typeof t?t:v(),s={id:id||E(),type:n.SCREEN,screen:screenName,starttime:o,endtime:0,edge:x._device_info.connectionType||Ue(),networkstatus:He(),orientation:Ve(),sessionstarttime:x._current_session.starttime||o,customproperties:i,tab:cn()},c=x._current_screen&&x._current_screen.id;c&&c!==s.id&&en(c,o),yn(),Fe(),Ae.add(s),x._current_screen=r?Object.assign({},s,{implicit:!0}):s,C.log("AppticsScreen.inScreen('"+screenName+"',"+JSON.stringify(i||{})+")"),C.dir(s)}else vr(a.SCREEN,"AppticsScreen.inScreen: Invalid screenName: "+String(screenName))}function br(){var e=x._current_screen;if(e&&!_(e.screen)&&!e.implicit)return String(e.screen);var name=ur()||"/";return e&&e.id&&e.screen===name&&!e.endtime||_r(name,void 0,void 0,void 0,!0),name}function yr(){var e=x._current_screen;e&&e.id&&e.endtime&&!_(e.screen)&&_r(String(e.screen))}const zr=/^([a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Ar=/[^a-zA-Z0-9\-._*\/]+/g;function wr(e){if(nt("trackApi")){var t,r=(e=e||{}).url||e.path||"",method=(e.method||"GET").toString(),i="number"==typeof e.responsecode?e.responsecode:"number"==typeof e.status?e.status:0,o=e.responsemessage||e.statusText||e.error||"-",s=v(),c="number"==typeof e.starttime?e.starttime:s;t="number"==typeof e.endtime?e.endtime:"number"==typeof e.duration?c+e.duration:s;var d=e.scheme||"",u=e.hostname||"",l="number"==typeof e.port?e.port:0,p=e.path||"",f=_(e.url)&&!_(e.hostname);if(!_(r))try{var g=new URL(r,window.location.origin);_(d)&&!f&&(d=g.protocol.replace(":","")),_(u)&&(u=g.hostname),l||f||(l=g.port?parseInt(g.port,10):"https:"===g.protocol?443:80),_(p)&&(p=g.pathname)}catch(e){_(p)&&(p=r)}if(d="https"===d||"http"===d?d:"https",l||(l="https"===d?443:80),zr.test(u))if(jn(d+"://"+u+(l&&!("https"===d&&443===l||"http"===d&&80===l)?":"+l:"")+("/"===String(p).charAt(0)?"":"/")+p)){p=function(e){if(_(e))return"/";var t=e.replace(Ar,"*");return"/"===t.charAt(0)?t:"/"+t}(Gn(p));var m=x._current_session.starttime||c,h={id:E(),type:n.API,scheme:d,port:l,hostname:u,path:p,method:method,responsecode:i,responsemessage:o,starttime:c,endtime:t,sessionstarttime:m,networkstatus:He(),edge:x._device_info.connectionType||Ue()};yn(),Fe(),Ae.add(h),C.log("AppticsApi('"+method+" "+d+"://"+u+p+"')"),C.dir(h)}else C.log("AppticsApi: "+u+function(e){return String(e||"").split(/[?#]/)[0]}(p)+" is left out by configureApiTracking");else N(a.API,"AppticsApi: hostname not accepted by the server: "+String(u))}}var Sr={},Er=[];var xr=!1,Pr=null,Tr=null,Or=null;function Ir(e){if(_(e))return!1;var t;try{t=new URL(e,window.location.href)}catch(e){return!1}return("https:"===t.protocol||"http:"===t.protocol)&&(!function(url,e){for(var t=[x._defaultoptions.base_domain,x._defaultoptions.serviceUrl],n=0;n<t.length;n++)if(!_(t[n])&&0===url.indexOf(t[n]))return!0;var r=P("endpoint");return!_(r)&&0===e.indexOf(r)}(t.href,t.pathname)&&jn(t.href))}function Cr(method,url,e,t,n){try{wr({url:url,method:method,responsecode:t,responsemessage:n,starttime:e,endtime:v()})}catch(e){C.log("auto api tracking: "+String(e))}}function Rr(){"function"==typeof fetch&&(Or=fetch,window.fetch=function(e,t){var url,method,n;try{url=function(e){return"string"==typeof e?e:"undefined"!=typeof Request&&e instanceof Request?e.url:String(e)}(e),method=function(e,t){return t&&t.method?t.method:"undefined"!=typeof Request&&e instanceof Request?e.method:"GET"}(e,t),n=v()}catch(n){return Or(e,t)}return Ir(url)?Or(e,t).then(function(e){return Cr(method,url,n,e.status,e.statusText||"-"),e},function(e){throw Cr(method,url,n,0,String(e&&e.message?e.message:e)||"Network Error"),e}):Or(e,t)})}function enableApiTracking(enabled){var on="boolean"!=typeof enabled||enabled;if(on!==xr){if(on)return"function"==typeof XMLHttpRequest&&(Pr=XMLHttpRequest.prototype.open,Tr=XMLHttpRequest.prototype.send,XMLHttpRequest.prototype.open=function(method,url){try{var e=String(url);Ir(e)?this._ap_api={method:String(method||"GET"),url:e,starttime:0}:this._ap_api=void 0}catch(e){this._ap_api=void 0}return Pr.apply(this,arguments)},XMLHttpRequest.prototype.send=function(){const e=this._ap_api;return e&&(e.starttime=v(),this.addEventListener("loadend",function(){var message=0===this.status?"Network Error":this.statusText||"-";Cr(e.method,e.url,e.starttime,this.status,message)})),Tr.apply(this,arguments)}),Rr(),xr=!0,void C.log("automatic api tracking: on");Pr&&(XMLHttpRequest.prototype.open=Pr),Tr&&(XMLHttpRequest.prototype.send=Tr),Or&&(window.fetch=Or),Pr=Tr=Or=null,xr=!1,C.log("automatic api tracking: off")}}function trackError(e,t){var r;if(tt(r="trackError")&&(x._errorTracking||(C.log("apptics."+r+": error tracking is turned off by the server"),0)))if(_(e))C.warn("AppticsError.trackError: Invalid error");else{var i=Tn(t),a=function(e){var t=e.reason?.stack||e.error?.stack||e.stack||"";if(!_(t))return t;var n=e.filename||e.fileName||"";if(_(n))return"";var r=void 0!==e.lineno?e.lineno:e.lineNumber,i=void 0!==e.colno?e.colno:e.columnNumber;return"at "+n+(_(r)?"":":"+r)+(_(i)?"":":"+i)}(e),o=function(e){let t="";if(_(e))return t;const n=e.split("\n");if(n.length<2)return t;const r=/at (\S+) \(/,i=/^(\w+)@/;for(let e of n){const n=e.match(r),a=e.match(i);if(n&&n[1]){const r=/\((.*)\)/.exec(e),url=r?r[1]:"Unknown URL";t=n[1],url.split("/").pop();break}if(a&&a[1]){t=a[1],e.split("@")[1].split("/").pop();break}}return t}(a)||"",s=e.type||"",c=function(e){if(null==e)return"";if("object"!=typeof e)return String(e);if(e instanceof Error||"string"==typeof e.message&&"string"==typeof e.name)return String(e);if("undefined"!=typeof Event&&e instanceof Event)return'Event "'+e.type+'"'+function(e){var t=e;if(!t||"string"!=typeof t.tagName)return"";var n=t.tagName.toLowerCase(),url=t.currentSrc||t.src||t.href||"";return" on <"+n+(url?(t.href&&!t.src?' href="':' src="')+url+'"':"")+">"}(e.target);var t=String(e);if("[object Object]"!==t)return t;try{return JSON.stringify(e).slice(0,300)}catch(e){return t}}(e.reason||e.error||e.message||""),message=(_(String(c))?_(s)?"Unknown error":String(s):String(c))+(_(o)?"":" at "+o),d=v(),u={id:E(),type:n.ERROR,edge:x._device_info.connectionType||Ue(),networkstatus:He(),happenedat:d,issuename:message,message:_(a)?_(String(c))?"no stack available":String(c):a,screenname:x._current_screen.screen||window.location.pathname,sessionstarttime:x._current_session.starttime||d,customproperties:i};yn(),Fe(),we.add(u),C.log("AppticsError.trackError('"+s+"','"+message+"',"+JSON.stringify(i||{})+")"),C.dir(u)}}function Nr(e){x._deferSendTimer&&clearTimeout(x._deferSendTimer),x._deferSendTimer=setTimeout(e,500)}function Mr(){x._deferSendTimer&&(clearTimeout(x._deferSendTimer),x._deferSendTimer=null)}function Lr(name,e){var t="undefined"!=typeof navigator?navigator.locks:void 0;return t&&"function"==typeof t.request?t.request("apptics-send-"+name,{ifAvailable:!0},function(t){return t?e():void 0}).then(function(){}):e()}function qr(e,t,n){return e.payload().then(function(r){var i=[],a=[];return r.forEach(function(e){t(e)&&(T(n(e))?a:i).push(e)}),a.length?e.remove(a).then(function(){return i}):i})}function Dr(e,t,n,r){var i=yt(t);if(i)return i;if(!et())return Promise.reject(t+": tracking is off");if(b(n))return Promise.reject(t+": nothing to send");var a=wt(t);if(a)return a;if(n.hasOwnProperty("meta")||(n.meta=At()),function(e){return ot(e).attempt>5}(e))return R("apptics: dropping a "+t+" batch after 5 attempts"),function(e){p[e]&&st(e,{attempt:1,firstattempttime:0,lst:ot(e).lst})}(e),Promise.resolve({result:"success"});C.log(t+": Payload size : "+w(n)/1024);var o=JSON.stringify(n);return r?bt(e,o,gt(),t):kt(e,o,gt(),t)}function Fr(e,t,n){if(!t)return e.then(function(){});e.catch(function(e){C.log(n+": not confirmed before the page closed, kept for the next send: "+String(e))})}function jr(e){return!Ye()&&et()&&x._engagementTracking?0==navigator.onLine?(C.warn("sendEngagementData: No Network"),Promise.resolve()):x._sending?(Nr(jr),Promise.resolve()):(x._sending=!0,Mr(),Lr("engagements",function(){return qr(Ae,function(e){return 0!=e.endtime},function(e){return e.starttime}).then(function(t){if(0==t.length)return;let r=[],i=[],a=[],o=[];var s={},c=[];return A(t).forEach(function(e){const t={...e};if(e.type==n.EVENT)a.push(e);else if(e.type==n.SCREEN)i.push(e);else if(e.type==n.SESSION)r.push(e);else{if(e.type!=n.API)return;o.push(e)}c.push(t),delete e.id,delete e.type,delete e.tabs,delete e.tab,delete e.lastseen}),a.length>0&&(s.events=a),i.length>0&&(s.screens=i),r.length>0&&(s.sessions=r),o.length>0&&(s.apis=o),b(s)?void 0:Fr(function(e,t){return Dr("engagement","requestToSendEngagements",e,t)}(s,e).then(function(){return Ae.remove(c)},function(e){return ht(e)?(R("apptics: the server refused these engagement items, so they were dropped: "+String(e&&e.message)),Ae.remove(c)):Promise.reject(e)}),e,"sendEngagementData")})}).catch(function(e){N(a.API,"sendEngagementData: "+e)}).then(function(){x._sending=!1})):Promise.resolve()}function Br(e){return!Ye()&&et()&&x._errorTracking?0==navigator.onLine?(C.warn("sendErrorData: No Network"),Promise.resolve()):x._sending?(Nr(Br),Promise.resolve()):(x._sending=!0,Mr(),Lr("errors",function(){return qr(we,function(e){return 0!=e.happenedat},function(e){return e.happenedat}).then(function(t){if(0==t.length)return;let n=[];var r=[];return A(t).forEach(function(e){r.push({...e}),e.hasOwnProperty("screenname")||(e.screenname=""),delete e.id,delete e.type,n.push(e)}),Fr(function(e,t){return Dr("error","requestToSendErrors",e,t)}({exceptiondetails:n},e).then(function(){return we.remove(r)},function(e){return ht(e)?(R("apptics: the server refused these errors, so they were dropped: "+String(e&&e.message)),we.remove(r)):Promise.reject(e)}),e,"sendErrorData")})}).catch(function(e){C.log("sendErrorData:"+e)}).then(function(){x._sending=!1})):Promise.resolve()}function flush(e){return tt("flush")?(x._sending=!1,jr(e).then(function(){return Br(e)}).then(function(){return Le.sendHeatmaps(e)})):Promise.resolve()}var Ur=null,Hr=null;function Gr(){null===Ur&&(Ur=setInterval(function(){De()&&(C.log("apptics: debug mode has been idle for an hour, switching it off"),Be(!1)),C.log("scheduleToSendDataToServer: Scheduling to send engagement data to the server after sometime"),jr().then(function(){return Br()}).then(function(){return Le.sendHeatmaps()})},P("batch_flush_interval"))),null===Hr&&(Hr=setInterval(function(){x._nextConfigCheck>0&&v()<x._nextConfigCheck||(C.log("scheduleToGetUpdatesFromServer: asking the server for its config"),Yt().catch(function(e){C.log(e)}))},P("getupdates_interval")))}function Vr(){return!(!x._token||Ye())&&(!!x._remoteLoggerEnabled&&et())}const Kr="remoteLog";let Wr=!1,Zr=!1;function Jr(e){var t={sessionstarttime:x._current_session.starttime||e.happenedat||v(),logtime:e.happenedat||v(),level:Number(e.level)||3,logmessage:String(e.exceptionlog).slice(0,1e4),function:String(e.module||"SDK").slice(0,100),linenumber:Number(e.linenumber)||0};return _(e.filename)||(t.filename=String(e.filename).slice(0,100)),t}function Yr(e){return JSON.stringify({logs:e.map(Jr),meta:At()})}function Qr(){return Zr||!Vr()||!1===navigator.onLine?Promise.resolve():(Zr=!0,xe.all().then(function(e){var t=function(e){for(var t=0,n=e.length,r=e.length-1;r>=0&&!((t+=JSON.stringify(e[r]).length)>1048576);r--)n=r;return 0===n?e:(xe.remove(e.slice(0,n)),e.slice(n))}(e).slice(0,50);if(0!==t.length)return kt("consolelog",Yr(t),gt(),Kr).then(function(){return xe.remove(t)},function(e){if(ht(e))return R("apptics: the server refused these log lines, so they were dropped: "+String(e&&e.message)),xe.remove(t);C.log(Kr+": "+String(e))})}).then(function(){Zr=!1}).catch(function(){Zr=!1}))}function $r(){var e=Ie.item("user_info");if(!e||"object"!=typeof e||_(e.userid)){var t=Ie.item("users")||[],n={};t.length>0&&(n=t.filter(e=>1===e.status)[0]||{}),x._user_info=n}else x._user_info=e}let Xr=!1,ei=null,ti=0;function ni(config){var e=Object.assign({},config);return Object.keys(u).forEach(function(key){var t=u[key];_(config[key])?(delete e[t],Object.keys(g).forEach(function(n){g[n]!==key||_(config[n])||(R("Apptics.init: "+n+" is now "+key+"; rename it in your config"),_(e[t])&&(e[t]=config[n]))})):e[t]=config[key]}),_(e.serviceUrl)||(e.serviceUrl=String(e.serviceUrl).replace(/\/+$/,"")),e.appversion=function(value){if("number"==typeof value)return isFinite(value)?String(value):"";return"string"==typeof value?value.trim():""}(e.appversion),e}const ri=["YOUR_APP_VERSION","YOUR_BUILD_OR_APP_VERSION","YOUR_APPVERSION"];function ii(e){return e.serviceUrl+"|"+e.identifier}var ai="";const oi=Object.freeze([{key:"batch_flush_interval",min:1e3,max:36e5},{key:"getupdates_interval",min:1e4,max:864e5},{key:"batch_size",min:1,max:500},{key:"batch_request_timeout",min:1,max:30},{key:"min_session_duration",min:0,max:6e4},{key:"heatmap_max_per_session",min:0,max:1e4}]);function si(){Ie.add(it,void 0),Ie.clear(),Ae.clear(),we.clear()}function init(config){if(!config||"object"!=typeof config)return R("Apptics.init: a config object is required, e.g. Apptics.init({ base_url, auth_key, app_domain, appversion })"),!1;if(x._initialised)return C.warn("Apptics.init: already initialised; call Apptics.reset() to start again"),!1;if(!function(){if("undefined"==typeof window||"undefined"==typeof document||"undefined"==typeof Promise)return!1;try{return"undefined"!=typeof indexedDB||!!window.localStorage}catch(e){return!1}}())return R("Apptics.init: skipped, no browser with storage and Promise support"),!1;var e,t,n=ni(config),r=d.filter(function(key){return _(n[u[key]||key])});if(r.length>0)return R("Apptics.init: missing required config: "+r.join(", ")),!1;if(e=n.appversion,-1!==ri.indexOf(e.toUpperCase()))return R('Apptics.init: appversion is still the placeholder "'+n.appversion+"\"; replace it with your app's version or build number, e.g. '2.4.0'"),!1;x._defaultoptions=n,x._defaultoptions.base_domain=n.serviceUrl,x._frameworkID=function(e){var t=e;try{t=new URL(e).hostname}catch(e){}return-1!==t.indexOf("localzoho")?5970:6002}(n.serviceUrl),x._token=n.identifier,_(config.console_log)||(x._config.debug=!!config.console_log),"boolean"==typeof config.ignore_do_not_track&&(x._config.ignore_do_not_track=config.ignore_do_not_track),x._config.debug_api="boolean"==typeof config.debug?config.debug:"boolean"==typeof config.debug_api?config.debug_api:c.debug_api,t=x._config.debug_api,Be(null!==je?je:t),x._config.device_name="string"==typeof config.device_name?config.device_name:c.device_name,void 0!==config.remote_log&&R("Apptics.init: remote_log is no longer read; the Remote Logger page shows the lines your app logs with AppticsLogger"),void 0!==config.show_logs&&R("Apptics.init: show_logs is no longer read; AppticsLogger lines are not printed to the browser console"),x._config.track_api=c.track_api,["track_api_hosts","track_api_exclude_hosts"].forEach(function(key){void 0!==config[key]&&R("Apptics.init: "+key+" is no longer supported; use AppticsApi.configure(new AppticsApi.ApiTrackingBuilder()."+("track_api_hosts"===key?"allowOnlyDomains":"ignoreDomains")+"(...).build())")}),["DC","quartz_workspace_key","quartz_department_key"].forEach(function(key){void 0!==config[key]&&R("Apptics.init: "+key+" is no longer read; screen recording in the feedback form is set up from the Apptics console")}),void 0!==config.track_session&&R("Apptics.init: track_session is no longer read; sessions are always recorded. To stop tracking, use AppticsSettings.setTrackingStatus(AppticsSettings.AP_TRACKING_STATUS.NO_TRACKING)"),"boolean"==typeof config.track_api&&(x._config.track_api=config.track_api),enableApiTracking(x._config.track_api),x._config.track_heatmap="boolean"==typeof config.track_heatmap?config.track_heatmap:c.track_heatmap,Le.trackHeatmap(x._config.track_heatmap),x._config.track_screen="boolean"==typeof config.track_screen?config.track_screen:c.track_screen,x._config.screen_routes=function(e){if(!Array.isArray(e))return[];var t=[];return e.forEach(function(e){if("string"!=typeof e){var n=e&&"object"==typeof e?e:null,name=n&&"string"==typeof n.name?n.name.trim():"";if(n&&""!==name&&"string"==typeof n.equals&&""!==n.equals.trim())t.push({kind:"equals",path:Zn(n.equals.trim()),name:name});else{if(n&&""!==name&&void 0!==n.regex){var r=null;if(n.regex instanceof RegExp)r=n.regex;else if("string"==typeof n.regex&&""!==n.regex)try{r=new RegExp(n.regex)}catch(e){r=null}if(r)return void t.push({kind:"regex",regex:r,name:name})}R("Apptics.init: screen_routes entry "+function(value){try{return JSON.stringify(value,function(e,t){return t instanceof RegExp?String(t):t})||String(value)}catch(e){return String(value)}}(e)+" is left out: give a route pattern, { equals, name } or { regex, name }")}}else""!==e.trim()&&t.push({kind:"pattern",pattern:e.trim()})}),t}(config.screen_routes),"light"!==config.feedback_theme&&"dark"!==config.feedback_theme&&"auto"!==config.feedback_theme||(x._config.feedback_theme=config.feedback_theme),function(config){if(oi.forEach(function(e){var value=config[e.key];if(x._config[e.key]=c[e.key],!_(value)){var t=Number(value);!isFinite(t)||t<e.min||t>e.max?R("Apptics.init: "+e.key+" must be between "+e.min+" and "+e.max+", keeping "+x._config[e.key]):(x._config[e.key]=t,C.log("Apptics.init: "+e.key+" set to "+t))}}),x.inactiveduration=30,!_(config.inactiveduration)){var e=Number(config.inactiveduration);!isFinite(e)||e<1||e>1440?R("Apptics.init: inactiveduration must be between 1 and 1440 minutes, keeping "+x.inactiveduration):(x.inactiveduration=e,C.log("Apptics.init: inactiveduration set to "+e))}}(config),ei=config,x._initialised=!0,x._ready=!1,x._pending=[];var i=++ti;return x._readyPromise=be().then(function(e){return i===ti&&(e?(function(e){var t=Ie.item("app_version_info")||{},n=_(t.serviceUrl)||_(t.identifier)?Ie.item("appkey"):ii(t);ai=String((_(t.appversion)?Ie.item("appversion"):t.appversion)||""),Ie.add("appkey",void 0),Ie.add("appversion",void 0),_(n)||n===ii(e)||(C.log("init: stored data belongs to another app, resetting"),si(),ai="")}(x._defaultoptions),Lt().then(function(e){return i===ti&&(!e&&Mt()?(R("Apptics.init: offline, so app/addversion is tried again when the browser is back online; calls made until then are kept"),function(e){return new Promise(function(t){var n=null,r=!1;function i(e){window.removeEventListener("online",a),null!==n&&clearInterval(n),t(e)}function a(){e===ti?r||!1===navigator.onLine||(r=!0,Lt().then(function(e){r=!1,e?i(!0):Mt()||(R("Apptics.init: app/addversion did not return the app ids, not starting"),i(!1))})):i(!1)}window.addEventListener("online",a),n=setInterval(a,ci)})}(i).then(function(e){return i===ti&&(e?di(config,i):(x._initialised=!1,x._token="",x._pending=[],!1))})):e?di(config,i):(R("Apptics.init: app/addversion did not return the app ids, not starting"),x._initialised=!1,x._token="",x._pending=[],!1))})):(R("Apptics.init: no usable storage (IndexedDB or localStorage), not starting"),x._initialised=!1,x._token="",x._pending=[],!1))}).catch(function(e){return C.error("Apptics.init: start-up failed",e),!1}),!0}const ci=6e4;function ready(){return x._readyPromise||Promise.resolve(!1)}function di(config,e){var t,n;(t=ln())&&!pn&&(pn=!0,t.request(un+cn(),function(){return new Promise(function(){})}).catch(function(){pn=!1})),x._token=String(x._defaultoptions.aaid),(n=Ie.item("trackinfo"))&&"object"==typeof n&&($t(n),C.log("restoreServerSettings: "+JSON.stringify(x._trackinfo)));var r=""!==ai&&ai!=x._defaultoptions.appversion;return x._ignoreDnt=x._config.ignore_do_not_track,Ne.update_status(Ne.opt_in_status()),Kt().then(function(){return e===ti&&function(e,t){e&&(x._device_info.appversionid="",Jt(x._device_info).then(function(e){k(e)&&C.log("init: appversion updated to "+x._defaultoptions.appversion)}).catch(function(e){C.log("init: error updating appversion: "+e)}));return x._device_info.connectionType=Ue(),function(){if(Xr)return;Xr=!0;var e=navigator.connection||navigator.mozConnection||navigator.webkitConnection;e&&e.addEventListener&&e.addEventListener("change",function(){x._device_info.connectionType=Ue()});window.addEventListener("blur",function(){ui()&&(C.log("Window lost focus, user switched to another window or application"),gn(Sn))}),window.addEventListener("focus",function(){ui()&&(C.log("Window regained focus, user switched back to the window"),wn(),Gr())}),window.addEventListener("pagehide",gi),window.addEventListener("pageshow",function(e){ui()&&e.persisted&&(C.log("restored from the back/forward cache: starting a new session"),wn().then(yr),Gr())}),document.addEventListener("visibilitychange",function(){ui()&&("hidden"!==document.visibilityState?(C.log("page visible: refreshing the server settings"),wn().then(yr),Xt()):function(){if(!ui())return;tn(),flush(!0),C.log("page hidden: closing the open screen and flushing")}())}),window.addEventListener(window.cordova?"deviceready":"load",function(){ui()&&wn()},{passive:!0}),window.addEventListener("online",function(){if(ui()){if(_(ut("apid"))&&_(ut("mapid"))||!St())return C.log("back online: registering this device before sending"),void Kt().then(Wt).then(function(){ui()&&(flush(),Qr())});flush(),Qr()}},{passive:!0}),window.screen&&window.screen.orientation&&"function"==typeof window.screen.orientation.addEventListener&&window.screen.orientation.addEventListener("change",function(){x._properties.orientation=Ve()});window.addEventListener("unhandledrejection",function(e){ui()&&x._isGlobalErrorTracking&&trackError(e)}),window.addEventListener("error",function(e){if(ui()&&x._isGlobalErrorTracking){var t=e.target;t&&t!==window&&"string"==typeof t.tagName?trackError({type:"error",reason:e}):trackError(e)}},!0),window.addEventListener("click",fi,!0)}(),x._properties.orientation=Ve(),$r(),wn().then(function(){if(t!==ti)return!1;Gr(),Qr(),x._ready=!0;var e=x._pending;return x._pending=[],e.forEach(function(e){try{e()}catch(e){C.error("apptics: buffered call failed",e)}}),mr(x._config.track_screen),Le.remoteConfigStarted(),window.appticsReadyStatus=!0,"function"==typeof window.appticsReady&&window.appticsReady(),!0})}(r,e)})}function ui(){return x._ready}function li(e,name){var value=e.getAttribute(name);return null!==value&&""!==value?value:e.getAttribute("data-"+name)}function pi(name){return"["+name+"]:not(["+name+'=""]),[data-'+name+"]:not([data-"+name+'=""])'}function fi(e){if(window.appticsReadyStatus&&ui()){var t=e.target;if(t&&"function"!=typeof t.closest&&(t=t.parentElement),t){var n=t.closest(pi("apeventaction"));if(n){var eventName=li(n,"apeventaction")||"",r=n.closest(pi("apgroupaction")),groupName=r&&li(r,"apgroupaction")||c.default_group_name,i={},a=li(n,"apeventprops");if(!_(a))try{i=JSON.parse(a)}catch(e){C.warn('apptics: invalid JSON in apeventprops for "'+eventName+'", sending no properties'),i={}}_(eventName)||kr(eventName,groupName,i)}}}}function gi(){ui()&&(C.log("page closing: ending the session and sending what is queued"),tn(),Vr()?xe.all().then(function(e){if(0!==e.length){var t=e.slice(0,50);bt("consolelog",Yr(t),gt(),Kr).then(function(){return xe.remove(t)},function(e){if(ht(e))return xe.remove(t);C.log(Kr+": "+String(e))})}}):Promise.resolve(),An().then(function(){return flush(!0)}))}var mi=!1,hi=0,vi=[],ki=0,_i=0,bi=0,yi=null,zi=null,Ai=new WeakMap,wi=0,Si=0;function Ei(){var e=P("heatmap_max_per_session");return("number"!=typeof e||e<=0)&&(e=c.heatmap_max_per_session),!(hi>=e)||(hi===e&&(hi++,C.log("apptics.heatmap: reached "+e+" records for this session, pausing capture")),!1)}function xi(){var e=document.documentElement,t=document.body;return Math.max(e?e.scrollHeight:0,t?t.scrollHeight:0,e?e.clientHeight:0)}function Pi(e,t){if(!t||t<=0)return 0;var value=e/t;return value<0&&(value=0),value>1&&(value=1),Math.round(1e3*value)/1e3}function Ti(){return window.innerWidth||(document.documentElement?document.documentElement.clientWidth:0)||1}function Oi(t){if(!t)return"";for(var n=["data-ap-label","apeventaction","data-apeventaction","aria-label","name","id","title"],r=0;r<n.length;r++){var value=t.getAttribute?t.getAttribute(n[r]):null;if(!_(value))return String(value).slice(0,80)}var i=t.tagName?t.tagName.toLowerCase():"element";if(getTrackingStatus()!==e.USAGE_TRACKING_WITH_PII){var a=t.getAttribute?t.getAttribute("role"):null;return _(a)?i:i+"["+a+"]"}var o=(t.textContent||"").replace(/\s+/g," ").trim();return _(o)?i:o.slice(0,80)}function Ii(e){if(!e)return 0;for(var t="",n=e,r=0;n&&r<12;){var i=n.parentElement,a=0;if(i)for(var o=i.children,s=0;s<o.length;s++)if(o[s]===n){a=s;break}t="/"+(n.tagName||"?")+":"+a+t,n=i,r++}for(var c=2166136261,d=0;d<t.length;d++)c=16777619*(c^=t.charCodeAt(d))>>>0;return c}function Ci(e,t,n){return(vi=vi.filter(function(e){return n-e.at<=1e3})).push({at:n,x:e,y:t}),vi.filter(function(n){return Math.abs(n.x-e)<=30&&Math.abs(n.y-t)<=30}).length>=3}function Ri(){return{id:E(),session_start_time:x._current_session.starttime||v(),triggered_time:v(),screen:String(br()).slice(0,500),url_path:String(window.location.pathname).slice(0,500),screen_width:window.screen?window.screen.width:0,screen_height:window.screen?window.screen.height:0,content_height:xi(),orientation:Ve(),network_status:He(),edge_type:x._device_info.connectionType||Ue(),scroll_offset_x:Math.round(window.scrollX||window.pageXOffset||0),scroll_offset_y:Math.round(window.scrollY||window.pageYOffset||0)}}function Ni(e){hi++,Fe(),yn(),Ee.add(e),C.dir(e)}function Mi(e){if(rt("heatmap")&&Ei())try{var t=v(),n=e.target,r=function(e){for(var t=0;e&&t<10;){var n=e.tagName?e.tagName.toLowerCase():"",r=e.getAttribute?e.getAttribute("role"):null;if("a"===n||"button"===n||"input"===n||"select"===n||"textarea"===n||"summary"===n||"label"===n||"button"===r||"link"===r||"tab"===r||"menuitem"===r||e.hasAttribute&&e.hasAttribute("onclick"))return e;e=e.parentElement,t++}return null}(n),i=r||n,o=Math.round(e.clientX),s=Math.round(e.clientY),c=xi()||1,d=e.pointerType,u=Object.assign(Ri(),{triggered_type:"default",gesture_type:"click",gesture_duration:0,input_type:_(d)?"mouse":String(d),element_label:Oi(i),triggered_id:Ii(i),coordinate_x:o,coordinate_y:s,normalized_x:Pi(o,Ti()),normalized_y:Pi((window.scrollY||0)+s,c),velocity:0,is_clickable:r?1:0,is_rage_click:Ci(o,s,t)?1:0,is_dead_click:0});Ni(u),function(e){if(1===e.is_clickable||"function"!=typeof MutationObserver)return;var t=!1,url=window.location.href,n=new MutationObserver(function(){t=!0});try{n.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0})}catch(e){return}setTimeout(function(){n.disconnect(),t||window.location.href!==url||(e.is_dead_click=1,Ee.update(e))},1500)}(u)}catch(e){N(a.HEATMAP,"apptics.heatmap: click capture failed: "+String(e))}}function Li(e){if(rt("heatmap")&&Ei()){var t=function(e){var t=document;if(!e||1!==e.nodeType||e===t.documentElement||e===t.body)return null;var n=e;return n.clientHeight>=.5*(window.innerHeight||0)&&n.clientWidth>=.5*Ti()?n:void 0}(e?e.target:null);if(void 0!==t){if(null!==yi&&t!==zi&&(clearTimeout(yi),qi()),null===yi){zi=t;var n=function(e){return null===e?{x:wi,y:Si}:Ai.get(e)||{x:0,y:0}}(t);ki=v(),_i=n.x,bi=n.y}else clearTimeout(yi);yi=setTimeout(qi,150)}}}function qi(){yi=null;var e=zi;zi=null;try{var t=function(e){return null===e?{x:Math.round(window.scrollX||window.pageXOffset||0),y:Math.round(window.scrollY||window.pageYOffset||0)}:{x:Math.round(e.scrollLeft||0),y:Math.round(e.scrollTop||0)}}(e),n=t.x,r=t.y,i=n-_i,o=r-bi;if(null===e?(wi=n,Si=r):Ai.set(e,t),0===i&&0===o)return;var s=Math.max(1,v()-ki),c=Math.sqrt(i*i+o*o),d=Math.abs(o)>=Math.abs(i)?o>0?"down-scroll":"up-scroll":i>0?"right-scroll":"left-scroll",u=(null===e?xi():e.scrollHeight)||1,l=null===e?window.innerHeight||0:e.clientHeight;Ni(Object.assign(Ri(),null===e?{}:{content_height:e.scrollHeight,scroll_offset_x:n,scroll_offset_y:r},{triggered_type:"default",gesture_type:d,gesture_duration:Math.round(s),element_label:"",triggered_id:0,coordinate_x:n,coordinate_y:r,normalized_x:0,normalized_y:Pi(r+l,u),velocity:Math.round(c/s*1e3),is_clickable:0,is_rage_click:0,is_dead_click:0}))}catch(e){N(a.HEATMAP,"apptics.heatmap: scroll capture failed: "+String(e))}}function trackHeatmap(status){var e="boolean"!=typeof status||status;if(e!==mi){if(e)return wi=Math.round(window.scrollX||0),Si=Math.round(window.scrollY||0),window.addEventListener("pointerdown",Mi,{capture:!0,passive:!0}),window.addEventListener("scroll",Li,{capture:!0,passive:!0}),mi=!0,void C.log("apptics.heatmap: capturing clicks and scrolls");window.removeEventListener("pointerdown",Mi,!0),window.removeEventListener("scroll",Li,!0),null!==yi&&(clearTimeout(yi),qi()),zi=null,mi=!1,C.log("apptics.heatmap: capture stopped")}}function Di(e){if(x._initialised)return!1;var t=function(){if("undefined"!=typeof window&&window.appticssettings)return window.appticssettings._defaultoptions}();return!(!t||"object"!=typeof t)&&e.init(t)}Le.trackHeatmap=trackHeatmap,Le.resetHeatmap=function(){hi=0,vi=[],wi=0,Si=0,Ai=new WeakMap},Le.sendHeatmaps=function e(t){return!Ye()&&et()&&x._heatmapTracking?0==navigator.onLine?(C.warn("sendHeatmapData: No Network"),Promise.resolve()):x._sending?(Nr(e),Promise.resolve()):(x._sending=!0,Mr(),Lr("heatmaps",function(){return qr(Ee,function(){return!0},function(e){return e.triggered_time||e.session_start_time}).then(function(e){if(0!=e.length){var n=[],r=[];return A(e).forEach(function(e){r.push({...e}),delete e.id,n.push(e)}),Fr(function(e,t){return Dr("heatmap","requestToSendHeatmaps",e,t)}({data:n},t).then(function(){return Ee.remove(r)},function(e){return ht(e)?(R("apptics: the server refused these heatmap records, so they were dropped: "+String(e&&e.message)),Ee.remove(r)):Promise.reject(e)}),t,"sendHeatmapData")}})}).catch(function(e){C.log("sendHeatmapData:"+e)}).then(function(){x._sending=!1})):Promise.resolve()};const Fi=F("Apptics.init",init),ji=F("Apptics.ready",ready),Bi=F("Apptics.flush",flush),Ui=F("Apptics.reset",function reset(){ti++,null!==Ur&&clearInterval(Ur),null!==Hr&&clearInterval(Hr),Ur=null,Hr=null,Mr(),enableApiTracking(!1),mr(!1),Tt=null,Ie.add(xt,void 0),Le.trackHeatmap(!1),Le.resetHeatmap(),Le.resetRemoteConfig(),si(),x._initialised=!1,x._ready=!1,x._pending=[],x._readyPromise=null,x._device_info={},x._user_info={},x._current_screen={},x._current_session={},x._uuid="",x._apid="",x._mapid="",x._sending=!1,C.log("Apptics.reset()"),ei&&init(ei)}),Hi=F("Apptics.enableDebug",function enableDebug(){je=!0,Be(!0)}),Gi=F("Apptics.disableDebug",function disableDebug(){je=!1,Be(!1)}),Vi={init:function init(config){return j(Fi,arguments)},ready:function ready(){return j(ji,arguments)},flush:function flush(){return j(Bi,arguments)},reset:function reset(){return j(Ui,arguments)},enableDebug:function enableDebug(){return j(Hi,arguments)},disableDebug:function disableDebug(){return j(Gi,arguments)}},Ki=F("AppticsEvent.addEvent",kr),Wi={DefinedEvents:Kn,addEvent:function addEvent(eventName,groupName,properties){return j(Ki,arguments)}},Zi=F("AppticsScreen.inScreen",function(screenName,e,id,t){In(screenName)?(Le.screenTrackedByApp(),_r(screenName,e,id,t)):vr(a.SCREEN,"AppticsScreen.inScreen: Invalid screenName: "+String(screenName))}),Ji=F("AppticsScreen.outScreen",function(id,e){_(id)?N(a.SCREEN,"AppticsScreen.outScreen: no screen id given"):en(id,e)}),Yi={inScreen:function inScreen(screenName,properties){if(!In(screenName))return Zi(screenName,properties,"",v()),"";var id=E();return Zi(screenName,properties,id,v()),id},outScreen:function outScreen(id){Ji(id,v())}},Qi=F("AppticsApi.endTrackApi",function(id,responseCode,responseMessage,e){var t=Sr[id];t?(delete Sr[id],Er=Er.filter(function(e){return e!==id}),wr({url:t.url,method:t.method,responsecode:"number"==typeof responseCode?responseCode:0,responsemessage:responseMessage,starttime:t.starttime,endtime:e})):N(a.API,"AppticsApi.endTrackApi: no call started with id "+String(id))}),$i=F("AppticsApi.startTrackApi",function startTrackApi(url,method){var id=E();return Sr[id]={url:String(url||""),method:String(method||"GET").toUpperCase(),starttime:v()},Er.push(id),Er.length>500&&delete Sr[Er.shift()],id}),Xi=F("AppticsApi.configure",function(config){var e=config instanceof Mn?config.build():config;if(e&&"object"==typeof e){var t=function(e){return"string"==typeof e},n=function(e){return e instanceof RegExp};qn={allowEquals:Rn("allowEquals",Dn(e.allowEquals,t)),ignoreEquals:Rn("ignoreEquals",Dn(e.ignoreEquals,t)),allowRegex:Dn(e.allowRegex,n).concat(Nn("allowRegex",Dn(e.allowRegex,t))),ignoreRegex:Dn(e.ignoreRegex,n).concat(Nn("ignoreRegex",Dn(e.ignoreRegex,t)))}}else qn={allowEquals:[],ignoreEquals:[],allowRegex:[],ignoreRegex:[]}}),ea=F("AppticsApi.enableApiTracking",enableApiTracking),ta={startTrackApi:function startTrackApi(url,method){return j($i,arguments)},endTrackApi:function endTrackApi(id,responseCode,responseMessage){Qi(id,responseCode,responseMessage,v())},ApiTrackingBuilder:Mn,configure:function configure(config){return j(Xi,arguments)},enableApiTracking:function enableApiTracking(enabled){return j(ea,arguments)}},na=F("AppticsError.trackError",trackError),ra=F("AppticsError.trackGlobalErrorHandler",function trackGlobalErrorHandler(status){x._isGlobalErrorTracking="boolean"!=typeof status||status}),ia={trackError:function trackError(error,properties){return j(na,arguments)},trackGlobalErrorHandler:function trackGlobalErrorHandler(enabled){return j(ra,arguments)}},aa=F("AppticsUser.setUser",function setUser(userid,groupid,t){let n=t||{};if(userid=userid||"",groupid=groupid||"",tt("setUser"))if(_(userid))N(a.PROPERTIES,"AppticsUser.setUser: Invalid userid");else{var r={mam:userid,customergroupid:groupid,appversionid:x._device_info.appversionid||"",status:1,happendat:v()};b(n)||(r.userproperties=function(e){var t=e,n=t&&"object"==typeof t&&t.data&&t.datatype?t:On(e);return n.message.forEach(function(e){N(a.PROPERTIES,"AppticsUser.setUser: dropped "+e.keys.join(", ")+" (error "+e.code+")")}),n}(n)),function(t){var n="registerUserWithApptics",r=yt(n)||zt(n);if(r)return r;if(b(t))return Promise.reject(n+": nothing to register");var i=wt(n);if(i)return i;var a=JSON.stringify(z(t,["userid","groupid","happendat"]));return kt("reguser",a,gt(),n).then(function(n){var r=n.data||{};return t.userid=r.userid,t.groupid=r.customergroupid,setTrackingStatus(e.USAGE_TRACKING_WITH_PII),function(e){e.status=1;var t=Ie.item("users")||[],n=(t=t.map(e=>({...e,status:0}))).findIndex(t=>t.userid===e.userid);-1!==n?t[n]={...t[n],...e}:t.push(e);Ie.add("users",t),Ie.add("user_info",t[-1!==n?n:t.length-1])}(t),$r(),Le.remoteConfigUserChanged(),r})}(r).then(function(e){C.log("setUser: "+JSON.stringify(e))}).catch(function(e){C.log(e)})}}),oa=F("AppticsUser.getUser",function getUser(){return x._user_info||{}}),sa={setUser:function setUser(userid,groupid,properties){return j(aa,arguments)},getUser:function getUser(){return j(oa,arguments)},UserBuilder:class{setFirstName(e){return this.first_name=e,this}setLastName(e){return this.last_name=e,this}setCompanyName(e){return this.company_name=e,this}setEmailAddress(e){return this.email_address=e,this}setContactNumber(e){return this.contact_number=e,this}setCountry(e){return this.country=e,this}setRegion(e){return this.region=e,this}setCity(e){return this.city=e,this}setGeoLocation(e){return this.geo_location=e,this}setGender(e){return this.gender=e,this}setPlanType(e){return this.plan_type=e,this}setTimezone(e){return this.timezone=e,this}setLanguage(e){return this.language=e,this}setEngagementScore(e){return this.engagement_score=e,this}setDateOfBirth(e){return this.date_of_birth=e,this}addStringProperty(key,value){return"string"==typeof value&&(this[key]=value),this}addBooleanProperty(key,value){return"boolean"==typeof value&&(this[key]=value),this}addNumberProperty(key,value){return"number"==typeof value&&Number.isFinite(value)&&(this[key]=value),this}setCustomProperties(e){if("object"==typeof e&&null!==e)for(const[key,value]of Object.entries(e))this[key]=value;return this}build(){const e={},t=["first_name","last_name","company_name","email_address","contact_number","country","region","city","geo_location","gender","plan_type","timezone","language","engagement_score","date_of_birth"];return t.forEach(t=>{void 0!==this[t]&&(e[t]=this[t])}),Object.entries(this).forEach(([key,value])=>{-1===t.indexOf(key)&&"function"!=typeof value&&(e[key]=value)}),On(e)}}},ca=F("AppticsHeatmap.trackHeatmap",trackHeatmap),da={trackHeatmap:function trackHeatmap(on){return j(ca,arguments)}},ua=F("AppticsSettings.setTrackingStatus",setTrackingStatus),la=F("AppticsSettings.getTrackingStatus",getTrackingStatus),pa={AP_TRACKING_STATUS:e,setTrackingStatus:function setTrackingStatus(status){return j(ua,arguments)},getTrackingStatus:function getTrackingStatus(){return j(la,arguments)}},fa={Apptics:Vi,AppticsEvent:Wi,AppticsScreen:Yi,AppticsApi:ta,AppticsError:ia,AppticsUser:sa,AppticsSettings:pa,AppticsHeatmap:da};!function(e){"undefined"!=typeof window&&queueMicrotask(function(){Di(e)})}(Vi);const ga=2097152,ma=K,ha=W;let va=!1;function ka(){va||(va=!0,setTimeout(function(){va=!1,Se.all().then(function(e){const t=e.length-1e3;if(!(t<=0))return C.warn("apptics: dropping "+t+" oldest feedback log entries (cap is 1000)"),Se.remove(e.slice(0,t))})},2e3))}function _a(e){Se.add(e),ka()}function ba(e){return e.length>1e4?e.slice(0,1e4)+"…":e}const ya={};function za(message){ya[message]||(ya[message]=!0,R("AppticsFeedback.addDiagnosticsInfo: "+message+", so the entry is not recorded"))}function Aa(e){return Se.all().then(function(t){return t.filter(function(t){return t.type===e&&!T(t.happenedat)})})}function wa(e){return"string"==typeof e.timestamp&&e.timestamp.length>0?e.timestamp:new Date("number"==typeof e.happenedat?e.happenedat:v()).toISOString()}function Sa(e){return e.map(function(e){return String(e.id)})}function Ea(e){const t=[],n={};return e.forEach(function(e){const heading=String(e.heading);n[heading]||(n[heading]=[],t.push(heading)),n[heading].push(e.key+": "+e.value)}),t.map(function(heading){return"["+heading+"]\n"+n[heading].join("\n")}).join("\n\n")}function xa(name,e,t){const n=new File([e],name,{type:"text/plain"});return n.size>ga?(C.warn("apptics: "+name+" is over 2 MB, not sending it"),null):{file:n,ids:Sa(t)}}function Pa(){return Aa(ma).then(function(e){return 0===e.length?null:xa("feedbacklog.txt",function(e){return e.map(function(e){return"["+wa(e)+"] "+e.message}).join("\n")}(e),e)})}function Ta(){return Aa(ma).then(function(e){return e.map(function(e){return"["+function(e){var t=wa(e),n=new Date(t);return isNaN(n.getTime())?t:n.toLocaleDateString(void 0,{day:"2-digit",month:"short",year:"numeric"})+", "+n.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:"short"})}(e)+"] "+e.message}).join("\n")})}function Oa(){return Aa(ha).then(function(e){return e.length>0})}const Ia="Feedback sent successfully",Ca="Something went wrong. Send feedback again",Ra=["deviceid","anonymousid","aaid","apid","mapid","devicetypeid","osversionid","platformid","appversionid","appreleaseversionid","modelid","timezoneid","frameworkid","projectid","portalid","donottrackenabled","uuid","hadsession"];function Na(e){if(Ye())return Promise.resolve(null);if(0==navigator.onLine)return C.warn("sendFeedbackData: No Network"),Promise.resolve(null);var t=_(e.attachment)?null:e.attachment,n=t?t.length:0,r=function(e){if(!e||0===e.length)return"";if(e.length>5)return"Maximum 5 attachments is allowed";for(var t=0,n=0;n<e.length;n++)t+=Number(e[n].size)||0;return t>10485760?"Maximum limit reached. The total file size cannot exceed 10MB.":""}(t);if(""!==r)return Promise.reject(new Error("sendFeedback: "+r));var i=e&&e.logsFiles?e.logsFiles:null,a=i&&i.length?i.length:0,o=v();return Promise.all([Ma(e),Ge()]).then(function([r,s]){var c=new FormData,d={networkstatus:He(),orientation:Ve(),edge:Ue(),screenname:x._current_screen.screen||"",sessionstarttime:x._current_session.starttime||o,report:e.message,type:e.type,source:0,attachmentcount:n||0,logfilecount:a+(r.logFile?1:0),happendat:o};_(e.quartzid)||(d.quartzid=e.quartzid),null!==s&&(d.battery=s),c.append("feedinfo",JSON.stringify({feedinfo:d,meta:At()}));var u=Promise.resolve();return t&&n>0&&n<=5&&(u=function(e){var t=[];for(let n=0;n<e.length;n++){const r=e[n];t.push(new Promise(function(e,t){const i=new FileReader;i.onload=function(t){const i=t.target.result;e(new File([i],"image_"+(n+1),{type:r.type}))},i.onerror=function(){t(i.error)},i.readAsArrayBuffer(r)}))}return Promise.all(t)}(t).then(function(e){e.forEach(function(e){c.append("attachment",e)})})),u.then(function(){return function(e,t,n){if(t&&t.length>0)for(let n=0;n<t.length;n++)e.append("logfile",t[n]);n.logFile&&e.append("logfile",n.logFile);n.dyninfoFile&&e.append("dyninfo",n.dyninfoFile)}(c,i,r),a=c,o=r.ids,(e=a,t="requestToFeedback",n=yt(t)||wt(t),n||(C.log(t+": Feedback Payload size : "+w(e)/1024),kt("feedback",e,gt(),t))).then(function(){return x._sending=!1,o.length>0&&function(e){Se.remove(e.map(function(id){return{id:id}}))}(o),{ok:!0,message:Ia}}).catch(function(e){return x._sending=!1,C.log("sendFeedbackData:"+e),{ok:!1,message:Ca}});var e,t,n,a,o})}).catch(function(e){return C.error("sendFeedbackData: "+e),{ok:!1,message:Ca}})}function Ma(e){var t=!1!==e.includeLog,n=e.includeDyninfo,r=!0===n?Promise.resolve(!0):!1===n?Promise.resolve(!1):Oa();return Promise.all([t?Pa():Promise.resolve(null),r.then(function(e){return e?(t=function(){try{return JSON.stringify(z(x._device_info,Ra)||{},null,2)}catch(e){return C.error("Failed to prepare dyninfo file",e),null}}(),Aa(ha).then(function(e){const n=[];return e.length>0&&n.push(Ea(e)),t&&n.push("[Device Info]\n"+t),0===n.length?null:xa("dyninfo.txt",n.join("\n\n"),e)})):null;var t})]).then(function([e,t]){return{logFile:e?e.file:null,dyninfoFile:t?t.file:null,ids:(e?e.ids:[]).concat(t?t.ids:[])}})}const La="anonymous",qa="Anonymous",Da={anonymous:!0,userid:"",groupid:""},Fa={};function ja(){Da.anonymous=!0,Da.userid="",Da.groupid=""}function Ba(){var e=Ie.item("users");return Array.isArray(e)?e:[]}const Ua="http://www.w3.org/2000/svg";function Ha(e,t){var n=e.querySelector("#zasdkEmailTrigger"),r=e.querySelector("#zasdkEmailPanel"),i=e.querySelector("#zasdkEmailLabel"),a=e.querySelector("#zasdkEmailList"),o=e.querySelector("#zasdkEmailDropdown");if(n&&r&&i&&a&&o){var s=Ba(),c=function(e){var t=[{value:La,label:qa}],n={};return e.forEach(function(e){var r=e&&e.mam;_(r)||n[r]||(n[r]=!0,t.push({value:String(r),label:String(r)}))}),t}(s),d=La;if(ja(),!t){var u=null;s.forEach(function(e){u||!e||1!=e.status||_(e.mam)||(u=e)}),u&&l(String(u.mam))}n.addEventListener("click",function(e){e.stopPropagation();var t="none"!==r.style.display;r.style.display=t?"none":"block",t||p()}),a.addEventListener("click",function(e){var t=e.target.closest(".zasdk-select-option");t&&(l(String(t.getAttribute("data-value"))),r.style.display="none")}),o.setAttribute("tabindex","0"),o.addEventListener("focusout",function(e){o.contains(e.relatedTarget)||(r.style.display="none")}),p()}function l(value){d=value,Da.anonymous=value===La;var e=null;Da.anonymous||s.forEach(function(t){!e&&t&&t.mam===value&&(e=t)}),Da.userid=e?String(e.userid||""):"",Da.groupid=e?String(e.groupid||""):"",i.textContent=Da.anonymous?qa:value,p()}function p(){if(a.innerHTML="",0===c.length){var e=document.createElement("div");return e.className="zasdk-select-empty",e.textContent="No users to choose from",void a.appendChild(e)}c.forEach(function(e){var t=e.value===d,n=document.createElement("li");n.className="zasdk-select-option"+(t?" zasdk-option-selected":""),n.setAttribute("data-value",e.value);var r=document.createElement("span");r.textContent=e.label,n.appendChild(r),t&&n.appendChild(function(){var e=document.createElementNS(Ua,"svg");e.setAttribute("viewBox","0 0 14 10"),e.setAttribute("width","14"),e.setAttribute("height","10"),e.setAttribute("fill","none");var t=document.createElementNS(Ua,"path");return t.setAttribute("d","M1 5l4 4 8-8"),t.setAttribute("stroke","#0078d4"),t.setAttribute("stroke-width","2"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round"),e.appendChild(t),e}()),a.appendChild(n)})}}function Ga(e,t,n){var r=e.querySelector("#zasdkDataViewer"),i=e.querySelector("#zasdkViewerTitle"),a=e.querySelector("#zasdkViewerContent");r&&i&&a&&(i.textContent=t,a.textContent=n||"(No data available)",r.style.display="flex")}function Va(e,t){var n=e.querySelector("#zasdkIncludeLogToggle"),r=e.querySelector("#zasdkIncludeDiagToggle"),i=e.querySelector(".zasdk-toggles-section"),a=e.querySelector(".zasdk-toggle-separator"),o=e.querySelector("#zasdkViewLogsBtn"),s=e.querySelector("#zasdkViewDiagBtn"),c=e.querySelector("#zasdkViewerClose"),d=e.querySelector("#zasdkDataViewer");if(n&&r&&i){var u=n.closest(".zasdk-toggle-row"),l=r.closest(".zasdk-toggle-row");Fa.includeLog=!0===t.includeLog||void 0,Fa.includeDyninfo=!0===t.includeDyninfo||void 0,i.style.display="none",Promise.all([Aa(ma).then(function(e){return e.length>0}),Oa()]).then(function([e,o]){u&&(u.style.display=e?"":"none"),l&&(l.style.display=o?"":"none"),a&&(a.style.display=e&&o?"":"none"),i.style.display=e||o?"":"none",n.checked=!0===t.includeLog||e,r.checked=!0===t.includeDyninfo||o,Fa.includeLog=n.checked,Fa.includeDyninfo=r.checked}).catch(function(e){C.warn("apptics: could not read the stored logs: "+String(e))}),n.addEventListener("change",function(){Fa.includeLog=n.checked}),r.addEventListener("change",function(){Fa.includeDyninfo=r.checked}),o&&o.addEventListener("click",function(){Ta().then(function(t){Ga(e,"System Logs",t)})}),s&&s.addEventListener("click",function(){Aa(ha).then(Ea).then(function(t){Ga(e,"Diagnostic Information",t)})}),c&&d&&c.addEventListener("click",function(){d.style.display="none"})}}Le.feedbackUser=function(){return Da.anonymous||_(Da.userid)?null:Da};const Ka=/(^|\.)(zohocdn\.com|zohostatic\.com|localzohocdn\.com|localzoho\.com|zoho\.(com|eu|in|jp|sa|ae|com\.au|com\.cn)|zohocloud\.ca)$/;function Wa(e,t){return e&&""!==e.trim()?e.trim():function(e){var t="";try{t=new URL(e).hostname}catch(n){t=e||""}return"https://"+(-1!==t.indexOf("localzoho")?"static.localzohocdn.com":"static.zohocdn.com")+"/quartz/feedback/v2/quartz.js"}(t)}function Za(){return"undefined"!=typeof Quartz&&!!Quartz}var Ja=null,Ya=!1;function Qa(url){if(Za())return Promise.resolve(!0);var e=function(url){try{var e=new URL(url);return"https:"===e.protocol&&Ka.test(e.hostname)?e.href:""}catch(e){return""}}(url);return""===e?(url&&!Ya&&(Ya=!0,R("AppticsFeedback: screen recording is off; its script url is not an https url on a Zoho host: "+url)),Promise.resolve(!1)):Ja||(Ja=new Promise(function(t){var n=document.createElement("script");n.src=e,n.async=!0,n.setAttribute("data-apptics","quartz"),n.onload=function(){C.log("AppticsFeedback: Quartz loaded from "+e),t(Za())},n.onerror=function(){C.warn("AppticsFeedback: the Quartz script did not load: "+e),Ja=null,n.remove(),t(!1)},(document.head||document.documentElement).appendChild(n)}),Ja)}const $a={startRecording(){},previewVideo(){},editVideo(){},clearFeedback(){},endRecording(){},setVideoContent(){},submitRecording:()=>Promise.resolve({})},Xa={ErrorType:{},FeedbackState:{}};function eo(){return"undefined"!=typeof Quartz&&!!Quartz}function to(){return"undefined"!=typeof Quartz&&Quartz?Quartz:$a}function no(){return"undefined"!=typeof QuartzConstants&&QuartzConstants?QuartzConstants:Xa}function ro(e){return Na(e).then(function(e){return e?(uo.handleStatusmsg(e.ok,e.message),e.ok&&setTimeout(()=>{uo.close()},2e3),e):null})}function io(value){return null!==value&&"object"==typeof value&&!Array.isArray(value)}var ao=!1;function sendFeedback(options){if(void 0!==options&&!io(options))return Promise.reject(new Error("AppticsFeedback.sendFeedback: takes one options object, as sendFeedback({ type, message, attachments, logFiles, includeDiagnostics, includeLog, isAnonymous })"));const e=options||{},t={type:_(e.type)?1:e.type,message:e.message||"",attachment:e.attachments||null,logsFiles:e.logFiles||null,includeDyninfo:e.includeDiagnostics,includeLog:e.includeLog,quartzid:""};var n=function(e){var t={anonymous:Da.anonymous,userid:Da.userid,groupid:Da.groupid};if(ja(),!e){var n=_(x._user_info.userid)?null:x._user_info;Ba().forEach(function(e){n||!e||1!=e.status||_(e.userid)||(n=e)}),n&&(Da.anonymous=!1,Da.userid=String(n.userid),Da.groupid=String(n.groupid||""))}return function(){Da.anonymous=t.anonymous,Da.userid=t.userid,Da.groupid=t.groupid}}(!0===e.isAnonymous);return ro(t).then(function(e){return n(),e},function(e){throw n(),e}).then(function(e){if(!e)throw new Error("AppticsFeedback.sendFeedback: not sent, the browser is offline or Apptics is disabled for this client");if(!e.ok)throw new Error("AppticsFeedback.sendFeedback: not sent, "+e.message)})}function oo(e,message,t){var n=e.querySelector(".zasdk-selected").getAttribute("data-type"),r=e.querySelector("#zasdkFileInput").files;return{type:_(n)?1:uo.typeObj[n],message:message,attachment:r&&r.length>0?r:uo._opts.attachments||null,logsFiles:uo._opts.logFiles||null,includeLog:Fa.includeLog,includeDyninfo:Fa.includeDyninfo,quartzid:t}}function so(){try{return"function"==typeof DataTransfer?new DataTransfer:null}catch(e){return C.warn("apptics.feedback: this browser cannot build a file list, attachments are off"),null}}const co=["light","dark","auto"];const uo={feedbackUIHtml:'<div id="zasdkFeedbackconatiner" class="zasdk-modal-content" role="dialog" aria-modal="true" aria-labelledby="zasdkFeedbackTitle">\n <div class="zasdk-header">\n <h2 id="zasdkFeedbackTitle" class="zasdk-title">Share feedback</h2>\n <span id="appticsfeedbackclose" class="zasdk-close" role="button" tabindex="0" aria-label="Close"><svg viewBox="0 0 24 24" style=" width: 20px; "><path d="M19.92,19.08c.23.23.23.61,0,.85-.12.12-.27.18-.42.18s-.31-.06-.42-.18l-7.08-7.08-7.08,7.08c-.12.12-.27.18-.42.18s-.31-.06-.42-.18c-.23-.23-.23-.61,0-.85l7.08-7.08-7.08-7.08c-.23-.23-.23-.61,0-.85s.61-.23.85,0l7.08,7.08,7.08-7.08c.23-.23.61-.23.85,0s.23.61,0,.85l-7.08,7.08,7.08,7.08Z"/></svg></span>\n </div>\n <div class="zasdk-feedback-types" data-type="">\n <div class="zasdk-feedback-type zasdk-selected" data-type="feedback">\n <div class="zasdk-iconcnt zasdkfeedback__icon-reqest">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M6.69,9.25h10.81c.41,0,.75-.34.75-.75s-.34-.75-.75-.75H6.69c-.41,0-.75.34-.75.75s.34.75.75.75Z"/><path d="M6.69,13.07h8.11c.41,0,.75-.34.75-.75s-.34-.75-.75-.75H6.69c-.41,0-.75.34-.75.75s.34.75.75.75Z"/><path d="M20.72,5.17c0-.68-.55-1.23-1.23-1.23H4.48c-.68,0-1.23.55-1.23,1.23v11.84c0,.68.55,1.23,1.23,1.23h13.49l1.25,1.51c.17.2.41.31.67.31.1,0,.2-.02.3-.05.34-.13.57-.46.56-.83l-.03-14.01ZM19.22,17.39l-.17-.2c-.24-.29-.58-.45-.95-.45H4.75V5.44h14.47v11.95Z"/></svg></i>\n </div>\n <div>Feedback</div>\n </div>\n <div class="zasdk-feedback-type" data-type="bug">\n <div class="zasdk-iconcnt zasdkfeedback__icon-report">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M15.6,6.58c-.13-.37-.3-.7-.5-.97l1.23-1.18c.24-.23.25-.61.02-.85-.23-.24-.61-.25-.85-.02l-1.26,1.21c-.66-.45-1.37-.62-1.79-.68-.25-.04-.51-.04-.76-.02-.83.08-1.45.35-1.93.7l-1.22-1.2c-.24-.23-.62-.23-.85,0-.23.24-.23.62,0,.85l1.21,1.19c-.24.34-.41.68-.51.96-2.02,1.37-3.27,3.82-3.27,6.44,0,4.18,3.08,7.58,6.87,7.58s6.87-3.4,6.87-7.58c0-2.62-1.25-5.06-3.26-6.44ZM11.82,5.27c.15-.02.31-.01.47.01.69.1,1.86.48,2.26,1.9-.17.17-.51.44-1.14.65-1.08.36-2.31.28-3.36-.23-.24-.11-.44-.23-.6-.36,0-.01,0-.03.01-.04.18-.65.73-1.77,2.36-1.93ZM12,19.4c-3.12,0-5.67-2.86-5.67-6.38,0-1.98.82-3.82,2.19-5.02.26.25.59.48,1.01.68.78.38,1.65.57,2.5.57.6,0,1.19-.09,1.76-.28.88-.29,1.39-.7,1.67-1,1.38,1.2,2.21,3.06,2.21,5.05,0,3.52-2.54,6.38-5.67,6.38ZM9.12,9.86c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM9.12,11.99c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47ZM14.88,9.86c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM14.88,11.99c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47ZM12,14.49c-.92,0-1.67.75-1.67,1.67s.75,1.67,1.67,1.67,1.67-.75,1.67-1.67-.75-1.67-1.67-1.67ZM12,16.62c-.26,0-.47-.21-.47-.47s.21-.47.47-.47.47.21.47.47-.21.47-.47.47Z"/></svg></i>\n </div>\n <div>Bug</div>\n </div>\n <div class="zasdk-feedback-type" data-type="help">\n <div class="zasdk-iconcnt zasdkfeedback__icon-help">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M12.45,16.47c-.33,0-.6-.27-.6-.6v-2.7c0-.43.25-.82.64-.99.95-.42,3.15-1.62,3.15-3.51,0-1.6-1.01-3.03-2.51-3.55-.95-.33-1.97-.28-2.87.16-.91.43-1.59,1.2-1.92,2.14-.11.31-.45.48-.77.37-.31-.11-.48-.45-.37-.77.44-1.25,1.34-2.25,2.54-2.83,1.2-.57,2.54-.65,3.79-.21,1.99.7,3.32,2.58,3.31,4.69,0,2.46-2.34,3.91-3.79,4.57v2.63c0,.33-.27.6-.6.6ZM13.21,19.1c0-.66-.54-1.2-1.2-1.2h-.03c-.66,0-1.19.54-1.19,1.2s.55,1.2,1.21,1.2,1.2-.54,1.2-1.2Z"/></svg></i>\n </div>\n <div>Help</div>\n </div>\n <div class="zasdk-feedback-type" data-type="report">\n <div class="zasdk-iconcnt zasdkfeedback__icon-appreciate">\n <i class="zasdkfeedback__icon"><svg viewBox="0 0 24 24"><path d="M20.47,16.72l-6.66-11.53c-.37-.65-1.07-1.05-1.81-1.05s-1.44.4-1.81,1.05l-6.66,11.53c-.37.65-.37,1.45,0,2.09.37.65,1.07,1.05,1.81,1.05h13.32c.75,0,1.44-.4,1.81-1.05.37-.64.37-1.45,0-2.09ZM19.17,18.06c-.11.18-.3.3-.51.3H5.34c-.21,0-.41-.11-.51-.3-.1-.18-.1-.41,0-.59l6.66-11.53h0c.11-.18.3-.3.51-.3s.41.11.51.3l6.66,11.53c.11.18.11.41,0,.59Z"/><path d="M12.35,13.9s.37-4.72.37-4.72c.05-1.08-1.58-1.06-1.5.02l.48,4.71c.03.38.62.37.64,0Z"/><path d="M11.97,15.06c-.52,0-.94.42-.94.94s.42.94.94.94.94-.42.94-.94-.42-.94-.94-.94Z"/></svg></i>\n </div>\n <div>Report</div>\n </div>\n </div>\n <div id="zasdkFeedbackForm" class="zasdk-form">\n <label class="zasdkdesclbl">User<span class="zasdkmadfeld">*</span></label>\n <div id="zasdkEmailDropdown" class="zasdk-custom-select">\n <div id="zasdkEmailTrigger" class="zasdk-select-trigger">\n <span id="zasdkEmailLabel" class="zasdk-select-label">Anonymous</span>\n <svg class="zasdk-select-arrow" viewBox="0 0 12 8" width="12" height="8"><path d="M1 1l5 5 5-5" stroke="#999" stroke-width="1.5" fill="none" stroke-linecap="round"/></svg>\n </div>\n <div id="zasdkEmailPanel" class="zasdk-select-panel" style="display:none">\n <ul id="zasdkEmailList" class="zasdk-select-list"></ul>\n </div>\n </div>\n <label class="zasdkdesclbl" for="zasdkDescription">Add details here<span class="zasdkmadfeld">*</span> <span class="zaleftcharspan"><span class="zaleftcharcnt">5000</span><span class="zaleftchartxt">characters left</span></span></label>\n <textarea id="zasdkDescription" name="description" placeholder="Please provide more details for us to help you better." reqname="name" maxlength="5000"></textarea>\n <div id="zasdkreccheckcnt" class="zasdkqz-container">\n <div class="zasdkqz-checkbox-wrapper">\n <input type="checkbox" id="zasdkqz-consent" class="zasdkqz-checkbox">\n <label for="zasdkqz-consent">By agreeing to record screen, I allow the collection of the required information for further analysis.</label>\n </div>\n <div id="zasdkqz-content" class="zasdkqz-content">\n <div class="zasdkqz-prop-content">Data collected while screen recording.\n <div class="zasdk_rec_hdr_icon zasdk-tooltip-container zasdk_rec_hdr">\n <i><svg viewBox="0 0 24 24"><path d="M12,20.6c-4.74,0-8.6-3.86-8.6-8.6S7.26,3.4,12,3.4s8.6,3.86,8.6,8.6-3.86,8.6-8.6,8.6ZM12,4.6c-4.08,0-7.4,3.32-7.4,7.4s3.32,7.4,7.4,7.4,7.4-3.32,7.4-7.4-3.32-7.4-7.4-7.4ZM12.6,15.97v-4.91c0-.33-.27-.6-.6-.6s-.6.27-.6.6v4.91c0,.33.27.6.6.6s.6-.27.6-.6ZM12.61,9.03c0-.33-.27-.6-.6-.6h-.01c-.33,0-.59.27-.59.6s.28.6.61.6.6-.27.6-.6Z"/></svg></i>\n <div class="zasdk-tooltip-top zasdk-prop-info">\n <ul>\n <li>- A recording of the window or region specified.</li>\n <li>- Audio captured during recording. (You can mute or re-record)</li>\n <li>- IP address.</li>\n <li>- Browser console logs generated while recording.</li>\n <li>- Device details (screen resolution, OS, and browser version).</li>\n <li>- Client-side performance metrics (DNS lookup time, TCP connection time, etc.).</li>\n </ul>\n </div>\n </div>\n </div>\n <div id="zasdkqz_rec_button" class="zasdkqz-button">Start screen recording</div>\n </div>\n </div>\n <div id="editRecordedVideo" class="zasdk_recordedClipArea" style="">\n <div id="recordScreenDesc" class="zasdk_rec_hdr"> Recorded Clip\n <div class="zasdk_rec_hdr_icon zasdk-tooltip-container">\n <i><svg viewBox="0 0 24 24"><path d="M12,20.6c-4.74,0-8.6-3.86-8.6-8.6S7.26,3.4,12,3.4s8.6,3.86,8.6,8.6-3.86,8.6-8.6,8.6ZM12,4.6c-4.08,0-7.4,3.32-7.4,7.4s3.32,7.4,7.4,7.4,7.4-3.32,7.4-7.4-3.32-7.4-7.4-7.4ZM12.6,15.97v-4.91c0-.33-.27-.6-.6-.6s-.6.27-.6.6v4.91c0,.33.27.6.6.6s.6-.27.6-.6ZM12.61,9.03c0-.33-.27-.6-.6-.6h-.01c-.33,0-.59.27-.59.6s.28.6.61.6.6-.27.6-.6Z"/></svg></i>\n <div class="zasdk-tooltip">This recording will be sent along with your feedback for further analysis.</div>\n </div>\n </div>\n <div class="zasdk_playEdit">\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="preivewPlayButton" class="zasdk_clipAreaButton" title="Preview">\n <svg viewBox="0 0 24 24"><path d="M6.24,20.6c-.2,0-.39-.05-.57-.15-.38-.21-.62-.61-.62-1.05V4.59c0-.44.24-.84.62-1.05.38-.21.85-.19,1.22.04l11.52,7.41c.34.22.55.6.55,1,0,.41-.2.78-.55,1l-11.52,7.41c-.2.13-.42.19-.64.19ZM6.56,4.1l-.33.5v14.81s11.52-7.41,11.52-7.41L6.23,4.6l.33-.5Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Preview</div>\n </div>\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="videoEditButton" class="zasdk_clipAreaButton">\n <svg id="Layer_2" viewBox="0 0 24 24"><path d="M20.6,7.18c0-.58-.23-1.13-.65-1.54l-1.53-1.51c-.83-.83-2.29-.83-3.12,0l-1.31,1.3h0S4.88,14.41,4.88,14.41c-.12.12-.21.27-.26.44l-1.19,4.4c-.09.34,0,.7.26.95.19.18.44.29.7.29.09,0,.17-.01.26-.04l4.44-1.2c.16-.05.31-.13.44-.25l8.54-8.43h0s1.88-1.86,1.88-1.86c.06-.06.12-.12.17-.19h0c.31-.39.48-.86.48-1.36ZM8.72,18.12l-4.03,1.09,1.08-3.98L13.97,7.12l2.88,2.97-8.13,8.03ZM17.71,9.25l-2.88-2.97,1.32-1.3c.38-.38,1.04-.38,1.43,0l1.53,1.51c.19.18.29.43.29.69,0,.22-.08.43-.21.6h0s-.04.05-.08.08l-1.4,1.39Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Edit</div>\n </div>\n <div class="zasdk_clipAreaButtonCnt zasdk-tooltip-container">\n <div id="videoDelButton" class="zasdk_clipAreaButton">\n <svg id="Layer_2" viewBox="0 0 24 24"><path d="M19.2,6.6h-3.4v-1c0-1.21-.99-2.2-2.2-2.2h-3.2c-1.21,0-2.2.99-2.2,2.2v1h-3.4c-.33,0-.6.27-.6.6s.27.6.6.6h1v10.6c0,1.21.99,2.2,2.2,2.2h8c1.21,0,2.2-.99,2.2-2.2V7.8h1c.33,0,.6-.27.6-.6s-.27-.6-.6-.6ZM9.4,5.6c0-.55.45-1,1-1h3.2c.55,0,1,.45,1,1v1h-5.2v-1ZM17,18.4c0,.55-.45,1-1,1h-8c-.55,0-1-.45-1-1V7.8h10v10.6ZM11,11.2v4.8c0,.33-.27.6-.6.6s-.6-.27-.6-.6v-4.8c0-.33.27-.6.6-.6s.6.27.6.6ZM14.2,11.2v4.8c0,.33-.27.6-.6.6s-.6-.27-.6-.6v-4.8c0-.33.27-.6.6-.6s.6.27.6.6Z"/></svg>\n </div>\n <div class="zasdk-tooltip">Delete</div>\n </div>\n </div>\n <div class="zasdk_videoPrev">\n <video id="previewVideoElemId" width="320" height="240" src=""></video>\n </div>\n </div>\n\n <div class="zasdk-buttons">\n <div class="zasdk-btncnt">\n <div id="zasdkattachinfo" class="zasdkattachinf">Maximum 5 attachments with a total file size of 10MB is allowed</div>\n <input type="file" id="zasdkFileInput" class="zasdk-file-input" multiple accept=".png, .jpg, .txt">\n <label id="zasdkAttachBtn" class="zasdk-btn zasdk-attach-btn" for="zasdkFileInput">\n <svg id="Layer_2" viewBox="0 0 24 24" style=" width: 25px; "><path d="M12,20.6c-2.63,0-4.78-2.14-4.78-4.78V6.78c0-1.87,1.52-3.38,3.38-3.38s3.38,1.52,3.38,3.38v9.04c0,1.1-.9,1.99-2,1.99s-1.99-.89-1.99-1.99V7.48c0-.33.27-.6.6-.6h0c.33,0,.6.27.6.6v8.35c0,.44.35.79.79.79s.79-.36.79-.79V6.78c0-1.2-.98-2.18-2.18-2.18s-2.18.98-2.18,2.18v9.04c0,1.97,1.6,3.58,3.58,3.58s3.58-1.6,3.58-3.58V6.78c0-.33.27-.6.6-.6s.6.27.6.6v9.04c0,2.63-2.14,4.78-4.78,4.78Z"/></svg>\n <span>Attachments</span>\n </label>\n <div id="zasdkfilesizeinfo" class="zasdkfilesizeinf"></div>\n <ul id="zasakfileList" class="zasakfilelstcnt"></ul>\n </div>\n </div>\n </div>\n <div class="zasdk-toggles-section">\n <div class="zasdk-toggle-row">\n <div class="zasdk-toggle-info">\n <span class="zasdk-toggle-label">Include System Logs</span>\n <span class="zasdk-view-link" id="zasdkViewLogsBtn">View</span>\n </div>\n <label class="zasdk-switch">\n <input type="checkbox" id="zasdkIncludeLogToggle">\n <span class="zasdk-slider"></span>\n </label>\n </div>\n <div class="zasdk-toggle-separator"></div>\n <div class="zasdk-toggle-row">\n <div class="zasdk-toggle-info">\n <span class="zasdk-toggle-label">Include Diagnostic Information</span>\n <span class="zasdk-view-link" id="zasdkViewDiagBtn">View</span>\n </div>\n <label class="zasdk-switch">\n <input type="checkbox" id="zasdkIncludeDiagToggle">\n <span class="zasdk-slider"></span>\n </label>\n </div>\n </div>\n <div class="zasdk_submit_btncnt">\n <div id="zasdksubmitstatus" class="zasdkstsmsg" style="display:none;" ></div>\n <div id="zasdk_submit_btnsubcnt" class="zasdk_submit_btnsubcnt">\n <input type="button" id="zasdk_submit_btn" class="zasdk-btn zasdk-send-btn zasdkbtndisableclr" value="Send">\n </div>\n </div>\n <div id="zasdkDataViewer" class="zasdk-data-viewer" style="display:none">\n <div class="zasdk-viewer-hdr">\n <span id="zasdkViewerClose" class="zasdk-viewer-back"><svg viewBox="0 0 24 24" width="20" height="20" fill="none"><path d="M15 19l-7-7 7-7" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span>\n <span id="zasdkViewerTitle" class="zasdk-viewer-title"></span>\n </div>\n <pre id="zasdkViewerContent" class="zasdk-viewer-content"></pre>\n </div>\n </div>',timerHtml:'<div id="zasdkrectimer" class="zasdk-timer-container zasdk-tooltip-container">\n <div class="zasdk-timer-control" id="zasdkRecordButton"><div class="zasdk-timer-stopcricle"></div></div>\n <span class="zasdk-timer-display" id="zasdkTimerDisplay">05:00</span>\n <div class="zasdk-tooltip-top">Stop Recording</div>\n </div>',uploadFileAry:[],fileInput:null,selectedFiles:null,isScaled:!1,isHidden:!1,timerDisplay:null,recordButton:null,TOTAL_TIME:300,remainingTime:300,isRecording:!1,timerInterval:null,uploadTotalSize:0,MaxFileSize:10485760,_opts:{},typeObj:{bug:0,feedback:1,help:2,report:3},init:function(e){if(uo._opts=e||{},!_(r=document.getElementById("zasdkFeedbackModal")))return;const t=document.createElement("div");uo.uploadFileAry=[],t.id="zasdkFeedbackModal",t.className="zasdk-modal",t.setAttribute("data-zasdk-theme",x._config.feedback_theme),t.innerHTML=uo.feedbackUIHtml,document.body.appendChild(t);var n,name,r=document.getElementById("zasdkFeedbackModal"),i=x._quartz,a=i.workspace,o=i.department,s=(n=i.domain,name=(n||"").trim().replace(/^\.+|\.+$/g,""),/^https:\/\//i.test(name)?name.replace(/\/+$/,""):/^[a-z0-9-]+(\.[a-z0-9-]+)+$/i.test(name)?"https://quartz."+name:""),c=r.querySelector("#appticsfeedbackclose"),d=r.querySelectorAll(".zasdk-feedback-type");uo.fileInput=r.querySelector("#zasdkFileInput");var u=r.querySelector("#zasdkqz_rec_button"),l=r.querySelector("#zasdk_submit_btn"),p=r.querySelector("#zasdk_submit_btnsubcnt");const f=r.querySelector("#zasdkqz-consent"),g=r.querySelector("#zasdkqz-content"),m=r.querySelector("#preivewPlayButton"),h=r.querySelector("#videoEditButton"),v=r.querySelector("#videoDelButton"),k=r.querySelector("#zasdkFeedbackconatiner"),b=r.querySelector("#zasdkDescription");!function(e){var t=e.querySelector(".zasdk-header");if(t){var n=0,r=0,i=0,a=0,o=!1;t.addEventListener("mousedown",function(s){if(!s.target.closest(".zasdk-close")){if(!e.style.left||"auto"===e.style.left){var c=e.getBoundingClientRect();e.style.right="auto",e.style.bottom="auto",e.style.left=c.left+"px",e.style.top=c.top+"px"}o=!0,n=s.clientX,r=s.clientY,i=parseInt(e.style.left,10),a=parseInt(e.style.top,10),t.style.cursor="grabbing",s.preventDefault()}}),document.addEventListener("mousemove",function(t){if(o){var s=i+(t.clientX-n),c=a+(t.clientY-r);e.style.left=Math.max(0,Math.min(s,window.innerWidth-e.offsetWidth))+"px",e.style.top=Math.max(0,Math.min(c,window.innerHeight-e.offsetHeight))+"px"}}),document.addEventListener("mouseup",function(){o&&(o=!1,t.style.cursor="grab")})}}(k),Ha(r,!0===uo._opts.isAnonymous),Va(r,uo._opts),uo.isScaled=!1,uo.isHidden=!1,document.removeEventListener("quartz-feedback-state",uo.bindQuartzEvent),document.addEventListener("quartz-feedback-state",uo.bindQuartzEvent),document.removeEventListener("quartz-feedback-error",uo.handleErrorQuartzEvent),document.addEventListener("quartz-feedback-error",uo.handleErrorQuartzEvent);var y=i.enabled&&!_(s)&&!_(a)&&!_(o),z=r.querySelector("#zasdkreccheckcnt");z.style.display=y&&eo()?"block":"none",y&&!eo()&&Qa(Wa(i.cdnUrl,String(x._defaultoptions.serviceUrl||""))).then(function(e){e&&z.isConnected&&(z.style.display="block")}),k.addEventListener("transitionend",function(e){"transform"===e.propertyName&&uo.isScaled&&uo.toggleWindowAnimation()}),u.onclick=function(e){e.stopImmediatePropagation();let t={workspaceLinkName:a,departmentLinkName:o,recordingDomain:s};uo.handleStatusmsg(),eo()?_(a)||_(o)||_(s)?uo.handleStatusmsg(!1,"Screen recording is not configured for this app."):to().startRecording(t):uo.handleStatusmsg(!1,"Screen recording is unavailable on this page.")},c.onclick=function(){uo.close()},c.onkeydown=function(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),uo.close())},document.addEventListener("keydown",uo.onEscape),m.addEventListener("click",function(){to().previewVideo()}),h.addEventListener("click",function(){to().editVideo({quartzBranding:!1})}),v.addEventListener("click",function(){var e=document.getElementById("zasdkFeedbackModal");to().clearFeedback(),f.checked=!1,g.classList.remove("zasdkqz-show"),e.querySelector("#editRecordedVideo").style.display="none",e.querySelector("#zasdkreccheckcnt").style.display="block",uo.validateFeedbackField()}),l.addEventListener("click",async()=>{uo.validateFeedbackField(),l.disabled=!0,p.classList.add("zasdkbtndisabled"),l.value="";try{let e=r.querySelector("#previewVideoElemId");if(e&&null!==e.offsetParent)uo.submitRecording();else{let message=r.querySelector("#zasdkDescription").value.trim();message.length>0?ro(oo(r,message,"")):uo.handleStatusmsg(!1,"Please provide more details for us to help you better.")}}catch(e){C.error("sendFeedbackData : "+e)}}),f.addEventListener("change",function(){this.checked?g.classList.add("zasdkqz-show"):g.classList.remove("zasdkqz-show")}),b.addEventListener("input",uo.validateFeedbackField);try{b.focus({preventScroll:!0})}catch(e){}if(d.forEach(function(e){e.addEventListener("click",function(){d.forEach(function(e){e.classList.remove("zasdk-selected")}),this.classList.add("zasdk-selected")})}),"number"==typeof uo._opts.type){var A=Object.keys(uo.typeObj).filter(function(name){return uo.typeObj[name]===uo._opts.type})[0],w=A?r.querySelector('.zasdk-feedback-type[data-type="'+A+'"]'):null;w&&(d.forEach(function(e){e.classList.remove("zasdk-selected")}),w.classList.add("zasdk-selected"))}_(uo._opts.message)||(b.value=String(uo._opts.message),uo.updateLeftCount(),uo.validateFeedbackField()),uo.selectedFiles=so(),uo.fileInput.onchange=function(){const e=this;var t=uo.selectedFiles;if(null!==t){if(t.files.length+e.files.length>5)return uo.handleStatusmsg(!1,"Maximum 5 attachments is allowed"),uo.fileInput.files=t.files,void(e.files=t.files);if(e.files.length>0){let n=0;for(let r of e.files){if(n+=r.size,n>10485760)return uo.handleStatusmsg(!1,"Maximum limit reached. The total file size cannot exceed 10MB."),void(e.files=t.files);t.items.add(r)}e.files=t.files,uo.fileAttachment()}else t.files.length>0&&(e.files=t.files)}},uo.handleStatusmsg(),uo.updateLeftCount()},updateLeftCount:function(){document.querySelectorAll("[reqname]").forEach(function(e){let t=e.value,n=parseInt(e.getAttribute("maxlength")||"",10),r=e.parentElement?e.parentElement.querySelector(".zaleftcharcnt"):null;if(r){r.textContent=String(n-t.length);var i=r.parentElement?r.parentElement.querySelector(".zaleftchartxt"):null;i&&(i.textContent=n-t.length===1?"character left":"characters left")}})},handleStatusmsg:function(e,t){var n=document.getElementById("zasdkFeedbackModal");if(!_(n)){var r=n.querySelector("#zasdksubmitstatus"),i=n.querySelector("#zasdk_submit_btn"),a=n.querySelector("#zasdk_submit_btnsubcnt"),o="",s="";r.style.display="none",_(e)||(o=e?"zasdkstssucs":"zasdkstserror",s=_(t)?"":t,r.textContent=s,r.classList.add(o),r.style.display="block",a.classList.remove("zasdkbtndisabled"),i.disabled=!1,i.value="Send")}},handleErrorQuartzEvent:function(e){let t=e.detail.error.name,n=e.detail.error.message;t!=no().ErrorType.RECORDING_INTERRUPTED&&t!=no().ErrorType.FEEDBACK_TIMEOUT||uo.stopRecording(),uo.handleStatusmsg(!1,n)},bindQuartzEvent:function(e){if(e.detail.feedbackState==no().FeedbackState.RECORDING_IN_PROGRESS){_(t=document.getElementById("zasdkrectimer"))||t.remove();const e=document.createElement("div");e.innerHTML=uo.timerHtml;const n=e.firstElementChild;n.setAttribute("data-zasdk-theme",x._config.feedback_theme),document.body.appendChild(n);var t=document.getElementById("zasdkrectimer");uo.timerDisplay=t.querySelector("#zasdkTimerDisplay"),uo.recordButton=t,uo.TOTAL_TIME=300,uo.remainingTime=uo.TOTAL_TIME,uo.isRecording=!0,uo.recordButton.addEventListener("click",uo.toggleRecording),uo.startRecording(),uo.toggleWindowAnimation()}},onEscape:function(e){"Escape"===e.key&&uo.close()},close:function(){var e=document.getElementById("zasdkFeedbackModal");document.removeEventListener("keydown",uo.onEscape),document.removeEventListener("quartz-feedback-state",uo.bindQuartzEvent),to().clearFeedback(),_(e)||e.remove()},toggleWindowAnimation:function(){var e=document.getElementById("zasdkFeedbackModal");const t=e.querySelector("#zasdkFeedbackconatiner");uo.isHidden?(e.style.display="block",setTimeout(()=>{t.style.transform="scale(1)",uo.validateFeedbackField()},10),uo.isHidden=!1,uo.isScaled=!1):uo.isScaled?(e.style.display="none",uo.isHidden=!0):(t.style.transform="scale(0)",uo.isScaled=!0)},fileAttachment:function(){var e=uo.fileInput.files;uo.uploadTotalSize=0,uo.MaxFileSize=10485760;var t=document.getElementById("zasdkFeedbackModal"),n=t.querySelector("#zasdkfilesizeinfo"),r=t.querySelector("#zasakfileList");if(n.textContent="",e.length>5)return uo.fileLimitExceeded(!1,!0),void uo.validateFeedbackField();if(r.innerHTML="",e.length>0){for(var i=0,a=0;a<e.length;a++){var o=e[a].name,s=o.substring(0,o.lastIndexOf(".")),c=o.substring(o.lastIndexOf(".")+1);i+=e[a].size;var d=uo.elementCreator("li");d.title=o;var u=uo.elementCreator("span");u.className="zaskFdBckFlName",u.innerText=s.length>10?s.slice(0,3)+"..."+s.slice(-3):s;var l=uo.elementCreator("span");l.innerText="."+c;var p=uo.elementCreator("span");p.className="zasdkFdBckFlCls",p.setAttribute("data-name",o),p.innerHTML="×",d.appendChild(u),d.appendChild(l),d.appendChild(p),r.appendChild(d)}var f=i>uo.MaxFileSize;uo.fileLimitExceeded(f),n.textContent=`${uo.formatFileSize(i)} Used / 10 MB`;const g=t.querySelectorAll(".zasdkFdBckFlCls");Array.from(g).forEach(function(e){e.addEventListener("click",function(){uo.handleStatusmsg(),uo.removeFileFromList(this),uo.fileAttachment()})})}uo.validateFeedbackField()},elementCreator:function(e){return document.createElement(e)},fileLimitExceeded:function(e,t){var n="";(t||e)&&(n=t?"Maximum 5 attachments is allowed":"Maximum limit reached. The total file size cannot exceed 10MB."),uo.handleStatusmsg(!1,n)},removeFileFromList:function(e){e.getAttribute("data-name");const t=e.parentElement,n=Array.from(t.parentElement.children).indexOf(t);t.remove();let r=so();if(uo.selectedFiles=so(),null!==r&&null!==uo.selectedFiles){for(let e=0;e<uo.fileInput.files.length;e++)e!==n&&(r.items.add(uo.fileInput.files[e]),uo.selectedFiles.items.add(uo.fileInput.files[e]));uo.fileInput.files=r.files}},formatFileSize:function(e){if(0===e)return"0 KB";const t=1024,n=e/t,r=e/(t*t),i=e/(t*t*t);return i>=1?i.toFixed(2)+" GB":r>=1?r.toFixed(2)+" MB":n.toFixed(2)+" KB"},toggleRecording:function(){uo.isRecording=!uo.isRecording,uo.isRecording?uo.startRecording():uo.stopRecording()},startRecording:function(){uo.timerInterval||(uo.timerInterval=setInterval(uo.updateTimer,1e3))},stopRecording:function(){var e=document.getElementById("zasdkFeedbackModal");clearInterval(uo.timerInterval||void 0),uo.timerInterval=null,document.querySelector("#zasdkrectimer").remove(),uo.toggleWindowAnimation(),e.querySelector("#editRecordedVideo").style.display="block",e.querySelector("#zasdkreccheckcnt").style.display="none";let t=e.querySelector("#previewVideoElemId");to().endRecording(),to().setVideoContent(t)},submitRecording:function(){var t=document.getElementById("zasdkFeedbackModal");let n=Da.anonymous?"":String(Da.userid||""),r=_(x._user_info.userid)?"":String(x._user_info.userid),i=_(n)?r:n,a=t.querySelector("#zasdkDescription").value.trim()||"-";i=/^[\w]([\w\-\.\+\'=]*)@([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,22}$/.test(i)&&Xe()==e.USAGE_TRACKING_WITH_PII?i:"user@example.com",to().submitRecording({email:i,subject:a}).then(e=>{var n=!b(e)&&e&&e.hasOwnProperty("feedbackLink")&&e.feedbackLink||"";ro(oo(t,a,n))}).catch(error=>{C.error("submitRecording : "+error),uo.handleStatusmsg(!1,"Could not upload the recording. Please try again.")})},updateTimer:function(){uo.remainingTime>0?(uo.remainingTime--,uo.updateDisplay()):uo.stopRecording()},updateDisplay:function(){const e=Math.floor(uo.remainingTime/60),t=uo.remainingTime%60;uo.timerDisplay.textContent=`${e.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}`},validateFeedbackField:function(){uo.updateLeftCount();var e=document.getElementById("zasdkFeedbackModal");const t=e.querySelector("#zasdkDescription"),n=e.querySelector("#zasdkFileInput"),r=e.querySelector("#previewVideoElemId"),i=e.querySelector("#zasdk_submit_btn"),a=t&&""!==t.value.trim()&&t.value.trim().length>0;n&&n.files&&n.files.length,r&&r.offsetParent;const o=e.querySelectorAll(".zasdkmaxerror");!(uo.getVisibleErrorCount(o)>0)&&a?(i.classList.remove("zasdkbtndisableclr"),uo.handleStatusmsg()):i.classList.add("zasdkbtndisableclr")},getVisibleErrorCount:function(e){return Array.from(e).filter(e=>null!==e.offsetParent).length}},lo=F("AppticsFeedback.feedbackFormOpen",function feedbackFormOpen(options){void 0===options||io(options)||ao||(ao=!0,R("AppticsFeedback.feedbackFormOpen: takes one options object, as feedbackFormOpen({ type, message, includeLog, includeDiagnostics, attachments, logFiles, isAnonymous }); opening it with its defaults"));const e=io(options)?options:{},t={includeLog:!0===e.includeLog,includeDyninfo:!0===e.includeDiagnostics,isAnonymous:!0===e.isAnonymous};"number"==typeof e.type&&(t.type=e.type),"string"==typeof e.message&&e.message.length>0&&(t.message=e.message),e.attachments&&e.attachments.length>0&&(t.attachments=e.attachments),e.logFiles&&e.logFiles.length>0&&(t.logFiles=e.logFiles),function(e){try{if(!e||"undefined"==typeof document)return;if(document.querySelector('[data-apptics="style"]'))return;var t=document.createElement("style");t.setAttribute("data-apptics","style"),t.textContent=e,(document.head||document.documentElement).appendChild(t)}catch(e){}}('.zasdk-modal{color:var(--zasdk-text-color);margin:0;padding:0;font-family:inherit;line-height:normal}.zasdk-modal p{margin:0}.zasdk-modal ul{margin:0;padding:0;list-style:none}.zasdk-modal,.zasdk-timer-container{--zasdk-background-color:#fff;--zasdk-text-color:#333;--zasdk-border-color:#ddd;--zasdk-modal-background:#0006;--zasdk-close-color:#aaa;--zasdk-close-hover-color:#000;--zasdk-input-background:#fff;--zasdk-button-background:#f0f0f0;--zasdk-primary-color:#007bff;--zasdk-primary-text-color:#000;--zasdk-button-text-color:#fff;--zasdk-secondary-background:#ddd;--zasdk-icon-border-color:#ccc;--zasdk-dropdown-hover:#f0f0f0;--zasdk-selected-background:#f0f0f0;--zasdk-selected-border:#ddd;--zasdk-muted-text:#999;--zasdk-link-color:#0078d4;--zasdk-switch-off:#ccc;--zasdk-viewer-background:#f8f8f8;--zasdk-placeholder-color:#757575;--zasdk-shadow:#0000002e}.zasdk-modal[data-zasdk-theme=dark],.zasdk-timer-container[data-zasdk-theme=dark],.zasdk-modal.zasdk-dark-theme,.zasdk-timer-container.zasdk-dark-theme{--zasdk-background-color:#1a1a1a;--zasdk-text-color:#f0f0f0;--zasdk-border-color:#444;--zasdk-modal-background:#ffffff1a;--zasdk-close-color:#888;--zasdk-close-hover-color:#fff;--zasdk-input-background:#2a2a2a;--zasdk-button-background:#333;--zasdk-primary-color:#2f7bd8;--zasdk-primary-text-color:#fff;--zasdk-secondary-background:#333;--zasdk-icon-border-color:#555;--zasdk-dropdown-hover:#2a2a2a;--zasdk-selected-background:#2a2a2a;--zasdk-selected-border:#555;--zasdk-muted-text:#888;--zasdk-link-color:#5aa9ff;--zasdk-switch-off:#555;--zasdk-viewer-background:#222;--zasdk-placeholder-color:#9a9a9a;--zasdk-shadow:#0009}@media (prefers-color-scheme:dark){.zasdk-modal[data-zasdk-theme=auto],.zasdk-timer-container[data-zasdk-theme=auto]{--zasdk-background-color:#1a1a1a;--zasdk-text-color:#f0f0f0;--zasdk-border-color:#444;--zasdk-modal-background:#ffffff1a;--zasdk-close-color:#888;--zasdk-close-hover-color:#fff;--zasdk-input-background:#2a2a2a;--zasdk-button-background:#333;--zasdk-primary-color:#2f7bd8;--zasdk-primary-text-color:#fff;--zasdk-secondary-background:#333;--zasdk-icon-border-color:#555;--zasdk-dropdown-hover:#2a2a2a;--zasdk-selected-background:#2a2a2a;--zasdk-selected-border:#555;--zasdk-muted-text:#888;--zasdk-link-color:#5aa9ff;--zasdk-switch-off:#555;--zasdk-viewer-background:#222;--zasdk-placeholder-color:#9a9a9a;--zasdk-shadow:#0009}}.zasdk-modal-content *{box-sizing:border-box;font-size:14px}.zasdk-modal{z-index:214748364;pointer-events:none;width:100%;height:100%;color:var(--zasdk-primary-text-color);background:0 0;position:fixed;top:0;left:0;overflow:visible}.zasdk-modal-content{background-color:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);width:500px;max-width:calc(100% - 40px);max-height:calc(100% - 40px);box-shadow:0 8px 24px var(--zasdk-shadow);pointer-events:auto;-webkit-user-select:none;user-select:none;border-radius:8px;flex-direction:column;padding:10px 0 20px;transition:none;display:flex;position:fixed;inset:auto 20px 20px auto}.zasdk-header{cursor:grab;justify-content:space-between;align-items:center;margin-bottom:20px;padding:0 20px;display:flex}.zasdk-title{margin:0;font-size:24px;font-weight:700}.zasdk-close{color:var(--zasdk-close-color);cursor:pointer;font-size:28px;font-weight:700}.zasdk-close svg path{fill:var(--zasdk-primary-text-color)}.zasdk-close:hover,.zasdk-close:focus{color:var(--zasdk-close-hover-color);cursor:pointer;text-decoration:none}.zasdk-feedback-types{text-align:center;justify-content:space-evenly;margin-bottom:20px;font-size:14px;display:flex}.zasdk-feedback-type{cursor:pointer;display:inline-block}.zasdk-iconcnt{background-color:var(--zasdk-background-color);border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;margin-bottom:5px;font-weight:700;display:inline-block}.zasdk-form{max-height:calc(100% - 190px);padding:0 20px;position:relative;overflow-y:auto}.zasdk-form select,.zasdk-form input,.zasdk-form textarea{border:1px solid var(--zasdk-border-color);background-color:var(--zasdk-input-background);width:100%;color:var(--zasdk-text-color);border-radius:4px;margin-bottom:15px;padding:8px;font-family:inherit;font-size:14px}.zasdk-form textarea::placeholder,.zasdk-form input::placeholder{color:var(--zasdk-placeholder-color);opacity:1}.zasdk-form textarea{resize:none;height:100px}.zasdkdesclbl{margin-bottom:5px;font-weight:700;display:block}.zasdkmadfeld{color:#f33558;padding-left:3px}.zaleftcharspan{float:right}.zaleftchartxt{margin-left:3px;font-weight:400}.zasdk_submit_btncnt{justify-content:end;align-items:center;margin-top:20px;padding:0 20px;display:flex}.zasdkstsmsg{text-align:end;margin-right:20px;font-size:14px;display:none}.zasdkstserror{color:#f33155}.zasdkstssucs{color:#009c08}.zasdk-buttons{margin-top:20px}.zasdk-btn{cursor:pointer;text-align:center;border:none;border-radius:4px;padding:7px 20px;font-size:14px}.zasdk-send-btn{background-color:var(--zasdk-primary-color);color:var(--zasdk-button-text-color);min-width:81px;height:34px}.zasdk-attach-btn{background-color:var(--zasdk-button-background);vertical-align:middle;justify-content:center;align-items:center;height:40px;margin-bottom:0;margin-right:10px;padding:10px 15px 10px 5px;font-size:14px;font-weight:400;display:inline-flex}.zasdkfilesizeinf{vertical-align:middle;margin-top:10px;font-size:13px;display:inline-block}.zasdkattachinf{vertical-align:middle;margin-bottom:10px;font-size:13px;display:inline-block}input[type=file].zasdk-file-input{display:none}.zasdkfeedback__icon{border:1px solid var(--zasdk-icon-border-color);vertical-align:middle;text-align:center;box-sizing:border-box;border-radius:100%;width:32px;height:32px;transition:all .5s;display:inline-block}.zasdk-feedback-types svg{width:inherit;height:inherit;vertical-align:middle;display:inline-block}.zasdkfeedback__icon-report .zasdkfeedback__icon{fill:#ff4122}.zasdkfeedback__icon-report svg{width:28px;height:100%}.zasdk-feedback-type{text-align:center;border:1px solid #0000;width:90px;padding:10px 0;transition:all .5s}.zasdk-selected{border:1px solid var(--zasdk-selected-border);background-color:var(--zasdk-selected-background);border-radius:6px}.zasdk-selected .zasdkfeedback__icon-report .zasdkfeedback__icon{fill:#fff;background:#ff4122;border-color:#ff4122}.zasdk-feedback-type:hover .zasdkfeedback__icon-report .zasdkfeedback__icon{border-color:#ff4122}.zasdkfeedback__icon-reqest .zasdkfeedback__icon{fill:#a63cff}.zasdkfeedback__icon-reqest svg{width:24px;height:100%}.zasdk-feedback-type:hover .zasdkfeedback__icon-reqest .zasdkfeedback__icon{border-color:#a63cff}.zasdk-selected .zasdkfeedback__icon-reqest .zasdkfeedback__icon{fill:#fff;background:#a63cff;border-color:#a63cff}.zasdkfeedback__icon-help .zasdkfeedback__icon{fill:#fba400}.zasdkfeedback__icon-help svg{width:28px;height:100%}.zasdk-feedback-type:hover .zasdkfeedback__icon-help .zasdkfeedback__icon{border-color:#fba400}.zasdk-selected .zasdkfeedback__icon-help .zasdkfeedback__icon{fill:#fff;background:#fba400;border-color:#fba400}.zasdkfeedback__icon-appreciate .zasdkfeedback__icon{fill:#ff297a}.zasdkfeedback__icon-appreciate svg{width:25px;height:28px}.zasdk-feedback-type:hover .zasdkfeedback__icon-appreciate .zasdkfeedback__icon{border-color:#ff297a}.zasdk-selected .zasdkfeedback__icon-appreciate .zasdkfeedback__icon{fill:#fff;background:#ff297a;border-color:#ff297a}.zasdk-btncnt{margin-bottom:10px}.zasdk-dropdown{width:100%;margin-bottom:15px;position:relative}.zasdk-dropdown-header{border:1px solid var(--zasdk-border-color);cursor:pointer;background-color:var(--zasdk-input-background);color:var(--zasdk-text-color);border-radius:4px;padding:5px 10px}.zasdk-dropdown-options{background-color:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);z-index:1;border-radius:5px;display:none;position:absolute;top:35px;left:0;right:0}.zasdk-dropdown-option{cursor:pointer;padding:5px 10px}.zasdk-dropdown-option:hover{background-color:var(--zasdk-dropdown-hover)}.zasdkqz-container{width:100%;color:var(--zasdk-text-color);background:var(--zasdk-secondary-background);box-sizing:border-box;border-radius:8px;padding:15px;font-size:14px}.zasdkqz-checkbox-wrapper{align-items:flex-start;display:flex;position:relative}input[type=checkbox].zasdkqz-checkbox{opacity:0;width:auto;margin:0;position:absolute}.zasdkqz-checkbox+label{cursor:pointer;margin:0;padding-left:30px;font-weight:400;line-height:1.5;display:inline-block;position:relative}.zasdkqz-checkbox+label:before{content:"";border:1px solid var(--zasdk-primary-color);border-radius:4px;width:18px;height:18px;position:absolute;top:2px;left:0}.zasdkqz-checkbox:focus+label:before{border:2px solid var(--zasdk-primary-color)}.zasdkqz-content .zasdkqz-prop-content{margin-top:10px;padding-left:30px}.zasdkqz-checkbox:checked+label:before{background:var(--zasdk-primary-color)}.zasdkqz-checkbox:checked+label:after{content:"";border:0 solid #fff;border-width:0 0 1px 1px;width:10px;height:5px;transition:transform .3s;position:absolute;top:6px;left:10px;transform:rotate(-40deg)translate(-50%,-50%)scale(1)}.zasdkqz-content{max-height:0;transition:max-height .5s;overflow:hidden}.zasdkqz-content.zasdkqz-show{max-height:250px;display:block}.zasdkqz-button{background:var(--zasdk-primary-color);color:var(--zasdk-button-text-color);cursor:pointer;border:none;border-radius:4px;margin-top:16px;padding:10px 20px;text-decoration:none;transition:background-color .3s;display:inline-block}.zasdkqz-button:hover{background:var(--zasdk-primary-color)}.zasdkqz-info{margin-top:5px;font-size:14px}.zasdkqz-icon{vertical-align:middle;width:20px;height:20px;margin-left:4px;display:inline-block}.zasdk-modal .zasakfilelstcnt{margin-top:10px;list-style:none}.zasdk-modal .zasakfilelstcnt li{border:1px solid var(--zasdk-border-color);vertical-align:middle;cursor:default;background:var(--zasdk-secondary-background);border-radius:3px;margin:0 5px 5px 0;padding:2px 20px 2px 5px;font-size:1.1rem;display:inline-flex;position:relative}.zaskFdBckFlName{box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;max-width:120px;display:inline-block;overflow:hidden}.zasdkFdBckFlCls{background:var(--zasdk-secondary-background);cursor:pointer;border-radius:0 3px 3px 0;padding:0 3px;font-size:14px;line-height:22px;position:absolute;top:0;bottom:0;right:2px}.zasdkmaxerror{color:#f33155;font-size:14px}.zasdk-timer-container{background-color:var(--zasdk-secondary-background);z-index:11111;cursor:pointer;border-radius:50px;align-items:center;gap:8px;padding:8px 10px;display:inline-flex;position:fixed;bottom:10px;right:10px;box-shadow:0 4px 15px #0000001a}.zasdk-timer-stopcricle{cursor:pointer;background-color:#f33155;border:none;border-radius:50%;width:12px;height:12px;padding:0;animation:1s infinite alternate blink}@keyframes blink{0%{opacity:1}to{opacity:.3}}.zasdk-timer-control{border:1px solid #f33155;border-radius:100%;padding:3px}.zasdk-timer-display{color:var(--zasdk-text-color);text-align:left;min-width:55px;font-size:14px;font-weight:500}.zasdk_videoPrev{justify-content:center;display:flex}.zasdk_videoPrev video{opacity:.4}.zasdk_recordedClipArea{border:1px solid var(--zasdk-border-color);border-radius:6px;display:none;position:relative}.zasdk_recordedClipArea .zasdk_rec_hdr{background-color:var(--zasdk-secondary-background);color:var(--zasdk-text-color);border-radius:3px 3px 0 0;padding:5px 10px}.zasdk_rec_hdr_icon{vertical-align:middle;display:inline-block;position:relative}.zasdk_rec_hdr i{vertical-align:middle;line-height:normal}.zasdk_rec_hdr svg{width:20px}.zasdk_playEdit{z-index:1;justify-content:space-between;align-items:stretch;width:180px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.zasdk_clipAreaButtonCnt,.zasdk_submit_btnsubcnt{position:relative}.zasdk_clipAreaButton{background:var(--zasdk-background-color);border:1px solid var(--zasdk-border-color);box-sizing:border-box;cursor:pointer;border-radius:6px;justify-content:center;align-items:center;width:50px;height:40px;display:flex;box-shadow:0 0 9px #0003}.zasdk_clipAreaButton:hover{background:var(--zasdk-dropdown-hover)}.zasdk_clipAreaButton svg{width:28px}.zasdk-send-btn.zasdkbtndisableclr{filter:grayscale();pointer-events:none;opacity:.5}.zasdk-send-btn.zasdkbtndisabled{cursor:not-allowed;position:relative}.zasdkbtndisabled:after{content:"";border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:20px;height:20px;margin:auto;animation:1s ease-in-out infinite zasdkbuttonspin;position:absolute;inset:0}@keyframes zasdkbuttonspin{to{transform:rotate(360deg)}}.zasdk-tooltip,.zasdk-tooltip-top{visibility:hidden;color:#fff;opacity:0;z-index:111111;background-color:#000;border-radius:4px;width:max-content;max-width:200px;margin-top:8px;padding:8px 12px;font-size:14px;transition:opacity .2s;position:absolute;top:100%;left:50%;transform:translate(-50%)}.zasdk-tooltip:after,.zasdk-tooltip-top:after{content:"";border:5px solid #0000;border-bottom-color:#000;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.zasdk-tooltip-container:hover .zasdk-tooltip,.zasdk-tooltip-container:hover .zasdk-tooltip-top{visibility:visible;opacity:1}.zasdk-tooltip-top{margin-top:0;margin-bottom:8px;top:auto;bottom:100%}.zasdk-tooltip-top:after{border-color:#000 #0000 #0000;top:100%}.zasdk-prop-info{max-width:320px}.zasdk-prop-info li{font-size:13px}.zasdkqz-content:has(.zasdk_rec_hdr:hover){overflow:visible}@media (width<=450px){.zasdk-modal-content{width:calc(100% - 10px);bottom:5px;left:5px;right:5px}}@media (height<=600px){.zasdk-modal-content{max-height:100%;top:auto}}@media (width<=370px){.zasdk-feedback-type{width:70px}.zasdk-iconcnt,.zasdkfeedback__icon{width:25px;height:25px}.zasdkfeedback__icon-report svg{width:20px;height:100%}.zasdkfeedback__icon-reqest svg{width:18px}.zasdkfeedback__icon-help svg{width:18px;height:22px}.zasdkfeedback__icon-appreciate svg{width:20px;height:20px}.zasdk-feedback-type *{word-break:break-word;font-size:12px}.zasdk-buttons{margin-top:0}}.zasdk-custom-select{width:100%;margin-bottom:15px;font-size:14px;position:relative}.zasdk-select-trigger{border:1px solid var(--zasdk-border-color);background:var(--zasdk-input-background);cursor:pointer;color:var(--zasdk-text-color);-webkit-user-select:none;user-select:none;border-radius:4px;justify-content:space-between;align-items:center;padding:9px 12px;display:flex}.zasdk-select-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.zasdk-select-arrow{flex-shrink:0;margin-left:8px}.zasdk-select-panel{background:var(--zasdk-input-background);border:1px solid var(--zasdk-border-color);box-shadow:0 6px 20px var(--zasdk-shadow);z-index:99;border-radius:8px;position:absolute;top:calc(100% + 3px);left:0;right:0;overflow:hidden}.zasdk-select-list{max-height:180px;margin:0;padding:4px 0;list-style:none;overflow-y:auto}.zasdk-select-option{cursor:pointer;color:var(--zasdk-text-color);justify-content:space-between;align-items:center;padding:10px 16px;font-size:14px;display:flex}.zasdk-select-option:hover{background:var(--zasdk-dropdown-hover)}.zasdk-select-option.zasdk-option-selected{color:var(--zasdk-link-color);font-weight:500}.zasdk-select-empty{color:var(--zasdk-muted-text);text-align:center;padding:10px 16px;font-size:13px;font-style:italic}.zasdk-toggles-section{margin:5px 16px}.zasdk-toggle-row{border-top:1px solid var(--zasdk-border-color);justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.zasdk-toggle-info{flex-direction:row;flex:1;align-items:center;gap:8px;display:flex}.zasdk-toggle-label{color:var(--zasdk-text-color);font-size:14px;font-weight:600}.zasdk-view-link{color:var(--zasdk-link-color);cursor:pointer;white-space:nowrap;font-size:12px}.zasdk-view-link:hover{text-decoration:underline}.zasdk-toggle-separator{background:var(--zasdk-border-color);margin:0 16px}.zasdk-switch{flex-shrink:0;width:44px;height:24px;display:inline-block;position:relative}.zasdk-switch input{opacity:0;width:0;height:0}.zasdk-slider{cursor:pointer;background:var(--zasdk-switch-off);border-radius:24px;transition:all .3s;position:absolute;inset:0}.zasdk-slider:before{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:all .3s;position:absolute;bottom:3px;left:3px}.zasdk-switch input:checked+.zasdk-slider{background:var(--zasdk-link-color)}.zasdk-switch input:checked+.zasdk-slider:before{transform:translate(20px)}.zasdk-data-viewer{background:var(--zasdk-background-color);z-index:100;border-radius:12px;flex-direction:column;position:absolute;inset:0;overflow:hidden}.zasdk-viewer-hdr{border-bottom:1px solid var(--zasdk-border-color);flex-shrink:0;align-items:center;gap:10px;padding:14px 16px;display:flex}.zasdk-viewer-back{cursor:pointer;flex-shrink:0;align-items:center;padding:2px;display:flex}.zasdk-viewer-back:hover svg path{stroke:var(--zasdk-link-color)}.zasdk-viewer-title{color:var(--zasdk-text-color);flex:1;font-size:16px;font-weight:600}.zasdk-viewer-content{color:var(--zasdk-text-color);white-space:pre-wrap;word-break:break-word;background:var(--zasdk-viewer-background);border-radius:6px;flex:1;margin:8px;padding:16px;font-family:monospace;font-size:12px;overflow-y:auto}.zasdk-modal-content :focus-visible{outline:2px solid var(--zasdk-primary-color);outline-offset:2px}@media (prefers-reduced-motion:reduce){.zasdk-modal *,.zasdk-timer-container *{transition:none!important;animation:none!important}}'),uo.init(t)}),po=F("AppticsFeedback.feedbackFormClose",function feedbackFormClose(){uo.close()}),fo=F("AppticsFeedback.addFeedbackLog",function addFeedbackLog(message){"string"==typeof message&&0!==message.length&&_a({type:ma,happenedat:v(),message:ba(message)})}),go=F("AppticsFeedback.addDiagnosticsInfo",function addDiagnosticsInfo(heading,key,value){"string"==typeof heading&&0!==heading.length?"string"==typeof key&&0!==key.length?null!=value&&""!==value?_a({type:ha,happenedat:v(),heading:heading,key:key,value:ba(String(value))}):za('a value is required for "'+heading+'" / "'+key+'"'):za("a key is required"):za("a heading is required")}),mo=F("AppticsFeedback.setFeedbackTheme",function setFeedbackTheme(theme){-1!==co.indexOf(theme)?(x._config.feedback_theme=theme,"undefined"!=typeof document&&["zasdkFeedbackModal","zasdkrectimer"].forEach(function(id){var e=document.getElementById(id);e&&e.setAttribute("data-zasdk-theme",theme)})):C.warn("AppticsFeedback.setFeedbackTheme: takes 'light', 'dark' or 'auto', not "+JSON.stringify(theme))}),ho=F("AppticsFeedback.sendFeedback",function(...e){return ready().then(function(t){if(!t)throw new Error("AppticsFeedback.sendFeedback: not sent, the SDK has not started; call Apptics.init() first");return sendFeedback(...e)}).catch(function(e){throw C.error("AppticsFeedback.sendFeedback failed:",e),e})}),vo={AP_FEEDBACK_TYPE:t,feedbackFormOpen:function feedbackFormOpen(options){return j(lo,arguments)},feedbackFormClose:function feedbackFormClose(){return j(po,arguments)},sendFeedback:function sendFeedback(options){return j(ho,arguments)},addFeedbackLog:function addFeedbackLog(message){return j(fo,arguments)},addDiagnosticsInfo:function addDiagnosticsInfo(heading,key,value){return j(go,arguments)},setFeedbackTheme:function setFeedbackTheme(theme){return j(mo,arguments)}};var ko=null;function _o(e){var t=function(){if(null!==ko)return ko;var e={};return"AD:Europe/Andorra;AE:Asia/Dubai;AF:Asia/Kabul;AG:America/Antigua;AI:America/Anguilla;AL:Europe/Tirane;AM:Asia/Yerevan;AO:Africa/Luanda;AQ:Antarctica/Casey,Davis,DumontDUrville,Mawson,McMurdo,Palmer,Rothera,Syowa,Troll,Vostok;AR:America/Argentina/Buenos_Aires,Argentina/Catamarca,Argentina/ComodRivadavia,Argentina/Cordoba,Argentina/Jujuy,Argentina/La_Rioja,Argentina/Mendoza,Argentina/Rio_Gallegos,Argentina/Salta,Argentina/San_Juan,Argentina/San_Luis,Argentina/Tucuman,Argentina/Ushuaia,Buenos_Aires,Catamarca,Cordoba,Jujuy,Mendoza,Rosario;AS:Pacific/Pago_Pago,Samoa|US/Samoa;AT:Europe/Vienna;AU:Antarctica/Macquarie|Australia/ACT,Adelaide,Brisbane,Broken_Hill,Canberra,Currie,Darwin,Eucla,Hobart,LHI,Lindeman,Lord_Howe,Melbourne,NSW,North,Perth,Queensland,South,Sydney,Tasmania,Victoria,West,Yancowinna;AW:America/Aruba;AX:Europe/Mariehamn;AZ:Asia/Baku;BA:Europe/Sarajevo;BB:America/Barbados;BD:Asia/Dacca,Dhaka;BE:CET,MET|Europe/Brussels;BF:Africa/Ouagadougou;BG:Europe/Sofia;BH:Asia/Bahrain;BI:Africa/Bujumbura;BJ:Africa/Porto-Novo;BL:America/St_Barthelemy;BM:Atlantic/Bermuda;BN:Asia/Brunei;BO:America/La_Paz;BQ:America/Kralendijk;BR:America/Araguaina,Bahia,Belem,Boa_Vista,Campo_Grande,Cuiaba,Eirunepe,Fortaleza,Maceio,Manaus,Noronha,Porto_Acre,Porto_Velho,Recife,Rio_Branco,Santarem,Sao_Paulo|Brazil/Acre,DeNoronha,East,West;BS:America/Nassau;BT:Asia/Thimbu,Thimphu;BW:Africa/Gaborone;BY:Europe/Minsk;BZ:America/Belize;CA:America/Atikokan,Blanc-Sablon,Cambridge_Bay,Creston,Dawson,Dawson_Creek,Edmonton,Fort_Nelson,Glace_Bay,Goose_Bay,Halifax,Inuvik,Iqaluit,Moncton,Montreal,Nipigon,Pangnirtung,Rainy_River,Rankin_Inlet,Regina,Resolute,St_Johns,Swift_Current,Thunder_Bay,Toronto,Vancouver,Whitehorse,Winnipeg,Yellowknife|Canada/Atlantic,Central,Eastern,Mountain,Newfoundland,Pacific,Saskatchewan,Yukon;CC:Indian/Cocos;CD:Africa/Kinshasa,Lubumbashi;CF:Africa/Bangui;CG:Africa/Brazzaville;CH:Europe/Zurich;CI:Africa/Abidjan,Timbuktu|Iceland;CK:Pacific/Rarotonga;CL:America/Coyhaique,Punta_Arenas,Santiago|Chile/Continental,EasterIsland|Pacific/Easter;CM:Africa/Douala;CN:Asia/Chongqing,Chungking,Harbin,Kashgar,Shanghai,Urumqi|PRC;CO:America/Bogota;CR:America/Costa_Rica;CU:America/Havana|Cuba;CV:Atlantic/Cape_Verde;CW:America/Curacao;CX:Indian/Christmas;CY:Asia/Famagusta,Nicosia|Europe/Nicosia;CZ:Europe/Prague;DE:Atlantic/Jan_Mayen|Europe/Berlin,Busingen;DJ:Africa/Djibouti;DK:Europe/Copenhagen;DM:America/Dominica;DO:America/Santo_Domingo;DZ:Africa/Algiers;EC:America/Guayaquil|Pacific/Galapagos;EE:Europe/Tallinn;EG:Africa/Cairo|Egypt;EH:Africa/El_Aaiun;ER:Africa/Asmara;ES:Africa/Ceuta|Atlantic/Canary|Europe/Madrid;ET:Africa/Addis_Ababa;FI:Europe/Helsinki;FJ:Pacific/Fiji;FK:Atlantic/Stanley;FM:Pacific/Chuuk,Kosrae,Pohnpei;FO:Atlantic/Faeroe,Faroe;FR:Europe/Paris;GA:Africa/Libreville;GB:Europe/Belfast,London|GB,GB-Eire;GD:America/Grenada;GE:Asia/Tbilisi;GF:America/Cayenne;GG:Europe/Guernsey;GH:Africa/Accra;GI:Europe/Gibraltar;GL:America/Danmarkshavn,Godthab,Nuuk,Scoresbysund,Thule;GM:Africa/Banjul;GN:Africa/Conakry;GP:America/Guadeloupe;GQ:Africa/Malabo;GR:EET|Europe/Athens;GS:Atlantic/South_Georgia;GT:America/Guatemala;GU:Pacific/Guam;GW:Africa/Bissau;GY:America/Guyana;HK:Asia/Hong_Kong|Hongkong;HN:America/Tegucigalpa;HR:Europe/Zagreb;HT:America/Port-au-Prince;HU:Europe/Budapest;ID:Asia/Jakarta,Jayapura,Makassar,Pontianak,Ujung_Pandang;IE:Eire|Europe/Dublin;IL:Asia/Jerusalem,Tel_Aviv|Israel;IM:Europe/Isle_of_Man;IN:Asia/Calcutta,Kolkata;IO:Indian/Chagos;IQ:Asia/Baghdad;IR:Asia/Tehran|Iran;IS:Atlantic/Reykjavik;IT:Europe/Rome;JE:Europe/Jersey;JM:America/Jamaica|Jamaica;JO:Asia/Amman;JP:Asia/Tokyo|Japan;KE:Africa/Asmera,Nairobi;KG:Asia/Bishkek;KH:Asia/Phnom_Penh;KI:Pacific/Enderbury,Kanton,Kiritimati,Tarawa;KM:Indian/Comoro;KN:America/St_Kitts;KP:Asia/Pyongyang;KR:Asia/Seoul|ROK;KW:Asia/Kuwait;KY:America/Cayman;KZ:Asia/Almaty,Aqtau,Aqtobe,Atyrau,Oral,Qostanay,Qyzylorda;LA:Asia/Vientiane;LB:Asia/Beirut;LC:America/St_Lucia;LI:Europe/Vaduz;LK:Asia/Colombo;LR:Africa/Monrovia;LS:Africa/Maseru;LT:Europe/Vilnius;LU:Europe/Luxembourg;LV:Europe/Riga;LY:Africa/Tripoli|Libya;MA:Africa/Casablanca;MC:Europe/Monaco;MD:Europe/Chisinau,Tiraspol;ME:Europe/Podgorica;MF:America/Marigot;MG:Indian/Antananarivo;MH:Kwajalein|Pacific/Kwajalein,Majuro;MK:Europe/Skopje;ML:Africa/Bamako;MM:Asia/Rangoon,Yangon;MN:Asia/Choibalsan,Hovd,Ulaanbaatar,Ulan_Bator;MO:Asia/Macao,Macau;MP:Pacific/Saipan;MQ:America/Martinique;MR:Africa/Nouakchott;MS:America/Montserrat;MT:Europe/Malta;MU:Indian/Mauritius;MV:Indian/Maldives;MW:Africa/Blantyre;MX:America/Bahia_Banderas,Cancun,Chihuahua,Ciudad_Juarez,Ensenada,Hermosillo,Matamoros,Mazatlan,Merida,Mexico_City,Monterrey,Ojinaga,Santa_Isabel,Tijuana|Mexico/BajaNorte,BajaSur,General;MY:Asia/Kuala_Lumpur,Kuching;MZ:Africa/Maputo;NA:Africa/Windhoek;NC:Pacific/Noumea;NE:Africa/Niamey;NF:Pacific/Norfolk;NG:Africa/Lagos;NI:America/Managua;NL:Europe/Amsterdam;NO:Europe/Oslo;NP:Asia/Kathmandu,Katmandu;NR:Pacific/Nauru;NU:Pacific/Niue;NZ:Antarctica/South_Pole|NZ,NZ-CHAT|Pacific/Auckland,Chatham;OM:Asia/Muscat;PA:America/Coral_Harbour,Panama|EST;PE:America/Lima;PF:Pacific/Gambier,Marquesas,Tahiti;PG:Pacific/Bougainville,Port_Moresby,Truk,Yap;PH:Asia/Manila;PK:Asia/Karachi;PL:Europe/Warsaw|Poland;PM:America/Miquelon;PN:Pacific/Pitcairn;PR:America/Puerto_Rico,Virgin;PS:Asia/Gaza,Hebron;PT:Atlantic/Azores,Madeira|Europe/Lisbon|Portugal,WET;PW:Pacific/Palau;PY:America/Asuncion;QA:Asia/Qatar;RE:Indian/Reunion;RO:Europe/Bucharest;RS:Europe/Belgrade;RU:Asia/Anadyr,Barnaul,Chita,Irkutsk,Kamchatka,Khandyga,Krasnoyarsk,Magadan,Novokuznetsk,Novosibirsk,Omsk,Sakhalin,Srednekolymsk,Tomsk,Ust-Nera,Vladivostok,Yakutsk,Yekaterinburg|Europe/Astrakhan,Kaliningrad,Kirov,Moscow,Samara,Saratov,Ulyanovsk,Volgograd|W-SU;RW:Africa/Kigali;SA:Asia/Riyadh;SB:Pacific/Guadalcanal,Ponape;SC:Indian/Mahe;SD:Africa/Khartoum;SE:Europe/Stockholm;SG:Asia/Singapore|Singapore;SH:Atlantic/St_Helena;SI:Europe/Ljubljana;SJ:Arctic/Longyearbyen;SK:Europe/Bratislava;SL:Africa/Freetown;SM:Europe/San_Marino;SN:Africa/Dakar;SO:Africa/Mogadishu;SR:America/Paramaribo;SS:Africa/Juba;ST:Africa/Sao_Tome;SV:America/El_Salvador;SX:America/Lower_Princes;SY:Asia/Damascus;SZ:Africa/Mbabane;TC:America/Grand_Turk;TD:Africa/Ndjamena;TF:Indian/Kerguelen;TG:Africa/Lome;TH:Asia/Bangkok;TJ:Asia/Dushanbe;TK:Pacific/Fakaofo;TL:Asia/Dili;TM:Asia/Ashgabat,Ashkhabad;TN:Africa/Tunis;TO:Pacific/Tongatapu;TR:Asia/Istanbul|Europe/Istanbul|Turkey;TT:America/Port_of_Spain;TV:Pacific/Funafuti;TW:Asia/Taipei|ROC;TZ:Africa/Dar_es_Salaam;UA:Europe/Kiev,Kyiv,Simferopol,Uzhgorod,Zaporozhye;UG:Africa/Kampala;UM:Pacific/Midway,Wake;US:America/Adak,Anchorage,Atka,Boise,Chicago,Denver,Detroit,Fort_Wayne,Indiana/Indianapolis,Indiana/Knox,Indiana/Marengo,Indiana/Petersburg,Indiana/Tell_City,Indiana/Vevay,Indiana/Vincennes,Indiana/Winamac,Indianapolis,Juneau,Kentucky/Louisville,Kentucky/Monticello,Knox_IN,Los_Angeles,Louisville,Menominee,Metlakatla,New_York,Nome,North_Dakota/Beulah,North_Dakota/Center,North_Dakota/New_Salem,Phoenix,Shiprock,Sitka,Yakutat|HST,MST,Navajo|Pacific/Honolulu,Johnston|US/Alaska,Aleutian,Arizona,Central,East-Indiana,Eastern,Hawaii,Indiana-Starke,Michigan,Mountain,Pacific;UY:America/Montevideo;UZ:Asia/Samarkand,Tashkent;VA:Europe/Vatican;VC:America/St_Vincent;VE:America/Caracas;VG:America/Tortola;VI:America/St_Thomas;VN:Asia/Ho_Chi_Minh,Saigon;VU:Pacific/Efate;WF:Pacific/Wallis;WS:Pacific/Apia;YE:Asia/Aden;YT:Indian/Mayotte;ZA:Africa/Johannesburg;ZM:Africa/Lusaka;ZW:Africa/Harare".split(";").forEach(function(t){var n=t.indexOf(":"),r=t.slice(0,n);t.slice(n+1).split("|").forEach(function(t){var n=t.indexOf("/"),i=-1===n?"":t.slice(0,n+1);t.slice(i.length).split(",").forEach(function(t){e[i+t]=r})})}),ko=e,e}();return Object.prototype.hasOwnProperty.call(t,e)?t[e]:""}const bo=Object.freeze({1:"in"}),yo=Object.freeze({appversion:function(){return String(x._defaultoptions.appversion||"")},platform:function(){return String(x._platform||"")},browser:function(){return String(x._device_info.browser||"")},browserversion:function(){return String(x._device_info.browserversion||"")},osversion:function(){return String(x._device_info.osversion||"")},devicetype:function(){return String(x._device_info.devicetype||"")},language:function(){return String(navigator.language||"")},country:function(){var e=String(x._user_info.country||"").trim();if(""!==e)return e;var t="";try{t=String(Je()||"")}catch(e){t=""}var n=_o(t);return""===n?"":function(e){try{return new Intl.DisplayNames(["en"],{type:"region"}).of(e)||e}catch(t){return e}}(n)},customergroupid:function(){return String(x._user_info.groupid||"")},userid:function(){return String(x._user_info.userid||"")}});var zo={};function Ao(key,message){zo[key]||(zo[key]=!0,C.warn(message))}function wo(){zo={}}function So(e,conditionname){var key=String(e.key||"");if(void 0===bo[String(e.status)])return Ao("op:"+e.status,'AppticsRemoteConfig: unknown criteria operator "'+e.status+'", so conditions using it will not match'),!1;var t=function(e){var t=e.value;return Array.isArray(t)?t.map(function(e){return String(e)}):_(t)?[]:[String(t)]}(e);if("custom_sdk_value"===key){var n=qo(conditionname);return 0===n.length?(Ao("custom:"+conditionname,'AppticsRemoteConfig: no value for the custom condition "'+conditionname+'"; set one with setCustomConditionValue, or it will not match'),!1):n.some(function(e){return-1!==t.indexOf(e)})}var r=yo[key];if(void 0===r)return Ao("key:"+key,'AppticsRemoteConfig: unknown criteria "'+key+'", so conditions using it will not match'),!1;var i=r();return""!==i&&-1!==t.indexOf(i)}function Eo(e){var t=e&&e.criterias;if(!Array.isArray(t)||0===t.length)return!1;for(var n=0;n<t.length;n++)if(!So(t[n],String(e.conditionname||"")))return!1;return!0}function xo(e){var t={},n=Array.isArray(e.all_parameter)?e.all_parameter:[],r=Array.isArray(e.all_condition)?e.all_condition:[];return n.forEach(function(e){var name=String(e.paramname||"");""!==name&&(t[name]=function(e,t){var n={};(Array.isArray(e.conditions)?e.conditions:[]).forEach(function(e){n[String(e.conditionid)]=e});for(var r={},i=0;i<t.length;i++){var a=t[i],id=String(a.conditionid);r[id]=!0;var o=n[id];if(void 0!==o&&Eo(a))return String(void 0===o.value||null===o.value?"":o.value)}return Object.keys(n).forEach(function(id){r[id]||Ao("missing:"+id,'AppticsRemoteConfig: parameter "'+e.paramname+'" uses condition '+id+", which the server did not send")}),String(void 0===e.defaultvalue||null===e.defaultvalue?"":e.defaultvalue)}(e,r))}),t}const Po="remoteconfig";var To={},Oo=!1;function Io(){var e=Ie.item(Po);return e&&"object"==typeof e?e:null}function Co(){var e=Io();return e&&"number"==typeof e.flagtime?e.flagtime:0}function Ro(e){var t=Array.isArray(e.version)?e.version:[],n=0;return t.forEach(function(e){var t=Number(e.date);isFinite(t)&&t>n&&(n=t)}),n}function No(){var e=Io();To=e&&e.rules?xo(e.rules):{},Oo=!0}function Mo(){return Oo||No(),To}var Lo={};function qo(conditionname){var name=String(conditionname||"").trim();return Object.prototype.hasOwnProperty.call(Lo,name)?Lo[name]:[]}const Do="AppticsRemoteConfig",Fo=[Number(o.REMOTE_CONFIG)];var jo=null,Bo=0;var Uo=0;function Ho(){if(null!==jo)return jo;if(!1===x._remoteConfigEnabled||!1===x._remoteConfigReported)return C.log(Do+": switched off by the server, not asking"),Promise.resolve({});var e=zt(Do)||wt(Do);if(e)return e;var t,n,r=Bo,i=kt("getupdates",(t={appversionid:String(x._device_info.appversionid||""),moduleids:Fo,flagtime:Co()},n=String(navigator.language||"").slice(0,10),""!==n&&(t.languagecode=n),JSON.stringify(t)),gt(),Do).then(function(e){var t=e.data||{};if(r!==Bo)return t;!function(e){var status=e.tracking_status;if(status&&"object"==typeof status){var t=status[o.REMOTE_CONFIG];t&&"object"==typeof t&&(x._remoteConfigReported=!1!==t.enabled)}}(t);var n=t.remoteconfig,i=v();return Uo=i,n&&"object"==typeof n?function(e,t){wo();var n={flagtime:Ro(e)||t,rules:e,fetchedat:t};Ie.add(Po,n),To=xo(e),Oo=!0,C.log("AppticsRemoteConfig: "+Object.keys(To).length+" parameters, published "+n.flagtime)}(n,i):(!function(e){var t=Io();null!==t&&(t.fetchedat=e,Ie.add(Po,t))}(i),C.log(Do+": no changes since "+Co())),t}).then(function(e){return a(),e},function(e){return a(),Promise.reject(e)});function a(){jo===i&&(jo=null)}return jo=i}function Go(){return ready().then(function(e){if(!e)return!1;var t=v();return Uo>0&&t-Uo<3e5||Wt().then(function(){return Ho()}).then(function(){return!0},function(e){return C.log(Do+": fetch failed: "+String(e)),!1})})}function Vo(){Go()}function Ko(name){var e=Mo();return Object.prototype.hasOwnProperty.call(e,name)?e[name]:void 0}function Wo(value,callback){if("function"==typeof callback)try{callback(value)}catch(e){C.warn("AppticsRemoteConfig: the callback threw",e)}return value}Le.resetRemoteConfig=function(){Bo++,jo=null,Uo=0,x._remoteConfigReported=!0,Lo={},Ie.add(Po,void 0),To={},Oo=!1,wo()},Le.remoteConfigStarted=Vo,Le.remoteConfigUserChanged=No,x._ready&&Vo();const Zo=F("AppticsRemoteConfig.fetchValue",function fetchValue(name,callback){return Go().then(function(){var value=Ko(name);return Wo(void 0===value?null:value,callback)})}),Jo=F("AppticsRemoteConfig.fetchValues",function fetchValues(names,callback){"function"==typeof names&&(callback=names,names=void 0);var e=function(names){if(null==names)return null;if(!Array.isArray(names))return C.warn("AppticsRemoteConfig.fetchValues: takes a list of parameter names, as fetchValues(['a', 'b']); answering with every parameter"),null;var e=[];return names.forEach(function(name){var t="string"==typeof name?name.trim():"";""!==t&&-1===e.indexOf(t)&&e.push(t)}),0===e.length?null:e}(names),t="function"==typeof callback?callback:void 0;return Go().then(function(){var n=Mo(),r={};return(null===e?Object.keys(n):e).forEach(function(name){var value=Ko(name);r[name]=void 0===value?null:value}),Wo(r,t)})}),Yo=F("AppticsRemoteConfig.setCustomConditionValue",function setCustomConditionValue(conditionname,value){var name="string"==typeof conditionname?conditionname.trim():"";if(""!==name){var e=(null==value?"":String(value)).split(",").map(function(e){return e.trim()}).filter(function(e,t,n){return""!==e&&n.indexOf(e)===t});0===e.length?delete Lo[name]:Lo[name]=e,be().then(function(e){e&&No()})}else C.warn("AppticsRemoteConfig.setCustomConditionValue: a condition name is required")}),Qo={fetchValue:function fetchValue(name,callback){return j(Zo,arguments)},fetchValues:function fetchValues(names,callback){return j(Jo,arguments)},setCustomConditionValue:function setCustomConditionValue(conditionname,value){j(Yo,arguments)}},$o={filename:"",linenumber:0,fn:""},Xo={filename:"-",linenumber:0,fn:"-"},es=/debugger eval code/,ts=/^(global|eval) code(@|$)/,ns=/([^\s(@]+):(\d+):(\d+)\)?$/;const rs=/^at\s+(?:async\s+)?(.+?)\s+\(/,is=/^([^@\s]+)@/;function as(e){var t=rs.exec(e)||is.exec(e);return t&&t[1]||""}function os(e){var t=e.trim(),n=ns.exec(t);if(null===n)return null;var url,r,i,a=Number(n[2]);return isFinite(a)?{filename:(url=n[1]||"",r=url.split(/[?#]/)[0]||url,i=r.split("/"),(i[i.length-1]||r).slice(0,100)),linenumber:a,fn:as(t)}:null}function ss(e){try{return function(e,t){if(!e)return $o;for(var n=e.split("\n"),r=0,i=0;i<n.length;i++){var a=(n[i]||"").trim(),o=os(a);if(null!==o){if(!(r++<t))return"<anonymous>"===o.filename||es.test(a)?Xo:o}else if(r===t&&ts.test(a))return Xo}return $o}((new Error).stack,e+1)}catch(e){return $o}}const cs=Object.freeze({VERBOSE:1,DEBUG:2,INFO:3,WARN:4,ERROR:5});function ds(e){var name=String(e.fn||"").replace(/<anonymous>/g,"").replace(/[<>]/g,"").trim();return""===name||/^(Object|Module|eval)\.?$/.test(name)?"App":name.slice(0,100)}function us(value){if(value instanceof Error){var e=value.name+": "+value.message;return value.stack&&-1!==value.stack.indexOf(value.message)?value.stack:e}if("string"==typeof value)return value;try{var t=JSON.stringify(value);return void 0===t?String(value):t}catch(e){return String(value)}}const ls=F("AppticsLogger",function(e,message,t,n,r){if(Vr()){var i=[message].concat(t).map(us).join(" ");xe.add({type:"remotelog",module:ds(r),level:e,happenedat:n,exceptionlog:i,attempt:1,filename:r.filename,linenumber:r.linenumber}),Wr||(Wr=!0,setTimeout(function(){Wr=!1,Qr()},1e3))}});function ps(e){return function(message,properties){try{var t=Array.prototype.slice.call(arguments,1);ls(e,message,t,v(),ss(1))}catch(e){}}}const fs={verbose:ps(cs.VERBOSE),debug:ps(cs.DEBUG),info:ps(cs.INFO),warn:ps(cs.WARN),error:ps(cs.ERROR)},gs=Object.assign({},fa,{AppticsFeedback:vo,AppticsLogger:fs,AppticsRemoteConfig:Qo});window.apptics=gs,window.Apptics=gs.Apptics,window.AppticsEvent=gs.AppticsEvent,window.AppticsScreen=gs.AppticsScreen,window.AppticsApi=gs.AppticsApi,window.AppticsError=gs.AppticsError,window.AppticsUser=gs.AppticsUser,window.AppticsSettings=gs.AppticsSettings,window.AppticsFeedback=vo,window.AppticsLogger=fs,window.AppticsRemoteConfig=Qo,window.AppticsHeatmap=gs.AppticsHeatmap,Di(gs.Apptics)}();
|
|
3
3
|
//# sourceMappingURL=apptics.min.js.map
|