stormcloud-video-player 0.8.78 → 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.
- package/dist/stormcloud-vp.min.js +1 -1
- package/lib/StormcloudPlayer.cjs +5 -1
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/index.cjs +5 -1
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +5 -1
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdConfigManager.cjs +3 -1
- package/lib/player/AdConfigManager.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.cjs +5 -1
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/players/HlsPlayer.cjs +5 -1
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +5 -1
- package/lib/players/index.cjs.map +1 -1
- package/lib/types.d.cts +1 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +5 -1
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/tracking.cjs +5 -1
- package/lib/utils/tracking.cjs.map +1 -1
- package/lib/utils/tracking.d.cts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\AdBreakOrchestrator.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","AdBreakOrchestrator_exports","AdBreakOrchestrator","module","exports","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","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","inferDeviceIdType","navigator","ua","userAgent","test","resolveNativeDeviceId","includeStored","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","deviceId","readStoredDeviceId","isMacroPlaceholder","isZeroedAdId","getOrCreateStoredUuid","storageKey","window","existing","readPersistentId","writePersistentId","id","createUuid","readStoredString","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","trim","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","deviceIdType","limitAdTracking","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","Set","t","has","toLowerCase","getNativeBridgeSources","source","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","keys","result","normalized","normalizeBoolean","getItem","INVALID_VAST_PARAM_KEY","removeBrokenAppNameOrphans","params","toDelete","forEach","_value","push","includes","suffix","trimmed","replace","delete","normalizeVastTagUrl","raw","url","URL","anValue","searchParams","orphanFragments","reconstructed","join","set","_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","safeDecode","findScvpMacroNames","names","text","pass","_m","bracketName","parenName","add","String","toUpperCase","decoded","Array","keepNone","substituteScvpParams","values","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","substituteScvpMacros","baseUrl","replaced","entries","search","append","DISABLED_FLOOR_LADDER_CONFIG","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","DEFAULT_FLOOR_LADDER_BOUNDS","minCents","maxCents","decodeQueryComponent","mergeCustParams","cents","kept","pair","indexOf","applyFloorToVastUrl","status","floorCents","applied","reason","parsed","hashIndex","beforeHash","hash","queryIndex","base","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","resolveEdgePodRequestContext","config","extra","width","height","playerId","contentNetwork","contentChannel","channelName","contentTitle","programTitle","setOptionalParam","buildEdgePodUrl","remainingMs","remainingAdLimit","context","maxMs","max","maxAds","min","Number","isFinite","round","classifyEdgeVastResponse","error","podAdCount","message","describeEdgeUrl","origin","pathname","DEFAULT_TRACKING_INGEST_CONFIG","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","response","fetch","method","headers","Authorization","JSON","stringify","ok","warn","cachedBrowserId","buildAnalyticsContext","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","platform","vendor","maxTouchPoints","memory","deviceMemory","hardwareConcurrency","screenInfo","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","location","path","language","languages","cookieEnabled","doNotTrack","referrer","visibilityState","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","b","abs","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getCachedBrowserId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","captureAt","log","toISOString","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendAdLoadedTracking","adLoadedInfo","sendHeartbeat","sendAdImpressionTracking","adImpressionInfo","metricEvent","events","ad_played_count","ad_url","adUrl","content_network","content_channel","content_title","heartbeatData","getAdAudioVolume","adPlayer","getOriginalMutedState","getOriginalVolume","GAM_AD_OPPORTUNITY_DURATION_MS","POD_PARAM_KEYS","POSITIVE_INT","NON_NEGATIVE_INT","measureBreakCapacity","timing","nowMonoMs","scheduled","scheduledBreakDurationMs","breakStartMonoMs","endMonoMs","breakEndMonoMs","untilEnd","unplayed","playedDurationMs","elapsedBeforeGamRequestMs","remainingAtGamDispatchMs","resolvePodParams","capacity","pmxd","requestSafetyMs","maxPodDurationMs","tagMaxDurationMs","kind","minUsable","minUsablePmxdMs","pmxdCandidateMs","pmnd","exactDuration","minPodDurationMs","pmad","maxAdsPerBreak","podRequestAborted","diagnostics","Error","isPodRequestAbortedError","firstPositiveIntParam","getAll","isOptimizedPodUrl","some","finalizeGamRequestUrl","ctx","nowEpochMs","optimizedPod","breakId","scteBreakDurationMs","safetyReserveMs","decision","pod","Map","substituted","finalUrl","problems","validateGamRequestUrl","givn","pmxdSource","pmndSent","pmxdSent","pmadSent","palNoncePresent","gamRequestDispatchTimestamp","strippedMacros","expect","leftover","concat","computePodResponseDiagnostics","vastAdCount","totalVastCreativeDurationMs","estimatedUnusedPodMs","estimatedUnmatchedCount","monotonicNow","REQUEST_FAILURE_STAGES","host","adConfig","cueManager","placeholder","inAdBreak","showAds","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","debug","analyticsContext","nextAdRequestUrl","baseVastUrl","generatePodVastUrl","attachImaEventListeners","controller","getAdPlayer","generation","on","event","handler","payload","logOrchestratorFunnel","staleControllerId","currentControllerId","notePodAdStarted","index","total","onAdClick","onAdInteraction","stage","countFunnelStage","pixelCount","attempt","noteAdRequestSent","recordRequestDiagnostic","consecutiveFailures","setSlotState","markAdStarted","adIndex","currentAdIndex","currentVastUrl","catch","recordPlayedAdDuration","remaining","getRemainingAdMs","requestNextAd","errorPayload","errorMessage","errorCode","code","vastErrorCode","cause","innerError","causeMessage","handleAdFailure","clearAdFailsafeTimer","clearAdRequestWatchdog","activeAdRequestToken","currentPodSource","resetGamNoFillCounter","expectedAdBreakDurationMs","getAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","setAdVolume","hidePlaceholder","video","muted","recreateAdController","controllerId","requestId","currentRequestId","state","shouldShowPlaceholder","show","showPlaceholder","preservedMutedState","preservedVolumeState","destroy","continueLiveStreamDuringAds","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","initialize","updateOriginalMutedState","clearPendingAdBreak","prefetchTimerId","clearTimeout","pendingScte35CueKey","podAssignedByPrefetch","isBreakActive","getSlotState","beginVmapBreak","breakKey","position","breakSource","resetEdgeStateForBreak","followUpBaseVastUrl","totalAdRequestsInBreak","noteOpportunity","handleAdStart","marker","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","edgeUrl","outcome","podPlayed","apiVastTagUrl","getEdgePodBaseUrl","durationSeconds","failedVastUrls","clear","temporaryFailureUrls","beginNewAdPod","volume","adBreakPlayedDurationMs","totalAdsInBreak","activeScte35BreakKey","adBreakEpoch","waitForBreakDuration","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLive","isLiveBreak","durationMs","startOptimizedPod","maxWaitMs","deadline","Promise","resolve","setTimeout","waitedForMs","podUrl","prefetched","requestToken","requestUrl","finalizeRequestUrl","podCount","vastUrls","noteVastUrlGenerated","adRequestTokenCounter","beginFunnelRequest","applyOpportunityFloor","enforceGlobalRateLimit","isStale","completeGamRequestSignals","startAdRequestWatchdog","createGamDispatchFinalizer","callController","requestAds","recordPodResponseDiagnostics","getPodAdCount","recordRequestFailure","vastUrl","startAdFailsafeTimer","play","handlePodRequestNotSent","maxTotalAdRequestsPerBreak","edgeRequests","remainingAds","resolveEdgeMaxAds","adsInBreak","getMinRemainingMsToRequestAd","offsetWidth","clientWidth","offsetHeight","clientHeight","trigger","overrunAllowanceMs","classification","diag","endpoint","maxAdBreakExtensionMs","limitPodToBudget","podDurationMs","getPodTotalDurationMs","failureReason","next","previous","configured","minRemainingMsToRequestAd","getMinRemainingMsToStartAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","maxConsecutiveFailures","isGamInCooldown","getNextRequestDelayMs","failures","backoff","backoffBaseMs","pow","maxBackoffMs","minInterval","minAdRequestIntervalMs","sinceLast","lastAdRequestTime","why","nextAdTimerId","stopReason","requestsSent","unusableResponses","handleAdPodComplete","waitMs","requestFollowUpAd","epoch2","shift","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","podParamsDeferredToDispatch","vastTagUrl","impressionFired","recordGamNoFill","failureKey","dispatchedUrl","isTemporaryAdError","impressionCount","requestFloorFields","gamRequestSent","logPodDispatch","edgeRequestSent","vastHttpStatus","httpStatus","adElementCount","depth","wrapperDepth","inlineResolved","mediaCandidateCount","whyAccepted","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","startedAt","_dispatchedUrl","podDispatchLogged","_logged","fields","resolveAdPodConfig","getBreakTimingSnapshot","podResponse","aborted","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","selector","floorConfigVersion","adPosition","floorApplied","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","setFunnelContext","isAdLoadingWithoutPlayback","isAdPlaying","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","abortPendingRequest","ap","adDurationS","isUrlInCooldown","ensureLoadedAdFitsBudget","getLoadedAdDuration","getWallClockRemainingAdMs","getDurationBudgetRemainingMs","adDurationMs","logBreakFunnel","funnel","count","countPrefix","reduce","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeFills","edgeEmptySentinels","edgeFallbacks","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsModeChanges","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaCandidates","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","impressionUrls","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","complete","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","resetForBreakEnd","hide","scheduledScte35BreakKey","stop","restoredMuted","restoredVolume","style","visibility","opacity","requiresMediaPipelineResetAfterAds","reloadLiveStream","monitorLiveResumeStall","currentTime","resumeContentPlayback","liveSyncPos","getLiveSyncPosition","toFixed","restartHlsLoad","getBufferedAhead","ranges","buffered","start","end","describeVideoState","networkStates","readyStates","net","networkState","ready","readyState","err","paused","ended","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","e","dt","addEventListener","cleanup","removeEventListener","poll","advanced","playing","elapsed","bufferedAhead","wedged","canRecover","recoverMediaError","reloadPos","maxAttempts","onReady","backoffMs","playResult"],"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/AdBreakOrchestrator.ts\nvar AdBreakOrchestrator_exports = {};\n__export(AdBreakOrchestrator_exports, {\n AdBreakOrchestrator: () => AdBreakOrchestrator\n});\nmodule.exports = __toCommonJS(AdBreakOrchestrator_exports);\n\n// src/utils/vastEnvironmentSignals.ts\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 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};\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 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 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 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 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 INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\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 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}\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}\n\n// src/player/FloorLadder.ts\nvar DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"\",\n minFloorCents: 0,\n maxFloorCents: 0,\n stepCents: 0,\n selectedFloorCents: 0,\n fallbackFloorCents: 0,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [],\n targetAdUnitPath: \"\",\n configurationVersion: \"\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction decodeQueryComponent(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return void 0;\n }\n}\nfunction mergeCustParams(decoded, key, cents) {\n const prefix = `${key}=`;\n const kept = decoded.split(\"&\").filter((pair) => pair !== \"\" && pair !== key && pair.indexOf(prefix) !== 0);\n kept.push(`${prefix}${cents}`);\n return kept.join(\"&\");\n}\nfunction applyFloorToVastUrl(url, floor) {\n if (floor.status !== \"armed\" || floor.floorCents == null) {\n return { url, applied: false, reason: floor.reason };\n }\n let parsed;\n try {\n parsed = new URL(url);\n } catch {\n return { url, applied: false, reason: \"invalid_url\" };\n }\n if (!GAM_AD_HOSTS.has(parsed.hostname)) {\n return { url, applied: false, reason: \"not_gam_host\" };\n }\n if (parsed.searchParams.get(\"iu\") !== floor.targetAdUnitPath) {\n return { url, applied: false, reason: \"ad_unit_mismatch\" };\n }\n const hashIndex = url.indexOf(\"#\");\n const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const hash = hashIndex === -1 ? \"\" : url.slice(hashIndex);\n const queryIndex = beforeHash.indexOf(\"?\");\n const base = beforeHash.slice(0, queryIndex);\n const segments = beforeHash.slice(queryIndex + 1).split(\"&\");\n const existing = [];\n let insertAt = -1;\n const rest = [];\n for (const segment of segments) {\n const eq = segment.indexOf(\"=\");\n const rawKey = eq === -1 ? segment : segment.slice(0, eq);\n if (decodeQueryComponent(rawKey) === \"cust_params\") {\n if (insertAt === -1) insertAt = rest.length;\n const value = eq === -1 ? \"\" : decodeQueryComponent(segment.slice(eq + 1));\n if (value === void 0) {\n return { url, applied: false, reason: \"malformed_cust_params\" };\n }\n if (value) existing.push(value);\n continue;\n }\n rest.push(segment);\n }\n if (insertAt === -1) insertAt = rest.length;\n const merged = mergeCustParams(existing.join(\"&\"), floor.targetingKey, floor.floorCents);\n rest.splice(insertAt, 0, `cust_params=${encodeURIComponent(merged)}`);\n const query = rest.filter((segment) => segment !== \"\").join(\"&\");\n return { url: `${base}?${query}${hash}`, applied: true, reason: void 0 };\n}\n\n// src/player/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nfunction resolveEdgePodRequestContext(config, extra = {}) {\n return {\n width: extra.width,\n height: extra.height,\n playerId: extra.playerId,\n contentNetwork: config.contentNetwork,\n contentChannel: config.channelName,\n contentTitle: config.programTitle\n };\n}\nfunction setOptionalParam(url, key, value) {\n const trimmed = value?.trim();\n if (trimmed) url.searchParams.set(key, trimmed);\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit, context = {}) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n if (context.width != null && Number.isFinite(context.width) && context.width > 0) {\n url.searchParams.set(\"width\", String(Math.round(context.width)));\n }\n if (context.height != null && Number.isFinite(context.height) && context.height > 0) {\n url.searchParams.set(\"height\", String(Math.round(context.height)));\n }\n setOptionalParam(url, \"pid\", context.playerId);\n setOptionalParam(url, \"cn\", context.contentNetwork);\n setOptionalParam(url, \"cc\", context.contentChannel);\n setOptionalParam(url, \"ct\", context.contentTitle);\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\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}\nfunction getCachedBrowserId() {\n return cachedBrowserId ?? void 0;\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 sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp,\n source: \"gam\",\n ...context.contentNetwork ? { content_network: context.contentNetwork } : {},\n ...context.contentChannel ? { content_channel: context.contentChannel } : {},\n ...context.contentTitle ? { content_title: context.contentTitle } : {}\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\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/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\n\n// src/player/OptimizedPodRequest.ts\nvar GAM_AD_OPPORTUNITY_DURATION_MS = 3e4;\nvar POD_PARAM_KEYS = [\"pmnd\", \"pmxd\", \"pmad\"];\nvar POSITIVE_INT = /^[1-9]\\d*$/;\nvar NON_NEGATIVE_INT = /^(0|[1-9]\\d*)$/;\nfunction measureBreakCapacity(timing, nowMonoMs) {\n const scheduled = timing.scheduledBreakDurationMs;\n if (scheduled == null || !(scheduled > 0) || timing.breakStartMonoMs == null) {\n return void 0;\n }\n const endMonoMs = timing.breakEndMonoMs ?? timing.breakStartMonoMs + scheduled;\n const untilEnd = Math.min(scheduled, endMonoMs - nowMonoMs);\n const unplayed = scheduled - Math.max(0, timing.playedDurationMs);\n return {\n scheduledBreakDurationMs: scheduled,\n elapsedBeforeGamRequestMs: Math.max(0, nowMonoMs - timing.breakStartMonoMs),\n remainingAtGamDispatchMs: Math.max(0, Math.min(untilEnd, unplayed))\n };\n}\nfunction resolvePodParams(input) {\n const { capacity, config } = input;\n let pmxd;\n let source;\n if (capacity) {\n pmxd = Math.floor(capacity.remainingAtGamDispatchMs - config.requestSafetyMs);\n source = \"break_remaining\";\n } else if (config.maxPodDurationMs != null) {\n pmxd = config.maxPodDurationMs;\n source = \"configured_cap\";\n } else if (input.tagMaxDurationMs != null) {\n pmxd = input.tagMaxDurationMs;\n source = \"tag_cap\";\n } else {\n return { kind: \"omit\" };\n }\n const minUsable = Math.max(1, Math.floor(input.minUsablePmxdMs));\n if (!Number.isFinite(pmxd) || pmxd < minUsable) {\n return {\n kind: \"abort\",\n reason: capacity ? \"insufficient_break_capacity\" : \"invalid_pod_cap\",\n pmxdCandidateMs: Number.isFinite(pmxd) ? pmxd : 0\n };\n }\n const pmnd = config.exactDuration ? pmxd : Math.min(config.minPodDurationMs, pmxd);\n return { kind: \"send\", params: { pmnd, pmxd, pmad: config.maxAdsPerBreak }, source };\n}\nfunction podRequestAborted(reason, message, diagnostics) {\n const error = new Error(`Optimized pod request not sent (${reason}): ${message}`);\n error.podRequestAborted = true;\n error.reason = reason;\n error.diagnostics = diagnostics;\n return error;\n}\nfunction isPodRequestAbortedError(error) {\n return !!error && error.podRequestAborted === true;\n}\nfunction firstPositiveIntParam(params, key) {\n for (const value of params.getAll(key)) {\n if (POSITIVE_INT.test(value.trim())) return Number(value.trim());\n }\n return void 0;\n}\nfunction isOptimizedPodUrl(url) {\n if (findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name))) return true;\n try {\n const params = new URL(url).searchParams;\n return POD_PARAM_KEYS.some((key) => params.has(key));\n } catch {\n return false;\n }\n}\nfunction finalizeGamRequestUrl(rawUrl, ctx, nowEpochMs = Date.now()) {\n const optimizedPod = isOptimizedPodUrl(rawUrl);\n const capacity = ctx.capacity;\n const base = {\n breakId: ctx.breakId,\n optimizedPod,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs\n };\n let decision = { kind: \"omit\" };\n if (optimizedPod) {\n let tagMaxDurationMs;\n try {\n tagMaxDurationMs = firstPositiveIntParam(new URL(rawUrl).searchParams, \"pmxd\");\n } catch {\n }\n decision = resolvePodParams({\n capacity,\n config: ctx.config,\n minUsablePmxdMs: ctx.minUsablePmxdMs,\n tagMaxDurationMs\n });\n if (decision.kind === \"abort\") {\n throw podRequestAborted(\n decision.reason,\n `pmxd would be ${decision.pmxdCandidateMs}ms (minimum ${ctx.minUsablePmxdMs}ms)`,\n base\n );\n }\n }\n const pod = decision.kind === \"send\" ? decision.params : void 0;\n const values = /* @__PURE__ */ new Map();\n if (pod) {\n values.set(\"PMND\", String(pod.pmnd));\n values.set(\"PMXD\", String(pod.pmxd));\n if (pod.pmad != null) values.set(\"PMAD\", String(pod.pmad));\n }\n const substituted = substituteScvpMacros(rawUrl, values);\n let finalUrl;\n try {\n const url = new URL(normalizeVastTagUrl(substituted.url));\n if (pod) {\n url.searchParams.set(\"pmnd\", String(pod.pmnd));\n url.searchParams.set(\"pmxd\", String(pod.pmxd));\n if (pod.pmad != null) url.searchParams.set(\"pmad\", String(pod.pmad));\n else url.searchParams.delete(\"pmad\");\n } else {\n for (const key of POD_PARAM_KEYS) url.searchParams.delete(key);\n }\n finalUrl = url.toString();\n } catch {\n throw podRequestAborted(\"invalid_url\", \"GAM request URL could not be parsed\", base);\n }\n const problems = validateGamRequestUrl(finalUrl, {\n optimizedPod: !!pod,\n remainingMs: decision.kind === \"send\" && decision.source === \"break_remaining\" ? capacity?.remainingAtGamDispatchMs : void 0\n });\n if (problems.length > 0) {\n throw podRequestAborted(\"invalid_url\", problems.join(\"; \"), base);\n }\n let givn = null;\n try {\n givn = new URL(finalUrl).searchParams.get(\"givn\");\n } catch {\n }\n return {\n url: finalUrl,\n diagnostics: {\n breakId: ctx.breakId,\n optimizedPod: !!pod,\n pmxdSource: decision.kind === \"send\" ? decision.source : void 0,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs,\n pmndSent: pod?.pmnd,\n pmxdSent: pod?.pmxd,\n pmadSent: pod?.pmad,\n palNoncePresent: !!givn,\n gamRequestDispatchTimestamp: new Date(nowEpochMs).toISOString(),\n strippedMacros: substituted.unresolved.filter((name) => !SCVP_POD_MACROS.has(name))\n }\n };\n}\nfunction validateGamRequestUrl(url, expect) {\n const problems = [];\n const leftover = findScvpMacroNames(url);\n if (leftover.length > 0) problems.push(`unresolved SCVP macros: ${leftover.join(\", \")}`);\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n return problems.concat(\"URL could not be parsed\");\n }\n for (const key of POD_PARAM_KEYS) {\n if (params.getAll(key).length > 1) problems.push(`duplicate ${key}`);\n }\n if (!expect.optimizedPod) {\n for (const key of POD_PARAM_KEYS) {\n if (params.has(key)) problems.push(`${key} present on a non-pod request`);\n }\n return problems;\n }\n const pmxd = params.get(\"pmxd\");\n const pmnd = params.get(\"pmnd\");\n const pmad = params.get(\"pmad\");\n if (pmxd == null || !POSITIVE_INT.test(pmxd)) problems.push(`pmxd must be a positive integer (got ${pmxd})`);\n if (pmnd == null || !NON_NEGATIVE_INT.test(pmnd)) problems.push(`pmnd must be a non-negative integer (got ${pmnd})`);\n if (pmxd != null && pmnd != null && Number(pmnd) > Number(pmxd)) problems.push(\"pmnd exceeds pmxd\");\n if (pmad != null && !POSITIVE_INT.test(pmad)) problems.push(`pmad must be a positive integer or absent (got ${pmad})`);\n if (expect.remainingMs != null && pmxd != null && Number(pmxd) > expect.remainingMs) {\n problems.push(`pmxd ${pmxd} exceeds remaining break ${expect.remainingMs}ms`);\n }\n return problems;\n}\nfunction computePodResponseDiagnostics(pmxdSent, vastAdCount, totalVastCreativeDurationMs) {\n const estimatedUnusedPodMs = Math.max(0, pmxdSent - totalVastCreativeDurationMs);\n return {\n vastAdCount,\n totalVastCreativeDurationMs,\n estimatedUnusedPodMs,\n estimatedUnmatchedCount: Math.floor(estimatedUnusedPodMs / GAM_AD_OPPORTUNITY_DURATION_MS)\n };\n}\n\n// src/player/AdTimingService.ts\nfunction monotonicNow() {\n return typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n return this.host.generatePodVastUrl(baseVastUrl);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey, position) {\n this.breakSource = \"vmap\";\n this.resetEdgeStateForBreak();\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey, position);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey, \"midroll\");\n const epoch = this.timing.adBreakEpoch;\n if (adBreakDurationMs == null) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n let requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => adPlayer.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, adPlayer);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n if (this.handlePodRequestNotSent(error)) return false;\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n const playerId = getCachedBrowserId();\n return buildEdgePodUrl(\n baseUrl,\n remainingMs,\n remainingAds,\n resolveEdgePodRequestContext(this.host.config, {\n width: this.host.video.offsetWidth || this.host.video.clientWidth,\n height: this.host.video.offsetHeight || this.host.video.clientHeight,\n playerId\n })\n );\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n )\n );\n const overrunAllowanceMs = Math.max(0, this.host.config.maxAdBreakExtensionMs ?? 0);\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs + overrunAllowanceMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs,\n overrunAllowanceMs\n });\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl && !this.canRequestEdge()) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (!this.canRequestEdge() && this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n podParamsDeferredToDispatch: findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name)),\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n const failureKey = diag?.dispatchedUrl && findScvpMacroNames(vastTagUrl).some((name) => SCVP_POD_MACROS.has(name)) ? diag.dispatchedUrl : vastTagUrl;\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(failureKey, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(failureKey);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak,\n vastAdCount: diag?.vastAdCount,\n impressionCount: diag?.impressionCount,\n ...this.requestFloorFields(diag)\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n this.logPodDispatch(diag);\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n diag.impressionCount++;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, dispatchedUrl: _dispatchedUrl, podDispatchLogged: _logged, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n createGamDispatchFinalizer(requestToken) {\n const breakId = this.timing.adBreakEpoch;\n const config = this.adConfig.resolveAdPodConfig();\n const minUsablePmxdMs = this.timing.getMinRemainingMsToStartAd();\n return (url) => {\n const capacity = measureBreakCapacity(this.timing.getBreakTimingSnapshot(), monotonicNow());\n const diag = this.requestDiagnostics.get(requestToken);\n try {\n const result = finalizeGamRequestUrl(url, { breakId, capacity, config, minUsablePmxdMs });\n if (diag) {\n diag.pod = result.diagnostics;\n diag.dispatchedUrl = result.url;\n diag.podDispatchLogged = false;\n }\n this.currentVastUrl = result.url;\n return result.url;\n } catch (error) {\n if (diag && isPodRequestAbortedError(error)) {\n diag.failureReason = `pod_request_not_sent:${error.reason}`;\n }\n throw error;\n }\n };\n }\n logPodDispatch(diag) {\n if (!diag.pod || diag.podDispatchLogged) return;\n diag.podDispatchLogged = true;\n this.logOrchestratorFunnel(\n diag.pod.optimizedPod ? \"optimized_pod_request_dispatched\" : \"gam_request_dispatched\",\n { ...diag.pod }\n );\n }\n recordPodResponseDiagnostics(requestToken, adPlayer) {\n const diag = this.requestDiagnostics.get(requestToken);\n if (!diag?.pod || diag.pod.pmxdSent == null || diag.podResponse) return;\n if (diag.gamRequestSent === 0 && diag.vastHttpStatus == null) return;\n diag.podResponse = computePodResponseDiagnostics(\n diag.pod.pmxdSent,\n diag.vastAdCount ?? 0,\n adPlayer.getPodTotalDurationMs?.() ?? 0\n );\n this.logOrchestratorFunnel(\"optimized_pod_response\", {\n pmxdSent: diag.pod.pmxdSent,\n ...diag.podResponse\n });\n }\n handlePodRequestNotSent(error) {\n if (!isPodRequestAbortedError(error) || error.reason === \"invalid_url\") return false;\n const aborted = error;\n this.countFunnelStage(`request_outcome:pod_request_not_sent`);\n this.logOrchestratorFunnel(\"pod_request_not_sent\", {\n reason: aborted.reason,\n errorMessage: aborted.message,\n ...aborted.diagnostics\n });\n return true;\n }\n opportunityFloorFields(floor = this.opportunityFloor) {\n if (!floor) return {};\n return {\n floorStatus: floor.status,\n floorCents: floor.floorCents,\n floorSource: floor.source,\n floorReason: floor.reason,\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n };\n }\n requestFloorFields(diag) {\n if (!diag || diag.floorApplied === void 0) return {};\n return {\n floorApplied: diag.floorApplied,\n floorCents: diag.floorCents,\n floorSource: diag.floorSource,\n floorReason: diag.floorReason,\n floorConfigVersion: diag.floorConfigVersion\n };\n }\n applyOpportunityFloor(url) {\n const floor = this.opportunityFloor;\n if (!floor) return url;\n const result = applyFloorToVastUrl(url, floor);\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag) {\n diag.floorApplied = result.applied;\n if (result.applied && floor.floorCents != null) diag.floorCents = floor.floorCents;\n diag.floorSource = result.applied ? floor.source : \"none\";\n if (result.reason) diag.floorReason = result.reason;\n diag.floorConfigVersion = floor.configurationVersion;\n }\n if (floor.status === \"skipped\" && floor.reason === \"disabled\") {\n this.countFunnelStage(\"floor_skipped:disabled\");\n return result.url;\n }\n this.logOrchestratorFunnel(result.applied ? \"floor_applied\" : \"floor_skipped\", {\n reason: result.reason,\n floorCents: result.applied ? floor.floorCents : void 0,\n floorSource: result.applied ? floor.source : \"none\",\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n });\n if (!result.applied && result.reason) {\n this.countFunnelStage(`floor_skipped:${result.reason}`);\n }\n return result.url;\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey, position) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n try {\n this.opportunityFloor = this.host.getFloorSnapshot(position);\n } catch {\n this.opportunityFloor = void 0;\n }\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs,\n ...this.opportunityFloorFields()\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger, source = \"gam\") {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n source,\n gamRequestSent: 0,\n edgeRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n impressionCount: 0,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n let requestUrl = this.applyOpportunityFloor(ensureVideoAdType(vastTagUrl));\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => ap.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, ap);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n if (this.handlePodRequestNotSent(error)) throw error;\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n ...this.opportunityFloorFields(),\n floorAppliedRequests: count(\"floor_applied\"),\n floorSkippedRequests: count(\"floor_skipped\") + count(\"floor_skipped:disabled\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsModeChanges: count(\"gam_credentials_mode_changed\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.opportunityFloor = void 0;\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AdBreakOrchestrator\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\player\\AdBreakOrchestrator.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","AdBreakOrchestrator_exports","AdBreakOrchestrator","module","exports","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","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","inferDeviceIdType","navigator","ua","userAgent","test","resolveNativeDeviceId","includeStored","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","deviceId","readStoredDeviceId","isMacroPlaceholder","isZeroedAdId","getOrCreateStoredUuid","storageKey","window","existing","readPersistentId","writePersistentId","id","createUuid","readStoredString","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","trim","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","deviceIdType","limitAdTracking","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","Set","t","has","toLowerCase","getNativeBridgeSources","source","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","keys","result","normalized","normalizeBoolean","getItem","INVALID_VAST_PARAM_KEY","removeBrokenAppNameOrphans","params","toDelete","forEach","_value","push","includes","suffix","trimmed","replace","delete","normalizeVastTagUrl","raw","url","URL","anValue","searchParams","orphanFragments","reconstructed","join","set","_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","safeDecode","findScvpMacroNames","names","text","pass","_m","bracketName","parenName","add","String","toUpperCase","decoded","Array","keepNone","substituteScvpParams","values","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","substituteScvpMacros","baseUrl","replaced","entries","search","append","DISABLED_FLOOR_LADDER_CONFIG","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","DEFAULT_FLOOR_LADDER_BOUNDS","minCents","maxCents","decodeQueryComponent","mergeCustParams","cents","kept","pair","indexOf","applyFloorToVastUrl","status","floorCents","applied","reason","parsed","hashIndex","beforeHash","hash","queryIndex","base","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","resolveEdgePodRequestContext","config","extra","width","height","playerId","contentNetwork","contentChannel","channelName","contentTitle","programTitle","setOptionalParam","buildEdgePodUrl","remainingMs","remainingAdLimit","context","maxMs","max","maxAds","min","Number","isFinite","round","classifyEdgeVastResponse","error","podAdCount","message","describeEdgeUrl","origin","pathname","DEFAULT_TRACKING_INGEST_CONFIG","trackingIngestConfig","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","response","fetch","method","headers","Authorization","JSON","stringify","ok","warn","cachedBrowserId","buildAnalyticsContext","hlsUrl","src","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","platform","vendor","maxTouchPoints","memory","deviceMemory","hardwareConcurrency","screenInfo","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","location","path","language","languages","cookieEnabled","doNotTrack","referrer","visibilityState","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","b","abs","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getCachedBrowserId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","captureAt","log","toISOString","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendAdLoadedTracking","adLoadedInfo","sendHeartbeat","sendAdImpressionTracking","adImpressionInfo","metricEvent","events","ad_played_count","ad_url","adUrl","content_network","content_channel","content_title","hls_url","heartbeatData","getAdAudioVolume","adPlayer","getOriginalMutedState","getOriginalVolume","GAM_AD_OPPORTUNITY_DURATION_MS","POD_PARAM_KEYS","POSITIVE_INT","NON_NEGATIVE_INT","measureBreakCapacity","timing","nowMonoMs","scheduled","scheduledBreakDurationMs","breakStartMonoMs","endMonoMs","breakEndMonoMs","untilEnd","unplayed","playedDurationMs","elapsedBeforeGamRequestMs","remainingAtGamDispatchMs","resolvePodParams","capacity","pmxd","requestSafetyMs","maxPodDurationMs","tagMaxDurationMs","kind","minUsable","minUsablePmxdMs","pmxdCandidateMs","pmnd","exactDuration","minPodDurationMs","pmad","maxAdsPerBreak","podRequestAborted","diagnostics","Error","isPodRequestAbortedError","firstPositiveIntParam","getAll","isOptimizedPodUrl","some","finalizeGamRequestUrl","ctx","nowEpochMs","optimizedPod","breakId","scteBreakDurationMs","safetyReserveMs","decision","pod","Map","substituted","finalUrl","problems","validateGamRequestUrl","givn","pmxdSource","pmndSent","pmxdSent","pmadSent","palNoncePresent","gamRequestDispatchTimestamp","strippedMacros","expect","leftover","concat","computePodResponseDiagnostics","vastAdCount","totalVastCreativeDurationMs","estimatedUnusedPodMs","estimatedUnmatchedCount","monotonicNow","REQUEST_FAILURE_STAGES","host","adConfig","cueManager","placeholder","inAdBreak","showAds","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","debug","analyticsContext","nextAdRequestUrl","baseVastUrl","generatePodVastUrl","attachImaEventListeners","controller","getAdPlayer","generation","on","event","handler","payload","logOrchestratorFunnel","staleControllerId","currentControllerId","notePodAdStarted","index","total","onAdClick","onAdInteraction","stage","countFunnelStage","pixelCount","attempt","noteAdRequestSent","recordRequestDiagnostic","consecutiveFailures","setSlotState","markAdStarted","adIndex","currentAdIndex","currentVastUrl","catch","recordPlayedAdDuration","remaining","getRemainingAdMs","requestNextAd","errorPayload","errorMessage","errorCode","code","vastErrorCode","cause","innerError","causeMessage","handleAdFailure","clearAdFailsafeTimer","clearAdRequestWatchdog","activeAdRequestToken","currentPodSource","resetGamNoFillCounter","expectedAdBreakDurationMs","getAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","setAdVolume","hidePlaceholder","video","muted","recreateAdController","controllerId","requestId","currentRequestId","state","shouldShowPlaceholder","show","showPlaceholder","preservedMutedState","preservedVolumeState","destroy","continueLiveStreamDuringAds","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","initialize","updateOriginalMutedState","clearPendingAdBreak","prefetchTimerId","clearTimeout","pendingScte35CueKey","podAssignedByPrefetch","isBreakActive","getSlotState","beginVmapBreak","breakKey","position","breakSource","resetEdgeStateForBreak","followUpBaseVastUrl","totalAdRequestsInBreak","noteOpportunity","handleAdStart","marker","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","edgeUrl","outcome","podPlayed","apiVastTagUrl","getEdgePodBaseUrl","durationSeconds","failedVastUrls","clear","temporaryFailureUrls","beginNewAdPod","volume","adBreakPlayedDurationMs","totalAdsInBreak","activeScte35BreakKey","adBreakEpoch","waitForBreakDuration","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLive","isLiveBreak","durationMs","startOptimizedPod","maxWaitMs","deadline","Promise","resolve","setTimeout","waitedForMs","podUrl","prefetched","requestToken","requestUrl","finalizeRequestUrl","podCount","vastUrls","noteVastUrlGenerated","adRequestTokenCounter","beginFunnelRequest","applyOpportunityFloor","enforceGlobalRateLimit","isStale","completeGamRequestSignals","startAdRequestWatchdog","createGamDispatchFinalizer","callController","requestAds","recordPodResponseDiagnostics","getPodAdCount","recordRequestFailure","vastUrl","startAdFailsafeTimer","play","handlePodRequestNotSent","maxTotalAdRequestsPerBreak","edgeRequests","remainingAds","resolveEdgeMaxAds","adsInBreak","getMinRemainingMsToRequestAd","offsetWidth","clientWidth","offsetHeight","clientHeight","trigger","overrunAllowanceMs","classification","diag","endpoint","maxAdBreakExtensionMs","limitPodToBudget","podDurationMs","getPodTotalDurationMs","failureReason","next","previous","configured","minRemainingMsToRequestAd","getMinRemainingMsToStartAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","maxConsecutiveFailures","isGamInCooldown","getNextRequestDelayMs","failures","backoff","backoffBaseMs","pow","maxBackoffMs","minInterval","minAdRequestIntervalMs","sinceLast","lastAdRequestTime","why","nextAdTimerId","stopReason","requestsSent","unusableResponses","handleAdPodComplete","waitMs","requestFollowUpAd","epoch2","shift","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","podParamsDeferredToDispatch","vastTagUrl","impressionFired","recordGamNoFill","failureKey","dispatchedUrl","isTemporaryAdError","impressionCount","requestFloorFields","gamRequestSent","logPodDispatch","edgeRequestSent","vastHttpStatus","httpStatus","adElementCount","depth","wrapperDepth","inlineResolved","mediaCandidateCount","whyAccepted","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","startedAt","_dispatchedUrl","podDispatchLogged","_logged","fields","resolveAdPodConfig","getBreakTimingSnapshot","podResponse","aborted","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","selector","floorConfigVersion","adPosition","floorApplied","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","setFunnelContext","isAdLoadingWithoutPlayback","isAdPlaying","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","abortPendingRequest","ap","adDurationS","isUrlInCooldown","ensureLoadedAdFitsBudget","getLoadedAdDuration","getWallClockRemainingAdMs","getDurationBudgetRemainingMs","adDurationMs","logBreakFunnel","funnel","count","countPrefix","reduce","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeFills","edgeEmptySentinels","edgeFallbacks","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsModeChanges","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaCandidates","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","impressionUrls","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","complete","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","resetForBreakEnd","hide","scheduledScte35BreakKey","stop","restoredMuted","restoredVolume","style","visibility","opacity","requiresMediaPipelineResetAfterAds","reloadLiveStream","monitorLiveResumeStall","currentTime","resumeContentPlayback","liveSyncPos","getLiveSyncPosition","toFixed","restartHlsLoad","getBufferedAhead","ranges","buffered","start","end","describeVideoState","networkStates","readyStates","net","networkState","ready","readyState","err","paused","ended","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","e","dt","addEventListener","cleanup","removeEventListener","poll","advanced","playing","elapsed","bufferedAhead","wedged","canRecover","recoverMediaError","reloadPos","maxAttempts","onReady","backoffMs","playResult"],"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/AdBreakOrchestrator.ts\nvar AdBreakOrchestrator_exports = {};\n__export(AdBreakOrchestrator_exports, {\n AdBreakOrchestrator: () => AdBreakOrchestrator\n});\nmodule.exports = __toCommonJS(AdBreakOrchestrator_exports);\n\n// src/utils/vastEnvironmentSignals.ts\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 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};\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 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 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 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 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 INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\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 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}\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}\n\n// src/player/FloorLadder.ts\nvar DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"\",\n minFloorCents: 0,\n maxFloorCents: 0,\n stepCents: 0,\n selectedFloorCents: 0,\n fallbackFloorCents: 0,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [],\n targetAdUnitPath: \"\",\n configurationVersion: \"\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction decodeQueryComponent(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return void 0;\n }\n}\nfunction mergeCustParams(decoded, key, cents) {\n const prefix = `${key}=`;\n const kept = decoded.split(\"&\").filter((pair) => pair !== \"\" && pair !== key && pair.indexOf(prefix) !== 0);\n kept.push(`${prefix}${cents}`);\n return kept.join(\"&\");\n}\nfunction applyFloorToVastUrl(url, floor) {\n if (floor.status !== \"armed\" || floor.floorCents == null) {\n return { url, applied: false, reason: floor.reason };\n }\n let parsed;\n try {\n parsed = new URL(url);\n } catch {\n return { url, applied: false, reason: \"invalid_url\" };\n }\n if (!GAM_AD_HOSTS.has(parsed.hostname)) {\n return { url, applied: false, reason: \"not_gam_host\" };\n }\n if (parsed.searchParams.get(\"iu\") !== floor.targetAdUnitPath) {\n return { url, applied: false, reason: \"ad_unit_mismatch\" };\n }\n const hashIndex = url.indexOf(\"#\");\n const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const hash = hashIndex === -1 ? \"\" : url.slice(hashIndex);\n const queryIndex = beforeHash.indexOf(\"?\");\n const base = beforeHash.slice(0, queryIndex);\n const segments = beforeHash.slice(queryIndex + 1).split(\"&\");\n const existing = [];\n let insertAt = -1;\n const rest = [];\n for (const segment of segments) {\n const eq = segment.indexOf(\"=\");\n const rawKey = eq === -1 ? segment : segment.slice(0, eq);\n if (decodeQueryComponent(rawKey) === \"cust_params\") {\n if (insertAt === -1) insertAt = rest.length;\n const value = eq === -1 ? \"\" : decodeQueryComponent(segment.slice(eq + 1));\n if (value === void 0) {\n return { url, applied: false, reason: \"malformed_cust_params\" };\n }\n if (value) existing.push(value);\n continue;\n }\n rest.push(segment);\n }\n if (insertAt === -1) insertAt = rest.length;\n const merged = mergeCustParams(existing.join(\"&\"), floor.targetingKey, floor.floorCents);\n rest.splice(insertAt, 0, `cust_params=${encodeURIComponent(merged)}`);\n const query = rest.filter((segment) => segment !== \"\").join(\"&\");\n return { url: `${base}?${query}${hash}`, applied: true, reason: void 0 };\n}\n\n// src/player/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nfunction resolveEdgePodRequestContext(config, extra = {}) {\n return {\n width: extra.width,\n height: extra.height,\n playerId: extra.playerId,\n contentNetwork: config.contentNetwork,\n contentChannel: config.channelName,\n contentTitle: config.programTitle\n };\n}\nfunction setOptionalParam(url, key, value) {\n const trimmed = value?.trim();\n if (trimmed) url.searchParams.set(key, trimmed);\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit, context = {}) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n if (context.width != null && Number.isFinite(context.width) && context.width > 0) {\n url.searchParams.set(\"width\", String(Math.round(context.width)));\n }\n if (context.height != null && Number.isFinite(context.height) && context.height > 0) {\n url.searchParams.set(\"height\", String(Math.round(context.height)));\n }\n setOptionalParam(url, \"pid\", context.playerId);\n setOptionalParam(url, \"cn\", context.contentNetwork);\n setOptionalParam(url, \"cc\", context.contentChannel);\n setOptionalParam(url, \"ct\", context.contentTitle);\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\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}\nfunction getCachedBrowserId() {\n return cachedBrowserId ?? void 0;\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 sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp,\n source: \"gam\",\n ...context.contentNetwork ? { content_network: context.contentNetwork } : {},\n ...context.contentChannel ? { content_channel: context.contentChannel } : {},\n ...context.contentTitle ? { content_title: context.contentTitle } : {},\n ...context.hlsUrl ? { hls_url: context.hlsUrl } : {}\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\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/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\n\n// src/player/OptimizedPodRequest.ts\nvar GAM_AD_OPPORTUNITY_DURATION_MS = 3e4;\nvar POD_PARAM_KEYS = [\"pmnd\", \"pmxd\", \"pmad\"];\nvar POSITIVE_INT = /^[1-9]\\d*$/;\nvar NON_NEGATIVE_INT = /^(0|[1-9]\\d*)$/;\nfunction measureBreakCapacity(timing, nowMonoMs) {\n const scheduled = timing.scheduledBreakDurationMs;\n if (scheduled == null || !(scheduled > 0) || timing.breakStartMonoMs == null) {\n return void 0;\n }\n const endMonoMs = timing.breakEndMonoMs ?? timing.breakStartMonoMs + scheduled;\n const untilEnd = Math.min(scheduled, endMonoMs - nowMonoMs);\n const unplayed = scheduled - Math.max(0, timing.playedDurationMs);\n return {\n scheduledBreakDurationMs: scheduled,\n elapsedBeforeGamRequestMs: Math.max(0, nowMonoMs - timing.breakStartMonoMs),\n remainingAtGamDispatchMs: Math.max(0, Math.min(untilEnd, unplayed))\n };\n}\nfunction resolvePodParams(input) {\n const { capacity, config } = input;\n let pmxd;\n let source;\n if (capacity) {\n pmxd = Math.floor(capacity.remainingAtGamDispatchMs - config.requestSafetyMs);\n source = \"break_remaining\";\n } else if (config.maxPodDurationMs != null) {\n pmxd = config.maxPodDurationMs;\n source = \"configured_cap\";\n } else if (input.tagMaxDurationMs != null) {\n pmxd = input.tagMaxDurationMs;\n source = \"tag_cap\";\n } else {\n return { kind: \"omit\" };\n }\n const minUsable = Math.max(1, Math.floor(input.minUsablePmxdMs));\n if (!Number.isFinite(pmxd) || pmxd < minUsable) {\n return {\n kind: \"abort\",\n reason: capacity ? \"insufficient_break_capacity\" : \"invalid_pod_cap\",\n pmxdCandidateMs: Number.isFinite(pmxd) ? pmxd : 0\n };\n }\n const pmnd = config.exactDuration ? pmxd : Math.min(config.minPodDurationMs, pmxd);\n return { kind: \"send\", params: { pmnd, pmxd, pmad: config.maxAdsPerBreak }, source };\n}\nfunction podRequestAborted(reason, message, diagnostics) {\n const error = new Error(`Optimized pod request not sent (${reason}): ${message}`);\n error.podRequestAborted = true;\n error.reason = reason;\n error.diagnostics = diagnostics;\n return error;\n}\nfunction isPodRequestAbortedError(error) {\n return !!error && error.podRequestAborted === true;\n}\nfunction firstPositiveIntParam(params, key) {\n for (const value of params.getAll(key)) {\n if (POSITIVE_INT.test(value.trim())) return Number(value.trim());\n }\n return void 0;\n}\nfunction isOptimizedPodUrl(url) {\n if (findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name))) return true;\n try {\n const params = new URL(url).searchParams;\n return POD_PARAM_KEYS.some((key) => params.has(key));\n } catch {\n return false;\n }\n}\nfunction finalizeGamRequestUrl(rawUrl, ctx, nowEpochMs = Date.now()) {\n const optimizedPod = isOptimizedPodUrl(rawUrl);\n const capacity = ctx.capacity;\n const base = {\n breakId: ctx.breakId,\n optimizedPod,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs\n };\n let decision = { kind: \"omit\" };\n if (optimizedPod) {\n let tagMaxDurationMs;\n try {\n tagMaxDurationMs = firstPositiveIntParam(new URL(rawUrl).searchParams, \"pmxd\");\n } catch {\n }\n decision = resolvePodParams({\n capacity,\n config: ctx.config,\n minUsablePmxdMs: ctx.minUsablePmxdMs,\n tagMaxDurationMs\n });\n if (decision.kind === \"abort\") {\n throw podRequestAborted(\n decision.reason,\n `pmxd would be ${decision.pmxdCandidateMs}ms (minimum ${ctx.minUsablePmxdMs}ms)`,\n base\n );\n }\n }\n const pod = decision.kind === \"send\" ? decision.params : void 0;\n const values = /* @__PURE__ */ new Map();\n if (pod) {\n values.set(\"PMND\", String(pod.pmnd));\n values.set(\"PMXD\", String(pod.pmxd));\n if (pod.pmad != null) values.set(\"PMAD\", String(pod.pmad));\n }\n const substituted = substituteScvpMacros(rawUrl, values);\n let finalUrl;\n try {\n const url = new URL(normalizeVastTagUrl(substituted.url));\n if (pod) {\n url.searchParams.set(\"pmnd\", String(pod.pmnd));\n url.searchParams.set(\"pmxd\", String(pod.pmxd));\n if (pod.pmad != null) url.searchParams.set(\"pmad\", String(pod.pmad));\n else url.searchParams.delete(\"pmad\");\n } else {\n for (const key of POD_PARAM_KEYS) url.searchParams.delete(key);\n }\n finalUrl = url.toString();\n } catch {\n throw podRequestAborted(\"invalid_url\", \"GAM request URL could not be parsed\", base);\n }\n const problems = validateGamRequestUrl(finalUrl, {\n optimizedPod: !!pod,\n remainingMs: decision.kind === \"send\" && decision.source === \"break_remaining\" ? capacity?.remainingAtGamDispatchMs : void 0\n });\n if (problems.length > 0) {\n throw podRequestAborted(\"invalid_url\", problems.join(\"; \"), base);\n }\n let givn = null;\n try {\n givn = new URL(finalUrl).searchParams.get(\"givn\");\n } catch {\n }\n return {\n url: finalUrl,\n diagnostics: {\n breakId: ctx.breakId,\n optimizedPod: !!pod,\n pmxdSource: decision.kind === \"send\" ? decision.source : void 0,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs,\n pmndSent: pod?.pmnd,\n pmxdSent: pod?.pmxd,\n pmadSent: pod?.pmad,\n palNoncePresent: !!givn,\n gamRequestDispatchTimestamp: new Date(nowEpochMs).toISOString(),\n strippedMacros: substituted.unresolved.filter((name) => !SCVP_POD_MACROS.has(name))\n }\n };\n}\nfunction validateGamRequestUrl(url, expect) {\n const problems = [];\n const leftover = findScvpMacroNames(url);\n if (leftover.length > 0) problems.push(`unresolved SCVP macros: ${leftover.join(\", \")}`);\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n return problems.concat(\"URL could not be parsed\");\n }\n for (const key of POD_PARAM_KEYS) {\n if (params.getAll(key).length > 1) problems.push(`duplicate ${key}`);\n }\n if (!expect.optimizedPod) {\n for (const key of POD_PARAM_KEYS) {\n if (params.has(key)) problems.push(`${key} present on a non-pod request`);\n }\n return problems;\n }\n const pmxd = params.get(\"pmxd\");\n const pmnd = params.get(\"pmnd\");\n const pmad = params.get(\"pmad\");\n if (pmxd == null || !POSITIVE_INT.test(pmxd)) problems.push(`pmxd must be a positive integer (got ${pmxd})`);\n if (pmnd == null || !NON_NEGATIVE_INT.test(pmnd)) problems.push(`pmnd must be a non-negative integer (got ${pmnd})`);\n if (pmxd != null && pmnd != null && Number(pmnd) > Number(pmxd)) problems.push(\"pmnd exceeds pmxd\");\n if (pmad != null && !POSITIVE_INT.test(pmad)) problems.push(`pmad must be a positive integer or absent (got ${pmad})`);\n if (expect.remainingMs != null && pmxd != null && Number(pmxd) > expect.remainingMs) {\n problems.push(`pmxd ${pmxd} exceeds remaining break ${expect.remainingMs}ms`);\n }\n return problems;\n}\nfunction computePodResponseDiagnostics(pmxdSent, vastAdCount, totalVastCreativeDurationMs) {\n const estimatedUnusedPodMs = Math.max(0, pmxdSent - totalVastCreativeDurationMs);\n return {\n vastAdCount,\n totalVastCreativeDurationMs,\n estimatedUnusedPodMs,\n estimatedUnmatchedCount: Math.floor(estimatedUnusedPodMs / GAM_AD_OPPORTUNITY_DURATION_MS)\n };\n}\n\n// src/player/AdTimingService.ts\nfunction monotonicNow() {\n return typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n return this.host.generatePodVastUrl(baseVastUrl);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey, position) {\n this.breakSource = \"vmap\";\n this.resetEdgeStateForBreak();\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey, position);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey, \"midroll\");\n const epoch = this.timing.adBreakEpoch;\n if (adBreakDurationMs == null) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n let requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => adPlayer.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, adPlayer);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n if (this.handlePodRequestNotSent(error)) return false;\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n const playerId = getCachedBrowserId();\n return buildEdgePodUrl(\n baseUrl,\n remainingMs,\n remainingAds,\n resolveEdgePodRequestContext(this.host.config, {\n width: this.host.video.offsetWidth || this.host.video.clientWidth,\n height: this.host.video.offsetHeight || this.host.video.clientHeight,\n playerId\n })\n );\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n )\n );\n const overrunAllowanceMs = Math.max(0, this.host.config.maxAdBreakExtensionMs ?? 0);\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs + overrunAllowanceMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs,\n overrunAllowanceMs\n });\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl && !this.canRequestEdge()) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (!this.canRequestEdge() && this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n podParamsDeferredToDispatch: findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name)),\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n const failureKey = diag?.dispatchedUrl && findScvpMacroNames(vastTagUrl).some((name) => SCVP_POD_MACROS.has(name)) ? diag.dispatchedUrl : vastTagUrl;\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(failureKey, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(failureKey);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak,\n vastAdCount: diag?.vastAdCount,\n impressionCount: diag?.impressionCount,\n ...this.requestFloorFields(diag)\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n this.logPodDispatch(diag);\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n diag.impressionCount++;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, dispatchedUrl: _dispatchedUrl, podDispatchLogged: _logged, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n createGamDispatchFinalizer(requestToken) {\n const breakId = this.timing.adBreakEpoch;\n const config = this.adConfig.resolveAdPodConfig();\n const minUsablePmxdMs = this.timing.getMinRemainingMsToStartAd();\n return (url) => {\n const capacity = measureBreakCapacity(this.timing.getBreakTimingSnapshot(), monotonicNow());\n const diag = this.requestDiagnostics.get(requestToken);\n try {\n const result = finalizeGamRequestUrl(url, { breakId, capacity, config, minUsablePmxdMs });\n if (diag) {\n diag.pod = result.diagnostics;\n diag.dispatchedUrl = result.url;\n diag.podDispatchLogged = false;\n }\n this.currentVastUrl = result.url;\n return result.url;\n } catch (error) {\n if (diag && isPodRequestAbortedError(error)) {\n diag.failureReason = `pod_request_not_sent:${error.reason}`;\n }\n throw error;\n }\n };\n }\n logPodDispatch(diag) {\n if (!diag.pod || diag.podDispatchLogged) return;\n diag.podDispatchLogged = true;\n this.logOrchestratorFunnel(\n diag.pod.optimizedPod ? \"optimized_pod_request_dispatched\" : \"gam_request_dispatched\",\n { ...diag.pod }\n );\n }\n recordPodResponseDiagnostics(requestToken, adPlayer) {\n const diag = this.requestDiagnostics.get(requestToken);\n if (!diag?.pod || diag.pod.pmxdSent == null || diag.podResponse) return;\n if (diag.gamRequestSent === 0 && diag.vastHttpStatus == null) return;\n diag.podResponse = computePodResponseDiagnostics(\n diag.pod.pmxdSent,\n diag.vastAdCount ?? 0,\n adPlayer.getPodTotalDurationMs?.() ?? 0\n );\n this.logOrchestratorFunnel(\"optimized_pod_response\", {\n pmxdSent: diag.pod.pmxdSent,\n ...diag.podResponse\n });\n }\n handlePodRequestNotSent(error) {\n if (!isPodRequestAbortedError(error) || error.reason === \"invalid_url\") return false;\n const aborted = error;\n this.countFunnelStage(`request_outcome:pod_request_not_sent`);\n this.logOrchestratorFunnel(\"pod_request_not_sent\", {\n reason: aborted.reason,\n errorMessage: aborted.message,\n ...aborted.diagnostics\n });\n return true;\n }\n opportunityFloorFields(floor = this.opportunityFloor) {\n if (!floor) return {};\n return {\n floorStatus: floor.status,\n floorCents: floor.floorCents,\n floorSource: floor.source,\n floorReason: floor.reason,\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n };\n }\n requestFloorFields(diag) {\n if (!diag || diag.floorApplied === void 0) return {};\n return {\n floorApplied: diag.floorApplied,\n floorCents: diag.floorCents,\n floorSource: diag.floorSource,\n floorReason: diag.floorReason,\n floorConfigVersion: diag.floorConfigVersion\n };\n }\n applyOpportunityFloor(url) {\n const floor = this.opportunityFloor;\n if (!floor) return url;\n const result = applyFloorToVastUrl(url, floor);\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag) {\n diag.floorApplied = result.applied;\n if (result.applied && floor.floorCents != null) diag.floorCents = floor.floorCents;\n diag.floorSource = result.applied ? floor.source : \"none\";\n if (result.reason) diag.floorReason = result.reason;\n diag.floorConfigVersion = floor.configurationVersion;\n }\n if (floor.status === \"skipped\" && floor.reason === \"disabled\") {\n this.countFunnelStage(\"floor_skipped:disabled\");\n return result.url;\n }\n this.logOrchestratorFunnel(result.applied ? \"floor_applied\" : \"floor_skipped\", {\n reason: result.reason,\n floorCents: result.applied ? floor.floorCents : void 0,\n floorSource: result.applied ? floor.source : \"none\",\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n });\n if (!result.applied && result.reason) {\n this.countFunnelStage(`floor_skipped:${result.reason}`);\n }\n return result.url;\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey, position) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n try {\n this.opportunityFloor = this.host.getFloorSnapshot(position);\n } catch {\n this.opportunityFloor = void 0;\n }\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs,\n ...this.opportunityFloorFields()\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger, source = \"gam\") {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n source,\n gamRequestSent: 0,\n edgeRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n impressionCount: 0,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n let requestUrl = this.applyOpportunityFloor(ensureVideoAdType(vastTagUrl));\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => ap.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, ap);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n if (this.handlePodRequestNotSent(error)) throw error;\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n ...this.opportunityFloorFields(),\n floorAppliedRequests: count(\"floor_applied\"),\n floorSkippedRequests: count(\"floor_skipped\") + count(\"floor_skipped:disabled\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsModeChanges: count(\"gam_credentials_mode_changed\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.opportunityFloor = void 0;\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AdBreakOrchestrator\n});\n"]}
|