{"version":3,"file":"header.js","sources":["../../../resources/javascript/features/header/dom-elements.js","../../../resources/javascript/features/header/intersection-observer.js","../../../node_modules/tua-body-scroll-lock/dist/tua-bsl.mjs","../../../resources/javascript/util/lock-scroll.js","../../../resources/javascript/features/header/index.js","../../../resources/javascript/features/header/toggle-mobile-menu.js","../../../resources/javascript/entrypoint/header.js"],"sourcesContent":["export const headerElement = document.querySelector('[data-header]');\n\nexport const navElement = document.querySelector('[data-nav]');\n\nexport const toggleMobileMenuButton = document.querySelector(\n    '[data-toggle-mobile-menu]'\n);\n\nexport const mobileScrollContainer = document.querySelector(\n    '[data-subheader-scroll]'\n);\n","import { headerElement } from './dom-elements';\n\nlet lastPosition = null;\nlet lastScrollY = window.scrollY;\nlet ticking = false;\n\n/**\n * Initializes Intersection Observer to manage header position based on scrolling.\n */\nexport const initIntersectionObserver = () => {\n    const getHeaderHeight = () => {\n        const cssHeight = getComputedStyle(document.documentElement)\n            .getPropertyValue('--header-height');\n        return parseInt(cssHeight) || headerElement.offsetHeight;\n    };\n    \n    const headerHeight = getHeaderHeight();\n    \n    // Check if page is too short for header switching\n    const getMaxScroll = () => {\n        return document.documentElement.scrollHeight - window.innerHeight;\n    };\n    \n    const checkPosition = () => {\n        const currentScrollY = window.scrollY;\n        const maxScroll = getMaxScroll();\n        \n        // If page has very little scrollable content (less than 150px), \n        // don't switch - prevents flickering on short pages\n        if (maxScroll < 150) {\n            if (lastPosition !== 'static') {\n                lastPosition = 'static';\n                headerElement.setAttribute('data-position', 'static');\n            }\n            ticking = false;\n            return;\n        }\n        \n        const scrollingDown = currentScrollY > lastScrollY;\n        lastScrollY = currentScrollY;\n        \n        // Use different thresholds for up vs down\n        const thresholdDown = headerHeight * 0.6;\n        const thresholdUp = headerHeight * 0.4;\n        const threshold = scrollingDown ? thresholdDown : thresholdUp;\n        const position = currentScrollY > threshold ? 'sticky' : 'static';\n        \n        if (position !== lastPosition) {\n            lastPosition = position;\n            headerElement.setAttribute('data-position', position);\n        }\n        \n        ticking = false;\n    };\n    \n    const onScroll = () => {\n        if (!ticking) {\n            requestAnimationFrame(checkPosition);\n            ticking = true;\n        }\n    };\n    \n    window.addEventListener('scroll', onScroll, { passive: true });\n    \n    // Check initial position\n    checkPosition();\n};\n\n/**\n * Initializes a fallback scroll listener for browsers without IntersectionObserver support.\n */\nexport const initFallbackScrollListener = () => {\n    let scrollTimeout;\n    let lastFallbackPosition = null;\n    const scrollThreshold = 50; // Add hysteresis to prevent flickering\n    \n    window.addEventListener('scroll', () => {\n        clearTimeout(scrollTimeout);\n        scrollTimeout = setTimeout(() => {\n            const position = window.scrollY > scrollThreshold ? 'sticky' : 'static';\n            // Only update if position actually changed\n            if (position !== lastFallbackPosition) {\n                lastFallbackPosition = position;\n                headerElement.setAttribute('data-position', position);\n            }\n        }, 10); // Small delay to debounce rapid scroll events\n    });\n};\n","/**\n * tua-body-scroll-lock v1.5.3\n * (c) 2024 Evinma, BuptStEve\n * @license MIT\n */\n\nvar isServer = function isServer() {\n  return typeof window === 'undefined';\n};\nvar detectOS = function detectOS(ua) {\n  ua = ua || navigator.userAgent;\n  var ipad = /(iPad).*OS\\s([\\d_]+)/.test(ua);\n  var iphone = !ipad && /(iPhone\\sOS)\\s([\\d_]+)/.test(ua);\n  var android = /(Android);?[\\s/]+([\\d.]+)?/.test(ua);\n  var ios = iphone || ipad;\n  return {\n    ios: ios,\n    android: android\n  };\n};\nfunction getEventListenerOptions(options) {\n  /* istanbul ignore if */\n  if (isServer()) return false;\n  if (!options) {\n    throw new Error('options must be provided');\n  }\n  var isSupportOptions = false;\n  var listenerOptions = {\n    get passive() {\n      isSupportOptions = true;\n      return undefined;\n    }\n  };\n  /* istanbul ignore next */\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  var noop = function noop() {};\n  var testEvent = '__TUA_BSL_TEST_PASSIVE__';\n  window.addEventListener(testEvent, noop, listenerOptions);\n  window.removeEventListener(testEvent, noop, listenerOptions);\n  var capture = options.capture;\n  /* istanbul ignore next */\n  return isSupportOptions ? options : typeof capture !== 'undefined' ? capture : false;\n}\nfunction noticeRequiredTargetElement(targetElement) {\n  if (targetElement) return false;\n  if (targetElement === null) return false;\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV === 'production') return false;\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'test') {\n    console.warn('If scrolling is also required in the floating layer, ' + 'the target element must be provided.');\n  }\n  return true;\n}\n/**\n * Get global function that calls preventDefault\n */\nfunction getPreventEventDefault() {\n  if ('__BSL_PREVENT_DEFAULT__' in window) {\n    return window.__BSL_PREVENT_DEFAULT__;\n  }\n  window.__BSL_PREVENT_DEFAULT__ = function (event) {\n    if (!event.cancelable) return;\n    event.preventDefault();\n  };\n  return window.__BSL_PREVENT_DEFAULT__;\n}\nfunction toArray(x) {\n  if (!x) return [];\n  return Array.isArray(x) ? x : [x];\n}\n\nvar initialLockState = {\n  lockedNum: 0,\n  lockedElements: [],\n  unLockCallback: null,\n  documentListenerAdded: false,\n  initialClientPos: {\n    clientX: 0,\n    clientY: 0\n  }\n};\n/**\n * get current lockState\n * @param options\n * @returns lockState\n */\nfunction getLockState(options) {\n  if (isServer()) return initialLockState;\n  /** use local lockState */\n  if (!(options === null || options === void 0 ? void 0 : options.useGlobalLockState)) return getLockState.lockState;\n  /** use global lockState */\n  var lockState = '__BSL_LOCK_STATE__' in window ? Object.assign(Object.assign({}, initialLockState), window.__BSL_LOCK_STATE__) : initialLockState;\n  /** assign to global */\n  window.__BSL_LOCK_STATE__ = lockState;\n  return lockState;\n}\ngetLockState.lockState = initialLockState;\n\nfunction handleScroll(event, targetElement, initialClientPos) {\n  if (targetElement) {\n    var scrollTop = targetElement.scrollTop,\n      scrollLeft = targetElement.scrollLeft,\n      scrollWidth = targetElement.scrollWidth,\n      scrollHeight = targetElement.scrollHeight,\n      clientWidth = targetElement.clientWidth,\n      clientHeight = targetElement.clientHeight;\n    var clientX = event.targetTouches[0].clientX - initialClientPos.clientX;\n    var clientY = event.targetTouches[0].clientY - initialClientPos.clientY;\n    var isVertical = Math.abs(clientY) > Math.abs(clientX);\n    var isOnTop = clientY > 0 && scrollTop === 0;\n    var isOnLeft = clientX > 0 && scrollLeft === 0;\n    var isOnRight = clientX < 0 && scrollLeft + clientWidth + 1 >= scrollWidth;\n    var isOnBottom = clientY < 0 && scrollTop + clientHeight + 1 >= scrollHeight;\n    if (isVertical && (isOnTop || isOnBottom) || !isVertical && (isOnLeft || isOnRight)) {\n      return getPreventEventDefault()(event);\n    }\n  }\n  event.stopPropagation();\n  return true;\n}\n\nfunction setOverflowHiddenPc() {\n  var $html = document.documentElement;\n  var htmlStyle = Object.assign({}, $html.style);\n  var scrollBarWidth = window.innerWidth - $html.clientWidth;\n  var previousPaddingRight = parseInt(window.getComputedStyle($html).paddingRight, 10);\n  $html.style.overflow = 'hidden';\n  $html.style.boxSizing = 'border-box';\n  $html.style.paddingRight = \"\".concat(scrollBarWidth + previousPaddingRight, \"px\");\n  return function () {\n    ['overflow', 'boxSizing', 'paddingRight'].forEach(function (x) {\n      $html.style[x] = htmlStyle[x] || '';\n    });\n  };\n}\nfunction setOverflowHiddenMobile(options) {\n  var $html = document.documentElement;\n  var $body = document.body;\n  var scrollTop = $html.scrollTop || $body.scrollTop;\n  var htmlStyle = Object.assign({}, $html.style);\n  var bodyStyle = Object.assign({}, $body.style);\n  $html.style.height = '100%';\n  $html.style.overflow = 'hidden';\n  $body.style.top = \"-\".concat(scrollTop, \"px\");\n  $body.style.width = '100%';\n  $body.style.height = 'auto';\n  $body.style.position = 'fixed';\n  $body.style.overflow = (options === null || options === void 0 ? void 0 : options.overflowType) || 'hidden';\n  return function () {\n    $html.style.height = htmlStyle.height || '';\n    $html.style.overflow = htmlStyle.overflow || '';\n    ['top', 'width', 'height', 'overflow', 'position'].forEach(function (x) {\n      $body.style[x] = bodyStyle[x] || '';\n    });\n    var supportsNativeSmoothScroll = ('scrollBehavior' in document.documentElement.style);\n    if (supportsNativeSmoothScroll) {\n      window.scrollTo({\n        top: scrollTop,\n        behavior: 'instant'\n      });\n    } else {\n      window.scrollTo(0, scrollTop);\n    }\n  };\n}\n\n/**\n * lock body scroll\n * @param targetElement the element(s) still needs scrolling（iOS only）\n * @param options\n */\nfunction lock(targetElement, options) {\n  if (isServer()) return;\n  noticeRequiredTargetElement(targetElement);\n  var detectRes = detectOS();\n  var lockState = getLockState(options);\n  if (detectRes.ios) {\n    toArray(targetElement).filter(function (e) {\n      return e && lockState.lockedElements.indexOf(e) === -1;\n    }).forEach(function (element) {\n      element.ontouchstart = function (event) {\n        var _event$targetTouches$ = event.targetTouches[0],\n          clientX = _event$targetTouches$.clientX,\n          clientY = _event$targetTouches$.clientY;\n        lockState.initialClientPos = {\n          clientX: clientX,\n          clientY: clientY\n        };\n      };\n      element.ontouchmove = function (event) {\n        handleScroll(event, element, lockState.initialClientPos);\n      };\n      lockState.lockedElements.push(element);\n    });\n    addTouchMoveListener(lockState);\n  } else if (lockState.lockedNum <= 0) {\n    lockState.unLockCallback = detectRes.android ? setOverflowHiddenMobile(options) : setOverflowHiddenPc();\n  }\n  lockState.lockedNum += 1;\n}\n/**\n * unlock body scroll\n * @param targetElement the element(s) still needs scrolling（iOS only）\n * @param options\n */\nfunction unlock(targetElement, options) {\n  if (isServer()) return;\n  noticeRequiredTargetElement(targetElement);\n  var lockState = getLockState(options);\n  lockState.lockedNum -= 1;\n  if (lockState.lockedNum > 0) return;\n  if (unlockByCallback(lockState)) return;\n  toArray(targetElement).forEach(function (element) {\n    var index = lockState.lockedElements.indexOf(element);\n    if (element && index !== -1) {\n      element.ontouchmove = null;\n      element.ontouchstart = null;\n      lockState.lockedElements.splice(index, 1);\n    }\n  });\n  removeTouchMoveListener(lockState);\n}\n/**\n * clear all body locks\n * @param options\n */\nfunction clearBodyLocks(options) {\n  if (isServer()) return;\n  var lockState = getLockState(options);\n  lockState.lockedNum = 0;\n  if (unlockByCallback(lockState)) return;\n  if (lockState.lockedElements.length) {\n    var element = lockState.lockedElements.pop();\n    while (element) {\n      element.ontouchmove = null;\n      element.ontouchstart = null;\n      element = lockState.lockedElements.pop();\n    }\n  }\n  removeTouchMoveListener(lockState);\n}\nfunction unlockByCallback(lockState) {\n  if (detectOS().ios) return false;\n  if (typeof lockState.unLockCallback !== 'function') return false;\n  lockState.unLockCallback();\n  return true;\n}\nfunction addTouchMoveListener(lockState) {\n  if (!detectOS().ios) return;\n  if (lockState.documentListenerAdded) return;\n  document.addEventListener('touchmove', getPreventEventDefault(), getEventListenerOptions({\n    passive: false\n  }));\n  lockState.documentListenerAdded = true;\n}\nfunction removeTouchMoveListener(lockState) {\n  if (!lockState.documentListenerAdded) return;\n  document.removeEventListener('touchmove', getPreventEventDefault(), getEventListenerOptions({\n    passive: false\n  }));\n  lockState.documentListenerAdded = false;\n}\n\nexport { clearBodyLocks, getLockState, lock, unlock };\n","import { lock, unlock } from 'tua-body-scroll-lock';\nimport {\n    headerElement,\n    navElement,\n} from '../features/header/dom-elements';\n\n/**\n * Toggles the scroll lock based on the mobile menu state.\n * If the mobile menu is active, unlock the scroll.\n * Otherwise, lock the background scroll but enable scrolling on the subheader.\n */\nexport const handleScrollLock = () => {\n    headerElement.classList.contains('header--mobile-menu-active')\n        ? lock(navElement)\n        : unlock();\n};\n","import {\n    initIntersectionObserver,\n    initFallbackScrollListener,\n} from './intersection-observer';\nimport { toggleMobileMenuButton } from './dom-elements';\nimport { toggleMobileMenu } from './toggle-mobile-menu';\nimport { handleScrollLock } from '../../util/lock-scroll';\n\nexport const initHeader = () => {\n    /**\n     * Initialise intersection observer\n     * Fallback to scroll listener if Intersection observer not supported\n     */\n    if (window.IntersectionObserver) {\n        initIntersectionObserver();\n    } else {\n        initFallbackScrollListener();\n    }\n\n    /**\n     * Toggle mobile menu\n     */\n    toggleMobileMenuButton?.addEventListener('click', () => {\n        handleScrollLock();\n        toggleMobileMenu();\n    });\n};\n","import { navElement } from './dom-elements';\n\nexport const toggleMobileMenu = () =>\n    navElement.classList.toggle('header-nav--mobile-menu-active');\n","import { initHeader } from '../features/header/index';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n    initHeader();\n});\n"],"names":["headerElement","document","querySelector","navElement","toggleMobileMenuButton","lastPosition","lastScrollY","window","scrollY","ticking","initIntersectionObserver","headerHeight","getHeaderHeight","cssHeight","getComputedStyle","documentElement","getPropertyValue","parseInt","offsetHeight","checkPosition","currentScrollY","scrollHeight","innerHeight","setAttribute","scrollingDown","position","addEventListener","onScroll","requestAnimationFrame","passive","isServer","detectOS","ua","navigator","userAgent","ipad","test","ios","android","getEventListenerOptions","options","Error","isSupportOptions","listenerOptions","noop","testEvent","removeEventListener","capture","getPreventEventDefault","__BSL_PREVENT_DEFAULT__","event","cancelable","preventDefault","toArray","x","Array","isArray","initialLockState","lockedNum","lockedElements","unLockCallback","documentListenerAdded","initialClientPos","clientX","clientY","getLockState","useGlobalLockState","lockState","Object","assign","__BSL_LOCK_STATE__","lock","targetElement","$html","$body","scrollTop","htmlStyle","bodyStyle","detectRes","filter","e","indexOf","forEach","element","ontouchstart","_event$targetTouches$","targetTouches","ontouchmove","scrollLeft","scrollWidth","clientWidth","clientHeight","isVertical","Math","abs","stopPropagation","handleScroll","push","addTouchMoveListener","body","style","height","overflow","top","concat","width","scrollTo","behavior","scrollBarWidth","innerWidth","previousPaddingRight","paddingRight","boxSizing","setOverflowHiddenPc","unlock","unlockByCallback","index","splice","removeTouchMoveListener","initHeader","IntersectionObserver","initFallbackScrollListener","scrollTimeout","lastFallbackPosition","clearTimeout","setTimeout","classList","contains","toggle"],"mappings":"AAAO,MAAMA,EAAgBC,SAASC,cAAc,iBAEvCC,EAAaF,SAASC,cAAc,cAEpCE,EAAyBH,SAASC,cAC3C,6BAGiCD,SAASC,cAC1C,2BCPJ,IAAIG,EAAe,KACfC,EAAcC,OAAOC,QACrBC,GAAU,EAKP,MAAMC,EAA2BA,KACpC,MAMMC,EANkBC,MACpB,MAAMC,EAAYC,iBAAiBb,SAASc,iBACvCC,iBAAiB,mBACtB,OAAOC,SAASJ,IAAcb,EAAckB,YAAY,EAGvCN,GAOfO,EAAgBA,KAClB,MAAMC,EAAiBb,OAAOC,QAK9B,GATOP,SAASc,gBAAgBM,aAAed,OAAOe,YAStC,IAMZ,MALqB,WAAjBjB,IACAA,EAAe,SACfL,EAAcuB,aAAa,gBAAiB,gBAEhDd,GAAU,GAId,MAAMe,EAAgBJ,EAAiBd,EACvCA,EAAcc,EAGd,MAGMK,EAAWL,GADCI,EAFmB,GAAfb,EACa,GAAfA,GAE0B,SAAW,SAErDc,IAAapB,IACbA,EAAeoB,EACfzB,EAAcuB,aAAa,gBAAiBE,IAGhDhB,GAAU,CAAK,EAUnBF,OAAOmB,iBAAiB,UAPPC,KACRlB,IACDmB,sBAAsBT,GACtBV,GAAU,EACtB,GAGgD,CAAEoB,SAAS,IAGvDV,GAAe;;;;;;AC3DnB,IAAIW,EAAW,WACb,MAAyB,oBAAXvB,MAChB,EACIwB,EAAW,SAAkBC,GAC/BA,EAAKA,GAAMC,UAAUC,UACrB,IAAIC,EAAO,uBAAuBC,KAAKJ,GAIvC,MAAO,CACLK,KAJYF,GAAQ,yBAAyBC,KAAKJ,IAEhCG,EAGlBG,QAJY,6BAA6BF,KAAKJ,GAMlD,EACA,SAASO,EAAwBC,GAE/B,GAAIV,IAAY,OAAO,EACvB,IAAKU,EACH,MAAM,IAAIC,MAAM,4BAElB,IAAIC,GAAmB,EACnBC,EAAkB,CACpB,WAAId,GACFa,GAAmB,CAEzB,GAIME,EAAO,WAAkB,EACzBC,EAAY,2BAChBtC,OAAOmB,iBAAiBmB,EAAWD,EAAMD,GACzCpC,OAAOuC,oBAAoBD,EAAWD,EAAMD,GAC5C,IAAII,EAAUP,EAAQO,QAEtB,OAAOL,EAAmBF,OAA6B,IAAZO,GAA0BA,CACvE,CAeA,SAASC,IACP,MAAI,4BAA6BzC,SAGjCA,OAAO0C,wBAA0B,SAAUC,GACpCA,EAAMC,YACXD,EAAME,gBACP,GALQ7C,OAAO0C,uBAOlB,CACA,SAASI,EAAQC,GACf,OAAKA,EACEC,MAAMC,QAAQF,GAAKA,EAAI,CAACA,GADhB,EAEjB,CAEA,IAAIG,EAAmB,CACrBC,UAAW,EACXC,eAAgB,GAChBC,eAAgB,KAChBC,uBAAuB,EACvBC,iBAAkB,CAChBC,QAAS,EACTC,QAAS,IAQb,SAASC,EAAazB,GACpB,GAAIV,IAAY,OAAO2B,EAEvB,KAAMjB,aAAyC,EAASA,EAAQ0B,oBAAqB,OAAOD,EAAaE,UAEzG,IAAIA,EAAY,uBAAwB5D,OAAS6D,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAEZ,GAAmBlD,OAAO+D,oBAAsBb,EAGjI,OADAlD,OAAO+D,mBAAqBH,EACrBA,CACT,CA4EA,SAASI,EAAKC,EAAehC,GAC3B,IAAIV,IAAJ,CAEA,IAtCI2C,EACAC,EACAC,EACAC,EACAC,EAkCAC,EAAY/C,IACZoC,EAAYF,EAAazB,GACzBsC,EAAUzC,KACZgB,EAAQmB,GAAeO,QAAO,SAAUC,GACtC,OAAOA,IAA8C,IAAzCb,EAAUR,eAAesB,QAAQD,EACnD,IAAOE,SAAQ,SAAUC,GACnBA,EAAQC,aAAe,SAAUlC,GAC/B,IAAImC,EAAwBnC,EAAMoC,cAAc,GAC9CvB,EAAUsB,EAAsBtB,QAChCC,EAAUqB,EAAsBrB,QAClCG,EAAUL,iBAAmB,CAC3BC,QAASA,EACTC,QAASA,EAEZ,EACDmB,EAAQI,YAAc,SAAUrC,IA3FtC,SAAsBA,EAAOsB,EAAeV,GAC1C,GAAIU,EAAe,CACjB,IAAIG,EAAYH,EAAcG,UAC5Ba,EAAahB,EAAcgB,WAC3BC,EAAcjB,EAAciB,YAC5BpE,EAAemD,EAAcnD,aAC7BqE,EAAclB,EAAckB,YAC5BC,EAAenB,EAAcmB,aAC3B5B,EAAUb,EAAMoC,cAAc,GAAGvB,QAAUD,EAAiBC,QAC5DC,EAAUd,EAAMoC,cAAc,GAAGtB,QAAUF,EAAiBE,QAC5D4B,EAAaC,KAAKC,IAAI9B,GAAW6B,KAAKC,IAAI/B,GAK9C,GAAI6B,IAJU5B,EAAU,GAAmB,IAAdW,GAGZX,EAAU,GAAKW,EAAYgB,EAAe,GAAKtE,KAClBuE,IAH/B7B,EAAU,GAAoB,IAAfyB,GACdzB,EAAU,GAAKyB,EAAaE,EAAc,GAAKD,GAG7D,OAAOzC,IAAyBE,EAEtC,CACEA,EAAM6C,iBAER,CAuEQC,CAAa9C,EAAOiC,EAAShB,EAAUL,iBACxC,EACDK,EAAUR,eAAesC,KAAKd,EACpC,IAsDA,SAA8BhB,GAC5B,IAAKpC,IAAWM,IAAK,OACrB,GAAI8B,EAAUN,sBAAuB,OACrC5D,SAASyB,iBAAiB,YAAasB,IAA0BT,EAAwB,CACvFV,SAAS,KAEXsC,EAAUN,uBAAwB,CACpC,CA5DIqC,CAAqB/B,IACZA,EAAUT,WAAa,IAChCS,EAAUP,eAAiBkB,EAAUxC,SA5DnCmC,EAAQxE,SAASc,gBACjB2D,EAAQzE,SAASkG,KACjBxB,EAAYF,EAAME,WAAaD,EAAMC,UACrCC,EAAYR,OAAOC,OAAO,CAAA,EAAII,EAAM2B,OACpCvB,EAAYT,OAAOC,OAAO,CAAA,EAAIK,EAAM0B,OACxC3B,EAAM2B,MAAMC,OAAS,OACrB5B,EAAM2B,MAAME,SAAW,SACvB5B,EAAM0B,MAAMG,IAAM,IAAIC,OAAO7B,EAAW,MACxCD,EAAM0B,MAAMK,MAAQ,OACpB/B,EAAM0B,MAAMC,OAAS,OACrB3B,EAAM0B,MAAM3E,SAAW,QACvBiD,EAAM0B,MAAME,SAAuF,SAC5F,WACL7B,EAAM2B,MAAMC,OAASzB,EAAUyB,QAAU,GACzC5B,EAAM2B,MAAME,SAAW1B,EAAU0B,UAAY,GAC7C,CAAC,MAAO,QAAS,SAAU,WAAY,YAAYpB,SAAQ,SAAU5B,GACnEoB,EAAM0B,MAAM9C,GAAKuB,EAAUvB,IAAM,EACvC,IACsC,mBAAoBrD,SAASc,gBAAgBqF,MAE7E7F,OAAOmG,SAAS,CACdH,IAAK5B,EACLgC,SAAU,YAGZpG,OAAOmG,SAAS,EAAG/B,EAEtB,GA1CH,WACE,IAAIF,EAAQxE,SAASc,gBACjB6D,EAAYR,OAAOC,OAAO,CAAA,EAAII,EAAM2B,OACpCQ,EAAiBrG,OAAOsG,WAAapC,EAAMiB,YAC3CoB,EAAuB7F,SAASV,OAAOO,iBAAiB2D,GAAOsC,aAAc,IAIjF,OAHAtC,EAAM2B,MAAME,SAAW,SACvB7B,EAAM2B,MAAMY,UAAY,aACxBvC,EAAM2B,MAAMW,aAAe,GAAGP,OAAOI,EAAiBE,EAAsB,MACrE,WACL,CAAC,WAAY,YAAa,gBAAgB5B,SAAQ,SAAU5B,GAC1DmB,EAAM2B,MAAM9C,GAAKsB,EAAUtB,IAAM,EACvC,GACG,CACH,CA8DsF2D,IAEpF9C,EAAUT,WAAa,CA1BP,CA2BlB,CAMA,SAASwD,EAAO1C,EAAehC,GAC7B,IAAIV,IAAJ,CAEA,IAAIqC,EAAYF,EAAazB,GAC7B2B,EAAUT,WAAa,EACnBS,EAAUT,UAAY,GA+B5B,SAA0BS,GACxB,OAAIpC,IAAWM,MACyB,mBAA7B8B,EAAUP,iBACrBO,EAAUP,kBACH,GACT,CAnCMuD,CAAiBhD,KACrBd,EAAQmB,GAAeU,SAAQ,SAAUC,GACvC,IAAIiC,EAAQjD,EAAUR,eAAesB,QAAQE,GACzCA,IAAsB,IAAXiC,IACbjC,EAAQI,YAAc,KACtBJ,EAAQC,aAAe,KACvBjB,EAAUR,eAAe0D,OAAOD,EAAO,GAE7C,IAoCA,SAAiCjD,GAC/B,IAAKA,EAAUN,sBAAuB,OACtC5D,SAAS6C,oBAAoB,YAAaE,IAA0BT,EAAwB,CAC1FV,SAAS,KAEXsC,EAAUN,uBAAwB,CACpC,CAzCEyD,CAAwBnD,GAdR,CAelB,CA7HAF,EAAaE,UAAYV,ECtFlB,MCHM8D,EAAaA,KAKlBhH,OAAOiH,qBACP9G,IHyDkC+G,MACtC,IAAIC,EACAC,EAAuB,KAG3BpH,OAAOmB,iBAAiB,UAAU,KAC9BkG,aAAaF,GACbA,EAAgBG,YAAW,KACvB,MAAMpG,EAAWlB,OAAOC,QALR,GAKoC,SAAW,SAE3DiB,IAAakG,IACbA,EAAuBlG,EACvBzB,EAAcuB,aAAa,gBAAiBE,GAC5D,GACW,GAAG,GACR,EGtEEgG,SAMJrH,GAAAA,EAAwBsB,iBAAiB,SAAS,KDVlD1B,EAAc8H,UAAUC,SAAS,8BAC3BxD,EAAKpE,GACL+G,IEXN/G,EAAW2H,UAAUE,OAAO,iCDqBN,GACpB,EEvBN/H,SAASyB,iBAAiB,oBAAoB,KAC1C6F,GAAY","x_google_ignoreList":[2]}