stormcloud-video-player 0.8.68 → 0.8.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/stormcloud-vp.min.js +2 -2
  2. package/lib/Player.cjs +30 -8
  3. package/lib/Player.cjs.map +1 -1
  4. package/lib/Player.d.cts +2 -1
  5. package/lib/StormcloudPlayer.cjs +6104 -5114
  6. package/lib/StormcloudPlayer.cjs.map +1 -1
  7. package/lib/StormcloudPlayer.d.cts +1 -0
  8. package/lib/index.cjs +6217 -5149
  9. package/lib/index.cjs.map +1 -1
  10. package/lib/index.d.cts +2 -1
  11. package/lib/index.d.ts +93 -2
  12. package/lib/index.js +6199 -5158
  13. package/lib/index.js.map +1 -1
  14. package/lib/player/AdBreakOrchestrator.cjs +669 -131
  15. package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
  16. package/lib/player/AdBreakOrchestrator.d.cts +27 -3
  17. package/lib/player/EdgePodRequest.cjs +136 -0
  18. package/lib/player/EdgePodRequest.cjs.map +1 -0
  19. package/lib/player/EdgePodRequest.d.cts +14 -0
  20. package/lib/player/FloorLadder.cjs +578 -0
  21. package/lib/player/FloorLadder.cjs.map +1 -0
  22. package/lib/player/FloorLadder.d.cts +74 -0
  23. package/lib/player/StormcloudVideoPlayer.cjs +6104 -5114
  24. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  25. package/lib/player/StormcloudVideoPlayer.d.cts +13 -1
  26. package/lib/players/HlsPlayer.cjs +6104 -5114
  27. package/lib/players/HlsPlayer.cjs.map +1 -1
  28. package/lib/players/index.cjs +6104 -5114
  29. package/lib/players/index.cjs.map +1 -1
  30. package/lib/props.cjs +30 -8
  31. package/lib/props.cjs.map +1 -1
  32. package/lib/props.d.cts +1 -0
  33. package/lib/sdk/hlsAdPlayer.cjs +120 -19
  34. package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
  35. package/lib/types.d.cts +30 -2
  36. package/lib/ui/StormcloudVideoPlayer.cjs +6169 -5129
  37. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  38. package/lib/ui/StormcloudVideoPlayer.d.cts +1 -0
  39. package/lib/utils/vastMacros.cjs +4 -0
  40. package/lib/utils/vastMacros.cjs.map +1 -1
  41. package/lib/utils/vastMacros.d.cts +2 -1
  42. package/package.json +1 -1
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.js"],"names":["React","useEffect","useRef","useMemo","useCallback","Hls","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","detectBrowser","name","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","parts","split","toString","Promise","Map","Set","URLSearchParams","supportsModernJS","requiresMediaPipelineResetAfterAds","browser","getBrowserConfigOverrides","overrides","allowNativeHls","pauseContentDuringAds","Array","from","Object","assign","prototype","forEach","String","includes","e","logBrowserInfo","debug","console","log","supportsFeature","feature","TextEncoder","fetch","crypto","subtle","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","Math","floor","random","formatPlayhead","seconds","Number","isFinite","total","hh","padStart","mm","ss","ms","resolveMacroValues","ctx","values","set","key","value","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","Date","toISOString","errorCode","playerWidth","playerHeight","round","deviceId","deviceIdType","limitAdTracking","pageUrl","URL","hostname","clientUa","podSequence","adServingId","reason","substituteVastTrackingMacros","url","replace","get","encodeURIComponent","has","LINEAR_TRACKING_EVENTS","textOf","el","textContent","trim","parseVastTime","length","map","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","trimmed","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","error","code","createHlsAdPlayer","contentVideo","options","adPlaying","originalMutedState","originalVolume","max","min","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","fn","warn","SENSITIVE_URL_PARAMS","redactUrl","parsed","searchParams","keys","toLowerCase","logFunnel","stage","extra","breakId","requestId","controllerId","visibilityState","document","adId","id","podSize","vastUrl","mediaUrl","mediaType","type","muted","buildTrackingMacroContext","options2","ad","context","currentTime","clientWidth","clientHeight","location","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","add","timeoutId","release","outcome","clearTimeout","onload","onerror","delete","setTimeout","src","getMainStreamQuality","levels","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","window","devicePixelRatio","containerWidth","containerHeight","base","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","target","accepted","file","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","canPlayType","playable","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","push","sort","a","b","entry","mediaFile","isProgressiveMediaFile","startsWith","isAudioMediaFile","getMediaProbe","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","toUpperCase","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","collectVideoMediaFiles","linear","verbose","stats","mediaFileElements","querySelectorAll","result","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","indexOf","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","source","targetLists","sourceLists","incoming","concat","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","documentElement","adElements","ordered","filter","firstEmpty","entries","parseAdElement","usedAdIndex","adCount","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","kind","controller","startedAt","attempt","requestVast","response","Error","AbortController","abort","now","creds","mode","headers","referrerPolicy","signal","httpStatus","status","ok","elapsedMs","aborted","errorMessage","message","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","substring","fetchAndParsePod","trimmedXml","empty","resolveAd","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","wrapperCount","all","catch","shift","createAdVideoElement","video","style","position","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","vastErrorCode","mediaErrorCode","networkState","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","onVolumeChange","userActivation","isActive","paused","mute","unmute","isTrackablePlayback","ended","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","open","reportCurrentAdError","fireNotUsedForUnplayedAds","notUsed","inView","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","toVastPlayErrorCode","failAdPlayback","errorName","startAdPlayback","isMutedRetry","computed","getComputedStyle","isConnected","containerDisplay","display","containerVisibility","visibility","playPromise","play","finally","prepareVideoElementForNewSource","destroy","removeAttribute","load","recreateAdVideoElement","remove","appendChild","clearMediaStartTimer","startMediaStartTimer","timeoutMs","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","next","nextUrl","nextType","candidateCount","loadMediaCandidate","handleAdError","loadCurrentAdMedia","candidates","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","data","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","fragUrl","frag","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","call","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","pointerEvents","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","preloaded","reject","durations","impressionUrls","adIndex","missingAdId","resolve","contentVolume","loadError","stop","previousMutedState","clear","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","PRIVATE_HOST_PATTERNS","isLocalDevHost","some","pattern","toDevSafeUrl","rawUrl","cleanPath","pathname","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","existing","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","createPalNonceManager","currentNonce","currentNonceManager","generateNonce","loader","request","manager","NonceRequest","adWillAutoPlay","adWillPlayMuted","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","sessionId","JSON","stringify","loadNonceManager","getNonce","getCurrentNonce","injectNonce","sep","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","DEFAULT_TRACKING_INGEST_CONFIG","enabled","baseUrl","trackingIngestConfig","applyTrackingIngestConfig","configureTrackingIngest","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","method","Authorization","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","readStoredDeviceId","readStoredString","inferDeviceIdType","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","maxTouchPoints","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","normalized","safeCall","isInteger","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","readPersistentId","writePersistentId","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","prefix","cookie","part","decodeURIComponent","slice","bytes","randomUUID","Uint8Array","getRandomValues","seed","performanceNow","i","hex","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","Boolean","normalizeBoolean","getItem","cachedBrowserId","buildAnalyticsContext","config","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","domain","origin","path","language","languages","join","cookieEnabled","doNotTrack","referrer","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","hash","char","fallbackHash","timestamp","digest","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendAdDetectTracking","adDetectInfo","sendHeartbeat","sendAdLoadedTracking","adLoadedInfo","sendAdImpressionTracking","adImpressionInfo","ad_played_count","ad_url","adUrl","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","params","parseQueryString","append","query","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","str","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","then","polyfillObjectAssign","sources","TypeError","to","nextSource","nextKey","hasOwnProperty","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","search","pos","polyfillStringEndsWith","polyfillStringIncludes","initializePolyfills","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","getValue","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","expandInlineMacroPlaceholders","applyDeviceIdentityParams","runtimeId","tagRdid","tagLat","latValue","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","_value","suffix","normalizeVastTagUrl","raw","anValue","orphanFragments","reconstructed","_match","val","GAM_AD_HOSTS","ensureVideoAdType","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","podMaxDurationMs","podMaxAds","existingUrl","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","fetchConsentSignals","signals","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","uspApi","__uspapi","uspString","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","out","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","bytePos","bitPos","readBits","numBits","remainingInByte","toRead","currentByte","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_event_id","segmentation_event_id","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultPodMaxAds","defaultPodMaxDurationMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","breakStartMs","findBreakForTime","durationMs","selectVastTagsForBreak","beginNewAdPod","resolvePodParams","breakDurationMs","maxDurationMs","maxAds","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","envSignals","ctvAdRequest","urlWithMacros","autoplay","finalUrl","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","remainingMs","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","currentAdBreakStartWallClockMs","scteAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","exponent","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","Hls2","HlsEngine","cueManager","timing","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","isArray","idx","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","remaining","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","recordRequestDiagnostic","setSlotState","currentVastUrl","requestNextAd","errorPayload","cause","innerError","causeMessage","handleAdFailure","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","breakSource","followUpBaseVastUrl","noteOpportunity","handleAdStart","adBreakDurationMs","currentMuted","currentVolume","epoch","hasPrefetchedUrl","podPlayed","vastUrls","waitForBreakDuration","startOptimizedPod","maxWaitMs","deadline","waitedForMs","resolved","podUrl","prefetched","requestToken","podCount","noteVastUrlGenerated","beginFunnelRequest","isStale","callController","recordRequestFailure","previous","getMinRemainingMsToRequestAd","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","trigger","nextAdTimerId","stopReason","decision","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","pmad","pmnd","pmxd","diag","vastAdCount","impressionFired","failureReason","gamRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","fields","withCurrentPodBudget","rawVastTagUrl","maxMs","minMs","amount","opportunityBreakKey","expectedDurationMs","newRequestId","requestStartedAt","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","requestUrl","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","vastUrlsGenerated","gamResponses","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsRetries","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","monitorLiveResumeStall","resumeContentPlayback","liveSyncPos","toFixed","restartHlsLoad","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","v","net","ready","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","cleanup","poll","advanced","playing","bufferedAhead","wedged","canRecover","reloadPos","maxAttempts","onReady","backoffMs","playResult","StormcloudVideoPlayer","attached","palPlaybackStarted","browserOverrides","videoElement","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","c","adMediaStartTimeoutMs","palDescriptionUrl","attach","offsetWidth","prerollKey","endedHandler","onVideoEnded","timeUpdateHandler","emptiedHandler","wasPaused","Infinity","newDurationMs","detectPayload","hasPrefetchedAds","isManifest","forceImmediate","immediateManifestAds","isManifestMarker","hasPts","estCurrentPtsMs","markerPtsMs","tolerance","adSlotState","activeAdRequest","checkIntervalMs","adBreakCheckIntervalMs","maxExtensionMsConfig","maxAdBreakExtensionMs","maxExtensionMs","overrunMs","shouldExtendAdBreak","generatedUrls","detectedAtFragmentSn","isFetching","fetchStartTime","currentTimeSec","breakToPlay","handleVmapAdBreak","postroll","find","endMs","inWindow","tags","first","rest","getCurrentAdIndex","getTotalAdsInBreak","getAdRemainingMs","isShowingAds","shouldShowNativeControls","showCustomControls","FaPlay","FaPause","FaVolumeUp","FaVolumeMute","FaVolumeDown","Fragment","jsx","jsxs","ExpandIcon","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","focusable","children","CompressIcon","CRITICAL_PROPS","CONTROLS_HIDE_DELAY","DEFAULT_PLAYER_ASPECT_RATIO","StormcloudVideoPlayerComponent","memo","props","hideLoadingIndicator","onVolumeToggle","onFullscreenToggle","onControlClick","wrapperClassName","wrapperStyle","className","controls","preload","poster","restVideoAttrs","videoRef","playerRef","bufferingTimeoutRef","controlsTimerRef","wrapperRef","useState","currentIndex","totalAds","remainingSeconds","adStatus","setAdStatus","setShouldShowNativeControls","isMuted2","setIsMuted","isFullscreen2","setIsFullscreen","setIsPlaying","setCurrentTime","setDuration","setVolume2","playbackRate","setPlaybackRate","showVolumeSlider","setShowVolumeSlider","showSpeedMenu","setShowSpeedMenu","isLoading","setIsLoading","isBuffering","setIsBuffering","showCenterPlay","setShowCenterPlay","showLicenseWarning","setShowLicenseWarning","controlsVisible","setControlsVisible","innerWidth","viewportWidth","setViewportWidth","innerHeight","isPortrait","setIsPortrait","playerAspectRatio","setPlayerAspectRatio","getResponsiveScale","responsiveScale","resetControlsTimer","current","handleWrapperMouseMove","handleWrapperMouseLeave","formatTime","handlePlayPause","hasValidSource","handleCenterPlayClick","handleTimelineSeek","rect","currentTarget","getBoundingClientRect","clickX","clientX","newTime","handleVolumeChange","newVolume","handlePlaybackRateChange","rate","isHlsStream","isLiveUiMode","shouldShowEnhancedControls","criticalPropsKey","prop","player","showNative","checkAdStatus","showAdsFromMethod","showAdsFromAttribute","ceil","prev","interval","handleResize","updateStates","currentTimeValue","durationValue","volumeValue","rateValue","handleLoadedMetadata","video2","handleLoadedData","handleLoadStart","handleCanPlay","handleCanPlayThrough","handleWaiting","handlePlaying","handlePause","isAdActive","handleEnded","progressPercent","VolumeIcon","ref","onMouseMove","onMouseLeave","overflow","minHeight","aspectRatio","maxWidth","maxHeight","borderRadius","boxShadow","transform","animation","inset","border","borderTopColor","borderRightColor","background","backdropFilter","color","padding","textAlign","margin","fontSize","fontWeight","marginBottom","letterSpacing","lineHeight","gap","textTransform","cursor","onMouseEnter","marginLeft","minWidth","paddingRight","paddingLeft","onMouseDown","preventDefault","move","ev","r2","up","stopPropagation","fontFamily","fontVariantNumeric","userSelect","WebkitBackdropFilter","speed","flexShrink","textShadow","flexDirection","prevProps","nextProps","uiProps","callbackProps","React3","Component","Component4","Suspense","noop","defaultProps","loop","progressInterval","onStart","onBuffer","onBufferEnd","onDuration","onSeek","onProgress","lazy","reactLazy","omit","object","isMediaStream","MediaStream","supportsWebKitPresentationMode","randomString","substr","parseQuery","queryString","manualParse","qs","merge","isObject","item","IS_BROWSER","IS_GLOBAL","globalThis","IS_IOS","IS_SAFARI","SUPPORTS_HLS","SUPPORTS_DASH","HLS_EXTENSIONS","HLS_PATHS","DASH_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","canPlay","dash","audio","HlsPlayer","arguments","mounted","onMount","seekTo","keepPlaying","getDuration","getCurrentTime","getSecondsLoaded","getInternalPlayer","componentDidMount","componentWillUnmount","componentDidUpdate","render","displayName","Component2","FilePlayer","handlePlay","handleError","onLoaded","setLoop","enablePIP","requestPictureInPicture","disablePIP","pictureInPictureElement","exitPictureInPicture","players","lazyPlayer","default","canEnablePIP","pictureInPictureEnabled","webkitSupportsPresentationMode","players_default","React2","Component3","SEEK_ON_PLAY_EXPIRY","Player","isReady","loadOnReady","startOnPlay","seekOnPlay","onDurationCalled","handlePlayerMount","playedSeconds","loadedSeconds","played","prevPlayed","prevLoaded","progressTimeout","handleReady","handleDurationCheck","activePlayer","loopOnEnded","args","durationCheckTimeout","handleLoaded","forceLoad","isFraction","Player2","IS_BROWSER2","IS_GLOBAL2","UniversalSuspense","SUPPORTED_PROPS","customPlayers","createStormcloudPlayer","playerList","_a","showPreview","references","getActivePlayer","getAttributes","fraction","renderActivePlayer","fallbackElement","Wrapper","attributes","addCustomPlayer","removeCustomPlayers","StormcloudPlayer","StormcloudPlayer_default"],"mappings":"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","sourcesContent":["// src/ui/StormcloudVideoPlayer.tsx\nimport React, { useEffect, useRef, useMemo, useCallback } from \"react\";\n\n// src/sdk/hlsAdPlayer.ts\nimport Hls from \"hls.js\";\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingUrl}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingUrl}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? Hls.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? Hls.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n accepted.push({ file, score, insecure });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (Hls.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${parsed.vastAdTagUri}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\") {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const requestVast = async (creds) => {\n attempt++;\n if (kind === \"gam\") {\n logFunnel(\"gam_http_request_sent\", { attempt, credentials: creds });\n }\n const response = await fetch(vastTagUrl, {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind === \"gam\") {\n logFunnel(\"gam_response_received\", {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (credentials !== \"omit\" && !controller?.signal.aborted) {\n console.warn(\n `[HlsAdPlayer] VAST fetch failed with credentials=\"${credentials}\", retrying without credentials:`,\n error\n );\n logFunnel(\"vast_credentials_retry\", {\n errorMessage: error?.message\n });\n response = await requestVast(\"omit\");\n } else {\n throw error;\n }\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(\"[HlsAdPlayer] VAST XML received\");\n console.log(\n \"[HlsAdPlayer] VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n async function fetchAndParsePod(vastTagUrl) {\n lastPodAdElementCount = 0;\n const vastXml = await fetchVastXml(vastTagUrl);\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n console.error(\n \"[HlsAdPlayer] Pod VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n const podElements = adElements.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = adElements.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && Hls.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new Hls({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(Hls.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(Hls.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === Hls.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl) {\n console.log(\"[HlsAdPlayer] Requesting ads:\", vastTagUrl);\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\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 applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\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/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n let deviceId = realDeviceId;\n let deviceIdType = bridgeSignals.deviceIdType || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() ?? false : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking() ?? false;\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\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 }\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/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n if (ctx.podMinDurationMs != null) {\n params.set(\"pmnd\", String(Math.max(0, Math.round(ctx.podMinDurationMs))));\n }\n if (ctx.podMaxDurationMs != null) {\n params.set(\"pmxd\", String(Math.max(0, Math.round(ctx.podMaxDurationMs))));\n }\n if (ctx.podMaxAds != null) {\n params.set(\"pmad\", String(Math.max(1, Math.round(ctx.podMaxAds))));\n }\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultPodMaxAds = 6;\n this.defaultPodMaxDurationMs = 12e4;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n const vastMode = this.config.vastMode || \"default\";\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VAST mode:\", vastMode);\n }\n if (vastMode === \"adstorm\") {\n if (!this.config.licenseKey) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] AdStorm mode requires a license key\"\n );\n }\n return;\n }\n const vastEndpoint = `https://adstorm.co/api-adstorm-dev/adstorm/vast/${this.config.licenseKey}`;\n this.apiVastTagUrl = vastEndpoint;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using AdStorm VAST endpoint (adstorm mode):\",\n vastEndpoint\n );\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://adstorm.co/api-adstorm-dev/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolvePodParams(breakDurationMs) {\n const maxDurationMs = breakDurationMs != null && breakDurationMs > 0 ? breakDurationMs : this.config.podMaxDurationMs != null && this.config.podMaxDurationMs > 0 ? this.config.podMaxDurationMs : this.defaultPodMaxDurationMs;\n const maxAds = this.config.podMaxAds && this.config.podMaxAds > 0 ? this.config.podMaxAds : this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultPodMaxAds;\n const minDurationMs = this.config.podExactDuration && maxDurationMs != null ? maxDurationMs : 0;\n return { maxAds, minDurationMs, maxDurationMs };\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const urlWithMacros = applyVastMacros(baseUrl, {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n podMaxAds: podParams.maxAds,\n podMinDurationMs: podParams.minDurationMs,\n podMaxDurationMs: podParams.maxDurationMs,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals\n });\n const finalUrl = palNonce.injectNonce(ensureVideoAdType(urlWithMacros));\n console.log(\n `[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=${this.podCounter}, pmad=${podParams.maxAds}, pmnd=${podParams.minDurationMs}, pmxd=${podParams.maxDurationMs ?? \"?\"}):`,\n finalUrl\n );\n return finalUrl;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nimport Hls2 from \"hls.js\";\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new Hls2({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(Hls2.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(Hls2.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(Hls2.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = tag.includes(\"EXT-X-DATERANGE\") ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(Hls2.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(Hls2.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(Hls2.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(Hls2.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(Hls2.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(Hls2.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case Hls2.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case Hls2.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\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.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 const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n const breakDurationMs = remaining > 0 ? remaining : void 0;\n return this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\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 this.timing.resetGamNoFillCounter();\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) {\n this.breakSource = \"vmap\";\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);\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 if (!baseVastUrl) {\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.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);\n const epoch = this.timing.adBreakEpoch;\n const hasPrefetchedUrl = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (adBreakDurationMs == null && !hasPrefetchedUrl) {\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 const podPlayed = await this.startOptimizedPod(baseVastUrl, adBreakDurationMs);\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, breakDurationMs) {\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, breakDurationMs);\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.currentVastUrl = podUrl;\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(podUrl));\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: podUrl, 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 this.recordRequestFailure(error, podUrl);\n return false;\n }\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) {\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.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 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 pmad: params?.get(\"pmad\") ?? void 0,\n pmnd: params?.get(\"pmnd\") ?? void 0,\n pmxd: params?.get(\"pmxd\") ?? void 0,\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 if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(vastTagUrl, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(vastTagUrl);\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 });\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 break;\n case \"gam_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 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, ...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 withCurrentPodBudget(rawVastTagUrl) {\n const vastTagUrl = ensureVideoAdType(rawVastTagUrl);\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n if (!(remaining > 0)) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n if (!url.searchParams.has(\"pmxd\")) return vastTagUrl;\n const maxMs = Math.round(remaining);\n url.searchParams.set(\"pmxd\", String(maxMs));\n const minMs = Number(url.searchParams.get(\"pmnd\"));\n if (Number.isFinite(minMs) && minMs > maxMs) {\n url.searchParams.set(\"pmnd\", String(maxMs));\n }\n return url.toString();\n } catch {\n return vastTagUrl;\n }\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) {\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 this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger) {\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 gamRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\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 const requestUrl = this.withCurrentPodBudget(vastTagUrl);\n this.currentVastUrl = requestUrl;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => ap.requestAds(requestUrl));\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: 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 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 vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\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 credentialsRetries: count(\"vast_credentials_retry\"),\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 adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\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 this.timing.consecutiveFailures++;\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\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base, breakDurationMs) => this.generatePodVastUrl(base, breakDurationMs),\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n generatePodVastUrl(baseUrl, breakDurationMs) {\n const podParams = this.adConfig.resolvePodParams(breakDurationMs);\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n podParams,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.scteAdBreakEndWallClockMs = Date.now();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.currentAdBreakStartWallClockMs = this.timing.resolveScteBreakStartWallClockMs(marker);\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const breakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : void 0;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl, breakDurationMs)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.currentAdBreakStartWallClockMs = Date.now();\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n this.adBreak.beginVmapBreak(key);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nimport {\n FaPlay,\n FaPause,\n FaVolumeUp,\n FaVolumeMute,\n FaVolumeDown\n} from \"react-icons/fa\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ jsxs(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ jsx(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ jsxs(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ jsx(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"vastMode\",\n \"ctvAdRequest\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = React.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastMode,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n ...restVideoAttrs\n } = props;\n const videoRef = useRef(null);\n const playerRef = useRef(null);\n const bufferingTimeoutRef = useRef(null);\n const controlsTimerRef = useRef(null);\n const wrapperRef = useRef(null);\n const [adStatus, setAdStatus] = React.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = React.useState(true);\n const [isMuted2, setIsMuted] = React.useState(false);\n const [isFullscreen2, setIsFullscreen] = React.useState(false);\n const [isPlaying, setIsPlaying] = React.useState(false);\n const [currentTime, setCurrentTime] = React.useState(0);\n const [duration, setDuration] = React.useState(0);\n const [volume, setVolume2] = React.useState(1);\n const [playbackRate, setPlaybackRate] = React.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = React.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isBuffering, setIsBuffering] = React.useState(false);\n const [showCenterPlay, setShowCenterPlay] = React.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = React.useState(false);\n const [controlsVisible, setControlsVisible] = React.useState(true);\n const [viewportWidth, setViewportWidth] = React.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = React.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = React.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = useCallback(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = useCallback(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = useCallback(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = useMemo(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs,\n vastMode\n ]);\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastMode !== void 0) cfg.vastMode = vastMode;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n if (minRemainingMsToStartAd !== void 0)\n cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;\n if (minRemainingMsToRequestAd !== void 0)\n cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;\n if (maxNoFillsPerBreak !== void 0)\n cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n useEffect(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n useEffect(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n useEffect(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n useEffect(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n useEffect(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n useEffect(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n useEffect(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? FaVolumeMute : volume < 0.5 ? FaVolumeDown : FaVolumeUp;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ jsx(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ jsxs(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ jsx(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ jsx(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ jsx(\n FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ jsx(FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ jsx(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsxs(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ jsxs(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ jsxs(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ jsx(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nimport React3, { Component as Component4, Suspense } from \"react\";\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nimport { lazy as reactLazy } from \"react\";\nvar lazy = reactLazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nimport { Component } from \"react\";\nvar HlsPlayer = class extends Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nimport { Component as Component2 } from \"react\";\nvar FilePlayer = class extends Component2 {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nimport React2, { Component as Component3 } from \"react\";\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends Component3 {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return React2.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends Component4 {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return React3.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return React3.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n React3.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\nexport {\n DEFAULT_TRACKING_INGEST_CONFIG,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer_default as StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n StormcloudVideoPlayerComponent as default,\n detectBrowser,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseQuery,\n players_default as players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig\n};\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.js"],"names":["React","useEffect","useRef","useMemo","useCallback","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","deviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","key","value","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","call","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","name","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","get","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","max","round","podMaxDurationMs","podMaxAds","existingUrl","pageUrl","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","all","then","DEFAULT_WEB_FLOOR_LADDER_CONFIG","Object","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","DEFAULT_FLOOR_LADDER_BOUNDS","minCents","maxCents","generateFloorLevels","levels","cents","resolveFloorLadderBounds","overrides","validateFloorCents","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","Array","isArray","validateFloorLadderConfig","errors","check","selected","fixedFloorSelector","select","context","floorCents","resolveOpportunityFloor","selector","base","position","skipped","status","positions","decodeQueryComponent","mergeCustParams","decoded","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","target","update","next","FloorLadderController","initial","getBounds","validate","setSelector","snapshotFor","Hls","getChromeVersion","match","getWebKitVersion","getPlatform","userAgentData","platform","detectBrowser","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","Map","URLSearchParams","supportsModernJS","requiresMediaPipelineResetAfterAds","browser","getBrowserConfigOverrides","allowNativeHls","pauseContentDuringAds","from","assign","prototype","e","logBrowserInfo","debug","log","supportsFeature","feature","TextEncoder","fetch","subtle","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","formatPlayhead","seconds","isFinite","total","hh","mm","ss","ms","resolveMacroValues","values","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","toISOString","errorCode","playerWidth","playerHeight","clientUa","podSequence","adServingId","substituteVastTrackingMacros","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","map","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","error","code","createHlsAdPlayer","contentVideo","options","adPlaying","originalMutedState","originalVolume","min","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","warn","SENSITIVE_URL_PARAMS","redactUrl","logFunnel","stage","extra","breakId","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","add","timeoutId","release","outcome","clearTimeout","onload","onerror","src","getMainStreamQuality","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","devicePixelRatio","containerWidth","containerHeight","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","accepted","file","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","canPlayType","playable","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","sort","a","b","mediaFile","isProgressiveMediaFile","isAudioMediaFile","getMediaProbe","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","toUpperCase","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","collectVideoMediaFiles","linear","verbose","stats","mediaFileElements","querySelectorAll","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","targetLists","sourceLists","incoming","concat","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","documentElement","adElements","ordered","firstEmpty","entries","parseAdElement","usedAdIndex","adCount","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","kind","controller","startedAt","attempt","requestVast","response","Error","AbortController","abort","creds","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","errorMessage","message","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","isEdgeEmptySentinelAd","durations","fetchAndParsePod","isEdge","trimmedXml","empty","resolveAd","candidates","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","wrapperCount","sentinelCount","catch","shift","createAdVideoElement","video","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","vastErrorCode","mediaErrorCode","networkState","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","onVolumeChange","userActivation","isActive","paused","mute","unmute","isTrackablePlayback","ended","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","open","reportCurrentAdError","fireNotUsedForUnplayedAds","notUsed","inView","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","toVastPlayErrorCode","failAdPlayback","errorName","startAdPlayback","isMutedRetry","computed","getComputedStyle","isConnected","containerDisplay","display","containerVisibility","visibility","playPromise","play","finally","prepareVideoElementForNewSource","destroy","removeAttribute","load","recreateAdVideoElement","remove","appendChild","clearMediaStartTimer","startMediaStartTimer","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","handleAdError","loadCurrentAdMedia","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","fragUrl","frag","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","pointerEvents","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","requestOptions","preloaded","reject","impressionUrls","adIndex","missingAdId","contentVolume","loadError","stop","previousMutedState","clear","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","limitPodToBudget","maxDurationMs","maxAds","dropped","totalMs","durationMs","keptCount","droppedCount","keptDurationMs","PRIVATE_HOST_PATTERNS","isLocalDevHost","some","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","createPalNonceManager","currentNonce","currentNonceManager","generateNonce","loader","request","manager","NonceRequest","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","JSON","stringify","loadNonceManager","getNonce","getCurrentNonce","injectNonce","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","DEFAULT_TRACKING_INGEST_CONFIG","trackingIngestConfig","applyTrackingIngestConfig","configureTrackingIngest","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","method","Authorization","cachedBrowserId","buildAnalyticsContext","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","digest","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendAdDetectTracking","adDetectInfo","sendHeartbeat","sendAdLoadedTracking","adLoadedInfo","sendAdImpressionTracking","adImpressionInfo","ad_played_count","ad_url","adUrl","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","parseQueryString","append","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","str","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","sources","TypeError","to","nextSource","nextKey","hasOwnProperty","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","initializePolyfills","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","out","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","bytePos","bitPos","readBits","numBits","remainingInByte","toRead","currentByte","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","splice_event_id","segmentation_event_id","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultPodMaxAds","defaultPodMaxDurationMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","breakStartMs","findBreakForTime","selectVastTagsForBreak","beginNewAdPod","resolvePodParams","breakDurationMs","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","envSignals","ctvAdRequest","urlWithMacros","autoplay","finalUrl","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","remainingMs","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","currentAdBreakStartWallClockMs","scteAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","exponent","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","Hls2","HlsEngine","cueManager","timing","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","idx","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","resolveEdgePodBaseUrl","enableEdgePodRequest","edgePodUrl","buildEdgePodUrl","remainingAdLimit","maxMs","classifyEdgeVastResponse","podAdCount","describeEdgeUrl","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","remaining","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","recordRequestDiagnostic","setSlotState","currentVastUrl","requestNextAd","errorPayload","cause","innerError","causeMessage","handleAdFailure","currentPodSource","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","breakSource","resetEdgeStateForBreak","followUpBaseVastUrl","noteOpportunity","handleAdStart","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","hasPrefetchedUrl","edgeUrl","podPlayed","getEdgePodBaseUrl","vastUrls","waitForBreakDuration","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLiveBreak","startOptimizedPod","maxWaitMs","deadline","waitedForMs","resolved","podUrl","prefetched","requestToken","requestUrl","podCount","noteVastUrlGenerated","beginFunnelRequest","applyOpportunityFloor","isStale","callController","recordRequestFailure","edgeRequests","remainingAds","adsInBreak","getMinRemainingMsToRequestAd","trigger","classification","diag","endpoint","pmxd","pmad","podDurationMs","failureReason","previous","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","nextAdTimerId","stopReason","decision","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","epoch2","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","pmnd","vastAdCount","impressionFired","impressionCount","requestFloorFields","gamRequestSent","edgeRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","fields","withCurrentPodBudget","rawVastTagUrl","minMs","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","floorConfigVersion","adPosition","floorApplied","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","budgetedUrl","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeFills","edgeEmptySentinels","edgeFallbacks","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsRetries","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","monitorLiveResumeStall","resumeContentPlayback","liveSyncPos","toFixed","restartHlsLoad","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","v","net","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","cleanup","poll","advanced","playing","bufferedAhead","wedged","canRecover","reloadPos","maxAttempts","onReady","backoffMs","playResult","StormcloudVideoPlayer","attached","palPlaybackStarted","browserOverrides","videoElement","floorBounds","adFloorMinCents","adFloorMaxCents","adFloorStepCents","floorLadder","adFloorLadder","floorLadderEnabled","adFloorLadderEnabled","warnOnInvalidFloorLadder","edgePodBaseUrl","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","c","isCtvEnvironment","adMediaStartTimeoutMs","hint","setAdFloorLadder","report","setAdFloorLadderEnabled","isAdFloorLadderEnabled","getAdFloorLadder","getAdFloorBounds","setAdFloorSelector","palDescriptionUrl","attach","offsetWidth","prerollKey","endedHandler","onVideoEnded","timeUpdateHandler","emptiedHandler","wasPaused","Infinity","newDurationMs","detectPayload","hasPrefetchedAds","isManifest","forceImmediate","immediateManifestAds","isManifestMarker","hasPts","estCurrentPtsMs","markerPtsMs","tolerance","adSlotState","activeAdRequest","checkIntervalMs","adBreakCheckIntervalMs","maxExtensionMsConfig","maxAdBreakExtensionMs","maxExtensionMs","overrunMs","shouldExtendAdBreak","generatedUrls","detectedAtFragmentSn","isFetching","fetchStartTime","currentTimeSec","breakToPlay","handleVmapAdBreak","postroll","find","endMs","inWindow","tags","first","getCurrentAdIndex","getTotalAdsInBreak","getAdRemainingMs","isShowingAds","shouldShowNativeControls","showCustomControls","FaPlay","FaPause","FaVolumeUp","FaVolumeMute","FaVolumeDown","Fragment","jsx","jsxs","ExpandIcon","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","focusable","children","CompressIcon","CRITICAL_PROPS","CONTROLS_HIDE_DELAY","DEFAULT_PLAYER_ASPECT_RATIO","StormcloudVideoPlayerComponent","memo","props","hideLoadingIndicator","onVolumeToggle","onFullscreenToggle","onControlClick","wrapperClassName","wrapperStyle","className","controls","preload","poster","restVideoAttrs","adFloorLadderKey","videoRef","playerRef","appliedFloorLadderKeyRef","bufferingTimeoutRef","controlsTimerRef","wrapperRef","useState","currentIndex","totalAds","remainingSeconds","adStatus","setAdStatus","setShouldShowNativeControls","isMuted2","setIsMuted","isFullscreen2","setIsFullscreen","setIsPlaying","setCurrentTime","setDuration","setVolume2","playbackRate","setPlaybackRate","showVolumeSlider","setShowVolumeSlider","showSpeedMenu","setShowSpeedMenu","isLoading","setIsLoading","isBuffering","setIsBuffering","showCenterPlay","setShowCenterPlay","showLicenseWarning","setShowLicenseWarning","controlsVisible","setControlsVisible","innerWidth","viewportWidth","setViewportWidth","innerHeight","isPortrait","setIsPortrait","playerAspectRatio","setPlayerAspectRatio","getResponsiveScale","responsiveScale","resetControlsTimer","current","handleWrapperMouseMove","handleWrapperMouseLeave","formatTime","handlePlayPause","hasValidSource","handleCenterPlayClick","handleTimelineSeek","rect","currentTarget","getBoundingClientRect","clickX","clientX","newTime","handleVolumeChange","newVolume","handlePlaybackRateChange","rate","isHlsStream","isLiveUiMode","shouldShowEnhancedControls","criticalPropsKey","prop","player","showNative","checkAdStatus","showAdsFromMethod","showAdsFromAttribute","ceil","prev","interval","handleResize","updateStates","currentTimeValue","durationValue","volumeValue","rateValue","handleLoadedMetadata","video2","handleLoadedData","handleLoadStart","handleCanPlay","handleCanPlayThrough","handleWaiting","handlePlaying","handlePause","isAdActive","handleEnded","progressPercent","VolumeIcon","ref","onMouseMove","onMouseLeave","overflow","minHeight","aspectRatio","maxWidth","maxHeight","borderRadius","boxShadow","transform","animation","inset","border","borderTopColor","borderRightColor","background","backdropFilter","color","padding","textAlign","margin","fontSize","fontWeight","marginBottom","letterSpacing","lineHeight","gap","textTransform","cursor","onMouseEnter","marginLeft","minWidth","paddingRight","paddingLeft","onMouseDown","preventDefault","move","ev","r2","up","stopPropagation","fontFamily","fontVariantNumeric","userSelect","WebkitBackdropFilter","speed","flexShrink","textShadow","flexDirection","prevProps","nextProps","uiProps","callbackProps","React3","Component","Component4","Suspense","noop","defaultProps","loop","progressInterval","onStart","onBuffer","onBufferEnd","onDuration","onSeek","onProgress","lazy","reactLazy","omit","object","isMediaStream","MediaStream","supportsWebKitPresentationMode","randomString","substr","parseQuery","queryString","manualParse","qs","merge","isObject","item","IS_BROWSER","IS_GLOBAL","globalThis","IS_IOS","IS_SAFARI","SUPPORTS_HLS","SUPPORTS_DASH","HLS_EXTENSIONS","HLS_PATHS","DASH_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","canPlay","dash","audio","HlsPlayer","arguments","mounted","onMount","seekTo","keepPlaying","getDuration","getCurrentTime","getSecondsLoaded","getInternalPlayer","componentDidMount","componentWillUnmount","componentDidUpdate","render","displayName","Component2","FilePlayer","handlePlay","handleError","onLoaded","setLoop","enablePIP","requestPictureInPicture","disablePIP","pictureInPictureElement","exitPictureInPicture","players","lazyPlayer","default","canEnablePIP","pictureInPictureEnabled","webkitSupportsPresentationMode","players_default","React2","Component3","SEEK_ON_PLAY_EXPIRY","Player","isReady","loadOnReady","startOnPlay","seekOnPlay","onDurationCalled","handlePlayerMount","playedSeconds","loadedSeconds","played","prevPlayed","prevLoaded","progressTimeout","handleReady","handleDurationCheck","activePlayer","loopOnEnded","args","durationCheckTimeout","handleLoaded","forceLoad","isFraction","Player2","IS_BROWSER2","IS_GLOBAL2","UniversalSuspense","SUPPORTED_PROPS","customPlayers","createStormcloudPlayer","playerList","_a","showPreview","references","getActivePlayer","getAttributes","fraction","renderActivePlayer","fallbackElement","Wrapper","attributes","addCustomPlayer","removeCustomPlayers","StormcloudPlayer","StormcloudPlayer_default"],"mappings":"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","sourcesContent":["// src/ui/StormcloudVideoPlayer.tsx\nimport React, { useEffect, useRef, useMemo, useCallback } from \"react\";\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n let deviceId = realDeviceId;\n let deviceIdType = bridgeSignals.deviceIdType || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() ?? false : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking() ?? false;\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n if (ctx.podMinDurationMs != null) {\n params.set(\"pmnd\", String(Math.max(0, Math.round(ctx.podMinDurationMs))));\n }\n if (ctx.podMaxDurationMs != null) {\n params.set(\"pmxd\", String(Math.max(0, Math.round(ctx.podMaxDurationMs))));\n }\n if (ctx.podMaxAds != null) {\n params.set(\"pmad\", String(Math.max(1, Math.round(ctx.podMaxAds))));\n }\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/FloorLadder.ts\nvar DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"airytv_web_floor\",\n minFloorCents: 25,\n maxFloorCents: 300,\n stepCents: 25,\n selectedFloorCents: 25,\n fallbackFloorCents: 25,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [\"midroll\"],\n targetAdUnitPath: \"/21821455290/airytvadx/airytv-web\",\n configurationVersion: \"2026-09-29.1\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction isInteger(value) {\n return typeof value === \"number\" && Number.isInteger(value);\n}\nfunction generateFloorLevels(minCents, maxCents, stepCents) {\n if (!isInteger(minCents) || !isInteger(maxCents) || !isInteger(stepCents)) return [];\n if (stepCents <= 0 || minCents <= 0 || maxCents < minCents) return [];\n const levels = [];\n for (let cents = minCents; cents <= maxCents; cents += stepCents) {\n levels.push(cents);\n }\n return levels;\n}\nfunction resolveFloorLadderBounds(overrides = {}) {\n return {\n minCents: overrides.minCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.minCents,\n maxCents: overrides.maxCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,\n stepCents: overrides.stepCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.stepCents\n };\n}\nfunction validateFloorCents(value, config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n if (!isInteger(value)) return { ok: false, reason: \"not_integer\" };\n if (!(value >= bounds.minCents && value <= bounds.maxCents) || !(value >= config.minFloorCents && value <= config.maxFloorCents)) {\n return { ok: false, reason: \"out_of_range\" };\n }\n const gamLevels = generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents);\n const configLevels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents);\n if (gamLevels.indexOf(value) === -1 || configLevels.indexOf(value) === -1) {\n return { ok: false, reason: \"not_step_multiple\" };\n }\n const ready = Array.isArray(config.readyFloorCents) ? config.readyFloorCents : [];\n if (ready.indexOf(value) === -1) return { ok: false, reason: \"not_ready\" };\n return { ok: true };\n}\nfunction validateFloorLadderConfig(config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n const errors = [];\n if (generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents).length === 0) {\n errors.push(\"invalid_gam_bounds\");\n }\n const levels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents).filter((cents) => validateFloorCents(cents, { ...config, readyFloorCents: [cents] }, bounds).ok);\n if (levels.length === 0) errors.push(\"invalid_level_bounds\");\n if (config.minFloorCents < bounds.minCents || config.maxFloorCents > bounds.maxCents) {\n errors.push(\"level_bounds_outside_gam_ladder\");\n }\n if (!config.targetingKey) errors.push(\"missing_targeting_key\");\n if (config.mode !== \"fixed\") errors.push(`unsupported_mode:${String(config.mode)}`);\n if (!Array.isArray(config.readyFloorCents)) {\n errors.push(\"ready_floor_cents_not_array\");\n } else {\n for (const cents of config.readyFloorCents) {\n const check = validateFloorCents(cents, config, bounds);\n if (!check.ok) errors.push(`ready_floor_invalid:${String(cents)}:${check.reason}`);\n }\n }\n const selected = validateFloorCents(config.selectedFloorCents, config, bounds);\n if (!selected.ok) errors.push(`selected_floor_invalid:${selected.reason}`);\n const fallback = validateFloorCents(config.fallbackFloorCents, config, bounds);\n if (!fallback.ok) errors.push(`fallback_floor_invalid:${fallback.reason}`);\n return { ok: errors.length === 0, levels, errors };\n}\nvar fixedFloorSelector = {\n name: \"fixed\",\n select(config, context) {\n if (config.mode !== \"fixed\") return { source: \"none\", reason: \"unsupported_mode\" };\n const selected = validateFloorCents(config.selectedFloorCents, config, context.bounds);\n if (selected.ok) return { floorCents: config.selectedFloorCents, source: \"selected\" };\n const fallback = validateFloorCents(config.fallbackFloorCents, config, context.bounds);\n if (fallback.ok) {\n return {\n floorCents: config.fallbackFloorCents,\n source: \"fallback\",\n reason: `selected_${selected.reason}`\n };\n }\n return {\n source: \"none\",\n reason: `no_valid_floor:selected_${selected.reason}:fallback_${fallback.reason}`\n };\n }\n};\nfunction resolveOpportunityFloor(config, context, selector = fixedFloorSelector) {\n const base = {\n selector: selector.name,\n position: context.position,\n configurationVersion: String(config.configurationVersion ?? \"\"),\n targetingKey: config.targetingKey,\n targetAdUnitPath: config.targetAdUnitPath\n };\n const skipped = (reason, source = \"none\") => Object.freeze({ ...base, status: \"skipped\", floorCents: void 0, source, reason });\n if (!config.enabled) return skipped(\"disabled\");\n const positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];\n if (positions.indexOf(context.position) === -1) return skipped(\"position_not_allowed\");\n if (context.isCtv) return skipped(\"ctv_excluded\");\n if (!config.targetingKey) return skipped(\"missing_targeting_key\");\n if (!config.targetAdUnitPath) return skipped(\"missing_target_ad_unit\");\n let result;\n try {\n result = selector.select(config, context);\n } catch {\n return skipped(\"selector_error\");\n }\n if (result.floorCents == null) return skipped(result.reason ?? \"no_valid_floor\", result.source);\n const check = validateFloorCents(result.floorCents, config, context.bounds);\n if (!check.ok) return skipped(`selector_floor_${check.reason}`);\n return Object.freeze({\n ...base,\n status: \"armed\",\n floorCents: result.floorCents,\n source: result.source,\n reason: result.reason\n });\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}\nfunction copyConfig(config) {\n return {\n ...config,\n readyFloorCents: Array.isArray(config.readyFloorCents) ? config.readyFloorCents.slice() : [],\n allowedPositions: Array.isArray(config.allowedPositions) ? config.allowedPositions.slice() : []\n };\n}\nfunction mergeDefined(target, update) {\n const next = copyConfig(target);\n if (!update) return next;\n for (const key of Object.keys(update)) {\n const value = update[key];\n if (value !== void 0) next[key] = value;\n }\n return copyConfig(next);\n}\nvar FloorLadderController = class {\n constructor(initial, bounds, selector = fixedFloorSelector) {\n this.config = mergeDefined(copyConfig(DEFAULT_WEB_FLOOR_LADDER_CONFIG), initial);\n this.bounds = Object.freeze(resolveFloorLadderBounds(bounds));\n this.selector = selector;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...this.bounds };\n }\n update(update) {\n this.config = mergeDefined(this.config, update);\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n validate() {\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n setSelector(selector) {\n this.selector = selector;\n }\n snapshotFor(context) {\n return resolveOpportunityFloor(\n copyConfig(this.config),\n { ...context, bounds: this.bounds },\n this.selector\n );\n }\n};\n\n// src/sdk/hlsAdPlayer.ts\nimport Hls from \"hls.js\";\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingHost}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingHost}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? Hls.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? Hls.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n accepted.push({ file, score, insecure });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (Hls.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${redactUrl(parsed.vastAdTagUri)}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\") {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const requestVast = async (creds) => {\n attempt++;\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_http_request_sent`, { attempt, credentials: creds });\n }\n const response = await fetch(vastTagUrl, {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_response_received`, {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (credentials !== \"omit\" && !controller?.signal.aborted) {\n console.warn(\n `[HlsAdPlayer] VAST fetch failed with credentials=\"${credentials}\", retrying without credentials:`,\n error\n );\n logFunnel(\"vast_credentials_retry\", {\n errorMessage: error?.message\n });\n response = await requestVast(\"omit\");\n } else {\n throw error;\n }\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(`[HlsAdPlayer] VAST XML received (length=${vastXml.length})`);\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n function isEdgeEmptySentinelAd(adElement) {\n if ((adElement.getAttribute(\"id\") || \"\").trim().toLowerCase() === \"empty\") {\n return true;\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) return false;\n if (/^no ad available$/i.test(textOf(inLine.querySelector(\":scope > AdTitle\")) ?? \"\")) {\n return true;\n }\n const durations = Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear > Duration\")\n ).map((el) => parseVastTime(textOf(el)));\n return durations.length > 0 && durations.every((seconds) => seconds === 0);\n }\n async function fetchAndParsePod(vastTagUrl, source = \"gam\") {\n lastPodAdElementCount = 0;\n const isEdge = source === \"edge\";\n const vastXml = await fetchVastXml(vastTagUrl, isEdge ? \"omit\" : \"include\", source);\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n let candidates = adElements;\n if (isEdge) {\n candidates = adElements.filter((el) => !isEdgeEmptySentinelAd(el));\n if (candidates.length < adElements.length) {\n logFunnel(\"edge_empty_sentinel\", {\n sentinelCount: adElements.length - candidates.length,\n adElementCount: adElements.length\n });\n }\n }\n const podElements = candidates.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = candidates.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return isEdge ? ads.filter((ad) => ad.duration > 0) : ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && Hls.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new Hls({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(Hls.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(Hls.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === Hls.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl, requestOptions) {\n const source = requestOptions?.source ?? \"gam\";\n console.log(`[HlsAdPlayer] Requesting ads (${source}):`, redactUrl(vastTagUrl));\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl, source);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n },\n limitPodToBudget(maxDurationMs, maxAds) {\n if (adPlaying) return podAds.length;\n const kept = [];\n const dropped = [];\n let totalMs = 0;\n for (const ad of podAds) {\n const durationMs = Math.round(ad.duration * 1e3);\n if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {\n kept.push(ad);\n totalMs += durationMs;\n } else {\n dropped.push(ad);\n }\n }\n if (dropped.length > 0) {\n logFunnel(\"pod_trimmed_to_budget\", {\n keptCount: kept.length,\n droppedCount: dropped.length,\n keptDurationMs: totalMs,\n maxDurationMs,\n maxAds\n });\n for (const ad of dropped) {\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n podAds = kept;\n podIndex = 0;\n currentAd = kept[0];\n currentAdMediaFile = void 0;\n return kept.length;\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\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 applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\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 if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\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 }\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/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultPodMaxAds = 6;\n this.defaultPodMaxDurationMs = 12e4;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n const vastMode = this.config.vastMode || \"default\";\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VAST mode:\", vastMode);\n }\n if (vastMode === \"adstorm\") {\n if (!this.config.licenseKey) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] AdStorm mode requires a license key\"\n );\n }\n return;\n }\n const vastEndpoint = `https://adstorm.co/api-adstorm-dev/adstorm/vast/${this.config.licenseKey}`;\n this.apiVastTagUrl = vastEndpoint;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using AdStorm VAST endpoint (adstorm mode):\",\n vastEndpoint\n );\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://adstorm.co/api-adstorm-dev/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolvePodParams(breakDurationMs) {\n const maxDurationMs = breakDurationMs != null && breakDurationMs > 0 ? breakDurationMs : this.config.podMaxDurationMs != null && this.config.podMaxDurationMs > 0 ? this.config.podMaxDurationMs : this.defaultPodMaxDurationMs;\n const maxAds = this.config.podMaxAds && this.config.podMaxAds > 0 ? this.config.podMaxAds : this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultPodMaxAds;\n const minDurationMs = this.config.podExactDuration && maxDurationMs != null ? maxDurationMs : 0;\n return { maxAds, minDurationMs, maxDurationMs };\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const urlWithMacros = applyVastMacros(baseUrl, {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n podMaxAds: podParams.maxAds,\n podMinDurationMs: podParams.minDurationMs,\n podMaxDurationMs: podParams.maxDurationMs,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals\n });\n const finalUrl = palNonce.injectNonce(ensureVideoAdType(urlWithMacros));\n console.log(\n `[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=${this.podCounter}, pmad=${podParams.maxAds}, pmnd=${podParams.minDurationMs}, pmxd=${podParams.maxDurationMs ?? \"?\"}):`,\n finalUrl\n );\n return finalUrl;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nimport Hls2 from \"hls.js\";\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new Hls2({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(Hls2.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(Hls2.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(Hls2.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = tag.includes(\"EXT-X-DATERANGE\") ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(Hls2.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(Hls2.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(Hls2.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(Hls2.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(Hls2.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(Hls2.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case Hls2.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case Hls2.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n try {\n const url = new URL(raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {\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 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/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\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 const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n const breakDurationMs = remaining > 0 ? remaining : void 0;\n return this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\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 const hasPrefetchedUrl = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (adBreakDurationMs == null && (!hasPrefetchedUrl || edgeConfigured)) {\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, adBreakDurationMs);\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, breakDurationMs) {\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, breakDurationMs);\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 const requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl));\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: 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 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 /**\n * Builds the next Edge request from the budget left right now, or marks Edge\n * exhausted for this break. Synchronous on purpose: callers must reach the\n * REQUESTING state in the same tick so a second completion event cannot race\n * in a parallel request.\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.resolvePodParams().maxAds - 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 return buildEdgePodUrl(baseUrl, remainingMs, remainingAds);\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.resolvePodParams().maxAds - this.timing.totalAdsInBreak\n )\n );\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs, 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 });\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 pmad: params?.get(\"pmad\") ?? void 0,\n pmnd: params?.get(\"pmnd\") ?? void 0,\n pmxd: params?.get(\"pmxd\") ?? void 0,\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 if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(vastTagUrl, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(vastTagUrl);\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 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, ...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 withCurrentPodBudget(rawVastTagUrl) {\n const vastTagUrl = ensureVideoAdType(rawVastTagUrl);\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n if (!(remaining > 0)) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n if (!url.searchParams.has(\"pmxd\")) return vastTagUrl;\n const maxMs = Math.round(remaining);\n url.searchParams.set(\"pmxd\", String(maxMs));\n const minMs = Number(url.searchParams.get(\"pmnd\"));\n if (Number.isFinite(minMs) && minMs > maxMs) {\n url.searchParams.set(\"pmnd\", String(maxMs));\n }\n return url.toString();\n } catch {\n return vastTagUrl;\n }\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 const budgetedUrl = this.withCurrentPodBudget(vastTagUrl);\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n const requestUrl = this.applyOpportunityFloor(budgetedUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => ap.requestAds(requestUrl));\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: 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 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 credentialsRetries: count(\"vast_credentials_retry\"),\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\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n const floorBounds = {};\n if (this.config.adFloorMinCents != null) floorBounds.minCents = this.config.adFloorMinCents;\n if (this.config.adFloorMaxCents != null) floorBounds.maxCents = this.config.adFloorMaxCents;\n if (this.config.adFloorStepCents != null) floorBounds.stepCents = this.config.adFloorStepCents;\n this.floorLadder = new FloorLadderController(this.config.adFloorLadder, floorBounds);\n this.floorLadderEnabled = this.config.adFloorLadderEnabled === true;\n this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base, breakDurationMs) => this.generatePodVastUrl(base, breakDurationMs),\n getEdgePodBaseUrl: () => this.edgePodBaseUrl,\n getFloorSnapshot: (position) => this.floorLadderEnabled ? this.floorLadder.snapshotFor({ position, isCtv: this.isCtvEnvironment() }) : void 0,\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n isCtvEnvironment() {\n if (this.config.ctvAdRequest) return true;\n const hint = inferDeviceTypeHint(false);\n return hint === DEVICE_TYPE_HINT.CONNECTED_TV || hint === DEVICE_TYPE_HINT.SET_TOP_BOX;\n }\n setAdFloorLadder(update) {\n const report = this.floorLadder.update(update);\n this.warnOnInvalidFloorLadder(report);\n return report;\n }\n setAdFloorLadderEnabled(enabled) {\n this.floorLadderEnabled = enabled;\n if (enabled) this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n }\n isAdFloorLadderEnabled() {\n return this.floorLadderEnabled;\n }\n warnOnInvalidFloorLadder(report) {\n const config = this.floorLadder.get();\n if (report.ok || !this.floorLadderEnabled || !config.enabled) return;\n console.warn(\"[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent\", {\n errors: report.errors,\n configurationVersion: config.configurationVersion,\n bounds: this.floorLadder.getBounds()\n });\n }\n getAdFloorLadder() {\n return this.floorLadder.get();\n }\n getAdFloorBounds() {\n return this.floorLadder.getBounds();\n }\n setAdFloorSelector(selector) {\n this.floorLadder.setSelector(selector);\n }\n generatePodVastUrl(baseUrl, breakDurationMs) {\n const podParams = this.adConfig.resolvePodParams(breakDurationMs);\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n podParams,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.scteAdBreakEndWallClockMs = Date.now();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.currentAdBreakStartWallClockMs = this.timing.resolveScteBreakStartWallClockMs(marker);\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const breakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : void 0;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl, breakDurationMs)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.currentAdBreakStartWallClockMs = Date.now();\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n const position = adBreak.startTimeMs === 0 ? \"preroll\" : adBreak.startTimeMs < 0 ? \"postroll\" : \"midroll\";\n this.adBreak.beginVmapBreak(key, position);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n 0;\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nimport {\n FaPlay,\n FaPause,\n FaVolumeUp,\n FaVolumeMute,\n FaVolumeDown\n} from \"react-icons/fa\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ jsxs(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ jsx(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ jsxs(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ jsx(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"vastMode\",\n \"ctvAdRequest\",\n \"adFloorMinCents\",\n \"adFloorMaxCents\",\n \"adFloorStepCents\",\n \"enableEdgePodRequest\",\n \"edgePodUrl\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = React.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastMode,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n adFloorLadderEnabled,\n adFloorLadder,\n adFloorMinCents,\n adFloorMaxCents,\n adFloorStepCents,\n enableEdgePodRequest,\n edgePodUrl,\n ...restVideoAttrs\n } = props;\n const adFloorLadderKey = JSON.stringify(adFloorLadder ?? null);\n const videoRef = useRef(null);\n const playerRef = useRef(null);\n const appliedFloorLadderKeyRef = useRef(null);\n const bufferingTimeoutRef = useRef(null);\n const controlsTimerRef = useRef(null);\n const wrapperRef = useRef(null);\n const [adStatus, setAdStatus] = React.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = React.useState(true);\n const [isMuted2, setIsMuted] = React.useState(false);\n const [isFullscreen2, setIsFullscreen] = React.useState(false);\n const [isPlaying, setIsPlaying] = React.useState(false);\n const [currentTime, setCurrentTime] = React.useState(0);\n const [duration, setDuration] = React.useState(0);\n const [volume, setVolume2] = React.useState(1);\n const [playbackRate, setPlaybackRate] = React.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = React.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isBuffering, setIsBuffering] = React.useState(false);\n const [showCenterPlay, setShowCenterPlay] = React.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = React.useState(false);\n const [controlsVisible, setControlsVisible] = React.useState(true);\n const [viewportWidth, setViewportWidth] = React.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = React.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = React.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = useCallback(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = useCallback(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = useCallback(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = useMemo(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs,\n vastMode,\n adFloorMinCents,\n adFloorMaxCents,\n adFloorStepCents,\n enableEdgePodRequest,\n edgePodUrl\n ]);\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastMode !== void 0) cfg.vastMode = vastMode;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n if (minRemainingMsToStartAd !== void 0)\n cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;\n if (minRemainingMsToRequestAd !== void 0)\n cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;\n if (maxNoFillsPerBreak !== void 0)\n cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;\n if (adFloorLadderEnabled !== void 0)\n cfg.adFloorLadderEnabled = adFloorLadderEnabled;\n if (adFloorLadder !== void 0) cfg.adFloorLadder = adFloorLadder;\n if (adFloorMinCents !== void 0) cfg.adFloorMinCents = adFloorMinCents;\n if (adFloorMaxCents !== void 0) cfg.adFloorMaxCents = adFloorMaxCents;\n if (adFloorStepCents !== void 0) cfg.adFloorStepCents = adFloorStepCents;\n if (enableEdgePodRequest !== void 0)\n cfg.enableEdgePodRequest = enableEdgePodRequest;\n if (edgePodUrl !== void 0) cfg.edgePodUrl = edgePodUrl;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n appliedFloorLadderKeyRef.current = adFloorLadderKey;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n useEffect(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n useEffect(() => {\n if (!playerRef.current || adFloorLadder === void 0) return;\n if (appliedFloorLadderKeyRef.current === adFloorLadderKey) return;\n appliedFloorLadderKeyRef.current = adFloorLadderKey;\n playerRef.current.setAdFloorLadder(adFloorLadder);\n }, [adFloorLadderKey]);\n useEffect(() => {\n if (!playerRef.current) return;\n const enabled = adFloorLadderEnabled === true;\n if (playerRef.current.isAdFloorLadderEnabled() === enabled) return;\n playerRef.current.setAdFloorLadderEnabled(enabled);\n }, [adFloorLadderEnabled]);\n useEffect(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n useEffect(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n useEffect(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n useEffect(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n useEffect(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n useEffect(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? FaVolumeMute : volume < 0.5 ? FaVolumeDown : FaVolumeUp;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ jsx(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ jsxs(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ jsx(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ jsx(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ jsx(\n FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ jsx(FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ jsx(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsxs(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ jsxs(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ jsxs(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ jsx(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsx(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ jsx(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n if (prevProps.adFloorLadderEnabled !== nextProps.adFloorLadderEnabled) {\n return false;\n }\n if (JSON.stringify(prevProps.adFloorLadder ?? null) !== JSON.stringify(nextProps.adFloorLadder ?? null)) {\n return false;\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nimport React3, { Component as Component4, Suspense } from \"react\";\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nimport { lazy as reactLazy } from \"react\";\nvar lazy = reactLazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nimport { Component } from \"react\";\nvar HlsPlayer = class extends Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nimport { Component as Component2 } from \"react\";\nvar FilePlayer = class extends Component2 {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nimport React2, { Component as Component3 } from \"react\";\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends Component3 {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return React2.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends Component4 {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return React3.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return React3.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n React3.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\nexport {\n DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_TRACKING_INGEST_CONFIG,\n DEFAULT_WEB_FLOOR_LADDER_CONFIG,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer_default as StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n StormcloudVideoPlayerComponent as default,\n detectBrowser,\n fixedFloorSelector,\n generateFloorLevels,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseQuery,\n players_default as players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig,\n validateFloorCents,\n validateFloorLadderConfig\n};\n"]}