{"version":3,"file":"nlc.min.js","sources":["../../../assets/js/base/_dropdownEvent.js","../../../assets/js/base/_traverse.js","../../../assets/js/_navigation.js","../../../assets/js/base/_effects.js","../../../assets/js/_footer.js","../../../assets/js/_share.js","../../../assets/js/base/_focus-within.js","../../../assets/js/_breadcrumb.js","../../../assets/js/_touch-focus.js","../../../assets/js/_object-fit-cover.js","../../../assets/js/nlc.js","../../../assets/js/base/_throttle.js","../../../assets/js/base/_fitvid.js"],"sourcesContent":["/**\n * This class fires events for dropdown menus\n *\n * - supports PointerEvents\n * - supports HoverIntent\n * - prevents following the first link on touch/keyboard click unless already opened\n * - deactivates when blurred for any event\n *\n * Use this by either passing callbacks.activate, callbacks:deactivate, * or by\n * listening for the dropdown:activate or dropdown:deactivate events on the\n * passed node\n *\n * Events Example:\n * ```\n * dropdownEvent(node);\n * node.addEventListener('dropdown:activate', () => {\n * // add dropdown classes\n * });\n * node.addEventListener('dropdown:deactivate', () => {\n * // remove dropdown classes\n * });\n * ```\n\n * Callbacks Example:\n * ```\n * dropdownEvent(node, {\n * activate: function() {\n * // add dropdown classes\n * },\n * deactivate: function() {\n * // remove dropdown classes\n * },\n * });\n * ```\n *\n * jQuery events example\n * ```\n * jQuery('selector').dropdownEvent().on('dropdown:activate', function() {\n * // add dropdown classes\n * }).on('dropdown:deactivate', function() {\n * // remove dropdown classes\n * });\n * ```\n *\n * jQuery callbacks example\n * ```\n * jQuery('selector').dropdownEvent({\n * activate: function() {\n * // add dropdown classes\n * },\n * deactivate: function() {\n * // remove dropdown classes\n * }\n * });\n * ```\n *\n * @class\n */\n\nexport class DropdownEvent {\n\t/**\n\t *\n\t * @param HTMLElement node\n\t * @param {Object} opts\n\t * @param {Integer} [opts.delay=200] - the hover intent delay on mouse events\n\t * @param {Function} opts.activate - the callback function for activate\n\t * @param {Function} opts.deactivate - the callback function for deactivate\n\t * @param {String} [opts.activateEvent=dropdown:activate] - the name of the activate event to listen to\n\t * @param {String} [opts.deactivateEvent=dropdown:deactivate] - the name of the deactivate event to listen to\n\t */\n\tconstructor(node, opts = {}) {\n\t\tthis.node = node;\n\t\tthis.opts = {\n\t\t\tdelay: 200,\n\t\t\tactivate: () => {},\n\t\t\tdeactivate: () => {},\n\t\t\tactivateEvent: 'dropdown:activate',\n\t\t\tdeactivateEvent: 'dropdown:deactivate',\n\t\t};\n\n\t\tfor (let opt in opts) {\n\t\t\tif (opts.hasOwnProperty(opt)) {\n\t\t\t\tthis.opts[opt] = opts[opt];\n\t\t\t}\n\t\t}\n\n\t\tthis.active = false;\n\t\tthis.enterTimeout = null;\n\t\tthis.leaveTimeout = null;\n\n\t\t// prevents the click event from following links (used by touch/keyboard handlers)\n\t\tconst preventClickEvent = function(e) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tthis.removeEventListener('click', preventClickEvent);\n\t\t}\n\n\t\t// activate if the event target is a child link\n\t\tconst maybeActivate = (e) => {\n\t\t\tif (this.active) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet target = e.target;\n\t\t\twhile(target.parentNode && target !== this.node) {\n\t\t\t\tif (target.tagName === 'A') {\n\t\t\t\t\ttarget.addEventListener('click', preventClickEvent);\n\t\t\t\t}\n\n\t\t\t\ttarget = target.parentNode;\n\t\t\t}\n\n\t\t\tthis.activate(e);\n\t\t}\n\n\t\t// activate on mouse enter and apply delay\n\t\tconst mouseenter = (e) => {\n\t\t\tif (typeof this.leaveTimeout === 'number') {\n\t\t\t\treturn window.clearTimeout(this.leaveTimeout);\n\t\t\t}\n\n\t\t\tthis.enterTimeout = setTimeout(() => {\n\t\t\t\tthis.activate(e);\n\t\t\t}, this.opts.delay);\n\t\t}\n\n\t\t// deactivate on mouse leave and apply delay\n\t\tconst mouseleave = (e) => {\n\t\t\tif (typeof this.enterTimeout === 'number') {\n\t\t\t\treturn window.clearTimeout(this.enterTimeout);\n\t\t\t}\n\n\t\t\tthis.leaveTimeout = window.setTimeout(() => {\n\t\t\t\tthis.deactivate(e);\n\t\t\t}, this.opts.delay);\n\t\t}\n\n\t\t// handle the touch start event\n\t\tconst touchstart = (e) => {\n\t\t\treturn maybeActivate(e);\n\t\t}\n\n\t\t// handle the keyup event\n\t\tconst keyup = (e) => {\n\t\t\tif ( 'enter' === e.key.toLowerCase() ) {\n\t\t\t\treturn maybeActivate(e);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\t// handle the pointer enter and route to touch/mouse event ( treats pen events as mouse )\n\t\tconst pointerenter = (e) => {\n\t\t\treturn 'touch' === e.pointerType ? touchstart(e) : mouseenter(e);\n\t\t}\n\n\t\t// handle the pointer leave and route to touch/mouse event ( treats pen events as mouse )\n\t\tconst pointerleave = (e) => {\n\t\t\treturn 'touch' === e.pointerType ? touchstart(e) : mouseleave(e);\n\t\t}\n\n\t\t// on captured blur detect if the event target is a child of this.node, if not, deactivate\n\t\tconst blur = () => {\n\t\t\tif ( ! this.active ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twindow.setTimeout(() => {\n\t\t\t\tlet target = document.activeElement;\n\t\t\t\twhile ( target && target.parentNode ) {\n\t\t\t\t\tif ( target === this.node ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\ttarget = target.parentNode;\n\t\t\t\t}\n\n\t\t\t\tthis.deactivate();\n\t\t\t}, 0);\n\t\t}\n\n\t\tif ( window.PointerEvent ) {\n\t\t\t// add pointer events\n\t\t\tthis.node.addEventListener('pointerenter', pointerenter);\n\t\t\tthis.node.addEventListener('pointerleave', pointerleave);\n\t\t} else {\n\t\t\t// no pointer events - use mouse/touch events directly\n\t\t\tthis.node.addEventListener('touchstart', touchstart);\n\t\t\tthis.node.addEventListener('mouseenter', mouseenter);\n\t\t\tthis.node.addEventListener('mouseleave', mouseleave);\n\t\t}\n\n\t\t// add keyup/blur events\n\t\tthis.node.addEventListener('keyup', keyup);\n\t\tthis.node.addEventListener('blur', blur, true); // capture\n\t}\n\n\t/**\n\t * Activates the dropdown and fires the callback/event\n\t *\n\t * @param {Object} e - passed along to the callback/event as detail\n\t */\n\tactivate(e = {}) {\n\t\tthis.active = true;\n\n\t\tif (typeof this.enterTimeout === 'number') {\n\t\t\twindow.clearTimeout(this.enterTimeout);\n\t\t\tthis.enterTimeout = null;\n\t\t}\n\n\t\tif (typeof this.opts.activate === 'function') {\n\t\t\tthis.opts.activate.call(this.node, e);\n\t\t}\n\n\t\tif (typeof this.opts.activateEvent === 'string') {\n\t\t\tthis.dispatchEvent(this.opts.activateEvent);\n\t\t}\n\t}\n\n\t/**\n\t * Deactivates the dropdown and fires the callback/event\n\t *\n\t * @param {Object} e - passed along to the callback/event as detail\n\t */\n\tdeactivate(e = {}) {\n\t\tthis.active = false;\n\n\t\tif (typeof this.leaveTimeout === 'number') {\n\t\t\twindow.clearTimeout(this.leaveTimeout);\n\t\t\tthis.leaveTimeout = null;\n\t\t}\n\n\t\tif (typeof this.opts.deactivate === 'function') {\n\t\t\tthis.opts.deactivate.call(this.node, e);\n\t\t}\n\n\t\tif (typeof this.opts.deactivateEvent === 'string') {\n\t\t\tthis.dispatchEvent(this.opts.deactivateEvent);\n\t\t}\n\t}\n\n\tdispatchEvent(eventName, node = this.node) {\n\t\tlet event;\n\t\tif (typeof window.Event === 'function') {\n\t\t\tevent = new Event(eventName);\n\t\t} else {\n\t\t\tevent = document.createEvent('Event');\n\t\t\tevent.initEvent(eventName, true, false);\n\t\t}\n\n\t\tnode.dispatchEvent(event);\n\t}\n}\n\n/**\n * This is a factory for the DropdownEvent class that supports nodelists/arrays/selectors\n *\n * @param {HTMLElement|String|NodeList|Array} node\n * @param {opts} opts - see DropdownEvent\n * @return mixed DropdownEvent|Array|false\n *\n * @uses DropdownEvent\n * @uses Array.from\n * @uses Array.isArray\n */\nexport function dropdownEvent(node, opts = {}) {\n\tif (node instanceof HTMLElement) {\n\t\treturn new DropdownEvent(node, opts);\n\t}\n\n\tconst nodes = (typeof node === 'string') ? Array.from(document.querySelectorAll(node)) : (node.length) ? Array.from(node) : [];\n\n\tif (Array.isArray(nodes)) {\n\t\treturn nodes.map((n) => new DropdownEvent(n, opts));\n\t}\n\n\treturn false;\n}\n\n/**\n * Add a jQuery function for those who prefer that way\n */\nif (typeof window.jQuery === 'function') {\n\twindow.jQuery.fn.dropdownEvent = function(opts) {\n\t\treturn this.each(function() {\n\t\t\tconst $this = window.jQuery(this);\n\t\t\t$this.data('dropdownEvent', new DropdownEvent(this, opts));\n\t\t});\n\t};\n}\n\nexport default dropdownEvent;\n","export function children( node, selector = null ) {\n\tlet children = Array.from( node.children );\n\n\tif ( selector ) {\n\t\tchildren = children.filter( child => child.matches( selector ) );\n\t}\n\n\treturn children;\n}\n\nexport function focusable( node ) {\n\tconst focusableNode = node.querySelector( [\n\t\t'a[href]',\n\t\t'[contenteditable]',\n\t\t'input:not([disabled])',\n\t\t'select:not([disabled])',\n\t\t'button:not([disabled])',\n\t\t'textarea:not([disabled])',\n\t\t'[tabIndex]:not([tabIndex=\"-1\"])',\n\t].join(', ') );\n\n\tif ( focusableNode ) {\n\t\tfocusableNode.focus();\n\t}\n\n\treturn focusableNode;\n}\n","import dropdownEvent from './base/_dropdownEvent';\nimport { children, focusable } from './base/_traverse';\nimport { afterTransition } from './base/_effects';\n\nclass Navigation {\n\tconstructor() {\n\t\tthis.header = document.querySelector('.header');\n\n\t\tif ( ! this.header ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.opened = null;\n\t\tthis.bodyThreshold = 10;\n\t\tthis.activeItemClass = 'nav__menu-item--active';\n\n\t\tthis.headerOpenedClass = 'header--open';\n\t\tthis.searchOpenedClass = 'header--open-search';\n\t\tthis.menuOpenedClass = 'header--open-menu';\n\n\t\tthis.desktopSearchToggle = this.header.querySelector('.header__search--desktop .header__search-toggle');\n\t\tthis.searchForm = this.header.querySelector( '.header__search-form' );\n\t\tthis.headerContent = this.header.querySelector( '.header__content' );\n\n\t\t// click handler delegation\n\t\tthis.header.addEventListener( 'click', (e) => {\n\t\t\tlet { target } = e;\n\n\t\t\twhile ( target && target.parentNode ) {\n\t\t\t\t// open the menu\n\t\t\t\tif ( target.matches( '.header__menu-toggle' ) ) {\n\t\t\t\t\treturn this.toggle( 'menu' );\n\t\t\t\t}\n\n\t\t\t\t// open the search\n\t\t\t\tif ( target.matches( '.header__search-toggle' ) ) {\n\t\t\t\t\treturn this.toggle( 'search' );\n\t\t\t\t}\n\n\t\t\t\t// close the search on desktop\n\t\t\t\tif ( target.matches( '.header__search-close' ) ) {\n\t\t\t\t\treturn this.close();\n\t\t\t\t}\n\n\t\t\t\t// toggle a submenu on mobile\n\t\t\t\tif ( target.matches('.nav__menu-toggler') ) {\n\t\t\t\t\treturn target.parentNode.classList.toggle( this.activeItemClass );\n\t\t\t\t}\n\n\t\t\t\ttarget = target.parentNode;\n\t\t\t}\n\t\t} );\n\n\t\tconst dropdownActivate = (e) => {\n\t\t\tconst { target } = e;\n\n\t\t\t// dont bother with mobile or if it's already active\n\t\t\tif ( 'desktop' !== this.getMode() || target.classList.contains( this.activeItemClass ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttarget.classList.add(this.activeItemClass);\n\n\t\t\tconst subMenu = children(target, '.nav__menu').shift();\n\n\t\t\tif ( subMenu ) {\n\t\t\t\t// prevent the menu from being offscreen\n\t\t\t\tlet rect = subMenu.getBoundingClientRect();\n\n\t\t\t\tif ( rect.left < this.bodyThreshold ) {\n\t\t\t\t\t// off left\n\t\t\t\t\tsubMenu.style.marginLeft = `${rect.left + this.bodyThreshold }px`;\n\t\t\t\t} else if ( rect.right > document.body.clientWidth - this.bodyThreshold ) {\n\t\t\t\t\t// off right\n\t\t\t\t\tsubMenu.style.marginLeft = `${(rect.right - document.body.clientWidth + this.bodyThreshold ) * -1}px`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst dropdownDeactivate = (e) => {\n\t\t\tconst { target } = e;\n\n\t\t\t// dont bother with mobile or if it's not active\n\t\t\tif ( 'desktop' !== this.getMode() || ! target.classList.contains( this.activeItemClass ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttarget.classList.remove(this.activeItemClass);\n\t\t\tconst subMenu = children(target, '.nav__menu').shift();\n\n\t\t\tif ( subMenu ) {\n\t\t\t\tsubMenu.style.marginLeft = '';\n\t\t\t}\n\t\t}\n\n\t\tthis.dropdowns = Array.from( this.header.querySelectorAll( '.nav__menu-item--has-children' ) ).map( (node) => {\n\t\t\tnode.addEventListener('dropdown:activate', dropdownActivate);\n\t\t\tnode.addEventListener('dropdown:deactivate', dropdownDeactivate);\n\t\t\treturn dropdownEvent(node);\n\t\t} );\n\t}\n\n\tgetMode() {\n\t\treturn window.matchMedia('(min-width: 960px)').matches ? 'desktop' : 'mobile';\n\t}\n\n\topen( which ) {\n\t\tthis.opened = which;\n\t\tthis.header.classList.add( this.headerOpenedClass );\n\n\t\tif ( 'mobile' === this.getMode() ) {\n\t\t\tdocument.body.style.overflow = 'hidden';\n\t\t}\n\n\t\tswitch( which ) {\n\t\t\tcase 'menu':\n\t\t\t\tthis.header.classList.add( this.menuOpenedClass );\n\t\t\t\tthis.header.classList.remove( this.searchOpenedClass );\n\t\t\tbreak;\n\t\t\tcase 'search':\n\t\t\t\tthis.header.classList.add( this.searchOpenedClass );\n\t\t\t\tthis.header.classList.remove( this.menuOpenedClass );\n\t\t\t\tafterTransition( this.header, () => focusable( this.searchForm ) );\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tclose() {\n\t\tthis.opened = null;\n\t\t[ this.headerOpenedClass, this.searchOpenedClass, this.menuOpenedClass ].forEach( className => this.header.classList.remove( className ) );\n\t\tdocument.body.style.overflow = '';\n\n\t\tif ( this.desktopSearchToggle && 'desktop' === this.getMode() ) {\n\t\t\tthis.desktopSearchToggle.focus();\n\t\t}\n\t}\n\n\ttoggle( which = 'menu' ) {\n\t\treturn this.opened === which ? this.close() : this.open( which );\n\t}\n}\n\nexport default Navigation;\n","/**\n * Add a slight delay to request animation frame\n *\n * @param {function} fn\n */\nexport function requestAnimationFrame( fn ) {\n\treturn window.requestAnimationFrame( () => window.requestAnimationFrame( fn ) );\n}\n\n/**\n * Execute a function after the transition has ended - once\n *\n * @param {HTMLElement} node\n * @param {function} fn\n * @param {string} the property to transition after in case transitions are different speeds\n */\nexport function afterTransition( node, fn, property = null ) {\n\tconst transitionend = (e) => {\n\t\tif ( e.target === node ) {\n\t\t\tif ( property && e.propertyName !== property ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tnode.removeEventListener( 'transitionend', transitionend );\n\t\tfn(e);\n\t}\n\n\tnode.addEventListener( 'transitionend', transitionend );\n}\n","class Footer {\n\n}\n\nexport default Footer;\n","export class Share {\n\tconstructor( node ) {\n\t\tthis.node = node;\n\n\t\tthis.openedClass = 'share--open';\n\t\tthis.opened = this.node.classList.contains(this.openedClass);\n\n\t\tthis.node.addEventListener( 'click', (e) => {\n\t\t\tlet { target } = e;\n\n\t\t\twhile( target && target !== this.node ) {\n\t\t\t\tif ( target.classList.contains( 'share__toggler' ) ) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\treturn this.toggle();\n\t\t\t\t}\n\n\t\t\t\ttarget = target.parentNode;\n\t\t\t}\n\t\t});\n\t}\n\n\topen() {\n\t\tthis.opened = true;\n\t\tthis.node.classList.add( this.openedClass );\n\t}\n\n\tclose() {\n\t\tthis.opened = false;\n\t\tthis.node.classList.remove( this.openedClass );\n\t}\n\n\ttoggle() {\n\t\treturn this.opened ? this.close() : this.open();\n\t}\n}\n\nexport function factory( selector = '.share' ) {\n\tif ( typeof selector === 'string' ) {\n\t\treturn Array.from( document.querySelectorAll( selector ) ).map( node => new Share( node ) );\n\t}\n\n\tif ( selector instanceof HTMLElement ) {\n\t\treturn new Share( selector );\n\t}\n\n\treturn [];\n}\n","class FocusWithin {\n\tconstructor(node, className) {\n\t\tthis.node = node;\n\t\tthis.className = className;\n\t\tthis.focused = false;\n\n\t\t// add events with capturing cause focus/blur don't bubble\n\t\tthis.node.addEventListener('focus', this.focus.bind(this), true);\n\t\tthis.node.addEventListener('blur', this.blur.bind(this), true);\n\t}\n\n\ttoggle() {\n\t\treturn this.focused ? this.blur() : this.focus();\n\t}\n\n\tfocus() {\n\t\tthis.focused = true;\n\t\tthis.node.classList.add(this.className);\n\n\t\tthis.node.dispatchEvent(new CustomEvent('site:focus-within:focus'));\n\t}\n\n\tblur() {\n\t\tthis.focused = false;\n\t\tthis.node.classList.remove(this.className);\n\n\t\tthis.node.dispatchEvent(new CustomEvent('site:focus-within:blur'));\n\t}\n}\n\nexport default function ( node, className = 'focus-within' ) {\n\t// pass dom element directly\n\tif ( node instanceof HTMLElement ) {\n\t\treturn new FocusWithin(node, className);\n\t}\n\n\t// pass selector\n\tif ( typeof node === 'string' ) {\n\t\tnode = document.querySelectorAll(node);\n\t}\n\n\t// convert to Array if not an array\n\tif (!Array.isArray(node)) {\n\t\tnode = Array.from(node);\n\t}\n\n\t// convert to FocusWithin objects\n\treturn node.map((n) => new FocusWithin(n, className));\n}\n","class Breadcrumb {\n\tconstructor( node, opts = {} ) {\n\t\tthis.node = node;\n\t\tthis.opts = Object.assign( {\n\t\t\ttogglerClass : 'breadcrumb__mobile-toggle',\n\t\t\topenClass : 'breadcrumb--open',\n\t\t\titemTogglerClass: 'breadcrumb__toggler',\n\t\t\titemClass : 'breadcrumb__item',\n\t\t\topenItemClass : 'breadcrumb__item--open',\n\t\t}, opts );\n\t\tthis.openItem = null;\n\n\t\tthis.onClick = this.onClick.bind( this );\n\t\tthis.onBlur = this.onBlur.bind( this );\n\n\t\tthis.node.addEventListener( 'click', this.onClick );\n\t\tdocument.body.addEventListener( 'click', this.onBlur );\n\t}\n\n\tonClick( e ) {\n\t\tlet node = e.target;\n\n\t\twhile ( node && node !== this.node ) {\n\t\t\tif ( node.classList.contains( this.opts.togglerClass ) ) {\n\t\t\t\tthis.node.classList.toggle( this.opts.openClass );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( node.classList.contains( this.opts.itemTogglerClass ) ) {\n\t\t\t\tlet item = node.closest( `.${this.opts.itemClass}` );\n\n\t\t\t\tif ( item ) {\n\t\t\t\t\tif ( item.classList.contains( this.opts.openItemClass ) ) {\n\t\t\t\t\t\titem.classList.remove( this.opts.openItemClass );\n\t\t\t\t\t\tthis.openItem = null;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( this.openItem ) {\n\t\t\t\t\t\t\tthis.openItem.classList.remove( this.opts.openItemClass );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.classList.add( this.opts.openItemClass );\n\t\t\t\t\t\tthis.openItem = item;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tnode = node.parentNode;\n\t\t}\n\t}\n\n\tonBlur( e ) {\n\t\tif ( ! this.openItem ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet node = e.target;\n\n\t\twhile( node && node.parentNode ) {\n\t\t\tif ( node === this.openItem ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tnode = node.parentNode;\n\t\t}\n\n\t\tthis.openItem.classList.remove( this.opts.openItemClass );\n\t}\n}\n\nexport default Breadcrumb;\n","const allSelectors = [];\n\nexport default function( selector ) {\n\tallSelectors.push( selector );\n\tlet selectors = allSelectors.join(',');\n\n\tif ( allSelectors.length > 1 ) {\n\t\treturn;\n\t}\n\n\tconst ontouchstart = (e) => {\n\t\tlet node = e.target;\n\n\t\twhile ( node && node.parentNode ) {\n\t\t\tif ( node.matches( selectors ) ) {\n\t\t\t\tif ( node.dataset.focused ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tnode.addEventListener( 'click', onclick );\n\t\t\t}\n\n\t\t\tnode = node.parentNode;\n\t\t}\n\t}\n\n\tconst onclick = ( e ) => {\n\t\tlet node = e.target;\n\n\t\twhile ( node && node.parentNode ) {\n\t\t\tif ( node.matches( selectors ) ) {\n\t\t\t\tnode.removeEventListener( 'click', onclick );\n\n\t\t\t\tif ( node.dataset.focused ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( e.preventDefault ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tnode.dataset.focused = '1';\n\t\t\t\treturn node.focus();\n\t\t\t}\n\n\t\t\tnode = node.parentNode;\n\t\t}\n\t}\n\n\tconst onblur = ( e ) => {\n\t\tlet node = e.target;\n\n\t\twhile ( node && node.parentNode ) {\n\t\t\tif ( node.dataset.focused ) {\n\t\t\t\tdelete node.dataset.focused;\n\t\t\t}\n\n\t\t\tnode = node.parentNode;\n\t\t}\n\t}\n\n\tdocument.addEventListener( 'blur', onblur, true );\n\tdocument.addEventListener( 'touchstart', ontouchstart );\n}\n","export default function( nodes, img = 'img', position = 'center' ) {\n\tconsole.log( nodes );\n\tif ( typeof nodes === 'string' ) {\n\t\tnodes = Array.from( document.querySelectorAll( nodes ) );\n\t}\n\n\tconsole.log( nodes );\n\n\tif ( ! nodes.length ) {\n\t\treturn;\n\t}\n\n\tfor ( let i = 0, nodesLength = nodes.length; i < nodesLength; i++ ) {\n\t\tlet imgNode = nodes[i].querySelector( img );\n\n\t\tconsole.log( nodes[i], imgNode );\n\n\t\tif ( ! imgNode ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tnodes[i].style.backgroundPosition = position;\n\t\tnodes[i].style.backgroundSize = 'cover';\n\t\tnodes[i].style.backgroundImage = `url(${imgNode.currentSrc || imgNode.src})`;\n\t\timgNode.style.display = 'none';\n\t}\n}\n","import Navigation from './_navigation.js';\nimport Footer from './_footer.js';\nimport { factory as share } from './_share.js';\nimport throttle from './base/_throttle.js';\nimport focusWithin from './base/_focus-within.js';\nimport Breadcrumb from './_breadcrumb.js';\nimport touchFocus from './_touch-focus.js';\nimport objectFitCover from './_object-fit-cover.js';\nimport fitvid from './base/_fitvid.js';\n\nclass NLC {\n\tconstructor() {\n\t\tdocument.addEventListener( 'DOMContentLoaded', this.ready.bind( this ) );\n\t\twindow.addEventListener( 'resize', throttle( this.resize.bind( this ), 25 ) );\n\t\tthis.resize();\n\t}\n\n\tready() {\n\t\tthis.navigation = new Navigation();\n\t\tthis.footer = new Footer();\n\t\tthis.shares = share();\n\t\tthis.breadcrumbs = Array.from( document.querySelectorAll( '.breadcrumb' ) ).map( node => new Breadcrumb( node ) );\n\t\tthis.notices();\n\n\t\tfocusWithin( 'label, form, fieldset' );\n\t\ttouchFocus( '.kard' );\n\n\t\tif ( ! ( 'objectFit' in document.documentElement.style ) ) {\n\t\t\tobjectFitCover( '.page-header__image', 'img' );\n\t\t\tobjectFitCover( '.kard--bg-image .kard__image', 'img' );\n\t\t\tobjectFitCover( '.tabs-feature__media', 'img' );\n\t\t}\n\n\t\tfitvid();\n\t}\n\n\tresize() {\n\t\t// using this to allow css to know if it should exclude the scroll bar in calc's\n\t\tif ( window.innerWidth === document.body.clientWidth ) {\n\t\t\tdocument.documentElement.classList.remove( 'has-scrollbar' );\n\t\t} else {\n\t\t\tdocument.documentElement.classList.add( 'has-scrollbar' );\n\t\t}\n\t}\n\n\t/**\n\t * Add a dismiss button to any notice\n\t */\n\tnotices() {\n\t\tconst notices = Array.from( document.querySelectorAll( '.notice' ) );\n\n\t\tif ( ! notices.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotices.forEach( notice => {\n\t\t\tconst button = document.createElement('button');\n\t\t\tbutton.type = 'button';\n\t\t\tbutton.className = 'notice__dismiss';\n\t\t\tbutton.insertAdjacentHTML( 'beforeend', '' );\n\t\t\tbutton.addEventListener('click', () => {\n\t\t\t\t// remove site and logout from the url history\n\t\t\t\tlet url = location.origin + location.pathname;\n\n\t\t\t\tconst params = new URLSearchParams( location.search );\n\t\t\t\t[ 'Site', 'logout' ].forEach( param => params.delete( param ) );\n\t\t\t\tconst queryString = params.toString();\n\n\t\t\t\tif ( queryString.length ) {\n\t\t\t\t\turl += `?${queryString}`;\n\t\t\t\t}\n\n\t\t\t\twindow.history.replaceState( {}, null, url );\n\n\t\t\t\t// remove the notice node\n\t\t\t\tnotice.parentNode.removeChild( notice );\n\t\t\t} );\n\t\t\tnotice.appendChild( button );\n\t\t} );\n\t}\n}\n\nexport default new NLC;\n","// import debug from 'bows/dist/bows.min.js';\n\n// const log = debug('throttle');\n\nexport default function (fn, time = 50) {\n\tlet timer = null;\n\n\t// log(fn, time);\n\n\tfunction throttledFn(...args) {\n\t\tif (!timer) {\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tfn(...args);\n\t\t\t\ttimer = null;\n\t\t\t}, time)\n\t\t}\n\t}\n\n\tthrottledFn.cancel = () => {\n\t\tclearTimeout(timer);\n\t\ttimer = null;\n\t}\n\n\treturn throttledFn;\n}\n","/**\n * this implementation of fitvid doesn't force items to 16/9. It measures them and then keeps the ratio unique per embed\n *\n * @var selectors (string|array) additional selectors search for in the DOM\n * @return nodes - array of matched items\n */\n\nexport default function(selectors) {\n\tconst config = {\n\t\tselectors: [\n\t\t\t'iframe[src*=\"player.vimeo.com\"]',\n\t\t\t'iframe[src*=\"youtube.com\"]',\n\t\t\t'iframe[src*=\"youtube-nocookie.com\"]',\n\t\t\t'object',\n\t\t\t'embed'\n\t\t]\n\t};\n\n\tif ( selectors ) {\n\t\tif ( !Array.isArray(selectors) ) {\n\t\t\tselectors = [selectors];\n\t\t}\n\t\tconfig.selectors = config.selectors.concat(opts.selectors).filter(( val, index, arr ) => arr.indexOf(val) === index );\n\t}\n\n\tconst nodes = Array.prototype.slice.call( document.querySelectorAll( config.selectors.join(',') ) );\n\n\tif ( nodes.length > 0 ) {\n\t\tnodes.forEach((node) => {\n\t\t\tif ( node.getAttribute('data-fitvid' ) || node.closest('.wp-has-aspect-ratio') ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst wrapper = document.createElement('div');\n\t\t\tconst computed = window.getComputedStyle(node);\n\t\t\tconst height = parseInt( computed.height, 10 );\n\t\t\tconst width = parseInt( computed.width, 10 );\n\t\t\tconst ratio = ( (height > 0 && width > 0) ? height / width : 9 / 16 ) * 100;\n\n\t\t\twrapper.className = 'fitvid';\n\t\t\twrapper.style.width = '100%';\n\t\t\twrapper.style.height = 0;\n\t\t\twrapper.style.position = 'relative';\n\t\t\twrapper.style.paddingTop = `${ratio}%`;\n\n\t\t\tnode.style.position = 'absolute';\n\t\t\tnode.style.top = 0;\n\t\t\tnode.style.left = 0;\n\t\t\tnode.style.width = '100%';\n\t\t\tnode.style.height = '100%';\n\t\t\tnode.setAttribute('data-fitvid', ratio);\n\t\t\tnode.parentNode.insertBefore(wrapper, node);\n\n\t\t\twrapper.appendChild(node);\n\t\t});\n\t}\n\n\treturn nodes;\n}\n"],"names":["DropdownEvent","node","opts","let","opt","this","delay","activate","deactivate","activateEvent","deactivateEvent","hasOwnProperty","active","enterTimeout","leaveTimeout","const","preventClickEvent","e","preventDefault","stopPropagation","removeEventListener","maybeActivate","target","parentNode","tagName","addEventListener","mouseenter","window","clearTimeout","setTimeout","mouseleave","touchstart","PointerEvent","pointerType","key","toLowerCase","document","activeElement","children","selector","Array","from","filter","child","matches","call","dispatchEvent","prototype","eventName","event","Event","createEvent","initEvent","jQuery","fn","dropdownEvent","each","data","Navigation","header","querySelector","opened","bodyThreshold","activeItemClass","headerOpenedClass","searchOpenedClass","menuOpenedClass","desktopSearchToggle","searchForm","headerContent","toggle","close","classList","dropdownActivate","getMode","contains","add","subMenu","shift","rect","getBoundingClientRect","left","style","marginLeft","right","body","clientWidth","dropdownDeactivate","remove","dropdowns","querySelectorAll","map","HTMLElement","nodes","isArray","n","matchMedia","open","which","overflow","property","transitionend","propertyName","afterTransition","focusableNode","join","focus","forEach","className","Footer","Share","openedClass","FocusWithin","focused","bind","blur","CustomEvent","Breadcrumb","Object","assign","togglerClass","openClass","itemTogglerClass","itemClass","openItemClass","openItem","onClick","onBlur","item","closest","allSelectors","objectFitCover","img","position","console","log","length","i","nodesLength","imgNode","backgroundPosition","backgroundSize","backgroundImage","currentSrc","src","display","NLC","ready","time","timer","throttledFn","apply","args","cancel","throttle","resize","navigation","footer","shares","breadcrumbs","notices","push","selectors","onclick","dataset","touchFocus","documentElement","config","concat","val","index","arr","indexOf","slice","getAttribute","wrapper","createElement","computed","getComputedStyle","height","parseInt","width","ratio","paddingTop","top","setAttribute","insertBefore","appendChild","fitvid","innerWidth","notice","button","type","insertAdjacentHTML","url","location","origin","pathname","params","URLSearchParams","search","param","delete","queryString","toString","history","replaceState","removeChild"],"mappings":"2DA2DO,IAAMA,EAWZ,SAAYC,EAAMC,cAUjB,IAAKC,IAAIC,oBAVe,CAAA,GACxBC,KAAKJ,KAAOA,EACZI,KAAKH,KAAO,CACXI,MAAO,IACPC,SAAU,WAAQ,EAClBC,WAAY,WAAQ,EACpBC,cAAe,oBACfC,gBAAiB,uBAGFR,EACXA,EAAKS,eAAeP,KACvBC,KAAKH,KAAKE,GAAOF,EAAKE,IAIxBC,KAAKO,QAAe,EACpBP,KAAKQ,aAAe,KACpBR,KAAKS,aAAe,KAGpBC,IAAMC,EAAoB,SAASC,GAClCA,EAAEC,iBACFD,EAAEE,kBACFd,KAAKe,oBAAoB,QAASJ,EAClC,EAGKK,EAAgB,SAACJ,GACtB,IAAIZ,EAAKO,OAAT,CAKA,IADAT,IAAImB,EAASL,EAAEK,OACTA,EAAOC,YAAcD,IAAWjB,EAAKJ,MACnB,MAAnBqB,EAAOE,SACVF,EAAOG,iBAAiB,QAAST,GAGlCM,EAASA,EAAOC,WAGjBlB,EAAKE,SAASU,EAXb,CAYD,EAGKS,EAAa,SAACT,GACnB,GAAiC,iBAAtBZ,EAAKS,aACf,OAAOa,OAAOC,aAAavB,EAAKS,cAGjCT,EAAKQ,aAAegB,uBACnBxB,EAAKE,SAASU,EAClB,GAAMZ,EAAKH,KAAKI,MACb,EAGKwB,EAAa,SAACb,GACnB,GAAiC,iBAAtBZ,EAAKQ,aACf,OAAOc,OAAOC,aAAavB,EAAKQ,cAGjCR,EAAKS,aAAea,OAAOE,uBAC1BxB,EAAKG,WAAWS,EACpB,GAAMZ,EAAKH,KAAKI,MACb,EAGKyB,EAAa,SAACd,GACnB,OAAOI,EAAcJ,EACrB,EAyCIU,OAAOK,cAEX3B,KAAKJ,KAAKwB,iBAAiB,gBA/BP,SAACR,GACrB,MAAO,UAAYA,EAAEgB,YAAcF,EAAWd,GAAKS,EAAWT,EAC9D,IA8BAZ,KAAKJ,KAAKwB,iBAAiB,gBA3BP,SAACR,GACrB,MAAO,UAAYA,EAAEgB,YAAcF,EAAWd,GAAKa,EAAWb,EAC9D,MA4BAZ,KAAKJ,KAAKwB,iBAAiB,aAAcM,GACzC1B,KAAKJ,KAAKwB,iBAAiB,aAAcC,GACzCrB,KAAKJ,KAAKwB,iBAAiB,aAAcK,IAI1CzB,KAAKJ,KAAKwB,iBAAiB,SAlDb,SAACR,GACd,MAAK,UAAYA,EAAEiB,IAAIC,cACfd,EAAcJ,GAGf,IACP,IA6CDZ,KAAKJ,KAAKwB,iBAAiB,QAhCjB,WACFpB,EAAKO,QAIZe,OAAOE,YAAU,WAEhB,IADA1B,IAAImB,EAASc,SAASC,cACdf,GAAUA,EAAOC,YAAa,CACrC,GAAKD,IAAWjB,EAAKJ,KACpB,OAGDqB,EAASA,EAAOC,UAChB,CAEDlB,EAAKG,YACL,GAAE,EACH,IAewC,EAC1C,ECnMM,SAAS8B,EAAUrC,EAAMsC,kBAAW,MAC1CpC,IAAImC,EAAWE,MAAMC,KAAMxC,EAAKqC,UAMhC,OAJKC,IACJD,EAAWA,EAASI,QAAQ,SAAAC,GAAS,OAAAA,EAAMC,QAASL,EAAQ,KAGtDD,CACR,aDkMC/B,SAAQ,SAACU,kBAAI,CAAA,GACZZ,KAAKO,QAAS,EAEmB,iBAAtBP,KAAKQ,eACfc,OAAOC,aAAavB,KAAKQ,cACzBR,KAAKQ,aAAe,MAGa,mBAAvBR,KAAKH,KAAKK,UACpBF,KAAKH,KAAKK,SAASsC,KAAKxC,KAAKJ,KAAMgB,GAGG,iBAA5BZ,KAAKH,KAAKO,eACpBJ,KAAKyC,cAAczC,KAAKH,KAAKO,cAE/B,cAOAD,WAAU,SAACS,kBAAI,CAAA,GACdZ,KAAKO,QAAS,EAEmB,iBAAtBP,KAAKS,eACfa,OAAOC,aAAavB,KAAKS,cACzBT,KAAKS,aAAe,MAGe,mBAAzBT,KAAKH,KAAKM,YACpBH,KAAKH,KAAKM,WAAWqC,KAAKxC,KAAKJ,KAAMgB,GAGG,iBAA9BZ,KAAKH,KAAKQ,iBACpBL,KAAKyC,cAAczC,KAAKH,KAAKQ,gBAE/B,EAEAV,EAAA+C,UAAAD,cAAA,SAAcE,EAAW/C,GACxBE,IAAI8C,OADwB,IAAAhD,IAAAA,EAAGI,KAAKJ,MAER,mBAAjB0B,OAAOuB,MACjBD,EAAQ,IAAIC,MAAMF,IAElBC,EAAQb,SAASe,YAAY,UACvBC,UAAUJ,GAAW,GAAM,GAGlC/C,EAAK6C,cAAcG,EACpB,EA+B4B,mBAAlBtB,OAAO0B,SACjB1B,OAAO0B,OAAOC,GAAGC,cAAgB,SAASrD,GACzC,OAAOG,KAAKmD,MAAK,WACF7B,OAAO0B,OAAOhD,MACtBoD,KAAK,gBAAiB,IAAIzD,EAAcK,KAAMH,GACvD,GACA,GE5RA,IAAMwD,EACL,sBAGC,GAFArD,KAAKsD,OAASvB,SAASwB,cAAc,WAE9BvD,KAAKsD,OAAZ,CAIAtD,KAAKwD,OAAS,KACdxD,KAAKyD,cAAgB,GACrBzD,KAAK0D,gBAAkB,yBAEvB1D,KAAK2D,kBAAoB,eACzB3D,KAAK4D,kBAAoB,sBACzB5D,KAAK6D,gBAAkB,oBAEvB7D,KAAK8D,oBAAsB9D,KAAKsD,OAAOC,cAAc,mDACrDvD,KAAK+D,WAAa/D,KAAKsD,OAAOC,cAAe,wBAC7CvD,KAAKgE,cAAgBhE,KAAKsD,OAAOC,cAAe,oBAGhDvD,KAAKsD,OAAOlC,iBAAkB,SAAO,SAAGR,GAGvC,IAFM,IAAaK,EAAAL,EAAAK,OAEXA,GAAUA,EAAOC,YAAa,CAErC,GAAKD,EAAOsB,QAAS,wBACpB,OAAOvC,EAAKiE,OAAQ,QAIrB,GAAKhD,EAAOsB,QAAS,0BACpB,OAAOvC,EAAKiE,OAAQ,UAIrB,GAAKhD,EAAOsB,QAAS,yBACpB,OAAOvC,EAAKkE,QAIb,GAAKjD,EAAOsB,QAAQ,sBACnB,OAAOtB,EAAOC,WAAWiD,UAAUF,OAAQjE,EAAK0D,iBAGjDzC,EAASA,EAAOC,UAChB,CACJ,IAEER,IAAM0D,EAAmB,SAACxD,GACjB,IAAaK,EAAAL,EAAAK,OAGrB,GAAK,YAAcjB,EAAKqE,YAAapD,EAAOkD,UAAUG,SAAUtE,EAAK0D,iBAArE,CAIAzC,EAAOkD,UAAUI,IAAIvE,EAAK0D,iBAE1BhD,IAAM8D,EAAUvC,EAAShB,EAAQ,cAAcwD,QAE/C,GAAKD,EAAU,CAEd1E,IAAI4E,EAAOF,EAAQG,wBAEdD,EAAKE,KAAO5E,EAAKyD,cAErBe,EAAQK,MAAMC,WAAgBJ,EAAKE,KAAO5E,EAAKyD,mBACpCiB,EAAKK,MAAQhD,SAASiD,KAAKC,YAAcjF,EAAKyD,gBAEzDe,EAAQK,MAAMC,YAAkF,GAAjEJ,EAAKK,MAAQhD,SAASiD,KAAKC,YAAcjF,EAAKyD,eAAoB,KAElG,CAjBA,CAkBD,EAEKyB,EAAqB,SAACtE,GACnB,IAAaK,EAAAL,EAAAK,OAGrB,GAAK,YAAcjB,EAAKqE,WAAepD,EAAOkD,UAAUG,SAAUtE,EAAK0D,iBAAvE,CAIAzC,EAAOkD,UAAUgB,OAAOnF,EAAK0D,iBAC7BhD,IAAM8D,EAAUvC,EAAShB,EAAQ,cAAcwD,QAE1CD,IACJA,EAAQK,MAAMC,WAAa,GAN3B,CAQD,EAED9E,KAAKoF,UAAYjD,MAAMC,KAAMpC,KAAKsD,OAAO+B,iBAAkB,kCAAoCC,KAAG,SAAG1F,GAGpG,OAFAA,EAAKwB,iBAAiB,oBAAqBgD,GAC3CxE,EAAKwB,iBAAiB,sBAAuB8D,GFwKzC,SAAuBtF,EAAMC,GACnC,kBAD0C,CAAA,GACtCD,aAAgB2F,YACnB,OAAO,IAAI5F,EAAcC,EAAMC,GAGhCa,IAAM8E,EAAyB,iBAAT5F,EAAqBuC,MAAMC,KAAKL,SAASsD,iBAAiBzF,IAAUA,EAAW,OAAIuC,MAAMC,KAAKxC,GAAQ,GAE5H,QAAIuC,MAAMsD,QAAQD,IACVA,EAAMF,KAAG,SAAEI,GAAC,OAAK,IAAI/F,EAAc+F,EAAG7F,EAAI,GAInD,CEnLUqD,CAActD,EACxB,GAzFG,CA0FF,EAEAyD,EAAAX,UAAA2B,QAAA,WACC,OAAO/C,OAAOqE,WAAW,sBAAsBpD,QAAU,UAAY,QACtE,cAEAqD,KAAI,SAAEC,cAQL,OAPA7F,KAAKwD,OAASqC,EACd7F,KAAKsD,OAAOa,UAAUI,IAAKvE,KAAK2D,mBAE3B,WAAa3D,KAAKqE,YACtBtC,SAASiD,KAAKH,MAAMiB,SAAW,UAGxBD,GACP,IAAK,OACJ7F,KAAKsD,OAAOa,UAAUI,IAAKvE,KAAK6D,iBAChC7D,KAAKsD,OAAOa,UAAUgB,OAAQnF,KAAK4D,mBACpC,MACA,IAAK,SACJ5D,KAAKsD,OAAOa,UAAUI,IAAKvE,KAAK4D,mBAChC5D,KAAKsD,OAAOa,UAAUgB,OAAQnF,KAAK6D,iBCzGhC,SAA0BjE,EAAMqD,EAAI8C,kBAAW,MACrDrF,IAAMsF,EAAgB,SAACpF,GACjBA,EAAEK,SAAWrB,GACZmG,GAAYnF,EAAEqF,eAAiBF,IAKrCnG,EAAKmB,oBAAqB,gBAAiBiF,GAC3C/C,EAAGrC,GACH,EAEDhB,EAAKwB,iBAAkB,gBAAiB4E,EACzC,CD6FIE,CAAiBlG,KAAKsD,QAAQ,WAAA,ODhHP1D,ECgHwBI,EAAK+D,YD/GjDoC,EAAgBvG,EAAK2D,cAAe,CACzC,UACA,oBACA,wBACA,yBACA,yBACA,2BACA,mCACC6C,KAAK,SAGND,EAAcE,QAGRF,EAfD,IAAoBvG,EACpBuG,CC+G2D,IAGjE,EAEA9C,EAAAX,UAAAwB,MAAA,sBACClE,KAAKwD,OAAS,KACd,CAAExD,KAAK2D,kBAAmB3D,KAAK4D,kBAAmB5D,KAAK6D,iBAAkByC,SAAO,SAAEC,GAAS,OAAIvG,EAAKsD,OAAOa,UAAUgB,OAAQoB,EAAS,IACtIxE,SAASiD,KAAKH,MAAMiB,SAAW,GAE1B9F,KAAK8D,qBAAuB,YAAc9D,KAAKqE,WACnDrE,KAAK8D,oBAAoBuC,OAE3B,cAEApC,OAAM,SAAE4B,GACP,sBADe,QACR7F,KAAKwD,SAAWqC,EAAQ7F,KAAKkE,QAAUlE,KAAK4F,KAAMC,EAC1D,EE3ID,IAAMW,EAEL,WAAA,ECFYC,EACZ,SAAa7G,cACZI,KAAKJ,KAAOA,EAEZI,KAAK0G,YAAc,cACnB1G,KAAKwD,OAASxD,KAAKJ,KAAKuE,UAAUG,SAAStE,KAAK0G,aAEhD1G,KAAKJ,KAAKwB,iBAAkB,SAAO,SAAGR,GAGrC,IAFM,IAAaK,EAAAL,EAAAK,OAEZA,GAAUA,IAAWjB,EAAKJ,MAAO,CACvC,GAAKqB,EAAOkD,UAAUG,SAAU,kBAI/B,OAHA1D,EAAEE,kBACFF,EAAEC,iBAEKb,EAAKiE,SAGbhD,EAASA,EAAOC,UAChB,CACJ,GACC,EAEAuF,EAAA/D,UAAAkD,KAAA,WACC5F,KAAKwD,QAAS,EACdxD,KAAKJ,KAAKuE,UAAUI,IAAKvE,KAAK0G,YAC/B,EAEAD,EAAA/D,UAAAwB,MAAA,WACClE,KAAKwD,QAAS,EACdxD,KAAKJ,KAAKuE,UAAUgB,OAAQnF,KAAK0G,YAClC,EAEAD,EAAA/D,UAAAuB,OAAA,WACC,OAAOjE,KAAKwD,OAASxD,KAAKkE,QAAUlE,KAAK4F,MAC1C,ECnCD,IAAMe,EACL,SAAY/G,EAAM2G,GACjBvG,KAAKJ,KAAOA,EACZI,KAAKuG,UAAYA,EACjBvG,KAAK4G,SAAU,EAGf5G,KAAKJ,KAAKwB,iBAAiB,QAASpB,KAAKqG,MAAMQ,KAAK7G,OAAO,GAC3DA,KAAKJ,KAAKwB,iBAAiB,OAAQpB,KAAK8G,KAAKD,KAAK7G,OAAO,EAC1D,EAEA2G,EAAAjE,UAAAuB,OAAA,WACC,OAAOjE,KAAK4G,QAAU5G,KAAK8G,OAAS9G,KAAKqG,OAC1C,EAEAM,EAAAjE,UAAA2D,MAAA,WACCrG,KAAK4G,SAAU,EACf5G,KAAKJ,KAAKuE,UAAUI,IAAIvE,KAAKuG,WAE7BvG,KAAKJ,KAAK6C,cAAc,IAAIsE,YAAY,2BACzC,EAEAJ,EAAAjE,UAAAoE,KAAA,WACC9G,KAAK4G,SAAU,EACf5G,KAAKJ,KAAKuE,UAAUgB,OAAOnF,KAAKuG,WAEhCvG,KAAKJ,KAAK6C,cAAc,IAAIsE,YAAY,0BACzC,EC3BD,IAAMC,EACL,SAAapH,EAAMC,kBAAO,CAAA,GACzBG,KAAKJ,KAAOA,EACZI,KAAKH,KAAOoH,OAAOC,OAAQ,CAC1BC,aAAkB,4BAClBC,UAAkB,mBAClBC,iBAAkB,sBAClBC,UAAkB,mBAClBC,cAAkB,0BAChB1H,GACHG,KAAKwH,SAAW,KAEhBxH,KAAKyH,QAAUzH,KAAKyH,QAAQZ,KAAM7G,MAClCA,KAAK0H,OAAU1H,KAAK0H,OAAOb,KAAM7G,MAEjCA,KAAKJ,KAAKwB,iBAAkB,QAASpB,KAAKyH,SAC1C1F,SAASiD,KAAK5D,iBAAkB,QAASpB,KAAK0H,OAC/C,cAEAD,QAAO,SAAE7G,GAGR,IAFAd,IAAIF,EAAOgB,EAAEK,OAELrB,GAAQA,IAASI,KAAKJ,MAAO,CACpC,GAAKA,EAAKuE,UAAUG,SAAUtE,KAAKH,KAAKsH,cAEvC,YADAnH,KAAKJ,KAAKuE,UAAUF,OAAQjE,KAAKH,KAAKuH,WAIvC,GAAKxH,EAAKuE,UAAUG,SAAUtE,KAAKH,KAAKwH,kBAAqB,CAC5DvH,IAAI6H,EAAO/H,EAAKgI,QAAS,IAAI5H,KAAKH,KAAK,WAgBvC,YAdK8H,IACCA,EAAKxD,UAAUG,SAAUtE,KAAKH,KAAK0H,gBACvCI,EAAKxD,UAAUgB,OAAQnF,KAAKH,KAAK0H,eACjCvH,KAAKwH,SAAW,OAEXxH,KAAKwH,UACTxH,KAAKwH,SAASrD,UAAUgB,OAAQnF,KAAKH,KAAK0H,eAG3CI,EAAKxD,UAAUI,IAAKvE,KAAKH,KAAK0H,eAC9BvH,KAAKwH,SAAWG,IAKlB,CAED/H,EAAOA,EAAKsB,UACZ,CACF,cAEAwG,OAAM,SAAE9G,GACP,GAAOZ,KAAKwH,SAAZ,CAMA,IAFA1H,IAAIF,EAAOgB,EAAEK,OAENrB,GAAQA,EAAKsB,YAAa,CAChC,GAAKtB,IAASI,KAAKwH,SAClB,OAGD5H,EAAOA,EAAKsB,UACZ,CAEDlB,KAAKwH,SAASrD,UAAUgB,OAAQnF,KAAKH,KAAK0H,cAZzC,CAaF,ECpED7G,IAAMmH,EAAe,GCAN,SAAAC,EAAUtC,EAAOuC,EAAaC,GAQ5C,kBARqC,sBAAkB,UACvDC,QAAQC,IAAK1C,GACS,iBAAVA,IACXA,EAAQrD,MAAMC,KAAML,SAASsD,iBAAkBG,KAGhDyC,QAAQC,IAAK1C,GAENA,EAAM2C,OAIb,IAAMrI,IAAIsI,EAAI,EAAGC,EAAc7C,EAAM2C,OAAQC,EAAIC,EAAaD,IAAM,CACnEtI,IAAIwI,EAAU9C,EAAM4C,GAAG7E,cAAewE,GAEtCE,QAAQC,IAAK1C,EAAM4C,GAAIE,GAEhBA,IAIP9C,EAAM4C,GAAGvD,MAAM0D,mBAAqBP,EACpCxC,EAAM4C,GAAGvD,MAAM2D,eAAiB,QAChChD,EAAM4C,GAAGvD,MAAM4D,gBAAkB,QAAOH,EAAQI,YAAcJ,EAAQK,SACtEL,EAAQzD,MAAM+D,QAAU,OACxB,CACF,CChBA,IAAMC,EACL,WACC9G,SAASX,iBAAkB,mBAAoBpB,KAAK8I,MAAMjC,KAAM7G,OAChEsB,OAAOF,iBAAkB,SCTZ,SAAU6B,EAAI8F,kBAAO,IACnCjJ,IAAIkJ,EAAQ,KAIZ,SAASC,2DACHD,IACJA,EAAQxH,YAAU,WACjByB,EAAEiG,WAAA,EAAIC,GACNH,EAAQ,IACR,GAAED,GAEJ,CAOD,OALAE,EAAYG,OAAM,WACjB7H,aAAayH,GACbA,EAAQ,IACR,EAEMC,CACR,CDXqCI,CAAUrJ,KAAKsJ,OAAOzC,KAAM7G,MAAQ,KACvEA,KAAKsJ,QACN,SAEAT,EAAAnG,UAAAoG,MAAA,WLqBM,IAAkB5G,ECRCtC,EAAM2G,EIZ9BvG,KAAKuJ,WAAa,IAAIlG,EACtBrD,KAAKwJ,OAAS,IAAIhD,EAClBxG,KAAKyJ,uBLkB6B,UACV,iBAAbvH,EACJC,MAAMC,KAAML,SAASsD,iBAAkBnD,IAAaoD,KAAK,SAAA1F,GAAQ,OAAA,IAAI6G,EAAO7G,EAAM,IAGrFsC,aAAoBqD,YACjB,IAAIkB,EAAOvE,GAGZ,IK1BNlC,KAAK0J,YAAcvH,MAAMC,KAAML,SAASsD,iBAAkB,gBAAkBC,KAAG,SAAE1F,GAAI,OAAI,IAAIoH,EAAYpH,EAAM,IAC/GI,KAAK2J,yBJQqC,iBAAlB/J,EINX,mCJQO2F,YACb,IAAIoB,EAAY/G,EAAM2G,IAIT,iBAAT3G,IACXA,EAAOmC,SAASsD,iBAAiBzF,IAI7BuC,MAAMsD,QAAQ7F,KAClBA,EAAOuC,MAAMC,KAAKxC,IAIZA,EAAK0F,KAAG,SAAEI,GAAC,OAAK,IAAIiB,EAAYjB,EAAGa,EAAS,KE7CrC,SAAUrE,GACxB2F,EAAa+B,KAAM1H,GACnBpC,IAAI+J,EAAYhC,EAAazB,KAAK,KAElC,KAAKyB,EAAaM,OAAS,GAA3B,CAIAzH,IAgBMoJ,EAAU,SAAElJ,GAGjB,IAFAd,IAAIF,EAAOgB,EAAEK,OAELrB,GAAQA,EAAKsB,YAAa,CACjC,GAAKtB,EAAK2C,QAASsH,GAAc,CAGhC,GAFAjK,EAAKmB,oBAAqB,QAAS+I,GAE9BlK,EAAKmK,QAAQnD,QACjB,OAQD,OALKhG,EAAEC,gBACND,EAAEC,iBAGHjB,EAAKmK,QAAQnD,QAAU,IAChBhH,EAAKyG,OACZ,CAEDzG,EAAOA,EAAKsB,UACZ,CACD,EAcDa,SAASX,iBAAkB,QAZZ,SAAER,GAGhB,IAFAd,IAAIF,EAAOgB,EAAEK,OAELrB,GAAQA,EAAKsB,YACftB,EAAKmK,QAAQnD,gBACVhH,EAAKmK,QAAQnD,QAGrBhH,EAAOA,EAAKsB,UAEb,IAE0C,GAC3Ca,SAASX,iBAAkB,cApDN,SAACR,GAGrB,IAFAd,IAAIF,EAAOgB,EAAEK,OAELrB,GAAQA,EAAKsB,YAAa,CACjC,GAAKtB,EAAK2C,QAASsH,GAAc,CAChC,GAAKjK,EAAKmK,QAAQnD,QACjB,OAGDhH,EAAKwB,iBAAkB,QAAS0I,EAChC,CAEDlK,EAAOA,EAAKsB,UACZ,CACD,GAhBA,CAuDF,CEtCE8I,CAAY,SAEH,cAAejI,SAASkI,gBAAgBpF,QAChDiD,EAAgB,sBAAuB,OACvCA,EAAgB,+BAAgC,OAChDA,EAAgB,uBAAwB,QEvB5B,SAAS+B,GACvBnJ,IAAMwJ,EAAS,CACdL,UAAW,CACV,kCACA,6BACA,sCACA,SACA,UAIGA,IACE1H,MAAMsD,QAAQoE,KACnBA,EAAY,CAACA,IAEdK,EAAOL,UAAYK,EAAOL,UAAUM,OAAOtK,KAAKgK,WAAWxH,QAAO,SAAE+H,EAAKC,EAAOC,GAAS,OAAAA,EAAIC,QAAQH,KAASC,CAAA,KAG/G3J,IAAM8E,EAAQrD,MAAMO,UAAU8H,MAAMhI,KAAMT,SAASsD,iBAAkB6E,EAAOL,UAAUzD,KAAK,OAEtFZ,EAAM2C,OAAS,GACnB3C,EAAMc,SAAQ,SAAC1G,GACd,IAAKA,EAAK6K,aAAa,iBAAmB7K,EAAKgI,QAAQ,wBAAvD,CAIAlH,IAAMgK,EAAW3I,SAAS4I,cAAc,OAClCC,EAAWtJ,OAAOuJ,iBAAiBjL,GACnCkL,EAAWC,SAAUH,EAASE,OAAQ,IACtCE,EAAWD,SAAUH,EAASI,MAAO,IACrCC,EAAqE,KAAvDH,EAAS,GAAKE,EAAQ,EAAKF,EAASE,EAAQ,EAAI,IAEpEN,EAAQnE,UAAY,SACpBmE,EAAQ7F,MAAMmG,MAAQ,OACtBN,EAAQ7F,MAAMiG,OAAS,EACvBJ,EAAQ7F,MAAMmD,SAAW,WACzB0C,EAAQ7F,MAAMqG,WAAgBD,MAE9BrL,EAAKiF,MAAMmD,SAAW,WACtBpI,EAAKiF,MAAMsG,IAAM,EACjBvL,EAAKiF,MAAMD,KAAO,EAClBhF,EAAKiF,MAAMmG,MAAQ,OACnBpL,EAAKiF,MAAMiG,OAAS,OACpBlL,EAAKwL,aAAa,cAAeH,GACjCrL,EAAKsB,WAAWmK,aAAaX,EAAS9K,GAEtC8K,EAAQY,YAAY1L,EAtBnB,CAuBJ,GAIA,CFzBE2L,EACD,EAEA1C,EAAAnG,UAAA4G,OAAA,WAEMhI,OAAOkK,aAAezJ,SAASiD,KAAKC,YACxClD,SAASkI,gBAAgB9F,UAAUgB,OAAQ,iBAE3CpD,SAASkI,gBAAgB9F,UAAUI,IAAK,gBAE1C,EAKAsE,EAAAnG,UAAAiH,QAAA,WACCjJ,IAAMiJ,EAAUxH,MAAMC,KAAML,SAASsD,iBAAkB,YAEhDsE,EAAQxB,QAIfwB,EAAQrD,SAAO,SAAEmF,GAChB/K,IAAMgL,EAAS3J,SAAS4I,cAAc,UACtCe,EAAOC,KAAO,SACdD,EAAOnF,UAAY,kBACnBmF,EAAOE,mBAAoB,YAAa,kKACxCF,EAAOtK,iBAAiB,oBAEvBtB,IAAI+L,EAAMC,SAASC,OAASD,SAASE,SAE/BC,EAAS,IAAIC,gBAAiBJ,SAASK,QAC7C,CAAE,OAAQ,UAAW7F,SAAO,SAAE8F,GAAK,OAAIH,EAAOI,OAAQD,EAAO,IAC7D1L,IAAM4L,EAAcL,EAAOM,WAEtBD,EAAYnE,SAChB0D,GAAO,IAAIS,GAGZhL,OAAOkL,QAAQC,aAAc,CAAE,EAAE,KAAMZ,GAGvCJ,EAAOvK,WAAWwL,YAAajB,EACnC,IACGA,EAAOH,YAAaI,EACvB,GACC,EAGc,IAAI7C"}