).';\n\n\t\t// Cache references to key DOM elements\n\t\tdom.wrapper = revealElement;\n\t\tdom.slides = revealElement.querySelector( '.slides' );\n\n\t\tif( !dom.slides ) throw 'Unable to find slides container (
).';\n\n\t\t// Compose our config object in order of increasing precedence:\n\t\t// 1. Default reveal.js options\n\t\t// 2. Options provided via Reveal.configure() prior to\n\t\t// initialization\n\t\t// 3. Options passed to the Reveal constructor\n\t\t// 4. Options passed to Reveal.initialize\n\t\t// 5. Query params\n\t\tconfig = { ...defaultConfig, ...config, ...options, ...initOptions, ...Util.getQueryHash() };\n\n\t\t// Legacy support for the ?print-pdf query\n\t\tif( /print-pdf/gi.test( window.location.search ) ) {\n\t\t\tconfig.view = 'print';\n\t\t}\n\n\t\tsetViewport();\n\n\t\t// Force a layout when the whole page, incl fonts, has loaded\n\t\twindow.addEventListener( 'load', layout, false );\n\n\t\t// Register plugins and load dependencies, then move on to #start()\n\t\tplugins.load( config.plugins, config.dependencies ).then( start );\n\n\t\treturn new Promise( resolve => Reveal.on( 'ready', resolve ) );\n\n\t}\n\n\t/**\n\t * Encase the presentation in a reveal.js viewport. The\n\t * extent of the viewport differs based on configuration.\n\t */\n\tfunction setViewport() {\n\n\t\t// Embedded decks use the reveal element as their viewport\n\t\tif( config.embedded === true ) {\n\t\t\tdom.viewport = Util.closest( revealElement, '.reveal-viewport' ) || revealElement;\n\t\t}\n\t\t// Full-page decks use the body as their viewport\n\t\telse {\n\t\t\tdom.viewport = document.body;\n\t\t\tdocument.documentElement.classList.add( 'reveal-full-page' );\n\t\t}\n\n\t\tdom.viewport.classList.add( 'reveal-viewport' );\n\n\t}\n\n\t/**\n\t * Starts up reveal.js by binding input events and navigating\n\t * to the current URL deeplink if there is one.\n\t */\n\tfunction start() {\n\n\t\tready = true;\n\n\t\t// Remove slides hidden with data-visibility\n\t\tremoveHiddenSlides();\n\n\t\t// Make sure we've got all the DOM elements we need\n\t\tsetupDOM();\n\n\t\t// Listen to messages posted to this window\n\t\tsetupPostMessage();\n\n\t\t// Prevent the slides from being scrolled out of view\n\t\tsetupScrollPrevention();\n\n\t\t// Adds bindings for fullscreen mode\n\t\tsetupFullscreen();\n\n\t\t// Resets all vertical slides so that only the first is visible\n\t\tresetVerticalSlides();\n\n\t\t// Updates the presentation to match the current configuration values\n\t\tconfigure();\n\n\t\t// Create slide backgrounds\n\t\tbackgrounds.update( true );\n\n\t\t// Activate the print/scroll view if configured\n\t\tactivateInitialView();\n\n\t\t// Read the initial hash\n\t\tlocation.readURL();\n\n\t\t// Notify listeners that the presentation is ready but use a 1ms\n\t\t// timeout to ensure it's not fired synchronously after #initialize()\n\t\tsetTimeout( () => {\n\t\t\t// Enable transitions now that we're loaded\n\t\t\tdom.slides.classList.remove( 'no-transition' );\n\n\t\t\tdom.wrapper.classList.add( 'ready' );\n\n\t\t\tdispatchEvent({\n\t\t\t\ttype: 'ready',\n\t\t\t\tdata: {\n\t\t\t\t\tindexh,\n\t\t\t\t\tindexv,\n\t\t\t\t\tcurrentSlide\n\t\t\t\t}\n\t\t\t});\n\t\t}, 1 );\n\n\t}\n\n\t/**\n\t * Activates the correct reveal.js view based on our config.\n\t * This is only invoked once during initialization.\n\t */\n\tfunction activateInitialView() {\n\n\t\tconst activatePrintView = config.view === 'print';\n\t\tconst activateScrollView = config.view === 'scroll' || config.view === 'reader';\n\n\t\tif( activatePrintView || activateScrollView ) {\n\n\t\t\tif( activatePrintView ) {\n\t\t\t\tremoveEventListeners();\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttouch.unbind();\n\t\t\t}\n\n\t\t\t// Avoid content flickering during layout\n\t\t\tdom.viewport.classList.add( 'loading-scroll-mode' );\n\n\t\t\tif( activatePrintView ) {\n\t\t\t\t// The document needs to have loaded for the PDF layout\n\t\t\t\t// measurements to be accurate\n\t\t\t\tif( document.readyState === 'complete' ) {\n\t\t\t\t\tprintView.activate();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\twindow.addEventListener( 'load', () => printView.activate() );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tscrollView.activate();\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Removes all slides with data-visibility=\"hidden\". This\n\t * is done right before the rest of the presentation is\n\t * initialized.\n\t *\n\t * If you want to show all hidden slides, initialize\n\t * reveal.js with showHiddenSlides set to true.\n\t */\n\tfunction removeHiddenSlides() {\n\n\t\tif( !config.showHiddenSlides ) {\n\t\t\tUtil.queryAll( dom.wrapper, 'section[data-visibility=\"hidden\"]' ).forEach( slide => {\n\t\t\t\tconst parent = slide.parentNode;\n\n\t\t\t\t// If this slide is part of a stack and that stack will be\n\t\t\t\t// empty after removing the hidden slide, remove the entire\n\t\t\t\t// stack\n\t\t\t\tif( parent.childElementCount === 1 && /section/i.test( parent.nodeName ) ) {\n\t\t\t\t\tparent.remove();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tslide.remove();\n\t\t\t\t}\n\n\t\t\t} );\n\t\t}\n\n\t}\n\n\t/**\n\t * Finds and stores references to DOM elements which are\n\t * required by the presentation. If a required element is\n\t * not found, it is created.\n\t */\n\tfunction setupDOM() {\n\n\t\t// Prevent transitions while we're loading\n\t\tdom.slides.classList.add( 'no-transition' );\n\n\t\tif( Device.isMobile ) {\n\t\t\tdom.wrapper.classList.add( 'no-hover' );\n\t\t}\n\t\telse {\n\t\t\tdom.wrapper.classList.remove( 'no-hover' );\n\t\t}\n\n\t\tbackgrounds.render();\n\t\tslideNumber.render();\n\t\tjumpToSlide.render();\n\t\tcontrols.render();\n\t\tprogress.render();\n\t\tnotes.render();\n\n\t\t// Overlay graphic which is displayed during the paused mode\n\t\tdom.pauseOverlay = Util.createSingletonNode( dom.wrapper, 'div', 'pause-overlay', config.controls ? '
' : null );\n\n\t\tdom.statusElement = createStatusElement();\n\n\t\tdom.wrapper.setAttribute( 'role', 'application' );\n\t}\n\n\t/**\n\t * Creates a hidden div with role aria-live to announce the\n\t * current slide content. Hide the div off-screen to make it\n\t * available only to Assistive Technologies.\n\t *\n\t * @return {HTMLElement}\n\t */\n\tfunction createStatusElement() {\n\n\t\tlet statusElement = dom.wrapper.querySelector( '.aria-status' );\n\t\tif( !statusElement ) {\n\t\t\tstatusElement = document.createElement( 'div' );\n\t\t\tstatusElement.style.position = 'absolute';\n\t\t\tstatusElement.style.height = '1px';\n\t\t\tstatusElement.style.width = '1px';\n\t\t\tstatusElement.style.overflow = 'hidden';\n\t\t\tstatusElement.style.clip = 'rect( 1px, 1px, 1px, 1px )';\n\t\t\tstatusElement.classList.add( 'aria-status' );\n\t\t\tstatusElement.setAttribute( 'aria-live', 'polite' );\n\t\t\tstatusElement.setAttribute( 'aria-atomic','true' );\n\t\t\tdom.wrapper.appendChild( statusElement );\n\t\t}\n\t\treturn statusElement;\n\n\t}\n\n\t/**\n\t * Announces the given text to screen readers.\n\t */\n\tfunction announceStatus( value ) {\n\n\t\tdom.statusElement.textContent = value;\n\n\t}\n\n\t/**\n\t * Converts the given HTML element into a string of text\n\t * that can be announced to a screen reader. Hidden\n\t * elements are excluded.\n\t */\n\tfunction getStatusText( node ) {\n\n\t\tlet text = '';\n\n\t\t// Text node\n\t\tif( node.nodeType === 3 ) {\n\t\t\ttext += node.textContent;\n\t\t}\n\t\t// Element node\n\t\telse if( node.nodeType === 1 ) {\n\n\t\t\tlet isAriaHidden = node.getAttribute( 'aria-hidden' );\n\t\t\tlet isDisplayHidden = window.getComputedStyle( node )['display'] === 'none';\n\t\t\tif( isAriaHidden !== 'true' && !isDisplayHidden ) {\n\n\t\t\t\tArray.from( node.childNodes ).forEach( child => {\n\t\t\t\t\ttext += getStatusText( child );\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t\ttext = text.trim();\n\n\t\treturn text === '' ? '' : text + ' ';\n\n\t}\n\n\t/**\n\t * This is an unfortunate necessity. Some actions – such as\n\t * an input field being focused in an iframe or using the\n\t * keyboard to expand text selection beyond the bounds of\n\t * a slide – can trigger our content to be pushed out of view.\n\t * This scrolling can not be prevented by hiding overflow in\n\t * CSS (we already do) so we have to resort to repeatedly\n\t * checking if the slides have been offset :(\n\t */\n\tfunction setupScrollPrevention() {\n\n\t\tsetInterval( () => {\n\t\t\tif( !scrollView.isActive() && dom.wrapper.scrollTop !== 0 || dom.wrapper.scrollLeft !== 0 ) {\n\t\t\t\tdom.wrapper.scrollTop = 0;\n\t\t\t\tdom.wrapper.scrollLeft = 0;\n\t\t\t}\n\t\t}, 1000 );\n\n\t}\n\n\t/**\n\t * After entering fullscreen we need to force a layout to\n\t * get our presentations to scale correctly. This behavior\n\t * is inconsistent across browsers but a force layout seems\n\t * to normalize it.\n\t */\n\tfunction setupFullscreen() {\n\n\t\tdocument.addEventListener( 'fullscreenchange', onFullscreenChange );\n\t\tdocument.addEventListener( 'webkitfullscreenchange', onFullscreenChange );\n\n\t}\n\n\t/**\n\t * Registers a listener to postMessage events, this makes it\n\t * possible to call all reveal.js API methods from another\n\t * window. For example:\n\t *\n\t * revealWindow.postMessage( JSON.stringify({\n\t * method: 'slide',\n\t * args: [ 2 ]\n\t * }), '*' );\n\t */\n\tfunction setupPostMessage() {\n\n\t\tif( config.postMessage ) {\n\t\t\twindow.addEventListener( 'message', onPostMessage, false );\n\t\t}\n\n\t}\n\n\t/**\n\t * Applies the configuration settings from the config\n\t * object. May be called multiple times.\n\t *\n\t * @param {object} options\n\t */\n\tfunction configure( options ) {\n\n\t\tconst oldConfig = { ...config }\n\n\t\t// New config options may be passed when this method\n\t\t// is invoked through the API after initialization\n\t\tif( typeof options === 'object' ) Util.extend( config, options );\n\n\t\t// Abort if reveal.js hasn't finished loading, config\n\t\t// changes will be applied automatically once ready\n\t\tif( Reveal.isReady() === false ) return;\n\n\t\tconst numberOfSlides = dom.wrapper.querySelectorAll( SLIDES_SELECTOR ).length;\n\n\t\t// The transition is added as a class on the .reveal element\n\t\tdom.wrapper.classList.remove( oldConfig.transition );\n\t\tdom.wrapper.classList.add( config.transition );\n\n\t\tdom.wrapper.setAttribute( 'data-transition-speed', config.transitionSpeed );\n\t\tdom.wrapper.setAttribute( 'data-background-transition', config.backgroundTransition );\n\n\t\t// Expose our configured slide dimensions as custom props\n\t\tdom.viewport.style.setProperty( '--slide-width', typeof config.width === 'string' ? config.width : config.width + 'px' );\n\t\tdom.viewport.style.setProperty( '--slide-height', typeof config.height === 'string' ? config.height : config.height + 'px' );\n\n\t\tif( config.shuffle ) {\n\t\t\tshuffle();\n\t\t}\n\n\t\tUtil.toggleClass( dom.wrapper, 'embedded', config.embedded );\n\t\tUtil.toggleClass( dom.wrapper, 'rtl', config.rtl );\n\t\tUtil.toggleClass( dom.wrapper, 'center', config.center );\n\n\t\t// Exit the paused mode if it was configured off\n\t\tif( config.pause === false ) {\n\t\t\tresume();\n\t\t}\n\n\t\t// Iframe link previews\n\t\tif( config.previewLinks ) {\n\t\t\tenablePreviewLinks();\n\t\t\tdisablePreviewLinks( '[data-preview-link=false]' );\n\t\t}\n\t\telse {\n\t\t\tdisablePreviewLinks();\n\t\t\tenablePreviewLinks( '[data-preview-link]:not([data-preview-link=false])' );\n\t\t}\n\n\t\t// Reset all changes made by auto-animations\n\t\tautoAnimate.reset();\n\n\t\t// Remove existing auto-slide controls\n\t\tif( autoSlidePlayer ) {\n\t\t\tautoSlidePlayer.destroy();\n\t\t\tautoSlidePlayer = null;\n\t\t}\n\n\t\t// Generate auto-slide controls if needed\n\t\tif( numberOfSlides > 1 && config.autoSlide && config.autoSlideStoppable ) {\n\t\t\tautoSlidePlayer = new Playback( dom.wrapper, () => {\n\t\t\t\treturn Math.min( Math.max( ( Date.now() - autoSlideStartTime ) / autoSlide, 0 ), 1 );\n\t\t\t} );\n\n\t\t\tautoSlidePlayer.on( 'click', onAutoSlidePlayerClick );\n\t\t\tautoSlidePaused = false;\n\t\t}\n\n\t\t// Add the navigation mode to the DOM so we can adjust styling\n\t\tif( config.navigationMode !== 'default' ) {\n\t\t\tdom.wrapper.setAttribute( 'data-navigation-mode', config.navigationMode );\n\t\t}\n\t\telse {\n\t\t\tdom.wrapper.removeAttribute( 'data-navigation-mode' );\n\t\t}\n\n\t\tnotes.configure( config, oldConfig );\n\t\tfocus.configure( config, oldConfig );\n\t\tpointer.configure( config, oldConfig );\n\t\tcontrols.configure( config, oldConfig );\n\t\tprogress.configure( config, oldConfig );\n\t\tkeyboard.configure( config, oldConfig );\n\t\tfragments.configure( config, oldConfig );\n\t\tslideNumber.configure( config, oldConfig );\n\n\t\tsync();\n\n\t}\n\n\t/**\n\t * Binds all event listeners.\n\t */\n\tfunction addEventListeners() {\n\n\t\teventsAreBound = true;\n\n\t\twindow.addEventListener( 'resize', onWindowResize, false );\n\n\t\tif( config.touch ) touch.bind();\n\t\tif( config.keyboard ) keyboard.bind();\n\t\tif( config.progress ) progress.bind();\n\t\tif( config.respondToHashChanges ) location.bind();\n\t\tcontrols.bind();\n\t\tfocus.bind();\n\n\t\tdom.slides.addEventListener( 'click', onSlidesClicked, false );\n\t\tdom.slides.addEventListener( 'transitionend', onTransitionEnd, false );\n\t\tdom.pauseOverlay.addEventListener( 'click', resume, false );\n\n\t\tif( config.focusBodyOnPageVisibilityChange ) {\n\t\t\tdocument.addEventListener( 'visibilitychange', onPageVisibilityChange, false );\n\t\t}\n\n\t}\n\n\t/**\n\t * Unbinds all event listeners.\n\t */\n\tfunction removeEventListeners() {\n\n\t\teventsAreBound = false;\n\n\t\ttouch.unbind();\n\t\tfocus.unbind();\n\t\tkeyboard.unbind();\n\t\tcontrols.unbind();\n\t\tprogress.unbind();\n\t\tlocation.unbind();\n\n\t\twindow.removeEventListener( 'resize', onWindowResize, false );\n\n\t\tdom.slides.removeEventListener( 'click', onSlidesClicked, false );\n\t\tdom.slides.removeEventListener( 'transitionend', onTransitionEnd, false );\n\t\tdom.pauseOverlay.removeEventListener( 'click', resume, false );\n\n\t}\n\n\t/**\n\t * Uninitializes reveal.js by undoing changes made to the\n\t * DOM and removing all event listeners.\n\t */\n\tfunction destroy() {\n\n\t\tremoveEventListeners();\n\t\tcancelAutoSlide();\n\t\tdisablePreviewLinks();\n\n\t\t// Destroy controllers\n\t\tnotes.destroy();\n\t\tfocus.destroy();\n\t\tplugins.destroy();\n\t\tpointer.destroy();\n\t\tcontrols.destroy();\n\t\tprogress.destroy();\n\t\tbackgrounds.destroy();\n\t\tslideNumber.destroy();\n\t\tjumpToSlide.destroy();\n\n\t\t// Remove event listeners\n\t\tdocument.removeEventListener( 'fullscreenchange', onFullscreenChange );\n\t\tdocument.removeEventListener( 'webkitfullscreenchange', onFullscreenChange );\n\t\tdocument.removeEventListener( 'visibilitychange', onPageVisibilityChange, false );\n\t\twindow.removeEventListener( 'message', onPostMessage, false );\n\t\twindow.removeEventListener( 'load', layout, false );\n\n\t\t// Undo DOM changes\n\t\tif( dom.pauseOverlay ) dom.pauseOverlay.remove();\n\t\tif( dom.statusElement ) dom.statusElement.remove();\n\n\t\tdocument.documentElement.classList.remove( 'reveal-full-page' );\n\n\t\tdom.wrapper.classList.remove( 'ready', 'center', 'has-horizontal-slides', 'has-vertical-slides' );\n\t\tdom.wrapper.removeAttribute( 'data-transition-speed' );\n\t\tdom.wrapper.removeAttribute( 'data-background-transition' );\n\n\t\tdom.viewport.classList.remove( 'reveal-viewport' );\n\t\tdom.viewport.style.removeProperty( '--slide-width' );\n\t\tdom.viewport.style.removeProperty( '--slide-height' );\n\n\t\tdom.slides.style.removeProperty( 'width' );\n\t\tdom.slides.style.removeProperty( 'height' );\n\t\tdom.slides.style.removeProperty( 'zoom' );\n\t\tdom.slides.style.removeProperty( 'left' );\n\t\tdom.slides.style.removeProperty( 'top' );\n\t\tdom.slides.style.removeProperty( 'bottom' );\n\t\tdom.slides.style.removeProperty( 'right' );\n\t\tdom.slides.style.removeProperty( 'transform' );\n\n\t\tArray.from( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) ).forEach( slide => {\n\t\t\tslide.style.removeProperty( 'display' );\n\t\t\tslide.style.removeProperty( 'top' );\n\t\t\tslide.removeAttribute( 'hidden' );\n\t\t\tslide.removeAttribute( 'aria-hidden' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Adds a listener to one of our custom reveal.js events,\n\t * like slidechanged.\n\t */\n\tfunction on( type, listener, useCapture ) {\n\n\t\trevealElement.addEventListener( type, listener, useCapture );\n\n\t}\n\n\t/**\n\t * Unsubscribes from a reveal.js event.\n\t */\n\tfunction off( type, listener, useCapture ) {\n\n\t\trevealElement.removeEventListener( type, listener, useCapture );\n\n\t}\n\n\t/**\n\t * Applies CSS transforms to the slides container. The container\n\t * is transformed from two separate sources: layout and the overview\n\t * mode.\n\t *\n\t * @param {object} transforms\n\t */\n\tfunction transformSlides( transforms ) {\n\n\t\t// Pick up new transforms from arguments\n\t\tif( typeof transforms.layout === 'string' ) slidesTransform.layout = transforms.layout;\n\t\tif( typeof transforms.overview === 'string' ) slidesTransform.overview = transforms.overview;\n\n\t\t// Apply the transforms to the slides container\n\t\tif( slidesTransform.layout ) {\n\t\t\tUtil.transformElement( dom.slides, slidesTransform.layout + ' ' + slidesTransform.overview );\n\t\t}\n\t\telse {\n\t\t\tUtil.transformElement( dom.slides, slidesTransform.overview );\n\t\t}\n\n\t}\n\n\t/**\n\t * Dispatches an event of the specified type from the\n\t * reveal DOM element.\n\t */\n\tfunction dispatchEvent({ target=dom.wrapper, type, data, bubbles=true }) {\n\n\t\tlet event = document.createEvent( 'HTMLEvents', 1, 2 );\n\t\tevent.initEvent( type, bubbles, true );\n\t\tUtil.extend( event, data );\n\t\ttarget.dispatchEvent( event );\n\n\t\tif( target === dom.wrapper ) {\n\t\t\t// If we're in an iframe, post each reveal.js event to the\n\t\t\t// parent window. Used by the notes plugin\n\t\t\tdispatchPostMessage( type );\n\t\t}\n\n\t\treturn event;\n\n\t}\n\n\t/**\n\t * Dispatches a slidechanged event.\n\t *\n\t * @param {string} origin Used to identify multiplex clients\n\t */\n\tfunction dispatchSlideChanged( origin ) {\n\n\t\tdispatchEvent({\n\t\t\ttype: 'slidechanged',\n\t\t\tdata: {\n\t\t\t\tindexh,\n\t\t\t\tindexv,\n\t\t\t\tpreviousSlide,\n\t\t\t\tcurrentSlide,\n\t\t\t\torigin\n\t\t\t}\n\t\t});\n\n\t}\n\n\t/**\n\t * Dispatched a postMessage of the given type from our window.\n\t */\n\tfunction dispatchPostMessage( type, data ) {\n\n\t\tif( config.postMessageEvents && window.parent !== window.self ) {\n\t\t\tlet message = {\n\t\t\t\tnamespace: 'reveal',\n\t\t\t\teventName: type,\n\t\t\t\tstate: getState()\n\t\t\t};\n\n\t\t\tUtil.extend( message, data );\n\n\t\t\twindow.parent.postMessage( JSON.stringify( message ), '*' );\n\t\t}\n\n\t}\n\n\t/**\n\t * Bind preview frame links.\n\t *\n\t * @param {string} [selector=a] - selector for anchors\n\t */\n\tfunction enablePreviewLinks( selector = 'a' ) {\n\n\t\tArray.from( dom.wrapper.querySelectorAll( selector ) ).forEach( element => {\n\t\t\tif( /^(http|www)/gi.test( element.getAttribute( 'href' ) ) ) {\n\t\t\t\telement.addEventListener( 'click', onPreviewLinkClicked, false );\n\t\t\t}\n\t\t} );\n\n\t}\n\n\t/**\n\t * Unbind preview frame links.\n\t */\n\tfunction disablePreviewLinks( selector = 'a' ) {\n\n\t\tArray.from( dom.wrapper.querySelectorAll( selector ) ).forEach( element => {\n\t\t\tif( /^(http|www)/gi.test( element.getAttribute( 'href' ) ) ) {\n\t\t\t\telement.removeEventListener( 'click', onPreviewLinkClicked, false );\n\t\t\t}\n\t\t} );\n\n\t}\n\n\t/**\n\t * Opens a preview window for the target URL.\n\t *\n\t * @param {string} url - url for preview iframe src\n\t */\n\tfunction showPreview( url ) {\n\n\t\tcloseOverlay();\n\n\t\tdom.overlay = document.createElement( 'div' );\n\t\tdom.overlay.classList.add( 'overlay' );\n\t\tdom.overlay.classList.add( 'overlay-preview' );\n\t\tdom.wrapper.appendChild( dom.overlay );\n\n\t\tdom.overlay.innerHTML =\n\t\t\t`
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tUnable to load iframe. This is likely due to the site's policy (x-frame-options).\n\t\t\t\t\n\t\t\t
`;\n\n\t\tdom.overlay.querySelector( 'iframe' ).addEventListener( 'load', event => {\n\t\t\tdom.overlay.classList.add( 'loaded' );\n\t\t}, false );\n\n\t\tdom.overlay.querySelector( '.close' ).addEventListener( 'click', event => {\n\t\t\tcloseOverlay();\n\t\t\tevent.preventDefault();\n\t\t}, false );\n\n\t\tdom.overlay.querySelector( '.external' ).addEventListener( 'click', event => {\n\t\t\tcloseOverlay();\n\t\t}, false );\n\n\t}\n\n\t/**\n\t * Open or close help overlay window.\n\t *\n\t * @param {Boolean} [override] Flag which overrides the\n\t * toggle logic and forcibly sets the desired state. True means\n\t * help is open, false means it's closed.\n\t */\n\tfunction toggleHelp( override ){\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? showHelp() : closeOverlay();\n\t\t}\n\t\telse {\n\t\t\tif( dom.overlay ) {\n\t\t\t\tcloseOverlay();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tshowHelp();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Opens an overlay window with help material.\n\t */\n\tfunction showHelp() {\n\n\t\tif( config.help ) {\n\n\t\t\tcloseOverlay();\n\n\t\t\tdom.overlay = document.createElement( 'div' );\n\t\t\tdom.overlay.classList.add( 'overlay' );\n\t\t\tdom.overlay.classList.add( 'overlay-help' );\n\t\t\tdom.wrapper.appendChild( dom.overlay );\n\n\t\t\tlet html = '
Keyboard Shortcuts
';\n\n\t\t\tlet shortcuts = keyboard.getShortcuts(),\n\t\t\t\tbindings = keyboard.getBindings();\n\n\t\t\thtml += '
KEY | ACTION | ';\n\t\t\tfor( let key in shortcuts ) {\n\t\t\t\thtml += `${key} | ${shortcuts[ key ]} |
`;\n\t\t\t}\n\n\t\t\t// Add custom key bindings that have associated descriptions\n\t\t\tfor( let binding in bindings ) {\n\t\t\t\tif( bindings[binding].key && bindings[binding].description ) {\n\t\t\t\t\thtml += `${bindings[binding].key} | ${bindings[binding].description} |
`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thtml += '
';\n\n\t\t\tdom.overlay.innerHTML = `\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
${html}
\n\t\t\t\t
\n\t\t\t`;\n\n\t\t\tdom.overlay.querySelector( '.close' ).addEventListener( 'click', event => {\n\t\t\t\tcloseOverlay();\n\t\t\t\tevent.preventDefault();\n\t\t\t}, false );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Closes any currently open overlay.\n\t */\n\tfunction closeOverlay() {\n\n\t\tif( dom.overlay ) {\n\t\t\tdom.overlay.parentNode.removeChild( dom.overlay );\n\t\t\tdom.overlay = null;\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Applies JavaScript-controlled layout rules to the\n\t * presentation.\n\t */\n\tfunction layout() {\n\n\t\tif( dom.wrapper && !printView.isActive() ) {\n\n\t\t\tconst viewportWidth = dom.viewport.offsetWidth;\n\t\t\tconst viewportHeight = dom.viewport.offsetHeight;\n\n\t\t\tif( !config.disableLayout ) {\n\n\t\t\t\t// On some mobile devices '100vh' is taller than the visible\n\t\t\t\t// viewport which leads to part of the presentation being\n\t\t\t\t// cut off. To work around this we define our own '--vh' custom\n\t\t\t\t// property where 100x adds up to the correct height.\n\t\t\t\t//\n\t\t\t\t// https://css-tricks.com/the-trick-to-viewport-units-on-mobile/\n\t\t\t\tif( Device.isMobile && !config.embedded ) {\n\t\t\t\t\tdocument.documentElement.style.setProperty( '--vh', ( window.innerHeight * 0.01 ) + 'px' );\n\t\t\t\t}\n\n\t\t\t\tconst size = scrollView.isActive() ?\n\t\t\t\t\t\t\t getComputedSlideSize( viewportWidth, viewportHeight ) :\n\t\t\t\t\t\t\t getComputedSlideSize();\n\n\t\t\t\tconst oldScale = scale;\n\n\t\t\t\t// Layout the contents of the slides\n\t\t\t\tlayoutSlideContents( config.width, config.height );\n\n\t\t\t\tdom.slides.style.width = size.width + 'px';\n\t\t\t\tdom.slides.style.height = size.height + 'px';\n\n\t\t\t\t// Determine scale of content to fit within available space\n\t\t\t\tscale = Math.min( size.presentationWidth / size.width, size.presentationHeight / size.height );\n\n\t\t\t\t// Respect max/min scale settings\n\t\t\t\tscale = Math.max( scale, config.minScale );\n\t\t\t\tscale = Math.min( scale, config.maxScale );\n\n\t\t\t\t// Don't apply any scaling styles if scale is 1 or we're\n\t\t\t\t// in the scroll view\n\t\t\t\tif( scale === 1 || scrollView.isActive() ) {\n\t\t\t\t\tdom.slides.style.zoom = '';\n\t\t\t\t\tdom.slides.style.left = '';\n\t\t\t\t\tdom.slides.style.top = '';\n\t\t\t\t\tdom.slides.style.bottom = '';\n\t\t\t\t\tdom.slides.style.right = '';\n\t\t\t\t\ttransformSlides( { layout: '' } );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdom.slides.style.zoom = '';\n\t\t\t\t\tdom.slides.style.left = '50%';\n\t\t\t\t\tdom.slides.style.top = '50%';\n\t\t\t\t\tdom.slides.style.bottom = 'auto';\n\t\t\t\t\tdom.slides.style.right = 'auto';\n\t\t\t\t\ttransformSlides( { layout: 'translate(-50%, -50%) scale('+ scale +')' } );\n\t\t\t\t}\n\n\t\t\t\t// Select all slides, vertical and horizontal\n\t\t\t\tconst slides = Array.from( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) );\n\n\t\t\t\tfor( let i = 0, len = slides.length; i < len; i++ ) {\n\t\t\t\t\tconst slide = slides[ i ];\n\n\t\t\t\t\t// Don't bother updating invisible slides\n\t\t\t\t\tif( slide.style.display === 'none' ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif( ( config.center || slide.classList.contains( 'center' ) ) ) {\n\t\t\t\t\t\t// Vertical stacks are not centred since their section\n\t\t\t\t\t\t// children will be\n\t\t\t\t\t\tif( slide.classList.contains( 'stack' ) ) {\n\t\t\t\t\t\t\tslide.style.top = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tslide.style.top = Math.max( ( size.height - slide.scrollHeight ) / 2, 0 ) + 'px';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tslide.style.top = '';\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif( oldScale !== scale ) {\n\t\t\t\t\tdispatchEvent({\n\t\t\t\t\t\ttype: 'resize',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\toldScale,\n\t\t\t\t\t\t\tscale,\n\t\t\t\t\t\t\tsize\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcheckResponsiveScrollView();\n\n\t\t\tdom.viewport.style.setProperty( '--slide-scale', scale );\n\t\t\tdom.viewport.style.setProperty( '--viewport-width', viewportWidth + 'px' );\n\t\t\tdom.viewport.style.setProperty( '--viewport-height', viewportHeight + 'px' );\n\n\t\t\tscrollView.layout();\n\n\t\t\tprogress.update();\n\t\t\tbackgrounds.updateParallax();\n\n\t\t\tif( overview.isActive() ) {\n\t\t\t\toverview.update();\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Applies layout logic to the contents of all slides in\n\t * the presentation.\n\t *\n\t * @param {string|number} width\n\t * @param {string|number} height\n\t */\n\tfunction layoutSlideContents( width, height ) {\n\t\t// Handle sizing of elements with the 'r-stretch' class\n\t\tUtil.queryAll( dom.slides, 'section > .stretch, section > .r-stretch' ).forEach( element => {\n\n\t\t\t// Determine how much vertical space we can use\n\t\t\tlet remainingHeight = Util.getRemainingHeight( element, height );\n\n\t\t\t// Consider the aspect ratio of media elements\n\t\t\tif( /(img|video)/gi.test( element.nodeName ) ) {\n\t\t\t\tconst nw = element.naturalWidth || element.videoWidth,\n\t\t\t\t\t nh = element.naturalHeight || element.videoHeight;\n\n\t\t\t\tconst es = Math.min( width / nw, remainingHeight / nh );\n\n\t\t\t\telement.style.width = ( nw * es ) + 'px';\n\t\t\t\telement.style.height = ( nh * es ) + 'px';\n\n\t\t\t}\n\t\t\telse {\n\t\t\t\telement.style.width = width + 'px';\n\t\t\t\telement.style.height = remainingHeight + 'px';\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Responsively activates the scroll mode when we reach the configured\n\t * activation width.\n\t */\n\tfunction checkResponsiveScrollView() {\n\n\t\t// Only proceed if...\n\t\t// 1. The DOM is ready\n\t\t// 2. Layouts aren't disabled via config\n\t\t// 3. We're not currently printing\n\t\t// 4. There is a scrollActivationWidth set\n\t\t// 5. The deck isn't configured to always use the scroll view\n\t\tif(\n\t\t\tdom.wrapper &&\n\t\t\t!config.disableLayout &&\n\t\t\t!printView.isActive() &&\n\t\t\ttypeof config.scrollActivationWidth === 'number' &&\n\t\t\tconfig.view !== 'scroll'\n\t\t) {\n\t\t\tconst size = getComputedSlideSize();\n\n\t\t\tif( size.presentationWidth > 0 && size.presentationWidth <= config.scrollActivationWidth ) {\n\t\t\t\tif( !scrollView.isActive() ) {\n\t\t\t\t\tbackgrounds.create();\n\t\t\t\t\tscrollView.activate()\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif( scrollView.isActive() ) scrollView.deactivate();\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Calculates the computed pixel size of our slides. These\n\t * values are based on the width and height configuration\n\t * options.\n\t *\n\t * @param {number} [presentationWidth=dom.wrapper.offsetWidth]\n\t * @param {number} [presentationHeight=dom.wrapper.offsetHeight]\n\t */\n\tfunction getComputedSlideSize( presentationWidth, presentationHeight ) {\n\n\t\tlet width = config.width;\n\t\tlet height = config.height;\n\n\t\tif( config.disableLayout ) {\n\t\t\twidth = dom.slides.offsetWidth;\n\t\t\theight = dom.slides.offsetHeight;\n\t\t}\n\n\t\tconst size = {\n\t\t\t// Slide size\n\t\t\twidth: width,\n\t\t\theight: height,\n\n\t\t\t// Presentation size\n\t\t\tpresentationWidth: presentationWidth || dom.wrapper.offsetWidth,\n\t\t\tpresentationHeight: presentationHeight || dom.wrapper.offsetHeight\n\t\t};\n\n\t\t// Reduce available space by margin\n\t\tsize.presentationWidth -= ( size.presentationWidth * config.margin );\n\t\tsize.presentationHeight -= ( size.presentationHeight * config.margin );\n\n\t\t// Slide width may be a percentage of available width\n\t\tif( typeof size.width === 'string' && /%$/.test( size.width ) ) {\n\t\t\tsize.width = parseInt( size.width, 10 ) / 100 * size.presentationWidth;\n\t\t}\n\n\t\t// Slide height may be a percentage of available height\n\t\tif( typeof size.height === 'string' && /%$/.test( size.height ) ) {\n\t\t\tsize.height = parseInt( size.height, 10 ) / 100 * size.presentationHeight;\n\t\t}\n\n\t\treturn size;\n\n\t}\n\n\t/**\n\t * Stores the vertical index of a stack so that the same\n\t * vertical slide can be selected when navigating to and\n\t * from the stack.\n\t *\n\t * @param {HTMLElement} stack The vertical stack element\n\t * @param {string|number} [v=0] Index to memorize\n\t */\n\tfunction setPreviousVerticalIndex( stack, v ) {\n\n\t\tif( typeof stack === 'object' && typeof stack.setAttribute === 'function' ) {\n\t\t\tstack.setAttribute( 'data-previous-indexv', v || 0 );\n\t\t}\n\n\t}\n\n\t/**\n\t * Retrieves the vertical index which was stored using\n\t * #setPreviousVerticalIndex() or 0 if no previous index\n\t * exists.\n\t *\n\t * @param {HTMLElement} stack The vertical stack element\n\t */\n\tfunction getPreviousVerticalIndex( stack ) {\n\n\t\tif( typeof stack === 'object' && typeof stack.setAttribute === 'function' && stack.classList.contains( 'stack' ) ) {\n\t\t\t// Prefer manually defined start-indexv\n\t\t\tconst attributeName = stack.hasAttribute( 'data-start-indexv' ) ? 'data-start-indexv' : 'data-previous-indexv';\n\n\t\t\treturn parseInt( stack.getAttribute( attributeName ) || 0, 10 );\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n\t/**\n\t * Checks if the current or specified slide is vertical\n\t * (nested within another slide).\n\t *\n\t * @param {HTMLElement} [slide=currentSlide] The slide to check\n\t * orientation of\n\t * @return {Boolean}\n\t */\n\tfunction isVerticalSlide( slide = currentSlide ) {\n\n\t\treturn slide && slide.parentNode && !!slide.parentNode.nodeName.match( /section/i );\n\n\t}\n\n\t/**\n\t * Checks if the current or specified slide is a stack containing\n\t * vertical slides.\n\t *\n\t * @param {HTMLElement} [slide=currentSlide]\n\t * @return {Boolean}\n\t */\n\tfunction isVerticalStack( slide = currentSlide ) {\n\n\t\treturn slide.classList.contains( '.stack' ) || slide.querySelector( 'section' ) !== null;\n\n\t}\n\n\t/**\n\t * Returns true if we're on the last slide in the current\n\t * vertical stack.\n\t */\n\tfunction isLastVerticalSlide() {\n\n\t\tif( currentSlide && isVerticalSlide( currentSlide ) ) {\n\t\t\t// Does this slide have a next sibling?\n\t\t\tif( currentSlide.nextElementSibling ) return false;\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Returns true if we're currently on the first slide in\n\t * the presentation.\n\t */\n\tfunction isFirstSlide() {\n\n\t\treturn indexh === 0 && indexv === 0;\n\n\t}\n\n\t/**\n\t * Returns true if we're currently on the last slide in\n\t * the presenation. If the last slide is a stack, we only\n\t * consider this the last slide if it's at the end of the\n\t * stack.\n\t */\n\tfunction isLastSlide() {\n\n\t\tif( currentSlide ) {\n\t\t\t// Does this slide have a next sibling?\n\t\t\tif( currentSlide.nextElementSibling ) return false;\n\n\t\t\t// If it's vertical, does its parent have a next sibling?\n\t\t\tif( isVerticalSlide( currentSlide ) && currentSlide.parentNode.nextElementSibling ) return false;\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Enters the paused mode which fades everything on screen to\n\t * black.\n\t */\n\tfunction pause() {\n\n\t\tif( config.pause ) {\n\t\t\tconst wasPaused = dom.wrapper.classList.contains( 'paused' );\n\n\t\t\tcancelAutoSlide();\n\t\t\tdom.wrapper.classList.add( 'paused' );\n\n\t\t\tif( wasPaused === false ) {\n\t\t\t\tdispatchEvent({ type: 'paused' });\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Exits from the paused mode.\n\t */\n\tfunction resume() {\n\n\t\tconst wasPaused = dom.wrapper.classList.contains( 'paused' );\n\t\tdom.wrapper.classList.remove( 'paused' );\n\n\t\tcueAutoSlide();\n\n\t\tif( wasPaused ) {\n\t\t\tdispatchEvent({ type: 'resumed' });\n\t\t}\n\n\t}\n\n\t/**\n\t * Toggles the paused mode on and off.\n\t */\n\tfunction togglePause( override ) {\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? pause() : resume();\n\t\t}\n\t\telse {\n\t\t\tisPaused() ? resume() : pause();\n\t\t}\n\n\t}\n\n\t/**\n\t * Checks if we are currently in the paused mode.\n\t *\n\t * @return {Boolean}\n\t */\n\tfunction isPaused() {\n\n\t\treturn dom.wrapper.classList.contains( 'paused' );\n\n\t}\n\n\t/**\n\t * Toggles visibility of the jump-to-slide UI.\n\t */\n\tfunction toggleJumpToSlide( override ) {\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? jumpToSlide.show() : jumpToSlide.hide();\n\t\t}\n\t\telse {\n\t\t\tjumpToSlide.isVisible() ? jumpToSlide.hide() : jumpToSlide.show();\n\t\t}\n\n\t}\n\n\t/**\n\t * Toggles the auto slide mode on and off.\n\t *\n\t * @param {Boolean} [override] Flag which sets the desired state.\n\t * True means autoplay starts, false means it stops.\n\t */\n\n\tfunction toggleAutoSlide( override ) {\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? resumeAutoSlide() : pauseAutoSlide();\n\t\t}\n\n\t\telse {\n\t\t\tautoSlidePaused ? resumeAutoSlide() : pauseAutoSlide();\n\t\t}\n\n\t}\n\n\t/**\n\t * Checks if the auto slide mode is currently on.\n\t *\n\t * @return {Boolean}\n\t */\n\tfunction isAutoSliding() {\n\n\t\treturn !!( autoSlide && !autoSlidePaused );\n\n\t}\n\n\t/**\n\t * Steps from the current point in the presentation to the\n\t * slide which matches the specified horizontal and vertical\n\t * indices.\n\t *\n\t * @param {number} [h=indexh] Horizontal index of the target slide\n\t * @param {number} [v=indexv] Vertical index of the target slide\n\t * @param {number} [f] Index of a fragment within the\n\t * target slide to activate\n\t * @param {number} [origin] Origin for use in multimaster environments\n\t */\n\tfunction slide( h, v, f, origin ) {\n\n\t\t// Dispatch an event before the slide\n\t\tconst slidechange = dispatchEvent({\n\t\t\ttype: 'beforeslidechange',\n\t\t\tdata: {\n\t\t\t\tindexh: h === undefined ? indexh : h,\n\t\t\t\tindexv: v === undefined ? indexv : v,\n\t\t\t\torigin\n\t\t\t}\n\t\t});\n\n\t\t// Abort if this slide change was prevented by an event listener\n\t\tif( slidechange.defaultPrevented ) return;\n\n\t\t// Remember where we were at before\n\t\tpreviousSlide = currentSlide;\n\n\t\t// Query all horizontal slides in the deck\n\t\tconst horizontalSlides = dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR );\n\n\t\t// If we're in scroll mode, we scroll the target slide into view\n\t\t// instead of running our standard slide transition\n\t\tif( scrollView.isActive() ) {\n\t\t\tconst scrollToSlide = scrollView.getSlideByIndices( h, v );\n\t\t\tif( scrollToSlide ) scrollView.scrollToSlide( scrollToSlide );\n\t\t\treturn;\n\t\t}\n\n\t\t// Abort if there are no slides\n\t\tif( horizontalSlides.length === 0 ) return;\n\n\t\t// If no vertical index is specified and the upcoming slide is a\n\t\t// stack, resume at its previous vertical index\n\t\tif( v === undefined && !overview.isActive() ) {\n\t\t\tv = getPreviousVerticalIndex( horizontalSlides[ h ] );\n\t\t}\n\n\t\t// If we were on a vertical stack, remember what vertical index\n\t\t// it was on so we can resume at the same position when returning\n\t\tif( previousSlide && previousSlide.parentNode && previousSlide.parentNode.classList.contains( 'stack' ) ) {\n\t\t\tsetPreviousVerticalIndex( previousSlide.parentNode, indexv );\n\t\t}\n\n\t\t// Remember the state before this slide\n\t\tconst stateBefore = state.concat();\n\n\t\t// Reset the state array\n\t\tstate.length = 0;\n\n\t\tlet indexhBefore = indexh || 0,\n\t\t\tindexvBefore = indexv || 0;\n\n\t\t// Activate and transition to the new slide\n\t\tindexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h );\n\t\tindexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v );\n\n\t\t// Dispatch an event if the slide changed\n\t\tlet slideChanged = ( indexh !== indexhBefore || indexv !== indexvBefore );\n\n\t\t// Ensure that the previous slide is never the same as the current\n\t\tif( !slideChanged ) previousSlide = null;\n\n\t\t// Find the current horizontal slide and any possible vertical slides\n\t\t// within it\n\t\tlet currentHorizontalSlide = horizontalSlides[ indexh ],\n\t\t\tcurrentVerticalSlides = currentHorizontalSlide.querySelectorAll( 'section' );\n\n\t\t// Store references to the previous and current slides\n\t\tcurrentSlide = currentVerticalSlides[ indexv ] || currentHorizontalSlide;\n\n\t\tlet autoAnimateTransition = false;\n\n\t\t// Detect if we're moving between two auto-animated slides\n\t\tif( slideChanged && previousSlide && currentSlide && !overview.isActive() ) {\n\t\t\ttransition = 'running';\n\n\t\t\tautoAnimateTransition = shouldAutoAnimateBetween( previousSlide, currentSlide, indexhBefore, indexvBefore );\n\n\t\t\t// If this is an auto-animated transition, we disable the\n\t\t\t// regular slide transition\n\t\t\t//\n\t\t\t// Note 20-03-2020:\n\t\t\t// This needs to happen before we update slide visibility,\n\t\t\t// otherwise transitions will still run in Safari.\n\t\t\tif( autoAnimateTransition ) {\n\t\t\t\tdom.slides.classList.add( 'disable-slide-transitions' )\n\t\t\t}\n\t\t}\n\n\t\t// Update the visibility of slides now that the indices have changed\n\t\tupdateSlidesVisibility();\n\n\t\tlayout();\n\n\t\t// Update the overview if it's currently active\n\t\tif( overview.isActive() ) {\n\t\t\toverview.update();\n\t\t}\n\n\t\t// Show fragment, if specified\n\t\tif( typeof f !== 'undefined' ) {\n\t\t\tfragments.goto( f );\n\t\t}\n\n\t\t// Solves an edge case where the previous slide maintains the\n\t\t// 'present' class when navigating between adjacent vertical\n\t\t// stacks\n\t\tif( previousSlide && previousSlide !== currentSlide ) {\n\t\t\tpreviousSlide.classList.remove( 'present' );\n\t\t\tpreviousSlide.setAttribute( 'aria-hidden', 'true' );\n\n\t\t\t// Reset all slides upon navigate to home\n\t\t\tif( isFirstSlide() ) {\n\t\t\t\t// Launch async task\n\t\t\t\tsetTimeout( () => {\n\t\t\t\t\tgetVerticalStacks().forEach( slide => {\n\t\t\t\t\t\tsetPreviousVerticalIndex( slide, 0 );\n\t\t\t\t\t} );\n\t\t\t\t}, 0 );\n\t\t\t}\n\t\t}\n\n\t\t// Apply the new state\n\t\tstateLoop: for( let i = 0, len = state.length; i < len; i++ ) {\n\t\t\t// Check if this state existed on the previous slide. If it\n\t\t\t// did, we will avoid adding it repeatedly\n\t\t\tfor( let j = 0; j < stateBefore.length; j++ ) {\n\t\t\t\tif( stateBefore[j] === state[i] ) {\n\t\t\t\t\tstateBefore.splice( j, 1 );\n\t\t\t\t\tcontinue stateLoop;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdom.viewport.classList.add( state[i] );\n\n\t\t\t// Dispatch custom event matching the state's name\n\t\t\tdispatchEvent({ type: state[i] });\n\t\t}\n\n\t\t// Clean up the remains of the previous state\n\t\twhile( stateBefore.length ) {\n\t\t\tdom.viewport.classList.remove( stateBefore.pop() );\n\t\t}\n\n\t\tif( slideChanged ) {\n\t\t\tdispatchSlideChanged( origin );\n\t\t}\n\n\t\t// Handle embedded content\n\t\tif( slideChanged || !previousSlide ) {\n\t\t\tslideContent.stopEmbeddedContent( previousSlide );\n\t\t\tslideContent.startEmbeddedContent( currentSlide );\n\t\t}\n\n\t\t// Announce the current slide contents to screen readers\n\t\t// Use animation frame to prevent getComputedStyle in getStatusText\n\t\t// from triggering layout mid-frame\n\t\trequestAnimationFrame( () => {\n\t\t\tannounceStatus( getStatusText( currentSlide ) );\n\t\t});\n\n\t\tprogress.update();\n\t\tcontrols.update();\n\t\tnotes.update();\n\t\tbackgrounds.update();\n\t\tbackgrounds.updateParallax();\n\t\tslideNumber.update();\n\t\tfragments.update();\n\n\t\t// Update the URL hash\n\t\tlocation.writeURL();\n\n\t\tcueAutoSlide();\n\n\t\t// Auto-animation\n\t\tif( autoAnimateTransition ) {\n\n\t\t\tsetTimeout( () => {\n\t\t\t\tdom.slides.classList.remove( 'disable-slide-transitions' );\n\t\t\t}, 0 );\n\n\t\t\tif( config.autoAnimate ) {\n\t\t\t\t// Run the auto-animation between our slides\n\t\t\t\tautoAnimate.run( previousSlide, currentSlide );\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Checks whether or not an auto-animation should take place between\n\t * the two given slides.\n\t *\n\t * @param {HTMLElement} fromSlide\n\t * @param {HTMLElement} toSlide\n\t * @param {number} indexhBefore\n\t * @param {number} indexvBefore\n\t *\n\t * @returns {boolean}\n\t */\n\tfunction shouldAutoAnimateBetween( fromSlide, toSlide, indexhBefore, indexvBefore ) {\n\n\t\treturn \tfromSlide.hasAttribute( 'data-auto-animate' ) && toSlide.hasAttribute( 'data-auto-animate' ) &&\n\t\t\t\tfromSlide.getAttribute( 'data-auto-animate-id' ) === toSlide.getAttribute( 'data-auto-animate-id' ) &&\n\t\t\t\t!( ( indexh > indexhBefore || indexv > indexvBefore ) ? toSlide : fromSlide ).hasAttribute( 'data-auto-animate-restart' );\n\n\t}\n\n\t/**\n\t * Called anytime a new slide should be activated while in the scroll\n\t * view. The active slide is the page that occupies the most space in\n\t * the scrollable viewport.\n\t *\n\t * @param {number} pageIndex\n\t * @param {HTMLElement} slideElement\n\t */\n\tfunction setCurrentScrollPage( slideElement, h, v ) {\n\n\t\tlet indexhBefore = indexh || 0;\n\n\t\tindexh = h;\n\t\tindexv = v;\n\n\t\tconst slideChanged = currentSlide !== slideElement;\n\n\t\tpreviousSlide = currentSlide;\n\t\tcurrentSlide = slideElement;\n\n\t\tif( currentSlide && previousSlide ) {\n\t\t\tif( config.autoAnimate && shouldAutoAnimateBetween( previousSlide, currentSlide, indexhBefore, indexv ) ) {\n\t\t\t\t// Run the auto-animation between our slides\n\t\t\t\tautoAnimate.run( previousSlide, currentSlide );\n\t\t\t}\n\t\t}\n\n\t\t// Start or stop embedded content like videos and iframes\n\t\tif( slideChanged ) {\n\t\t\tif( previousSlide ) {\n\t\t\t\tslideContent.stopEmbeddedContent( previousSlide );\n\t\t\t\tslideContent.stopEmbeddedContent( previousSlide.slideBackgroundElement );\n\t\t\t}\n\n\t\t\tslideContent.startEmbeddedContent( currentSlide );\n\t\t\tslideContent.startEmbeddedContent( currentSlide.slideBackgroundElement );\n\t\t}\n\n\t\trequestAnimationFrame( () => {\n\t\t\tannounceStatus( getStatusText( currentSlide ) );\n\t\t});\n\n\t\tdispatchSlideChanged();\n\n\t}\n\n\t/**\n\t * Syncs the presentation with the current DOM. Useful\n\t * when new slides or control elements are added or when\n\t * the configuration has changed.\n\t */\n\tfunction sync() {\n\n\t\t// Subscribe to input\n\t\tremoveEventListeners();\n\t\taddEventListeners();\n\n\t\t// Force a layout to make sure the current config is accounted for\n\t\tlayout();\n\n\t\t// Reflect the current autoSlide value\n\t\tautoSlide = config.autoSlide;\n\n\t\t// Start auto-sliding if it's enabled\n\t\tcueAutoSlide();\n\n\t\t// Re-create all slide backgrounds\n\t\tbackgrounds.create();\n\n\t\t// Write the current hash to the URL\n\t\tlocation.writeURL();\n\n\t\tif( config.sortFragmentsOnSync === true ) {\n\t\t\tfragments.sortAll();\n\t\t}\n\n\t\tcontrols.update();\n\t\tprogress.update();\n\n\t\tupdateSlidesVisibility();\n\n\t\tnotes.update();\n\t\tnotes.updateVisibility();\n\t\tbackgrounds.update( true );\n\t\tslideNumber.update();\n\t\tslideContent.formatEmbeddedContent();\n\n\t\t// Start or stop embedded content depending on global config\n\t\tif( config.autoPlayMedia === false ) {\n\t\t\tslideContent.stopEmbeddedContent( currentSlide, { unloadIframes: false } );\n\t\t}\n\t\telse {\n\t\t\tslideContent.startEmbeddedContent( currentSlide );\n\t\t}\n\n\t\tif( overview.isActive() ) {\n\t\t\toverview.layout();\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates reveal.js to keep in sync with new slide attributes. For\n\t * example, if you add a new `data-background-image` you can call\n\t * this to have reveal.js render the new background image.\n\t *\n\t * Similar to #sync() but more efficient when you only need to\n\t * refresh a specific slide.\n\t *\n\t * @param {HTMLElement} slide\n\t */\n\tfunction syncSlide( slide = currentSlide ) {\n\n\t\tbackgrounds.sync( slide );\n\t\tfragments.sync( slide );\n\n\t\tslideContent.load( slide );\n\n\t\tbackgrounds.update();\n\t\tnotes.update();\n\n\t}\n\n\t/**\n\t * Resets all vertical slides so that only the first\n\t * is visible.\n\t */\n\tfunction resetVerticalSlides() {\n\n\t\tgetHorizontalSlides().forEach( horizontalSlide => {\n\n\t\t\tUtil.queryAll( horizontalSlide, 'section' ).forEach( ( verticalSlide, y ) => {\n\n\t\t\t\tif( y > 0 ) {\n\t\t\t\t\tverticalSlide.classList.remove( 'present' );\n\t\t\t\t\tverticalSlide.classList.remove( 'past' );\n\t\t\t\t\tverticalSlide.classList.add( 'future' );\n\t\t\t\t\tverticalSlide.setAttribute( 'aria-hidden', 'true' );\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Randomly shuffles all slides in the deck.\n\t */\n\tfunction shuffle( slides = getHorizontalSlides() ) {\n\n\t\tslides.forEach( ( slide, i ) => {\n\n\t\t\t// Insert the slide next to a randomly picked sibling slide\n\t\t\t// slide. This may cause the slide to insert before itself,\n\t\t\t// but that's not an issue.\n\t\t\tlet beforeSlide = slides[ Math.floor( Math.random() * slides.length ) ];\n\t\t\tif( beforeSlide.parentNode === slide.parentNode ) {\n\t\t\t\tslide.parentNode.insertBefore( slide, beforeSlide );\n\t\t\t}\n\n\t\t\t// Randomize the order of vertical slides (if there are any)\n\t\t\tlet verticalSlides = slide.querySelectorAll( 'section' );\n\t\t\tif( verticalSlides.length ) {\n\t\t\t\tshuffle( verticalSlides );\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Updates one dimension of slides by showing the slide\n\t * with the specified index.\n\t *\n\t * @param {string} selector A CSS selector that will fetch\n\t * the group of slides we are working with\n\t * @param {number} index The index of the slide that should be\n\t * shown\n\t *\n\t * @return {number} The index of the slide that is now shown,\n\t * might differ from the passed in index if it was out of\n\t * bounds.\n\t */\n\tfunction updateSlides( selector, index ) {\n\n\t\t// Select all slides and convert the NodeList result to\n\t\t// an array\n\t\tlet slides = Util.queryAll( dom.wrapper, selector ),\n\t\t\tslidesLength = slides.length;\n\n\t\tlet printMode = scrollView.isActive() || printView.isActive();\n\t\tlet loopedForwards = false;\n\t\tlet loopedBackwards = false;\n\n\t\tif( slidesLength ) {\n\n\t\t\t// Should the index loop?\n\t\t\tif( config.loop ) {\n\t\t\t\tif( index >= slidesLength ) loopedForwards = true;\n\n\t\t\t\tindex %= slidesLength;\n\n\t\t\t\tif( index < 0 ) {\n\t\t\t\t\tindex = slidesLength + index;\n\t\t\t\t\tloopedBackwards = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Enforce max and minimum index bounds\n\t\t\tindex = Math.max( Math.min( index, slidesLength - 1 ), 0 );\n\n\t\t\tfor( let i = 0; i < slidesLength; i++ ) {\n\t\t\t\tlet element = slides[i];\n\n\t\t\t\tlet reverse = config.rtl && !isVerticalSlide( element );\n\n\t\t\t\t// Avoid .remove() with multiple args for IE11 support\n\t\t\t\telement.classList.remove( 'past' );\n\t\t\t\telement.classList.remove( 'present' );\n\t\t\t\telement.classList.remove( 'future' );\n\n\t\t\t\t// http://www.w3.org/html/wg/drafts/html/master/editing.html#the-hidden-attribute\n\t\t\t\telement.setAttribute( 'hidden', '' );\n\t\t\t\telement.setAttribute( 'aria-hidden', 'true' );\n\n\t\t\t\t// If this element contains vertical slides\n\t\t\t\tif( element.querySelector( 'section' ) ) {\n\t\t\t\t\telement.classList.add( 'stack' );\n\t\t\t\t}\n\n\t\t\t\t// If we're printing static slides, all slides are \"present\"\n\t\t\t\tif( printMode ) {\n\t\t\t\t\telement.classList.add( 'present' );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif( i < index ) {\n\t\t\t\t\t// Any element previous to index is given the 'past' class\n\t\t\t\t\telement.classList.add( reverse ? 'future' : 'past' );\n\n\t\t\t\t\tif( config.fragments ) {\n\t\t\t\t\t\t// Show all fragments in prior slides\n\t\t\t\t\t\tshowFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if( i > index ) {\n\t\t\t\t\t// Any element subsequent to index is given the 'future' class\n\t\t\t\t\telement.classList.add( reverse ? 'past' : 'future' );\n\n\t\t\t\t\tif( config.fragments ) {\n\t\t\t\t\t\t// Hide all fragments in future slides\n\t\t\t\t\t\thideFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Update the visibility of fragments when a presentation loops\n\t\t\t\t// in either direction\n\t\t\t\telse if( i === index && config.fragments ) {\n\t\t\t\t\tif( loopedForwards ) {\n\t\t\t\t\t\thideFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t\telse if( loopedBackwards ) {\n\t\t\t\t\t\tshowFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet slide = slides[index];\n\t\t\tlet wasPresent = slide.classList.contains( 'present' );\n\n\t\t\t// Mark the current slide as present\n\t\t\tslide.classList.add( 'present' );\n\t\t\tslide.removeAttribute( 'hidden' );\n\t\t\tslide.removeAttribute( 'aria-hidden' );\n\n\t\t\tif( !wasPresent ) {\n\t\t\t\t// Dispatch an event indicating the slide is now visible\n\t\t\t\tdispatchEvent({\n\t\t\t\t\ttarget: slide,\n\t\t\t\t\ttype: 'visible',\n\t\t\t\t\tbubbles: false\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If this slide has a state associated with it, add it\n\t\t\t// onto the current state of the deck\n\t\t\tlet slideState = slide.getAttribute( 'data-state' );\n\t\t\tif( slideState ) {\n\t\t\t\tstate = state.concat( slideState.split( ' ' ) );\n\t\t\t}\n\n\t\t}\n\t\telse {\n\t\t\t// Since there are no slides we can't be anywhere beyond the\n\t\t\t// zeroth index\n\t\t\tindex = 0;\n\t\t}\n\n\t\treturn index;\n\n\t}\n\n\t/**\n\t * Shows all fragment elements within the given container.\n\t */\n\tfunction showFragmentsIn( container ) {\n\n\t\tUtil.queryAll( container, '.fragment' ).forEach( fragment => {\n\t\t\tfragment.classList.add( 'visible' );\n\t\t\tfragment.classList.remove( 'current-fragment' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Hides all fragment elements within the given container.\n\t */\n\tfunction hideFragmentsIn( container ) {\n\n\t\tUtil.queryAll( container, '.fragment.visible' ).forEach( fragment => {\n\t\t\tfragment.classList.remove( 'visible', 'current-fragment' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Optimization method; hide all slides that are far away\n\t * from the present slide.\n\t */\n\tfunction updateSlidesVisibility() {\n\n\t\t// Select all slides and convert the NodeList result to\n\t\t// an array\n\t\tlet horizontalSlides = getHorizontalSlides(),\n\t\t\thorizontalSlidesLength = horizontalSlides.length,\n\t\t\tdistanceX,\n\t\t\tdistanceY;\n\n\t\tif( horizontalSlidesLength && typeof indexh !== 'undefined' ) {\n\n\t\t\t// The number of steps away from the present slide that will\n\t\t\t// be visible\n\t\t\tlet viewDistance = overview.isActive() ? 10 : config.viewDistance;\n\n\t\t\t// Shorten the view distance on devices that typically have\n\t\t\t// less resources\n\t\t\tif( Device.isMobile ) {\n\t\t\t\tviewDistance = overview.isActive() ? 6 : config.mobileViewDistance;\n\t\t\t}\n\n\t\t\t// All slides need to be visible when exporting to PDF\n\t\t\tif( printView.isActive() ) {\n\t\t\t\tviewDistance = Number.MAX_VALUE;\n\t\t\t}\n\n\t\t\tfor( let x = 0; x < horizontalSlidesLength; x++ ) {\n\t\t\t\tlet horizontalSlide = horizontalSlides[x];\n\n\t\t\t\tlet verticalSlides = Util.queryAll( horizontalSlide, 'section' ),\n\t\t\t\t\tverticalSlidesLength = verticalSlides.length;\n\n\t\t\t\t// Determine how far away this slide is from the present\n\t\t\t\tdistanceX = Math.abs( ( indexh || 0 ) - x ) || 0;\n\n\t\t\t\t// If the presentation is looped, distance should measure\n\t\t\t\t// 1 between the first and last slides\n\t\t\t\tif( config.loop ) {\n\t\t\t\t\tdistanceX = Math.abs( ( ( indexh || 0 ) - x ) % ( horizontalSlidesLength - viewDistance ) ) || 0;\n\t\t\t\t}\n\n\t\t\t\t// Show the horizontal slide if it's within the view distance\n\t\t\t\tif( distanceX < viewDistance ) {\n\t\t\t\t\tslideContent.load( horizontalSlide );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tslideContent.unload( horizontalSlide );\n\t\t\t\t}\n\n\t\t\t\tif( verticalSlidesLength ) {\n\n\t\t\t\t\tlet oy = getPreviousVerticalIndex( horizontalSlide );\n\n\t\t\t\t\tfor( let y = 0; y < verticalSlidesLength; y++ ) {\n\t\t\t\t\t\tlet verticalSlide = verticalSlides[y];\n\n\t\t\t\t\t\tdistanceY = x === ( indexh || 0 ) ? Math.abs( ( indexv || 0 ) - y ) : Math.abs( y - oy );\n\n\t\t\t\t\t\tif( distanceX + distanceY < viewDistance ) {\n\t\t\t\t\t\t\tslideContent.load( verticalSlide );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tslideContent.unload( verticalSlide );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Flag if there are ANY vertical slides, anywhere in the deck\n\t\t\tif( hasVerticalSlides() ) {\n\t\t\t\tdom.wrapper.classList.add( 'has-vertical-slides' );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdom.wrapper.classList.remove( 'has-vertical-slides' );\n\t\t\t}\n\n\t\t\t// Flag if there are ANY horizontal slides, anywhere in the deck\n\t\t\tif( hasHorizontalSlides() ) {\n\t\t\t\tdom.wrapper.classList.add( 'has-horizontal-slides' );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdom.wrapper.classList.remove( 'has-horizontal-slides' );\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Determine what available routes there are for navigation.\n\t *\n\t * @return {{left: boolean, right: boolean, up: boolean, down: boolean}}\n\t */\n\tfunction availableRoutes({ includeFragments = false } = {}) {\n\n\t\tlet horizontalSlides = dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ),\n\t\t\tverticalSlides = dom.wrapper.querySelectorAll( VERTICAL_SLIDES_SELECTOR );\n\n\t\tlet routes = {\n\t\t\tleft: indexh > 0,\n\t\t\tright: indexh < horizontalSlides.length - 1,\n\t\t\tup: indexv > 0,\n\t\t\tdown: indexv < verticalSlides.length - 1\n\t\t};\n\n\t\t// Looped presentations can always be navigated as long as\n\t\t// there are slides available\n\t\tif( config.loop ) {\n\t\t\tif( horizontalSlides.length > 1 ) {\n\t\t\t\troutes.left = true;\n\t\t\t\troutes.right = true;\n\t\t\t}\n\n\t\t\tif( verticalSlides.length > 1 ) {\n\t\t\t\troutes.up = true;\n\t\t\t\troutes.down = true;\n\t\t\t}\n\t\t}\n\n\t\tif ( horizontalSlides.length > 1 && config.navigationMode === 'linear' ) {\n\t\t\troutes.right = routes.right || routes.down;\n\t\t\troutes.left = routes.left || routes.up;\n\t\t}\n\n\t\t// If includeFragments is set, a route will be considered\n\t\t// available if either a slid OR fragment is available in\n\t\t// the given direction\n\t\tif( includeFragments === true ) {\n\t\t\tlet fragmentRoutes = fragments.availableRoutes();\n\t\t\troutes.left = routes.left || fragmentRoutes.prev;\n\t\t\troutes.up = routes.up || fragmentRoutes.prev;\n\t\t\troutes.down = routes.down || fragmentRoutes.next;\n\t\t\troutes.right = routes.right || fragmentRoutes.next;\n\t\t}\n\n\t\t// Reverse horizontal controls for rtl\n\t\tif( config.rtl ) {\n\t\t\tlet left = routes.left;\n\t\t\troutes.left = routes.right;\n\t\t\troutes.right = left;\n\t\t}\n\n\t\treturn routes;\n\n\t}\n\n\t/**\n\t * Returns the number of past slides. This can be used as a global\n\t * flattened index for slides.\n\t *\n\t * @param {HTMLElement} [slide=currentSlide] The slide we're counting before\n\t *\n\t * @return {number} Past slide count\n\t */\n\tfunction getSlidePastCount( slide = currentSlide ) {\n\n\t\tlet horizontalSlides = getHorizontalSlides();\n\n\t\t// The number of past slides\n\t\tlet pastCount = 0;\n\n\t\t// Step through all slides and count the past ones\n\t\tmainLoop: for( let i = 0; i < horizontalSlides.length; i++ ) {\n\n\t\t\tlet horizontalSlide = horizontalSlides[i];\n\t\t\tlet verticalSlides = horizontalSlide.querySelectorAll( 'section' );\n\n\t\t\tfor( let j = 0; j < verticalSlides.length; j++ ) {\n\n\t\t\t\t// Stop as soon as we arrive at the present\n\t\t\t\tif( verticalSlides[j] === slide ) {\n\t\t\t\t\tbreak mainLoop;\n\t\t\t\t}\n\n\t\t\t\t// Don't count slides with the \"uncounted\" class\n\t\t\t\tif( verticalSlides[j].dataset.visibility !== 'uncounted' ) {\n\t\t\t\t\tpastCount++;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Stop as soon as we arrive at the present\n\t\t\tif( horizontalSlide === slide ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Don't count the wrapping section for vertical slides and\n\t\t\t// slides marked as uncounted\n\t\t\tif( horizontalSlide.classList.contains( 'stack' ) === false && horizontalSlide.dataset.visibility !== 'uncounted' ) {\n\t\t\t\tpastCount++;\n\t\t\t}\n\n\t\t}\n\n\t\treturn pastCount;\n\n\t}\n\n\t/**\n\t * Returns a value ranging from 0-1 that represents\n\t * how far into the presentation we have navigated.\n\t *\n\t * @return {number}\n\t */\n\tfunction getProgress() {\n\n\t\t// The number of past and total slides\n\t\tlet totalCount = getTotalSlides();\n\t\tlet pastCount = getSlidePastCount();\n\n\t\tif( currentSlide ) {\n\n\t\t\tlet allFragments = currentSlide.querySelectorAll( '.fragment' );\n\n\t\t\t// If there are fragments in the current slide those should be\n\t\t\t// accounted for in the progress.\n\t\t\tif( allFragments.length > 0 ) {\n\t\t\t\tlet visibleFragments = currentSlide.querySelectorAll( '.fragment.visible' );\n\n\t\t\t\t// This value represents how big a portion of the slide progress\n\t\t\t\t// that is made up by its fragments (0-1)\n\t\t\t\tlet fragmentWeight = 0.9;\n\n\t\t\t\t// Add fragment progress to the past slide count\n\t\t\t\tpastCount += ( visibleFragments.length / allFragments.length ) * fragmentWeight;\n\t\t\t}\n\n\t\t}\n\n\t\treturn Math.min( pastCount / ( totalCount - 1 ), 1 );\n\n\t}\n\n\t/**\n\t * Retrieves the h/v location and fragment of the current,\n\t * or specified, slide.\n\t *\n\t * @param {HTMLElement} [slide] If specified, the returned\n\t * index will be for this slide rather than the currently\n\t * active one\n\t *\n\t * @return {{h: number, v: number, f: number}}\n\t */\n\tfunction getIndices( slide ) {\n\n\t\t// By default, return the current indices\n\t\tlet h = indexh,\n\t\t\tv = indexv,\n\t\t\tf;\n\n\t\t// If a slide is specified, return the indices of that slide\n\t\tif( slide ) {\n\t\t\t// In scroll mode the original h/x index is stored on the slide\n\t\t\tif( scrollView.isActive() ) {\n\t\t\t\th = parseInt( slide.getAttribute( 'data-index-h' ), 10 );\n\n\t\t\t\tif( slide.getAttribute( 'data-index-v' ) ) {\n\t\t\t\t\tv = parseInt( slide.getAttribute( 'data-index-v' ), 10 );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet isVertical = isVerticalSlide( slide );\n\t\t\t\tlet slideh = isVertical ? slide.parentNode : slide;\n\n\t\t\t\t// Select all horizontal slides\n\t\t\t\tlet horizontalSlides = getHorizontalSlides();\n\n\t\t\t\t// Now that we know which the horizontal slide is, get its index\n\t\t\t\th = Math.max( horizontalSlides.indexOf( slideh ), 0 );\n\n\t\t\t\t// Assume we're not vertical\n\t\t\t\tv = undefined;\n\n\t\t\t\t// If this is a vertical slide, grab the vertical index\n\t\t\t\tif( isVertical ) {\n\t\t\t\t\tv = Math.max( Util.queryAll( slide.parentNode, 'section' ).indexOf( slide ), 0 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif( !slide && currentSlide ) {\n\t\t\tlet hasFragments = currentSlide.querySelectorAll( '.fragment' ).length > 0;\n\t\t\tif( hasFragments ) {\n\t\t\t\tlet currentFragment = currentSlide.querySelector( '.current-fragment' );\n\t\t\t\tif( currentFragment && currentFragment.hasAttribute( 'data-fragment-index' ) ) {\n\t\t\t\t\tf = parseInt( currentFragment.getAttribute( 'data-fragment-index' ), 10 );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tf = currentSlide.querySelectorAll( '.fragment.visible' ).length - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { h, v, f };\n\n\t}\n\n\t/**\n\t * Retrieves all slides in this presentation.\n\t */\n\tfunction getSlides() {\n\n\t\treturn Util.queryAll( dom.wrapper, SLIDES_SELECTOR + ':not(.stack):not([data-visibility=\"uncounted\"])' );\n\n\t}\n\n\t/**\n\t * Returns a list of all horizontal slides in the deck. Each\n\t * vertical stack is included as one horizontal slide in the\n\t * resulting array.\n\t */\n\tfunction getHorizontalSlides() {\n\n\t\treturn Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR );\n\n\t}\n\n\t/**\n\t * Returns all vertical slides that exist within this deck.\n\t */\n\tfunction getVerticalSlides() {\n\n\t\treturn Util.queryAll( dom.wrapper, '.slides>section>section' );\n\n\t}\n\n\t/**\n\t * Returns all vertical stacks (each stack can contain multiple slides).\n\t */\n\tfunction getVerticalStacks() {\n\n\t\treturn Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR + '.stack');\n\n\t}\n\n\t/**\n\t * Returns true if there are at least two horizontal slides.\n\t */\n\tfunction hasHorizontalSlides() {\n\n\t\treturn getHorizontalSlides().length > 1;\n\t}\n\n\t/**\n\t * Returns true if there are at least two vertical slides.\n\t */\n\tfunction hasVerticalSlides() {\n\n\t\treturn getVerticalSlides().length > 1;\n\n\t}\n\n\t/**\n\t * Returns an array of objects where each object represents the\n\t * attributes on its respective slide.\n\t */\n\tfunction getSlidesAttributes() {\n\n\t\treturn getSlides().map( slide => {\n\n\t\t\tlet attributes = {};\n\t\t\tfor( let i = 0; i < slide.attributes.length; i++ ) {\n\t\t\t\tlet attribute = slide.attributes[ i ];\n\t\t\t\tattributes[ attribute.name ] = attribute.value;\n\t\t\t}\n\t\t\treturn attributes;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Retrieves the total number of slides in this presentation.\n\t *\n\t * @return {number}\n\t */\n\tfunction getTotalSlides() {\n\n\t\treturn getSlides().length;\n\n\t}\n\n\t/**\n\t * Returns the slide element matching the specified index.\n\t *\n\t * @return {HTMLElement}\n\t */\n\tfunction getSlide( x, y ) {\n\n\t\tlet horizontalSlide = getHorizontalSlides()[ x ];\n\t\tlet verticalSlides = horizontalSlide && horizontalSlide.querySelectorAll( 'section' );\n\n\t\tif( verticalSlides && verticalSlides.length && typeof y === 'number' ) {\n\t\t\treturn verticalSlides ? verticalSlides[ y ] : undefined;\n\t\t}\n\n\t\treturn horizontalSlide;\n\n\t}\n\n\t/**\n\t * Returns the background element for the given slide.\n\t * All slides, even the ones with no background properties\n\t * defined, have a background element so as long as the\n\t * index is valid an element will be returned.\n\t *\n\t * @param {mixed} x Horizontal background index OR a slide\n\t * HTML element\n\t * @param {number} y Vertical background index\n\t * @return {(HTMLElement[]|*)}\n\t */\n\tfunction getSlideBackground( x, y ) {\n\n\t\tlet slide = typeof x === 'number' ? getSlide( x, y ) : x;\n\t\tif( slide ) {\n\t\t\treturn slide.slideBackgroundElement;\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\t/**\n\t * Retrieves the current state of the presentation as\n\t * an object. This state can then be restored at any\n\t * time.\n\t *\n\t * @return {{indexh: number, indexv: number, indexf: number, paused: boolean, overview: boolean}}\n\t */\n\tfunction getState() {\n\n\t\tlet indices = getIndices();\n\n\t\treturn {\n\t\t\tindexh: indices.h,\n\t\t\tindexv: indices.v,\n\t\t\tindexf: indices.f,\n\t\t\tpaused: isPaused(),\n\t\t\toverview: overview.isActive()\n\t\t};\n\n\t}\n\n\t/**\n\t * Restores the presentation to the given state.\n\t *\n\t * @param {object} state As generated by getState()\n\t * @see {@link getState} generates the parameter `state`\n\t */\n\tfunction setState( state ) {\n\n\t\tif( typeof state === 'object' ) {\n\t\t\tslide( Util.deserialize( state.indexh ), Util.deserialize( state.indexv ), Util.deserialize( state.indexf ) );\n\n\t\t\tlet pausedFlag = Util.deserialize( state.paused ),\n\t\t\t\toverviewFlag = Util.deserialize( state.overview );\n\n\t\t\tif( typeof pausedFlag === 'boolean' && pausedFlag !== isPaused() ) {\n\t\t\t\ttogglePause( pausedFlag );\n\t\t\t}\n\n\t\t\tif( typeof overviewFlag === 'boolean' && overviewFlag !== overview.isActive() ) {\n\t\t\t\toverview.toggle( overviewFlag );\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Cues a new automated slide if enabled in the config.\n\t */\n\tfunction cueAutoSlide() {\n\n\t\tcancelAutoSlide();\n\n\t\tif( currentSlide && config.autoSlide !== false ) {\n\n\t\t\tlet fragment = currentSlide.querySelector( '.current-fragment[data-autoslide]' );\n\n\t\t\tlet fragmentAutoSlide = fragment ? fragment.getAttribute( 'data-autoslide' ) : null;\n\t\t\tlet parentAutoSlide = currentSlide.parentNode ? currentSlide.parentNode.getAttribute( 'data-autoslide' ) : null;\n\t\t\tlet slideAutoSlide = currentSlide.getAttribute( 'data-autoslide' );\n\n\t\t\t// Pick value in the following priority order:\n\t\t\t// 1. Current fragment's data-autoslide\n\t\t\t// 2. Current slide's data-autoslide\n\t\t\t// 3. Parent slide's data-autoslide\n\t\t\t// 4. Global autoSlide setting\n\t\t\tif( fragmentAutoSlide ) {\n\t\t\t\tautoSlide = parseInt( fragmentAutoSlide, 10 );\n\t\t\t}\n\t\t\telse if( slideAutoSlide ) {\n\t\t\t\tautoSlide = parseInt( slideAutoSlide, 10 );\n\t\t\t}\n\t\t\telse if( parentAutoSlide ) {\n\t\t\t\tautoSlide = parseInt( parentAutoSlide, 10 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tautoSlide = config.autoSlide;\n\n\t\t\t\t// If there are media elements with data-autoplay,\n\t\t\t\t// automatically set the autoSlide duration to the\n\t\t\t\t// length of that media. Not applicable if the slide\n\t\t\t\t// is divided up into fragments.\n\t\t\t\t// playbackRate is accounted for in the duration.\n\t\t\t\tif( currentSlide.querySelectorAll( '.fragment' ).length === 0 ) {\n\t\t\t\t\tUtil.queryAll( currentSlide, 'video, audio' ).forEach( el => {\n\t\t\t\t\t\tif( el.hasAttribute( 'data-autoplay' ) ) {\n\t\t\t\t\t\t\tif( autoSlide && (el.duration * 1000 / el.playbackRate ) > autoSlide ) {\n\t\t\t\t\t\t\t\tautoSlide = ( el.duration * 1000 / el.playbackRate ) + 1000;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Cue the next auto-slide if:\n\t\t\t// - There is an autoSlide value\n\t\t\t// - Auto-sliding isn't paused by the user\n\t\t\t// - The presentation isn't paused\n\t\t\t// - The overview isn't active\n\t\t\t// - The presentation isn't over\n\t\t\tif( autoSlide && !autoSlidePaused && !isPaused() && !overview.isActive() && ( !isLastSlide() || fragments.availableRoutes().next || config.loop === true ) ) {\n\t\t\t\tautoSlideTimeout = setTimeout( () => {\n\t\t\t\t\tif( typeof config.autoSlideMethod === 'function' ) {\n\t\t\t\t\t\tconfig.autoSlideMethod()\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnavigateNext();\n\t\t\t\t\t}\n\t\t\t\t\tcueAutoSlide();\n\t\t\t\t}, autoSlide );\n\t\t\t\tautoSlideStartTime = Date.now();\n\t\t\t}\n\n\t\t\tif( autoSlidePlayer ) {\n\t\t\t\tautoSlidePlayer.setPlaying( autoSlideTimeout !== -1 );\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Cancels any ongoing request to auto-slide.\n\t */\n\tfunction cancelAutoSlide() {\n\n\t\tclearTimeout( autoSlideTimeout );\n\t\tautoSlideTimeout = -1;\n\n\t}\n\n\tfunction pauseAutoSlide() {\n\n\t\tif( autoSlide && !autoSlidePaused ) {\n\t\t\tautoSlidePaused = true;\n\t\t\tdispatchEvent({ type: 'autoslidepaused' });\n\t\t\tclearTimeout( autoSlideTimeout );\n\n\t\t\tif( autoSlidePlayer ) {\n\t\t\t\tautoSlidePlayer.setPlaying( false );\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfunction resumeAutoSlide() {\n\n\t\tif( autoSlide && autoSlidePaused ) {\n\t\t\tautoSlidePaused = false;\n\t\t\tdispatchEvent({ type: 'autoslideresumed' });\n\t\t\tcueAutoSlide();\n\t\t}\n\n\t}\n\n\tfunction navigateLeft({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedHorizontally = true;\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.prev();\n\n\t\t// Reverse for RTL\n\t\tif( config.rtl ) {\n\t\t\tif( ( overview.isActive() || skipFragments || fragments.next() === false ) && availableRoutes().left ) {\n\t\t\t\tslide( indexh + 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t\t}\n\t\t}\n\t\t// Normal navigation\n\t\telse if( ( overview.isActive() || skipFragments || fragments.prev() === false ) && availableRoutes().left ) {\n\t\t\tslide( indexh - 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t}\n\n\t}\n\n\tfunction navigateRight({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedHorizontally = true;\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.next();\n\n\t\t// Reverse for RTL\n\t\tif( config.rtl ) {\n\t\t\tif( ( overview.isActive() || skipFragments || fragments.prev() === false ) && availableRoutes().right ) {\n\t\t\t\tslide( indexh - 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t\t}\n\t\t}\n\t\t// Normal navigation\n\t\telse if( ( overview.isActive() || skipFragments || fragments.next() === false ) && availableRoutes().right ) {\n\t\t\tslide( indexh + 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t}\n\n\t}\n\n\tfunction navigateUp({skipFragments=false}={}) {\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.prev();\n\n\t\t// Prioritize hiding fragments\n\t\tif( ( overview.isActive() || skipFragments || fragments.prev() === false ) && availableRoutes().up ) {\n\t\t\tslide( indexh, indexv - 1 );\n\t\t}\n\n\t}\n\n\tfunction navigateDown({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedVertically = true;\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.next();\n\n\t\t// Prioritize revealing fragments\n\t\tif( ( overview.isActive() || skipFragments || fragments.next() === false ) && availableRoutes().down ) {\n\t\t\tslide( indexh, indexv + 1 );\n\t\t}\n\n\t}\n\n\t/**\n\t * Navigates backwards, prioritized in the following order:\n\t * 1) Previous fragment\n\t * 2) Previous vertical slide\n\t * 3) Previous horizontal slide\n\t */\n\tfunction navigatePrev({skipFragments=false}={}) {\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.prev();\n\n\t\t// Prioritize revealing fragments\n\t\tif( skipFragments || fragments.prev() === false ) {\n\t\t\tif( availableRoutes().up ) {\n\t\t\t\tnavigateUp({skipFragments});\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Fetch the previous horizontal slide, if there is one\n\t\t\t\tlet previousSlide;\n\n\t\t\t\tif( config.rtl ) {\n\t\t\t\t\tpreviousSlide = Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR + '.future' ).pop();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpreviousSlide = Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR + '.past' ).pop();\n\t\t\t\t}\n\n\t\t\t\t// When going backwards and arriving on a stack we start\n\t\t\t\t// at the bottom of the stack\n\t\t\t\tif( previousSlide && previousSlide.classList.contains( 'stack' ) ) {\n\t\t\t\t\tlet v = ( previousSlide.querySelectorAll( 'section' ).length - 1 ) || undefined;\n\t\t\t\t\tlet h = indexh - 1;\n\t\t\t\t\tslide( h, v );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnavigateLeft({skipFragments});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * The reverse of #navigatePrev().\n\t */\n\tfunction navigateNext({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedHorizontally = true;\n\t\tnavigationHistory.hasNavigatedVertically = true;\n\n\t\t// Scroll view navigation is handled independently\n\t\tif( scrollView.isActive() ) return scrollView.next();\n\n\t\t// Prioritize revealing fragments\n\t\tif( skipFragments || fragments.next() === false ) {\n\n\t\t\tlet routes = availableRoutes();\n\n\t\t\t// When looping is enabled `routes.down` is always available\n\t\t\t// so we need a separate check for when we've reached the\n\t\t\t// end of a stack and should move horizontally\n\t\t\tif( routes.down && routes.right && config.loop && isLastVerticalSlide() ) {\n\t\t\t\troutes.down = false;\n\t\t\t}\n\n\t\t\tif( routes.down ) {\n\t\t\t\tnavigateDown({skipFragments});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnavigateRight({skipFragments});\n\t\t\t}\n\t\t}\n\n\t}\n\n\n\t// --------------------------------------------------------------------//\n\t// ----------------------------- EVENTS -------------------------------//\n\t// --------------------------------------------------------------------//\n\n\t/**\n\t * Called by all event handlers that are based on user\n\t * input.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onUserInput( event ) {\n\n\t\tif( config.autoSlideStoppable ) {\n\t\t\tpauseAutoSlide();\n\t\t}\n\n\t}\n\n\t/**\n\t* Listener for post message events posted to this window.\n\t*/\n\tfunction onPostMessage( event ) {\n\n\t\tlet data = event.data;\n\n\t\t// Make sure we're dealing with JSON\n\t\tif( typeof data === 'string' && data.charAt( 0 ) === '{' && data.charAt( data.length - 1 ) === '}' ) {\n\t\t\tdata = JSON.parse( data );\n\n\t\t\t// Check if the requested method can be found\n\t\t\tif( data.method && typeof Reveal[data.method] === 'function' ) {\n\n\t\t\t\tif( POST_MESSAGE_METHOD_BLACKLIST.test( data.method ) === false ) {\n\n\t\t\t\t\tconst result = Reveal[data.method].apply( Reveal, data.args );\n\n\t\t\t\t\t// Dispatch a postMessage event with the returned value from\n\t\t\t\t\t// our method invocation for getter functions\n\t\t\t\t\tdispatchPostMessage( 'callback', { method: data.method, result: result } );\n\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.warn( 'reveal.js: \"'+ data.method +'\" is is blacklisted from the postMessage API' );\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Event listener for transition end on the current slide.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onTransitionEnd( event ) {\n\n\t\tif( transition === 'running' && /section/gi.test( event.target.nodeName ) ) {\n\t\t\ttransition = 'idle';\n\t\t\tdispatchEvent({\n\t\t\t\ttype: 'slidetransitionend',\n\t\t\t\tdata: { indexh, indexv, previousSlide, currentSlide }\n\t\t\t});\n\t\t}\n\n\t}\n\n\t/**\n\t * A global listener for all click events inside of the\n\t * .slides container.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onSlidesClicked( event ) {\n\n\t\tconst anchor = Util.closest( event.target, 'a[href^=\"#\"]' );\n\n\t\t// If a hash link is clicked, we find the target slide\n\t\t// and navigate to it. We previously relied on 'hashchange'\n\t\t// for links like these but that prevented media with\n\t\t// audio tracks from playing in mobile browsers since it\n\t\t// wasn't considered a direct interaction with the document.\n\t\tif( anchor ) {\n\t\t\tconst hash = anchor.getAttribute( 'href' );\n\t\t\tconst indices = location.getIndicesFromHash( hash );\n\n\t\t\tif( indices ) {\n\t\t\t\tReveal.slide( indices.h, indices.v, indices.f );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Handler for the window level 'resize' event.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onWindowResize( event ) {\n\n\t\tlayout();\n\t}\n\n\t/**\n\t * Handle for the window level 'visibilitychange' event.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onPageVisibilityChange( event ) {\n\n\t\t// If, after clicking a link or similar and we're coming back,\n\t\t// focus the document.body to ensure we can use keyboard shortcuts\n\t\tif( document.hidden === false && document.activeElement !== document.body ) {\n\t\t\t// Not all elements support .blur() - SVGs among them.\n\t\t\tif( typeof document.activeElement.blur === 'function' ) {\n\t\t\t\tdocument.activeElement.blur();\n\t\t\t}\n\t\t\tdocument.body.focus();\n\t\t}\n\n\t}\n\n\t/**\n\t * Handler for the document level 'fullscreenchange' event.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onFullscreenChange( event ) {\n\n\t\tlet element = document.fullscreenElement || document.webkitFullscreenElement;\n\t\tif( element === dom.wrapper ) {\n\t\t\tevent.stopImmediatePropagation();\n\n\t\t\t// Timeout to avoid layout shift in Safari\n\t\t\tsetTimeout( () => {\n\t\t\t\tReveal.layout();\n\t\t\t\tReveal.focus.focus(); // focus.focus :'(\n\t\t\t}, 1 );\n\t\t}\n\n\t}\n\n\t/**\n\t * Handles clicks on links that are set to preview in the\n\t * iframe overlay.\n\t *\n\t * @param {object} event\n\t */\n\tfunction onPreviewLinkClicked( event ) {\n\n\t\tif( event.currentTarget && event.currentTarget.hasAttribute( 'href' ) ) {\n\t\t\tlet url = event.currentTarget.getAttribute( 'href' );\n\t\t\tif( url ) {\n\t\t\t\tshowPreview( url );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Handles click on the auto-sliding controls element.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onAutoSlidePlayerClick( event ) {\n\n\t\t// Replay\n\t\tif( isLastSlide() && config.loop === false ) {\n\t\t\tslide( 0, 0 );\n\t\t\tresumeAutoSlide();\n\t\t}\n\t\t// Resume\n\t\telse if( autoSlidePaused ) {\n\t\t\tresumeAutoSlide();\n\t\t}\n\t\t// Pause\n\t\telse {\n\t\t\tpauseAutoSlide();\n\t\t}\n\n\t}\n\n\n\t// --------------------------------------------------------------------//\n\t// ------------------------------- API --------------------------------//\n\t// --------------------------------------------------------------------//\n\n\t// The public reveal.js API\n\tconst API = {\n\t\tVERSION,\n\n\t\tinitialize,\n\t\tconfigure,\n\t\tdestroy,\n\n\t\tsync,\n\t\tsyncSlide,\n\t\tsyncFragments: fragments.sync.bind( fragments ),\n\n\t\t// Navigation methods\n\t\tslide,\n\t\tleft: navigateLeft,\n\t\tright: navigateRight,\n\t\tup: navigateUp,\n\t\tdown: navigateDown,\n\t\tprev: navigatePrev,\n\t\tnext: navigateNext,\n\n\t\t// Navigation aliases\n\t\tnavigateLeft, navigateRight, navigateUp, navigateDown, navigatePrev, navigateNext,\n\n\t\t// Fragment methods\n\t\tnavigateFragment: fragments.goto.bind( fragments ),\n\t\tprevFragment: fragments.prev.bind( fragments ),\n\t\tnextFragment: fragments.next.bind( fragments ),\n\n\t\t// Event binding\n\t\ton,\n\t\toff,\n\n\t\t// Legacy event binding methods left in for backwards compatibility\n\t\taddEventListener: on,\n\t\tremoveEventListener: off,\n\n\t\t// Forces an update in slide layout\n\t\tlayout,\n\n\t\t// Randomizes the order of slides\n\t\tshuffle,\n\n\t\t// Returns an object with the available routes as booleans (left/right/top/bottom)\n\t\tavailableRoutes,\n\n\t\t// Returns an object with the available fragments as booleans (prev/next)\n\t\tavailableFragments: fragments.availableRoutes.bind( fragments ),\n\n\t\t// Toggles a help overlay with keyboard shortcuts\n\t\ttoggleHelp,\n\n\t\t// Toggles the overview mode on/off\n\t\ttoggleOverview: overview.toggle.bind( overview ),\n\n\t\t// Toggles the scroll view on/off\n\t\ttoggleScrollView: scrollView.toggle.bind( scrollView ),\n\n\t\t// Toggles the \"black screen\" mode on/off\n\t\ttogglePause,\n\n\t\t// Toggles the auto slide mode on/off\n\t\ttoggleAutoSlide,\n\n\t\t// Toggles visibility of the jump-to-slide UI\n\t\ttoggleJumpToSlide,\n\n\t\t// Slide navigation checks\n\t\tisFirstSlide,\n\t\tisLastSlide,\n\t\tisLastVerticalSlide,\n\t\tisVerticalSlide,\n\t\tisVerticalStack,\n\n\t\t// State checks\n\t\tisPaused,\n\t\tisAutoSliding,\n\t\tisSpeakerNotes: notes.isSpeakerNotesWindow.bind( notes ),\n\t\tisOverview: overview.isActive.bind( overview ),\n\t\tisFocused: focus.isFocused.bind( focus ),\n\n\t\tisScrollView: scrollView.isActive.bind( scrollView ),\n\t\tisPrintView: printView.isActive.bind( printView ),\n\n\t\t// Checks if reveal.js has been loaded and is ready for use\n\t\tisReady: () => ready,\n\n\t\t// Slide preloading\n\t\tloadSlide: slideContent.load.bind( slideContent ),\n\t\tunloadSlide: slideContent.unload.bind( slideContent ),\n\n\t\t// Media playback\n\t\tstartEmbeddedContent: () => slideContent.startEmbeddedContent( currentSlide ),\n\t\tstopEmbeddedContent: () => slideContent.stopEmbeddedContent( currentSlide, { unloadIframes: false } ),\n\n\t\t// Preview management\n\t\tshowPreview,\n\t\thidePreview: closeOverlay,\n\n\t\t// Adds or removes all internal event listeners\n\t\taddEventListeners,\n\t\tremoveEventListeners,\n\t\tdispatchEvent,\n\n\t\t// Facility for persisting and restoring the presentation state\n\t\tgetState,\n\t\tsetState,\n\n\t\t// Presentation progress on range of 0-1\n\t\tgetProgress,\n\n\t\t// Returns the indices of the current, or specified, slide\n\t\tgetIndices,\n\n\t\t// Returns an Array of key:value maps of the attributes of each\n\t\t// slide in the deck\n\t\tgetSlidesAttributes,\n\n\t\t// Returns the number of slides that we have passed\n\t\tgetSlidePastCount,\n\n\t\t// Returns the total number of slides\n\t\tgetTotalSlides,\n\n\t\t// Returns the slide element at the specified index\n\t\tgetSlide,\n\n\t\t// Returns the previous slide element, may be null\n\t\tgetPreviousSlide: () => previousSlide,\n\n\t\t// Returns the current slide element\n\t\tgetCurrentSlide: () => currentSlide,\n\n\t\t// Returns the slide background element at the specified index\n\t\tgetSlideBackground,\n\n\t\t// Returns the speaker notes string for a slide, or null\n\t\tgetSlideNotes: notes.getSlideNotes.bind( notes ),\n\n\t\t// Returns an Array of all slides\n\t\tgetSlides,\n\n\t\t// Returns an array with all horizontal/vertical slides in the deck\n\t\tgetHorizontalSlides,\n\t\tgetVerticalSlides,\n\n\t\t// Checks if the presentation contains two or more horizontal\n\t\t// and vertical slides\n\t\thasHorizontalSlides,\n\t\thasVerticalSlides,\n\n\t\t// Checks if the deck has navigated on either axis at least once\n\t\thasNavigatedHorizontally: () => navigationHistory.hasNavigatedHorizontally,\n\t\thasNavigatedVertically: () => navigationHistory.hasNavigatedVertically,\n\n\t\tshouldAutoAnimateBetween,\n\n\t\t// Adds/removes a custom key binding\n\t\taddKeyBinding: keyboard.addKeyBinding.bind( keyboard ),\n\t\tremoveKeyBinding: keyboard.removeKeyBinding.bind( keyboard ),\n\n\t\t// Programmatically triggers a keyboard event\n\t\ttriggerKey: keyboard.triggerKey.bind( keyboard ),\n\n\t\t// Registers a new shortcut to include in the help overlay\n\t\tregisterKeyboardShortcut: keyboard.registerKeyboardShortcut.bind( keyboard ),\n\n\t\tgetComputedSlideSize,\n\t\tsetCurrentScrollPage,\n\n\t\t// Returns the current scale of the presentation content\n\t\tgetScale: () => scale,\n\n\t\t// Returns the current configuration object\n\t\tgetConfig: () => config,\n\n\t\t// Helper method, retrieves query string as a key:value map\n\t\tgetQueryHash: Util.getQueryHash,\n\n\t\t// Returns the path to the current slide as represented in the URL\n\t\tgetSlidePath: location.getHash.bind( location ),\n\n\t\t// Returns reveal.js DOM elements\n\t\tgetRevealElement: () => revealElement,\n\t\tgetSlidesElement: () => dom.slides,\n\t\tgetViewportElement: () => dom.viewport,\n\t\tgetBackgroundsElement: () => backgrounds.element,\n\n\t\t// API for registering and retrieving plugins\n\t\tregisterPlugin: plugins.registerPlugin.bind( plugins ),\n\t\thasPlugin: plugins.hasPlugin.bind( plugins ),\n\t\tgetPlugin: plugins.getPlugin.bind( plugins ),\n\t\tgetPlugins: plugins.getRegisteredPlugins.bind( plugins )\n\n\t};\n\n\t// Our internal API which controllers have access to\n\tUtil.extend( Reveal, {\n\t\t...API,\n\n\t\t// Methods for announcing content to screen readers\n\t\tannounceStatus,\n\t\tgetStatusText,\n\n\t\t// Controllers\n\t\tfocus,\n\t\tscroll: scrollView,\n\t\tprogress,\n\t\tcontrols,\n\t\tlocation,\n\t\toverview,\n\t\tfragments,\n\t\tbackgrounds,\n\t\tslideContent,\n\t\tslideNumber,\n\n\t\tonUserInput,\n\t\tcloseOverlay,\n\t\tupdateSlidesVisibility,\n\t\tlayoutSlideContents,\n\t\ttransformSlides,\n\t\tcueAutoSlide,\n\t\tcancelAutoSlide\n\t} );\n\n\treturn API;\n\n};\n","import Deck, { VERSION } from './reveal.js'\n\n/**\n * Expose the Reveal class to the window. To create a\n * new instance:\n * let deck = new Reveal( document.querySelector( '.reveal' ), {\n * controls: false\n * } );\n * deck.initialize().then(() => {\n * // reveal.js is ready\n * });\n */\nlet Reveal = Deck;\n\n\n/**\n * The below is a thin shell that mimics the pre 4.0\n * reveal.js API and ensures backwards compatibility.\n * This API only allows for one Reveal instance per\n * page, whereas the new API above lets you run many\n * presentations on the same page.\n *\n * Reveal.initialize( { controls: false } ).then(() => {\n * // reveal.js is ready\n * });\n */\n\nlet enqueuedAPICalls = [];\n\nReveal.initialize = options => {\n\n\t// Create our singleton reveal.js instance\n\tObject.assign( Reveal, new Deck( document.querySelector( '.reveal' ), options ) );\n\n\t// Invoke any enqueued API calls\n\tenqueuedAPICalls.map( method => method( Reveal ) );\n\n\treturn Reveal.initialize();\n\n}\n\n/**\n * The pre 4.0 API let you add event listener before\n * initializing. We maintain the same behavior by\n * queuing up premature API calls and invoking all\n * of them when Reveal.initialize is called.\n */\n[ 'configure', 'on', 'off', 'addEventListener', 'removeEventListener', 'registerPlugin' ].forEach( method => {\n\tReveal[method] = ( ...args ) => {\n\t\tenqueuedAPICalls.push( deck => deck[method].call( null, ...args ) );\n\t}\n} );\n\nReveal.isReady = () => false;\n\nReveal.VERSION = VERSION;\n\nexport default Reveal;"],"names":["extend","a","b","i","queryAll","el","selector","Array","from","querySelectorAll","toggleClass","className","value","classList","add","remove","deserialize","match","parseFloat","transformElement","element","transform","style","matches","target","matchesMethod","matchesSelector","msMatchesSelector","call","closest","parentNode","enterFullscreen","requestMethod","document","documentElement","requestFullscreen","webkitRequestFullscreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen","apply","createStyleSheet","tag","createElement","type","length","styleSheet","cssText","appendChild","createTextNode","head","getQueryHash","query","location","search","replace","split","shift","pop","unescape","fileExtensionToMimeMap","mp4","m4a","ogv","mpeg","webm","UA","navigator","userAgent","isMobile","test","platform","maxTouchPoints","isAndroid","e","t","slice","o","l","u","cancelAnimationFrame","requestAnimationFrame","s","filter","dirty","active","c","forEach","styleComputed","m","y","v","p","d","f","S","availableWidth","clientWidth","currentWidth","scrollWidth","previousFontSize","currentFontSize","Math","min","max","minSize","maxSize","whiteSpace","multiLine","n","getComputedStyle","getPropertyValue","display","preStyleTestCompleted","fontSize","dispatchEvent","CustomEvent","detail","oldValue","newValue","scaleFactor","h","w","observeMutations","observer","disconnect","originalStyle","z","F","MutationObserver","observe","g","subtree","childList","characterData","W","E","clearTimeout","setTimeout","x","observeWindowDelay","M","Object","defineProperty","set","concat","observeWindow","fitAll","C","assign","map","newbie","push","fit","unfreeze","freeze","unsubscribe","arguments","window","SlideContent","constructor","Reveal","this","startEmbeddedIframe","bind","shouldPreload","isScrollView","preload","getConfig","preloadIframes","hasAttribute","load","slide","options","tagName","setAttribute","getAttribute","removeAttribute","media","sources","source","background","slideBackgroundElement","backgroundContent","slideBackgroundContentElement","backgroundIframe","backgroundImage","backgroundVideo","backgroundVideoLoop","backgroundVideoMuted","trim","encodeRFC3986URI","url","encodeURI","charCodeAt","toString","toUpperCase","decodeURI","join","isSpeakerNotes","video","muted","sourceElement","getMimeTypeFromFile","filename","excludeIframes","iframe","width","height","maxHeight","maxWidth","backgroundIframeElement","querySelector","layout","scopeElement","fitty","unload","getSlideBackground","formatEmbeddedContent","_appendParamToIframeSource","sourceAttribute","sourceURL","param","getSlidesElement","src","indexOf","startEmbeddedContent","autoplay","autoPlayMedia","play","readyState","startEmbeddedMedia","promise","catch","controls","addEventListener","removeEventListener","event","isAttachedToDOM","isVisible","currentTime","contentWindow","postMessage","stopEmbeddedContent","unloadIframes","pause","SLIDES_SELECTOR","HORIZONTAL_SLIDES_SELECTOR","VERTICAL_SLIDES_SELECTOR","POST_MESSAGE_METHOD_BLACKLIST","FRAGMENT_STYLE_REGEX","SlideNumber","render","getRevealElement","configure","config","oldConfig","slideNumberDisplay","slideNumber","isPrintView","showSlideNumber","update","innerHTML","getSlideNumber","getCurrentSlide","format","getHorizontalSlides","horizontalOffset","dataset","visibility","getSlidePastCount","getTotalSlides","indices","getIndices","sep","isVerticalSlide","getHash","formatNumber","delimiter","isNaN","destroy","JumpToSlide","onInput","onBlur","onKeyDown","jumpInput","placeholder","show","indicesOnShow","focus","hide","jumpTimeout","jump","slideNumberFormat","getSlides","parseInt","getIndicesFromHash","oneBasedIndex","jumpAfter","delay","regex","RegExp","find","innerText","cancel","confirm","keyCode","stopImmediatePropagation","colorToRgb","color","hex3","r","charAt","hex6","rgb","rgba","Backgrounds","create","slideh","backgroundStack","createBackground","slidev","parallaxBackgroundImage","backgroundSize","parallaxBackgroundSize","backgroundRepeat","parallaxBackgroundRepeat","backgroundPosition","parallaxBackgroundPosition","container","contentElement","sync","data","backgroundColor","backgroundGradient","backgroundTransition","backgroundOpacity","dataPreload","opacity","contrastClass","getContrastClass","contrastColor","computedBackgroundStyle","bubbleSlideContrastClassToElement","classToBubble","contains","includeAll","currentSlide","currentBackground","horizontalPast","rtl","horizontalFuture","childNodes","backgroundh","backgroundv","indexv","previousBackground","slideContent","currentBackgroundContent","backgroundImageURL","previousBackgroundHash","currentBackgroundHash","currentVideo","previousVideo","currentVideoParent","updateParallax","backgroundWidth","backgroundHeight","horizontalSlides","verticalSlides","getVerticalSlides","horizontalOffsetMultiplier","slideWidth","offsetWidth","horizontalSlideCount","parallaxBackgroundHorizontal","verticalOffsetMultiplier","verticalOffset","slideHeight","offsetHeight","verticalSlideCount","parallaxBackgroundVertical","autoAnimateCounter","AutoAnimate","run","fromSlide","toSlide","reset","allSlides","toSlideIndex","fromSlideIndex","autoAnimateStyleSheet","animationOptions","getAutoAnimateOptions","autoAnimate","slideDirection","fromSlideIsHidden","css","getAutoAnimatableElements","elements","autoAnimateElements","to","autoAnimateUnmatched","defaultUnmatchedDuration","duration","defaultUnmatchedDelay","getUnmatchedAutoAnimateElements","unmatchedElement","unmatchedOptions","id","autoAnimateTarget","fontWeight","sheet","removeChild","elementOptions","easing","fromProps","getAutoAnimatableProperties","toProps","styles","translate","scale","presentationScale","getScale","delta","scaleX","scaleY","round","propertyName","toValue","fromValue","explicitValue","toStyleProperties","keys","inheritedOptions","autoAnimateEasing","autoAnimateDuration","autoAnimatedParent","autoAnimateDelay","direction","properties","bounds","measure","center","getBoundingClientRect","offsetLeft","offsetTop","computedStyles","autoAnimateStyles","property","pairs","autoAnimateMatcher","getAutoAnimatePairs","reserved","pair","index","textNodes","findAutoAnimateMatches","node","nodeName","textContent","getLocalBoundingBox","fromScope","toScope","serializer","fromMatches","toMatches","key","fromElement","primaryIndex","secondaryIndex","rootElement","children","reduce","result","containsAnimatedElements","ScrollView","activatedCallbacks","onScroll","activate","stateBeforeActivation","getState","slideHTMLBeforeActivation","horizontalBackgrounds","presentationBackground","viewportElement","viewportStyles","pageElements","pageContainer","previousSlide","createPageElement","isVertical","contentContainer","shouldAutoAnimateBetween","page","slideBackground","pageBackground","stickyContainer","insertBefore","horizontalSlide","isVerticalStack","verticalSlide","createProgressBar","stack","setState","callback","restoreScrollPosition","passive","deactivate","stateBeforeDeactivation","removeProgressBar","toggle","override","isActive","progressBar","progressBarInner","progressBarPlayhead","firstChild","handleDocumentMouseMove","progress","clientY","top","progressBarHeight","scrollTop","scrollHeight","handleDocumentMouseUp","draggingProgressBar","showProgressBar","preventDefault","syncPages","syncScrollPosition","slideSize","getComputedSlideSize","innerWidth","innerHeight","useCompactLayout","scrollLayout","viewportHeight","compactHeight","pageHeight","scrollTriggerHeight","setProperty","scrollSnapType","scrollSnap","slideTriggers","pages","pageElement","createPage","slideElement","stickyElement","backgroundElement","autoAnimatePages","activatePage","deactivatePage","createFragmentTriggersForPage","createAutoAnimateTriggersForPage","totalScrollTriggerCount","scrollTriggers","total","triggerStick","scrollSnapAlign","marginTop","removeProperty","scrollPadding","totalHeight","position","setTriggerRanges","scrollProgress","syncProgressBar","trigger","rangeStart","range","scrollTriggerSegmentSize","scrollTrigger","fragmentGroups","fragments","sort","autoAnimateElement","autoAnimatePage","indexh","viewportHeightFactor","playheadHeight","progressBarScrollableHeight","progressSegmentHeight","spacing","slideTrigger","progressBarSlide","scrollTriggerElements","triggerElement","scrollProgressMid","activePage","loaded","activateTrigger","deactivateTrigger","setProgressBarValue","getAllPages","hideProgressBarTimeout","prev","next","scrollToSlide","getScrollTriggerBySlide","storeScrollPosition","storeScrollPositionTimeout","sessionStorage","setItem","origin","pathname","scrollPosition","getItem","scrollOrigin","setCurrentScrollPage","backgrounds","sibling","getSlideByIndices","flatMap","getViewportElement","PrintView","slides","injectPageNumbers","pageWidth","floor","margin","Promise","body","layoutSlideContents","slideScrollHeights","left","contentHeight","numberOfPages","ceil","pdfMaxPagesPerSlide","pdfPageHeightOffset","showNotes","notes","getSlideNotes","notesSpacing","notesLayout","notesElement","bottom","numberElement","pdfSeparateFragments","previousFragmentStep","fragment","clonedPage","cloneNode","fragmentNumber","view","Fragments","disable","enable","availableRoutes","hiddenFragments","grouped","ordered","unordered","sorted","group","sortAll","changedFragments","shown","hidden","maxIndex","currentFragment","wasVisible","announceStatus","getStatusText","bubbles","goto","offset","lastVisibleFragment","fragmentInURL","writeURL","Overview","onSlideClicked","overview","cancelAutoSlide","getBackgroundsElement","overviewSlideWidth","overviewSlideHeight","updateSlidesVisibility","hslide","vslide","hbackground","vbackground","vmin","transformSlides","cueAutoSlide","Keyboard","shortcuts","bindings","onDocumentKeyDown","navigationMode","unbind","addKeyBinding","binding","description","removeKeyBinding","triggerKey","registerKeyboardShortcut","getShortcuts","getBindings","keyboardCondition","isFocused","autoSlideWasPaused","isAutoSliding","onUserInput","activeElementIsCE","activeElement","isContentEditable","activeElementIsInput","activeElementIsNotes","unusedModifier","shiftKey","altKey","ctrlKey","metaKey","resumeKeyCodes","keyboard","isPaused","useLinearMode","hasHorizontalSlides","hasVerticalSlides","triggered","action","skipFragments","right","undefined","up","Number","MAX_VALUE","down","includes","togglePause","embedded","autoSlideStoppable","toggleAutoSlide","jumpToSlide","toggleJumpToSlide","toggleHelp","closeOverlay","Location","MAX_REPLACE_STATE_FREQUENCY","writeURLTimeout","replaceStateTimestamp","onWindowHashChange","hash","name","bits","hashIndexBase","hashOneBasedIndex","getElementById","decodeURIComponent","error","readURL","currentIndices","newIndices","history","debouncedReplaceState","replaceState","Date","now","replaceStateTimeout","encodeURIComponent","Controls","onNavigateLeftClicked","onNavigateRightClicked","onNavigateUpClicked","onNavigateDownClicked","onNavigatePrevClicked","onNavigateNextClicked","onEnterFullscreen","revealElement","controlsLeft","controlsRight","controlsUp","controlsDown","controlsPrev","controlsNext","controlsFullscreen","controlsRightArrow","controlsLeftArrow","controlsDownArrow","controlsLayout","controlsBackArrows","pointerEvents","eventName","routes","fragmentsRoutes","controlsTutorial","hasNavigatedVertically","hasNavigatedHorizontally","viewport","parentElement","Progress","onProgressClicked","bar","getProgress","getMaxWidth","slidesTotal","slideIndex","clientX","targetIndices","Pointer","lastMouseWheelStep","cursorHidden","cursorInactiveTimeout","onDocumentCursorActive","onDocumentMouseScroll","mouseWheel","hideInactiveCursor","showCursor","cursor","hideCursor","hideCursorTime","wheelDelta","loadScript","script","async","defer","onload","onreadystatechange","onerror","err","Error","lastChild","Plugins","reveal","state","registeredPlugins","asyncDependencies","plugins","dependencies","registerPlugin","resolve","scripts","scriptsToLoad","condition","scriptLoadedCallback","initPlugins","then","console","warn","pluginValues","values","pluginsToInitialize","loadAsync","initNextPlugin","afterPlugInitialized","plugin","init","hasPlugin","getPlugin","getRegisteredPlugins","Touch","touchStartX","touchStartY","touchStartCount","touchCaptured","onPointerDown","onPointerMove","onPointerUp","onTouchStart","onTouchMove","onTouchEnd","msPointerEnabled","isSwipePrevented","touches","currentX","currentY","includeFragments","deltaX","deltaY","abs","pointerType","MSPOINTER_TYPE_TOUCH","STATE_FOCUS","STATE_BLUR","Focus","onRevealPointerDown","onDocumentPointerDown","blur","Notes","updateVisibility","hasNotes","isSpeakerNotesWindow","notesElements","Playback","progressCheck","diameter","diameter2","thickness","playing","progressOffset","canvas","context","getContext","setPlaying","wasPlaying","animate","progressBefore","radius","iconSize","endAngle","PI","startAngle","save","clearRect","beginPath","arc","fillStyle","fill","lineWidth","strokeStyle","stroke","fillRect","moveTo","lineTo","restore","on","listener","off","defaultConfig","minScale","maxScale","respondToHashChanges","disableLayout","touch","loop","shuffle","help","showHiddenSlides","autoSlide","autoSlideMethod","defaultTiming","previewLinks","postMessageEvents","focusBodyOnPageVisibilityChange","transition","transitionSpeed","scrollActivationWidth","POSITIVE_INFINITY","viewDistance","mobileViewDistance","sortFragmentsOnSync","VERSION","Deck","autoSlidePlayer","ready","navigationHistory","slidesTransform","dom","autoSlideTimeout","autoSlideStartTime","autoSlidePaused","scrollView","printView","pointer","start","Util","wrapper","parent","childElementCount","Device","pauseOverlay","createSingletonNode","tagname","classname","nodes","testNode","statusElement","overflow","clip","createStatusElement","setupDOM","onPostMessage","setInterval","scrollLeft","onFullscreenChange","activatePrintView","activateScrollView","removeEventListeners","activateInitialView","text","nodeType","isAriaHidden","isDisplayHidden","child","isReady","numberOfSlides","resume","enablePreviewLinks","disablePreviewLinks","onAutoSlidePlayerClick","addEventListeners","onWindowResize","onSlidesClicked","onTransitionEnd","onPageVisibilityChange","useCapture","transforms","createEvent","initEvent","dispatchPostMessage","dispatchSlideChanged","self","message","namespace","JSON","stringify","onPreviewLinkClicked","showPreview","overlay","showHelp","html","viewportWidth","size","oldScale","presentationWidth","presentationHeight","zoom","len","checkResponsiveScrollView","remainingHeight","getRemainingHeight","newHeight","oldHeight","nw","naturalWidth","videoWidth","nh","naturalHeight","videoHeight","es","setPreviousVerticalIndex","getPreviousVerticalIndex","attributeName","isLastVerticalSlide","nextElementSibling","isFirstSlide","isLastSlide","wasPaused","defaultPrevented","stateBefore","indexhBefore","indexvBefore","updateSlides","slideChanged","currentHorizontalSlide","currentVerticalSlides","autoAnimateTransition","stateLoop","j","splice","beforeSlide","random","slidesLength","printMode","loopedForwards","loopedBackwards","reverse","showFragmentsIn","hideFragmentsIn","wasPresent","slideState","distanceX","distanceY","horizontalSlidesLength","verticalSlidesLength","oy","fragmentRoutes","pastCount","mainLoop","getSlide","indexf","paused","fragmentAutoSlide","parentAutoSlide","slideAutoSlide","playbackRate","navigateNext","pauseAutoSlide","resumeAutoSlide","navigateLeft","navigateRight","navigateUp","navigateDown","navigatePrev","parse","method","args","anchor","fullscreenElement","webkitFullscreenElement","currentTarget","API","initialize","initOptions","setViewport","syncSlide","syncFragments","navigateFragment","prevFragment","nextFragment","availableFragments","toggleOverview","toggleScrollView","isOverview","loadSlide","unloadSlide","hidePreview","pausedFlag","overviewFlag","totalCount","allFragments","fragmentWeight","getSlidesAttributes","attributes","attribute","getPreviousSlide","getSlidePath","getPlugins","scroll","enqueuedAPICalls","deck"],"mappings":"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","x_google_ignoreList":[2]}
\ No newline at end of file
+{"version":3,"file":"reveal.js","sources":["../js/utils/util.js","../js/utils/device.js","../node_modules/fitty/dist/fitty.module.js","../js/controllers/slidecontent.js","../js/utils/constants.js","../js/controllers/slidenumber.js","../js/controllers/jumptoslide.js","../js/utils/color.js","../js/controllers/backgrounds.js","../js/controllers/autoanimate.js","../js/controllers/scrollview.js","../js/controllers/printview.js","../js/controllers/fragments.js","../js/controllers/overview.js","../js/controllers/keyboard.js","../js/controllers/location.js","../js/controllers/controls.js","../js/controllers/progress.js","../js/controllers/pointer.js","../js/utils/loader.js","../js/controllers/plugins.js","../js/controllers/touch.js","../js/controllers/focus.js","../js/controllers/notes.js","../js/components/playback.js","../js/config.js","../js/reveal.js","../js/index.js"],"sourcesContent":["/**\n * Extend object a with the properties of object b.\n * If there's a conflict, object b takes precedence.\n *\n * @param {object} a\n * @param {object} b\n */\nexport const extend = ( a, b ) => {\n\n\tfor( let i in b ) {\n\t\ta[ i ] = b[ i ];\n\t}\n\n\treturn a;\n\n}\n\n/**\n * querySelectorAll but returns an Array.\n */\nexport const queryAll = ( el, selector ) => {\n\n\treturn Array.from( el.querySelectorAll( selector ) );\n\n}\n\n/**\n * classList.toggle() with cross browser support\n */\nexport const toggleClass = ( el, className, value ) => {\n\tif( value ) {\n\t\tel.classList.add( className );\n\t}\n\telse {\n\t\tel.classList.remove( className );\n\t}\n}\n\n/**\n * Utility for deserializing a value.\n *\n * @param {*} value\n * @return {*}\n */\nexport const deserialize = ( value ) => {\n\n\tif( typeof value === 'string' ) {\n\t\tif( value === 'null' ) return null;\n\t\telse if( value === 'true' ) return true;\n\t\telse if( value === 'false' ) return false;\n\t\telse if( value.match( /^-?[\\d\\.]+$/ ) ) return parseFloat( value );\n\t}\n\n\treturn value;\n\n}\n\n/**\n * Measures the distance in pixels between point a\n * and point b.\n *\n * @param {object} a point with x/y properties\n * @param {object} b point with x/y properties\n *\n * @return {number}\n */\nexport const distanceBetween = ( a, b ) => {\n\n\tlet dx = a.x - b.x,\n\t\tdy = a.y - b.y;\n\n\treturn Math.sqrt( dx*dx + dy*dy );\n\n}\n\n/**\n * Applies a CSS transform to the target element.\n *\n * @param {HTMLElement} element\n * @param {string} transform\n */\nexport const transformElement = ( element, transform ) => {\n\n\telement.style.transform = transform;\n\n}\n\n/**\n * Element.matches with IE support.\n *\n * @param {HTMLElement} target The element to match\n * @param {String} selector The CSS selector to match\n * the element against\n *\n * @return {Boolean}\n */\nexport const matches = ( target, selector ) => {\n\n\tlet matchesMethod = target.matches || target.matchesSelector || target.msMatchesSelector;\n\n\treturn !!( matchesMethod && matchesMethod.call( target, selector ) );\n\n}\n\n/**\n * Find the closest parent that matches the given\n * selector.\n *\n * @param {HTMLElement} target The child element\n * @param {String} selector The CSS selector to match\n * the parents against\n *\n * @return {HTMLElement} The matched parent or null\n * if no matching parent was found\n */\nexport const closest = ( target, selector ) => {\n\n\t// Native Element.closest\n\tif( typeof target.closest === 'function' ) {\n\t\treturn target.closest( selector );\n\t}\n\n\t// Polyfill\n\twhile( target ) {\n\t\tif( matches( target, selector ) ) {\n\t\t\treturn target;\n\t\t}\n\n\t\t// Keep searching\n\t\ttarget = target.parentNode;\n\t}\n\n\treturn null;\n\n}\n\n/**\n * Handling the fullscreen functionality via the fullscreen API\n *\n * @see http://fullscreen.spec.whatwg.org/\n * @see https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode\n */\nexport const enterFullscreen = element => {\n\n\telement = element || document.documentElement;\n\n\t// Check which implementation is available\n\tlet requestMethod = element.requestFullscreen ||\n\t\t\t\t\t\telement.webkitRequestFullscreen ||\n\t\t\t\t\t\telement.webkitRequestFullScreen ||\n\t\t\t\t\t\telement.mozRequestFullScreen ||\n\t\t\t\t\t\telement.msRequestFullscreen;\n\n\tif( requestMethod ) {\n\t\trequestMethod.apply( element );\n\t}\n\n}\n\n/**\n * Creates an HTML element and returns a reference to it.\n * If the element already exists the existing instance will\n * be returned.\n *\n * @param {HTMLElement} container\n * @param {string} tagname\n * @param {string} classname\n * @param {string} innerHTML\n *\n * @return {HTMLElement}\n */\nexport const createSingletonNode = ( container, tagname, classname, innerHTML='' ) => {\n\n\t// Find all nodes matching the description\n\tlet nodes = container.querySelectorAll( '.' + classname );\n\n\t// Check all matches to find one which is a direct child of\n\t// the specified container\n\tfor( let i = 0; i < nodes.length; i++ ) {\n\t\tlet testNode = nodes[i];\n\t\tif( testNode.parentNode === container ) {\n\t\t\treturn testNode;\n\t\t}\n\t}\n\n\t// If no node was found, create it now\n\tlet node = document.createElement( tagname );\n\tnode.className = classname;\n\tnode.innerHTML = innerHTML;\n\tcontainer.appendChild( node );\n\n\treturn node;\n\n}\n\n/**\n * Injects the given CSS styles into the DOM.\n *\n * @param {string} value\n */\nexport const createStyleSheet = ( value ) => {\n\n\tlet tag = document.createElement( 'style' );\n\ttag.type = 'text/css';\n\n\tif( value && value.length > 0 ) {\n\t\tif( tag.styleSheet ) {\n\t\t\ttag.styleSheet.cssText = value;\n\t\t}\n\t\telse {\n\t\t\ttag.appendChild( document.createTextNode( value ) );\n\t\t}\n\t}\n\n\tdocument.head.appendChild( tag );\n\n\treturn tag;\n\n}\n\n/**\n * Returns a key:value hash of all query params.\n */\nexport const getQueryHash = () => {\n\n\tlet query = {};\n\n\tlocation.search.replace( /[A-Z0-9]+?=([\\w\\.%-]*)/gi, a => {\n\t\tquery[ a.split( '=' ).shift() ] = a.split( '=' ).pop();\n\t} );\n\n\t// Basic deserialization\n\tfor( let i in query ) {\n\t\tlet value = query[ i ];\n\n\t\tquery[ i ] = deserialize( unescape( value ) );\n\t}\n\n\t// Do not accept new dependencies via query config to avoid\n\t// the potential of malicious script injection\n\tif( typeof query['dependencies'] !== 'undefined' ) delete query['dependencies'];\n\n\treturn query;\n\n}\n\n/**\n * Returns the remaining height within the parent of the\n * target element.\n *\n * remaining height = [ configured parent height ] - [ current parent height ]\n *\n * @param {HTMLElement} element\n * @param {number} [height]\n */\nexport const getRemainingHeight = ( element, height = 0 ) => {\n\n\tif( element ) {\n\t\tlet newHeight, oldHeight = element.style.height;\n\n\t\t// Change the .stretch element height to 0 in order find the height of all\n\t\t// the other elements\n\t\telement.style.height = '0px';\n\n\t\t// In Overview mode, the parent (.slide) height is set of 700px.\n\t\t// Restore it temporarily to its natural height.\n\t\telement.parentNode.style.height = 'auto';\n\n\t\tnewHeight = height - element.parentNode.offsetHeight;\n\n\t\t// Restore the old height, just in case\n\t\telement.style.height = oldHeight + 'px';\n\n\t\t// Clear the parent (.slide) height. .removeProperty works in IE9+\n\t\telement.parentNode.style.removeProperty('height');\n\n\t\treturn newHeight;\n\t}\n\n\treturn height;\n\n}\n\nconst fileExtensionToMimeMap = {\n\t'mp4': 'video/mp4',\n\t'm4a': 'video/mp4',\n\t'ogv': 'video/ogg',\n\t'mpeg': 'video/mpeg',\n\t'webm': 'video/webm'\n}\n\n/**\n * Guess the MIME type for common file formats.\n */\nexport const getMimeTypeFromFile = ( filename='' ) => {\n\treturn fileExtensionToMimeMap[filename.split('.').pop()]\n}\n\n/**\n * Encodes a string for RFC3986-compliant URL format.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI#encoding_for_rfc3986\n *\n * @param {string} url\n */\nexport const encodeRFC3986URI = ( url='' ) => {\n\treturn encodeURI(url)\n\t .replace(/%5B/g, \"[\")\n\t .replace(/%5D/g, \"]\")\n\t .replace(\n\t\t/[!'()*]/g,\n\t\t(c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`\n\t );\n}","const UA = navigator.userAgent;\n\nexport const isMobile = /(iphone|ipod|ipad|android)/gi.test( UA ) ||\n\t\t\t\t\t\t( navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 ); // iPadOS\n\nexport const isChrome = /chrome/i.test( UA ) && !/edge/i.test( UA );\n\nexport const isAndroid = /android/gi.test( UA );","/**\n * fitty v2.3.7 - Snugly resizes text to fit its parent container\n * Copyright (c) 2023 Rik Schennink
(https://pqina.nl/)\n */\n\nvar e=function(e){if(e){var t=function(e){return[].slice.call(e)},n=0,i=1,r=2,o=3,a=[],l=null,u=\"requestAnimationFrame\"in e?function(){e.cancelAnimationFrame(l),l=e.requestAnimationFrame((function(){return s(a.filter((function(e){return e.dirty&&e.active})))}))}:function(){},c=function(e){return function(){a.forEach((function(t){return t.dirty=e})),u()}},s=function(e){e.filter((function(e){return!e.styleComputed})).forEach((function(e){e.styleComputed=m(e)})),e.filter(y).forEach(v);var t=e.filter(p);t.forEach(d),t.forEach((function(e){v(e),f(e)})),t.forEach(S)},f=function(e){return e.dirty=n},d=function(e){e.availableWidth=e.element.parentNode.clientWidth,e.currentWidth=e.element.scrollWidth,e.previousFontSize=e.currentFontSize,e.currentFontSize=Math.min(Math.max(e.minSize,e.availableWidth/e.currentWidth*e.previousFontSize),e.maxSize),e.whiteSpace=e.multiLine&&e.currentFontSize===e.minSize?\"normal\":\"nowrap\"},p=function(e){return e.dirty!==r||e.dirty===r&&e.element.parentNode.clientWidth!==e.availableWidth},m=function(t){var n=e.getComputedStyle(t.element,null);return t.currentFontSize=parseFloat(n.getPropertyValue(\"font-size\")),t.display=n.getPropertyValue(\"display\"),t.whiteSpace=n.getPropertyValue(\"white-space\"),!0},y=function(e){var t=!1;return!e.preStyleTestCompleted&&(/inline-/.test(e.display)||(t=!0,e.display=\"inline-block\"),\"nowrap\"!==e.whiteSpace&&(t=!0,e.whiteSpace=\"nowrap\"),e.preStyleTestCompleted=!0,t)},v=function(e){e.element.style.whiteSpace=e.whiteSpace,e.element.style.display=e.display,e.element.style.fontSize=e.currentFontSize+\"px\"},S=function(e){e.element.dispatchEvent(new CustomEvent(\"fit\",{detail:{oldValue:e.previousFontSize,newValue:e.currentFontSize,scaleFactor:e.currentFontSize/e.previousFontSize}}))},h=function(e,t){return function(){e.dirty=t,e.active&&u()}},w=function(e){return function(){a=a.filter((function(t){return t.element!==e.element})),e.observeMutations&&e.observer.disconnect(),e.element.style.whiteSpace=e.originalStyle.whiteSpace,e.element.style.display=e.originalStyle.display,e.element.style.fontSize=e.originalStyle.fontSize}},b=function(e){return function(){e.active||(e.active=!0,u())}},z=function(e){return function(){return e.active=!1}},F=function(e){e.observeMutations&&(e.observer=new MutationObserver(h(e,i)),e.observer.observe(e.element,e.observeMutations))},g={minSize:16,maxSize:512,multiLine:!0,observeMutations:\"MutationObserver\"in e&&{subtree:!0,childList:!0,characterData:!0}},W=null,E=function(){e.clearTimeout(W),W=e.setTimeout(c(r),x.observeWindowDelay)},M=[\"resize\",\"orientationchange\"];return Object.defineProperty(x,\"observeWindow\",{set:function(t){var n=\"\".concat(t?\"add\":\"remove\",\"EventListener\");M.forEach((function(t){e[n](t,E)}))}}),x.observeWindow=!0,x.observeWindowDelay=100,x.fitAll=c(o),x}function C(e,t){var n=Object.assign({},g,t),i=e.map((function(e){var t=Object.assign({},n,{element:e,active:!0});return function(e){e.originalStyle={whiteSpace:e.element.style.whiteSpace,display:e.element.style.display,fontSize:e.element.style.fontSize},F(e),e.newbie=!0,e.dirty=!0,a.push(e)}(t),{element:e,fit:h(t,o),unfreeze:b(t),freeze:z(t),unsubscribe:w(t)}}));return u(),i}function x(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return\"string\"==typeof e?C(t(document.querySelectorAll(e)),n):C([e],n)[0]}}(\"undefined\"==typeof window?null:window);export default e;\n","import { extend, queryAll, closest, getMimeTypeFromFile, encodeRFC3986URI } from '../utils/util.js'\nimport { isMobile } from '../utils/device.js'\n\nimport fitty from 'fitty';\n\n/**\n * Handles loading, unloading and playback of slide\n * content such as images, videos and iframes.\n */\nexport default class SlideContent {\n\n\tconstructor( Reveal ) {\n\n\t\tthis.Reveal = Reveal;\n\n\t\tthis.startEmbeddedIframe = this.startEmbeddedIframe.bind( this );\n\n\t}\n\n\t/**\n\t * Should the given element be preloaded?\n\t * Decides based on local element attributes and global config.\n\t *\n\t * @param {HTMLElement} element\n\t */\n\tshouldPreload( element ) {\n\n\t\tif( this.Reveal.isScrollView() ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Prefer an explicit global preload setting\n\t\tlet preload = this.Reveal.getConfig().preloadIframes;\n\n\t\t// If no global setting is available, fall back on the element's\n\t\t// own preload setting\n\t\tif( typeof preload !== 'boolean' ) {\n\t\t\tpreload = element.hasAttribute( 'data-preload' );\n\t\t}\n\n\t\treturn preload;\n\t}\n\n\t/**\n\t * Called when the given slide is within the configured view\n\t * distance. Shows the slide element and loads any content\n\t * that is set to load lazily (data-src).\n\t *\n\t * @param {HTMLElement} slide Slide to show\n\t */\n\tload( slide, options = {} ) {\n\n\t\t// Show the slide element\n\t\tslide.style.display = this.Reveal.getConfig().display;\n\n\t\t// Media elements with data-src attributes\n\t\tqueryAll( slide, 'img[data-src], video[data-src], audio[data-src], iframe[data-src]' ).forEach( element => {\n\t\t\tif( element.tagName !== 'IFRAME' || this.shouldPreload( element ) ) {\n\t\t\t\telement.setAttribute( 'src', element.getAttribute( 'data-src' ) );\n\t\t\t\telement.setAttribute( 'data-lazy-loaded', '' );\n\t\t\t\telement.removeAttribute( 'data-src' );\n\t\t\t}\n\t\t} );\n\n\t\t// Media elements with