stormcloud-video-player 0.8.77 → 0.8.79

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.
Files changed (39) hide show
  1. package/dist/stormcloud-vp.min.js +1 -1
  2. package/lib/Player.cjs +2 -0
  3. package/lib/Player.cjs.map +1 -1
  4. package/lib/Player.d.cts +1 -1
  5. package/lib/StormcloudPlayer.cjs +230 -7
  6. package/lib/StormcloudPlayer.cjs.map +1 -1
  7. package/lib/index.cjs +230 -7
  8. package/lib/index.cjs.map +1 -1
  9. package/lib/index.d.ts +4 -1
  10. package/lib/index.js +231 -7
  11. package/lib/index.js.map +1 -1
  12. package/lib/player/AdBreakOrchestrator.cjs +5 -1
  13. package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
  14. package/lib/player/AdConfigManager.cjs +3 -1
  15. package/lib/player/AdConfigManager.cjs.map +1 -1
  16. package/lib/player/ContentHealthWatchdog.cjs +255 -0
  17. package/lib/player/ContentHealthWatchdog.cjs.map +1 -0
  18. package/lib/player/ContentHealthWatchdog.d.cts +40 -0
  19. package/lib/player/StormcloudVideoPlayer.cjs +230 -7
  20. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  21. package/lib/player/StormcloudVideoPlayer.d.cts +1 -0
  22. package/lib/players/HlsPlayer.cjs +230 -7
  23. package/lib/players/HlsPlayer.cjs.map +1 -1
  24. package/lib/players/index.cjs +230 -7
  25. package/lib/players/index.cjs.map +1 -1
  26. package/lib/props.cjs +2 -0
  27. package/lib/props.cjs.map +1 -1
  28. package/lib/sdk/hlsAdPlayer.cjs +16 -6
  29. package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
  30. package/lib/types.d.cts +2 -0
  31. package/lib/ui/StormcloudVideoPlayer.cjs +230 -7
  32. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  33. package/lib/utils/browserCompat.cjs +7 -0
  34. package/lib/utils/browserCompat.cjs.map +1 -1
  35. package/lib/utils/browserCompat.d.cts +2 -1
  36. package/lib/utils/tracking.cjs +5 -1
  37. package/lib/utils/tracking.cjs.map +1 -1
  38. package/lib/utils/tracking.d.cts +1 -1
  39. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\AdConfigManager.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","AdConfigManager_exports","AdConfigManager","module","exports","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","bridgeDeviceId","validDeviceId","deviceId","realDeviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","platformLat","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","SCVP_MACRO_DETECT","SCVP_MACRO_PATTERN","SCVP_WHOLE_VALUE_PATTERN","NESTED_QUERY_PARAM_KEYS","SCVP_POD_MACROS","hasScvpMacros","safeDecode","findScvpMacroNames","names","text","pass","_m","bracketName","parenName","add","toUpperCase","decoded","Array","resolveScvpMacroValues","values","Map","str","toFlag","palNonce","programTitle","channelName","pod","streamCorrelator","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","keepNone","substituteScvpParams","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","substituteScvpMacros","replaced","entries","append","applyScvpMacros","deferred","applyVastMacros","expandedUrl","replaceCorrelatorFallback","existingUrl","pageUrl","adTest","staleKeys","correlatorRegex","sep","DEFAULT_REQUEST_SAFETY_MS","nonNegativeInt","isFinite","positiveInt","resolveAdPodConfig","config","adPodConfig","requestSafetyMs","minPodDurationMs","maxAdsPerBreak","podMaxAds","maxPodDurationMs","podMaxDurationMs","exactDuration","podExactDuration","PRIVATE_HOST_PATTERNS","isLocalDevHost","host","endsWith","some","toDevSafeUrl","protocol","cleanPath","DEFAULT_TRACKING_INGEST_CONFIG","enabled","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","base","ingestPlayerTracking","licenseKey","body","response","error","fetch","method","headers","Authorization","JSON","stringify","ok","warn","status","cachedBrowserId","buildAnalyticsContext","context","contentNetwork","contentChannel","contentTitle","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","platform","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","width","height","availWidth","availHeight","orientation","type","pixelDepth","deviceType","brand","os","model","isSmartTV","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","visibilityState","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","hash","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","b","abs","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","log","toISOString","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendHeartbeat","heartbeatData","withDeferredPodParams","deferNonce","video","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultEdgePodMaxAds","palNonceDispatchWaitMs","viewCorrelator","debug","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","data","apiUrl","apiEnableEdge","apiEdgeUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","vastTagUrl","apiVastTagUrl","json","enableEdgePodRequest","edgePodUrl","apiEnableEdgePodRequest","apiEdgePodUrl","apiFloorLadder","floorLadder","ima","payload","options","vast","cue_tones","number_ads","apiNumberAds","vmapXml","Error","parseVmapToBreaks","clear","DOMParser","doc","parseFromString","querySelector","VMAP_NS","adBreakNodes","getElementsByTagNameNS","querySelectorAll","getElementsByTagName","el","localName","parsed","node","index","timeOffsetRaw","getAttribute","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","textContent","breakId","sort","a","aStart","bStart","timeOffset","hms","hh","mm","ss","ms","hours","minutes","seconds","millis","percent","ratio","durationSec","duration","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","candidate","tol","driftToleranceMs","breakStartMs","findBreakForTime","durationMs","end","selectVastTagsForBreak","s","beginNewAdPod","resolveEdgeMaxAds","getPalDescriptionUrl","generatePodVastUrl","adPlayer","inAdBreak","getOriginalMutedState","muted","envSignals","ctvAdRequest","macroContext","href","autoplay","getCurrentNonce","nonceReady","finalUrl","injectNonce","completeDeferredRequestSignals","nonce","indexOf","waitForNonce","initializeTracking","then","heartbeatInterval","setInterval","sendHeartbeatIfNeeded","catch","destroyTracking","clearInterval"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager_exports = {};\n__export(AdConfigManager_exports, {\n AdConfigManager: () => AdConfigManager\n});\nmodule.exports = __toCommonJS(AdConfigManager_exports);\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const bridgeDeviceId = validDeviceId(bridgeSignals.deviceId);\n const realDeviceId = bridgeDeviceId || (isCtv ? validDeviceId(readStoredDeviceId()) : void 0) || validDeviceId(platformDevice.deviceId);\n let deviceId = realDeviceId;\n let deviceIdType = (bridgeDeviceId ? bridgeSignals.deviceIdType : void 0) || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeDeviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking();\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction validDeviceId(value) {\n return value && !isMacroPlaceholder(value) ? value : void 0;\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar SCVP_MACRO_DETECT = /\\[SCVP-|%5BSCVP-|\\(SCVP-|%28SCVP-/i;\nvar SCVP_MACRO_PATTERN = /\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\)/gi;\nvar SCVP_WHOLE_VALUE_PATTERN = /^\\s*(?:\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\))\\s*$/i;\nvar NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([\"cust_params\"]);\nvar SCVP_POD_MACROS = /* @__PURE__ */ new Set([\"PMND\", \"PMXD\", \"PMAD\"]);\nfunction hasScvpMacros(url) {\n return !!url && SCVP_MACRO_DETECT.test(url);\n}\nfunction safeDecode(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return value;\n }\n}\nfunction findScvpMacroNames(url) {\n if (!url) return [];\n const names = /* @__PURE__ */ new Set();\n let text = url;\n for (let pass = 0; pass < 3; pass++) {\n text.replace(SCVP_MACRO_PATTERN, (_m, bracketName, parenName) => {\n names.add(String(bracketName || parenName).toUpperCase());\n return \"\";\n });\n const decoded = safeDecode(text);\n if (decoded === text) break;\n text = decoded;\n }\n return Array.from(names);\n}\nfunction resolveScvpMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (name, value) => {\n if (value == null) return;\n const str = String(value).trim();\n if (str) values.set(name, str);\n };\n const toFlag = (value) => value == null ? void 0 : value ? \"1\" : \"0\";\n const deviceId = ctx.deviceId?.trim();\n const deviceIdType = deviceId ? ctx.deviceIdType?.trim() || inferDeviceIdType() : void 0;\n if (deviceId && deviceIdType) {\n set(\"RDID\", deviceId);\n set(\"IDTYPE\", deviceIdType);\n set(\"IS-LAT\", toFlag(ctx.limitAdTracking) ?? \"0\");\n }\n set(\"SID\", ctx.sessionId);\n set(\"DTH\", ctx.deviceTypeHint);\n set(\"GIVN\", ctx.palNonce);\n set(\"CT-TI\", ctx.programTitle);\n set(\"CT-CH\", ctx.channelName);\n set(\"POD\", ctx.pod);\n set(\"CORRELATOR\", ctx.correlator);\n set(\"SCOR\", ctx.streamCorrelator);\n set(\"VPMUTE\", toFlag(ctx.adWillPlayMuted));\n if (ctx.adWillAutoPlay != null) {\n set(\"VPA\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n set(\"GDPR\", ctx.consent?.gdpr);\n set(\"GDPR-CONSENT\", ctx.consent?.gdprConsent);\n set(\"US-PRIVACY\", ctx.consent?.usPrivacy);\n return values;\n}\nvar keepNone = () => false;\nfunction substituteScvpParams(params, values, unresolved, keep, nested) {\n const out = [];\n const replaceMacro = (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return value;\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n };\n params.forEach((value, key) => {\n const whole = value.match(SCVP_WHOLE_VALUE_PATTERN);\n if (whole) {\n const name = String(whole[1] || whole[2]).toUpperCase();\n const resolved = values.get(name);\n if (resolved != null) {\n out.push([key, resolved]);\n } else if (keep(name)) {\n out.push([key, value]);\n } else {\n unresolved.add(name);\n }\n return;\n }\n if (!SCVP_MACRO_DETECT.test(value)) {\n out.push([key, value]);\n return;\n }\n if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {\n const inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);\n if (inner.length > 0) {\n out.push([\n key,\n inner.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join(\"&\")\n ]);\n }\n return;\n }\n out.push([key, value.replace(SCVP_MACRO_PATTERN, replaceMacro)]);\n });\n return out;\n}\nfunction substituteScvpMacros(baseUrl, values, keep = keepNone) {\n const unresolved = /* @__PURE__ */ new Set();\n let url;\n try {\n url = new URL(normalizeVastTagUrl(baseUrl));\n } catch {\n const replaced = baseUrl.replace(\n SCVP_MACRO_PATTERN,\n (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n }\n );\n return { url: replaced, unresolved: Array.from(unresolved) };\n }\n const entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);\n const search = new URLSearchParams();\n for (const [key, value] of entries) search.append(key, value);\n url.search = search.toString();\n return { url: url.toString(), unresolved: Array.from(unresolved) };\n}\nfunction applyScvpMacros(baseUrl, ctx, deferred = /* @__PURE__ */ new Set()) {\n return substituteScvpMacros(baseUrl, resolveScvpMacroValues(ctx), (name) => deferred.has(name));\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\n\n// src/player/OptimizedPodRequest.ts\nvar DEFAULT_REQUEST_SAFETY_MS = 1500;\nfunction nonNegativeInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : void 0;\n}\nfunction positiveInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : void 0;\n}\nfunction resolveAdPodConfig(config) {\n const pod = config.adPodConfig ?? {};\n return {\n requestSafetyMs: nonNegativeInt(pod.requestSafetyMs) ?? DEFAULT_REQUEST_SAFETY_MS,\n minPodDurationMs: nonNegativeInt(pod.minPodDurationMs) ?? 0,\n maxAdsPerBreak: pod.maxAdsPerBreak === void 0 ? positiveInt(config.podMaxAds) : positiveInt(pod.maxAdsPerBreak),\n maxPodDurationMs: positiveInt(pod.maxPodDurationMs) ?? positiveInt(config.podMaxDurationMs),\n exactDuration: config.podExactDuration === true\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n const contentNetwork = config.contentNetwork?.trim();\n const contentChannel = config.channelName?.trim();\n const contentTitle = config.programTitle?.trim();\n if (contentNetwork) context.contentNetwork = contentNetwork;\n if (contentChannel) context.contentChannel = contentChannel;\n if (contentTitle) context.contentTitle = contentTitle;\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/player/AdConfigManager.ts\nfunction withDeferredPodParams(rawUrl, deferNonce) {\n try {\n const url = new URL(rawUrl);\n url.searchParams.set(\"pmnd\", \"[SCVP-PMND]\");\n url.searchParams.set(\"pmxd\", \"[SCVP-PMXD]\");\n url.searchParams.set(\"pmad\", \"[SCVP-PMAD]\");\n if (deferNonce && !url.searchParams.get(\"givn\")) {\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", \"[SCVP-GIVN]\");\n }\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultEdgePodMaxAds = 6;\n this.palNonceDispatchWaitMs = 1500;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://edge.stormcloudhub.com/api/v1/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const apiEnableEdge = data.response?.enableEdgePodRequest;\n const apiEdgeUrl = data.response?.edgePodUrl;\n this.apiEnableEdgePodRequest = typeof apiEnableEdge === \"boolean\" ? apiEnableEdge : void 0;\n this.apiEdgePodUrl = typeof apiEdgeUrl === \"string\" ? apiEdgeUrl : void 0;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Edge pod settings from API:\", {\n enableEdgePodRequest: this.apiEnableEdgePodRequest,\n edgePodUrl: this.apiEdgePodUrl\n });\n }\n this.apiFloorLadder = data.response?.floorLadder;\n if (this.debug) {\n console.log(\n this.apiFloorLadder ? \"[StormcloudVideoPlayer] Floor ladder from API:\" : \"[StormcloudVideoPlayer] No floorLadder block in /ads/web response\",\n this.apiFloorLadder\n );\n }\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolveAdPodConfig() {\n return resolveAdPodConfig(this.config);\n }\n resolveEdgeMaxAds() {\n return this.resolveAdPodConfig().maxAdsPerBreak ?? (this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultEdgePodMaxAds);\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const macroContext = {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals,\n palNonce: palNonce.getCurrentNonce() || void 0\n };\n const nonceReady = !!macroContext.palNonce;\n let finalUrl;\n if (hasScvpMacros(baseUrl)) {\n const deferred = new Set(SCVP_POD_MACROS);\n if (!nonceReady) deferred.add(\"GIVN\");\n const { url, unresolved } = applyScvpMacros(baseUrl, macroContext, deferred);\n if (unresolved.length > 0) {\n console.warn(\n \"[StormcloudVideoPlayer] Unresolved SCVP macros (removed from request):\",\n unresolved.join(\", \")\n );\n }\n finalUrl = ensureVideoAdType(url);\n } else {\n finalUrl = withDeferredPodParams(\n palNonce.injectNonce(ensureVideoAdType(applyVastMacros(baseUrl, macroContext))),\n !nonceReady\n );\n }\n console.log(\n `[StormcloudVideoPlayer] Prepared optimized-pod request URL (pod=${this.podCounter}; pmnd/pmxd/pmad resolved at dispatch):`,\n finalUrl\n );\n return finalUrl;\n }\n async completeDeferredRequestSignals(url, palNonce) {\n if (findScvpMacroNames(url).indexOf(\"GIVN\") === -1) return url;\n const nonce = palNonce.getCurrentNonce() || await palNonce.waitForNonce(this.palNonceDispatchWaitMs);\n if (!nonce) return url;\n return substituteScvpMacros(url, /* @__PURE__ */ new Map([[\"GIVN\", nonce]]), (name) => name !== \"GIVN\").url;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AdConfigManager\n});\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\AdConfigManager.cjs"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","AdConfigManager_exports","AdConfigManager","module","exports","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","bridgeDeviceId","validDeviceId","deviceId","realDeviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","platformLat","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","SCVP_MACRO_DETECT","SCVP_MACRO_PATTERN","SCVP_WHOLE_VALUE_PATTERN","NESTED_QUERY_PARAM_KEYS","SCVP_POD_MACROS","hasScvpMacros","safeDecode","findScvpMacroNames","names","text","pass","_m","bracketName","parenName","add","toUpperCase","decoded","Array","resolveScvpMacroValues","values","Map","str","toFlag","palNonce","programTitle","channelName","pod","streamCorrelator","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","keepNone","substituteScvpParams","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","substituteScvpMacros","replaced","entries","append","applyScvpMacros","deferred","applyVastMacros","expandedUrl","replaceCorrelatorFallback","existingUrl","pageUrl","adTest","staleKeys","correlatorRegex","sep","DEFAULT_REQUEST_SAFETY_MS","nonNegativeInt","isFinite","positiveInt","resolveAdPodConfig","config","adPodConfig","requestSafetyMs","minPodDurationMs","maxAdsPerBreak","podMaxAds","maxPodDurationMs","podMaxDurationMs","exactDuration","podExactDuration","PRIVATE_HOST_PATTERNS","isLocalDevHost","host","endsWith","some","toDevSafeUrl","protocol","cleanPath","DEFAULT_TRACKING_INGEST_CONFIG","enabled","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","base","ingestPlayerTracking","licenseKey","body","response","error","fetch","method","headers","Authorization","JSON","stringify","ok","warn","status","cachedBrowserId","buildAnalyticsContext","context","contentNetwork","contentChannel","contentTitle","hlsUrl","src","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","platform","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","width","height","availWidth","availHeight","orientation","type","pixelDepth","deviceType","brand","os","model","isSmartTV","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","visibilityState","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","hash","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","b","abs","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","log","toISOString","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendHeartbeat","heartbeatData","withDeferredPodParams","deferNonce","video","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultEdgePodMaxAds","palNonceDispatchWaitMs","viewCorrelator","debug","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","data","apiUrl","apiEnableEdge","apiEdgeUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","vastTagUrl","apiVastTagUrl","json","enableEdgePodRequest","edgePodUrl","apiEnableEdgePodRequest","apiEdgePodUrl","apiFloorLadder","floorLadder","ima","payload","options","vast","cue_tones","number_ads","apiNumberAds","vmapXml","Error","parseVmapToBreaks","clear","DOMParser","doc","parseFromString","querySelector","VMAP_NS","adBreakNodes","getElementsByTagNameNS","querySelectorAll","getElementsByTagName","el","localName","parsed","node","index","timeOffsetRaw","getAttribute","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","textContent","breakId","sort","a","aStart","bStart","timeOffset","hms","hh","mm","ss","ms","hours","minutes","seconds","millis","percent","ratio","durationSec","duration","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","candidate","tol","driftToleranceMs","breakStartMs","findBreakForTime","durationMs","end","selectVastTagsForBreak","s","beginNewAdPod","resolveEdgeMaxAds","getPalDescriptionUrl","generatePodVastUrl","adPlayer","inAdBreak","getOriginalMutedState","muted","envSignals","ctvAdRequest","macroContext","href","autoplay","getCurrentNonce","nonceReady","finalUrl","injectNonce","completeDeferredRequestSignals","nonce","indexOf","waitForNonce","initializeTracking","then","heartbeatInterval","setInterval","sendHeartbeatIfNeeded","catch","destroyTracking","clearInterval"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager_exports = {};\n__export(AdConfigManager_exports, {\n AdConfigManager: () => AdConfigManager\n});\nmodule.exports = __toCommonJS(AdConfigManager_exports);\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const bridgeDeviceId = validDeviceId(bridgeSignals.deviceId);\n const realDeviceId = bridgeDeviceId || (isCtv ? validDeviceId(readStoredDeviceId()) : void 0) || validDeviceId(platformDevice.deviceId);\n let deviceId = realDeviceId;\n let deviceIdType = (bridgeDeviceId ? bridgeSignals.deviceIdType : void 0) || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeDeviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking();\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction validDeviceId(value) {\n return value && !isMacroPlaceholder(value) ? value : void 0;\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar SCVP_MACRO_DETECT = /\\[SCVP-|%5BSCVP-|\\(SCVP-|%28SCVP-/i;\nvar SCVP_MACRO_PATTERN = /\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\)/gi;\nvar SCVP_WHOLE_VALUE_PATTERN = /^\\s*(?:\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\))\\s*$/i;\nvar NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([\"cust_params\"]);\nvar SCVP_POD_MACROS = /* @__PURE__ */ new Set([\"PMND\", \"PMXD\", \"PMAD\"]);\nfunction hasScvpMacros(url) {\n return !!url && SCVP_MACRO_DETECT.test(url);\n}\nfunction safeDecode(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return value;\n }\n}\nfunction findScvpMacroNames(url) {\n if (!url) return [];\n const names = /* @__PURE__ */ new Set();\n let text = url;\n for (let pass = 0; pass < 3; pass++) {\n text.replace(SCVP_MACRO_PATTERN, (_m, bracketName, parenName) => {\n names.add(String(bracketName || parenName).toUpperCase());\n return \"\";\n });\n const decoded = safeDecode(text);\n if (decoded === text) break;\n text = decoded;\n }\n return Array.from(names);\n}\nfunction resolveScvpMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (name, value) => {\n if (value == null) return;\n const str = String(value).trim();\n if (str) values.set(name, str);\n };\n const toFlag = (value) => value == null ? void 0 : value ? \"1\" : \"0\";\n const deviceId = ctx.deviceId?.trim();\n const deviceIdType = deviceId ? ctx.deviceIdType?.trim() || inferDeviceIdType() : void 0;\n if (deviceId && deviceIdType) {\n set(\"RDID\", deviceId);\n set(\"IDTYPE\", deviceIdType);\n set(\"IS-LAT\", toFlag(ctx.limitAdTracking) ?? \"0\");\n }\n set(\"SID\", ctx.sessionId);\n set(\"DTH\", ctx.deviceTypeHint);\n set(\"GIVN\", ctx.palNonce);\n set(\"CT-TI\", ctx.programTitle);\n set(\"CT-CH\", ctx.channelName);\n set(\"POD\", ctx.pod);\n set(\"CORRELATOR\", ctx.correlator);\n set(\"SCOR\", ctx.streamCorrelator);\n set(\"VPMUTE\", toFlag(ctx.adWillPlayMuted));\n if (ctx.adWillAutoPlay != null) {\n set(\"VPA\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n set(\"GDPR\", ctx.consent?.gdpr);\n set(\"GDPR-CONSENT\", ctx.consent?.gdprConsent);\n set(\"US-PRIVACY\", ctx.consent?.usPrivacy);\n return values;\n}\nvar keepNone = () => false;\nfunction substituteScvpParams(params, values, unresolved, keep, nested) {\n const out = [];\n const replaceMacro = (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return value;\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n };\n params.forEach((value, key) => {\n const whole = value.match(SCVP_WHOLE_VALUE_PATTERN);\n if (whole) {\n const name = String(whole[1] || whole[2]).toUpperCase();\n const resolved = values.get(name);\n if (resolved != null) {\n out.push([key, resolved]);\n } else if (keep(name)) {\n out.push([key, value]);\n } else {\n unresolved.add(name);\n }\n return;\n }\n if (!SCVP_MACRO_DETECT.test(value)) {\n out.push([key, value]);\n return;\n }\n if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {\n const inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);\n if (inner.length > 0) {\n out.push([\n key,\n inner.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join(\"&\")\n ]);\n }\n return;\n }\n out.push([key, value.replace(SCVP_MACRO_PATTERN, replaceMacro)]);\n });\n return out;\n}\nfunction substituteScvpMacros(baseUrl, values, keep = keepNone) {\n const unresolved = /* @__PURE__ */ new Set();\n let url;\n try {\n url = new URL(normalizeVastTagUrl(baseUrl));\n } catch {\n const replaced = baseUrl.replace(\n SCVP_MACRO_PATTERN,\n (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n }\n );\n return { url: replaced, unresolved: Array.from(unresolved) };\n }\n const entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);\n const search = new URLSearchParams();\n for (const [key, value] of entries) search.append(key, value);\n url.search = search.toString();\n return { url: url.toString(), unresolved: Array.from(unresolved) };\n}\nfunction applyScvpMacros(baseUrl, ctx, deferred = /* @__PURE__ */ new Set()) {\n return substituteScvpMacros(baseUrl, resolveScvpMacroValues(ctx), (name) => deferred.has(name));\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\n\n// src/player/OptimizedPodRequest.ts\nvar DEFAULT_REQUEST_SAFETY_MS = 1500;\nfunction nonNegativeInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : void 0;\n}\nfunction positiveInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : void 0;\n}\nfunction resolveAdPodConfig(config) {\n const pod = config.adPodConfig ?? {};\n return {\n requestSafetyMs: nonNegativeInt(pod.requestSafetyMs) ?? DEFAULT_REQUEST_SAFETY_MS,\n minPodDurationMs: nonNegativeInt(pod.minPodDurationMs) ?? 0,\n maxAdsPerBreak: pod.maxAdsPerBreak === void 0 ? positiveInt(config.podMaxAds) : positiveInt(pod.maxAdsPerBreak),\n maxPodDurationMs: positiveInt(pod.maxPodDurationMs) ?? positiveInt(config.podMaxDurationMs),\n exactDuration: config.podExactDuration === true\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n const contentNetwork = config.contentNetwork?.trim();\n const contentChannel = config.channelName?.trim();\n const contentTitle = config.programTitle?.trim();\n const hlsUrl = config.src?.trim();\n if (contentNetwork) context.contentNetwork = contentNetwork;\n if (contentChannel) context.contentChannel = contentChannel;\n if (contentTitle) context.contentTitle = contentTitle;\n if (hlsUrl) context.hlsUrl = hlsUrl;\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/player/AdConfigManager.ts\nfunction withDeferredPodParams(rawUrl, deferNonce) {\n try {\n const url = new URL(rawUrl);\n url.searchParams.set(\"pmnd\", \"[SCVP-PMND]\");\n url.searchParams.set(\"pmxd\", \"[SCVP-PMXD]\");\n url.searchParams.set(\"pmad\", \"[SCVP-PMAD]\");\n if (deferNonce && !url.searchParams.get(\"givn\")) {\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", \"[SCVP-GIVN]\");\n }\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultEdgePodMaxAds = 6;\n this.palNonceDispatchWaitMs = 1500;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://edge.stormcloudhub.com/api/v1/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const apiEnableEdge = data.response?.enableEdgePodRequest;\n const apiEdgeUrl = data.response?.edgePodUrl;\n this.apiEnableEdgePodRequest = typeof apiEnableEdge === \"boolean\" ? apiEnableEdge : void 0;\n this.apiEdgePodUrl = typeof apiEdgeUrl === \"string\" ? apiEdgeUrl : void 0;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Edge pod settings from API:\", {\n enableEdgePodRequest: this.apiEnableEdgePodRequest,\n edgePodUrl: this.apiEdgePodUrl\n });\n }\n this.apiFloorLadder = data.response?.floorLadder;\n if (this.debug) {\n console.log(\n this.apiFloorLadder ? \"[StormcloudVideoPlayer] Floor ladder from API:\" : \"[StormcloudVideoPlayer] No floorLadder block in /ads/web response\",\n this.apiFloorLadder\n );\n }\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolveAdPodConfig() {\n return resolveAdPodConfig(this.config);\n }\n resolveEdgeMaxAds() {\n return this.resolveAdPodConfig().maxAdsPerBreak ?? (this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultEdgePodMaxAds);\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const macroContext = {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals,\n palNonce: palNonce.getCurrentNonce() || void 0\n };\n const nonceReady = !!macroContext.palNonce;\n let finalUrl;\n if (hasScvpMacros(baseUrl)) {\n const deferred = new Set(SCVP_POD_MACROS);\n if (!nonceReady) deferred.add(\"GIVN\");\n const { url, unresolved } = applyScvpMacros(baseUrl, macroContext, deferred);\n if (unresolved.length > 0) {\n console.warn(\n \"[StormcloudVideoPlayer] Unresolved SCVP macros (removed from request):\",\n unresolved.join(\", \")\n );\n }\n finalUrl = ensureVideoAdType(url);\n } else {\n finalUrl = withDeferredPodParams(\n palNonce.injectNonce(ensureVideoAdType(applyVastMacros(baseUrl, macroContext))),\n !nonceReady\n );\n }\n console.log(\n `[StormcloudVideoPlayer] Prepared optimized-pod request URL (pod=${this.podCounter}; pmnd/pmxd/pmad resolved at dispatch):`,\n finalUrl\n );\n return finalUrl;\n }\n async completeDeferredRequestSignals(url, palNonce) {\n if (findScvpMacroNames(url).indexOf(\"GIVN\") === -1) return url;\n const nonce = palNonce.getCurrentNonce() || await palNonce.waitForNonce(this.palNonceDispatchWaitMs);\n if (!nonce) return url;\n return substituteScvpMacros(url, /* @__PURE__ */ new Map([[\"GIVN\", nonce]]), (name) => name !== \"GIVN\").url;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AdConfigManager\n});\n"]}