diff --git a/dist/plugin/math.js b/dist/plugin/math.js index 77f38bab..7b944e88 100644 --- a/dist/plugin/math.js +++ b/dist/plugin/math.js @@ -1,4 +1,4 @@ -(function(d,r){typeof exports=="object"&&typeof module<"u"?module.exports=r():typeof define=="function"&&define.amd?define(r):(d=typeof globalThis<"u"?globalThis:d||self,d.RevealMath=r())})(this,function(){"use strict";const d=()=>{let n,s={version:"latest",delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1},{left:"\\(",right:"\\)",display:!1},{left:"\\[",right:"\\]",display:!0}],ignoredTags:["script","noscript","style","textarea","pre"]};const c=t=>{let e=document.createElement("link");e.rel="stylesheet",e.href=t,document.head.appendChild(e)},l=t=>new Promise((e,i)=>{const o=document.createElement("script");o.type="text/javascript",o.onload=e,o.onerror=i,o.src=t,document.head.append(o)});async function a(t){for(const e of t)await l(e)}return{id:"katex",init:function(t){n=t;let e=n.getConfig().katex||{},i={...s,...e};const{local:o,version:x,extensions:S,...g}=i;let p=i.local||"https://cdn.jsdelivr.net/npm/katex",u=i.local?"":"@"+i.version,j=p+u+"/dist/katex.min.css",M=p+u+"/dist/katex.min.js",v=p+u+"/dist/contrib/mhchem.min.js",J=p+u+"/dist/contrib/auto-render.min.js",h=[M];i.extensions&&i.extensions.includes("mhchem")&&h.push(v),h.push(J);const f=()=>{renderMathInElement(t.getSlidesElement(),g),n.layout()};c(j),a(h).then(()=>{n.isReady()?f():n.on("ready",f.bind(this))})}}},r=()=>{let n,s={messageStyle:"none",tex2jax:{inlineMath:[["$","$"],["\\(","\\)"]],skipTags:["script","noscript","style","textarea","pre"]},skipStartupTypeset:!0};function c(l,a){let t=document.querySelector("head"),e=document.createElement("script");e.type="text/javascript",e.src=l;let i=()=>{typeof a=="function"&&(a.call(),a=null)};e.onload=i,e.onreadystatechange=()=>{this.readyState==="loaded"&&i()},t.appendChild(e)}return{id:"mathjax2",init:function(l){n=l;let a=n.getConfig().mathjax2||n.getConfig().math||{},t={...s,...a},e=t.mathjax||"https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js",i=t.config||"TeX-AMS_HTML-full",o=e+"?config="+i;t.tex2jax={...s.tex2jax,...a.tex2jax},t.mathjax=t.config=null,c(o,function(){MathJax.Hub.Config(t),MathJax.Hub.Queue(["Typeset",MathJax.Hub,n.getRevealElement()]),MathJax.Hub.Queue(n.layout),n.on("slidechanged",function(x){MathJax.Hub.Queue(["Typeset",MathJax.Hub,x.currentSlide])})})}}},m=()=>{let n,s={tex:{inlineMath:[["$","$"],["\\(","\\)"]]},options:{skipHtmlTags:["script","noscript","style","textarea","pre"]},startup:{ready:()=>{MathJax.startup.defaultReady(),MathJax.startup.promise.then(()=>{n.layout()})}}};function c(l,a){let t=document.createElement("script");t.type="text/javascript",t.id="MathJax-script",t.src=l,t.async=!0,t.onload=()=>{typeof a=="function"&&(a.call(),a=null)},document.head.appendChild(t)}return{id:"mathjax3",init:function(l){n=l;let a=n.getConfig().mathjax3||{},t={...s,...a};t.tex={...s.tex,...a.tex},t.options={...s.options,...a.options},t.startup={...s.startup,...a.startup};let e=t.mathjax||"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js";t.mathjax=null,window.MathJax=t,c(e,function(){n.addEventListener("slidechanged",function(i){MathJax.typeset()})})}}},y=r;/*! +(function(d,r){typeof exports=="object"&&typeof module<"u"?module.exports=r():typeof define=="function"&&define.amd?define(r):(d=typeof globalThis<"u"?globalThis:d||self,d.RevealMath=r())})(this,function(){"use strict";const d=()=>{let n,s={version:"latest",delimiters:[{left:"$$",right:"$$",display:!0},{left:"$",right:"$",display:!1},{left:"\\(",right:"\\)",display:!1},{left:"\\[",right:"\\]",display:!0}],ignoredTags:["script","noscript","style","textarea","pre","code"]};const c=t=>{let e=document.createElement("link");e.rel="stylesheet",e.href=t,document.head.appendChild(e)},o=t=>new Promise((e,i)=>{const l=document.createElement("script");l.type="text/javascript",l.onload=e,l.onerror=i,l.src=t,document.head.append(l)});async function a(t){for(const e of t)await o(e)}return{id:"katex",init:function(t){n=t;let e=n.getConfig().katex||{},i={...s,...e};const{local:l,version:x,extensions:S,...g}=i;let p=i.local||"https://cdn.jsdelivr.net/npm/katex",u=i.local?"":"@"+i.version,j=p+u+"/dist/katex.min.css",M=p+u+"/dist/katex.min.js",v=p+u+"/dist/contrib/mhchem.min.js",J=p+u+"/dist/contrib/auto-render.min.js",h=[M];i.extensions&&i.extensions.includes("mhchem")&&h.push(v),h.push(J);const f=()=>{renderMathInElement(t.getSlidesElement(),g),n.layout()};c(j),a(h).then(()=>{n.isReady()?f():n.on("ready",f.bind(this))})}}},r=()=>{let n,s={messageStyle:"none",tex2jax:{inlineMath:[["$","$"],["\\(","\\)"]],skipTags:["script","noscript","style","textarea","pre","code"]},skipStartupTypeset:!0};function c(o,a){let t=document.querySelector("head"),e=document.createElement("script");e.type="text/javascript",e.src=o;let i=()=>{typeof a=="function"&&(a.call(),a=null)};e.onload=i,e.onreadystatechange=()=>{this.readyState==="loaded"&&i()},t.appendChild(e)}return{id:"mathjax2",init:function(o){n=o;let a=n.getConfig().mathjax2||n.getConfig().math||{},t={...s,...a},e=t.mathjax||"https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js",i=t.config||"TeX-AMS_HTML-full",l=e+"?config="+i;t.tex2jax={...s.tex2jax,...a.tex2jax},t.mathjax=t.config=null,c(l,function(){MathJax.Hub.Config(t),MathJax.Hub.Queue(["Typeset",MathJax.Hub,n.getRevealElement()]),MathJax.Hub.Queue(n.layout),n.on("slidechanged",function(x){MathJax.Hub.Queue(["Typeset",MathJax.Hub,x.currentSlide])})})}}},m=()=>{let n,s={tex:{inlineMath:[["$","$"],["\\(","\\)"]]},options:{skipHtmlTags:["script","noscript","style","textarea","pre","code"]},startup:{ready:()=>{MathJax.startup.defaultReady(),MathJax.startup.promise.then(()=>{n.layout()})}}};function c(o,a){let t=document.createElement("script");t.type="text/javascript",t.id="MathJax-script",t.src=o,t.async=!0,t.onload=()=>{typeof a=="function"&&(a.call(),a=null)},document.head.appendChild(t)}return{id:"mathjax3",init:function(o){n=o;let a=n.getConfig().mathjax3||{},t={...s,...a};t.tex={...s.tex,...a.tex},t.options={...s.options,...a.options},t.startup={...s.startup,...a.startup};let e=t.mathjax||"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js";t.mathjax=null,window.MathJax=t,c(e,function(){n.addEventListener("slidechanged",function(i){MathJax.typeset()})})}}},y=r;/*! * This plugin is a wrapper for the MathJax2, * MathJax3 and KaTeX typesetter plugins. */return Plugin=Object.assign(y(),{KaTeX:d,MathJax2:r,MathJax3:m})}); diff --git a/dist/plugin/math.mjs b/dist/plugin/math.mjs index adb64ee6..6aee99af 100644 --- a/dist/plugin/math.mjs +++ b/dist/plugin/math.mjs @@ -8,7 +8,7 @@ const M = () => { { left: "\\(", right: "\\)", display: !1 }, { left: "\\[", right: "\\]", display: !0 } ], - ignoredTags: ["script", "noscript", "style", "textarea", "pre"] + ignoredTags: ["script", "noscript", "style", "textarea", "pre", "code"] }; const r = (t) => { let e = document.createElement("link"); @@ -42,7 +42,7 @@ const M = () => { messageStyle: "none", tex2jax: { inlineMath: [["$", "$"], ["\\(", "\\)"]], - skipTags: ["script", "noscript", "style", "textarea", "pre"] + skipTags: ["script", "noscript", "style", "textarea", "pre", "code"] }, skipStartupTypeset: !0 }; @@ -74,7 +74,7 @@ const M = () => { inlineMath: [["$", "$"], ["\\(", "\\)"]] }, options: { - skipHtmlTags: ["script", "noscript", "style", "textarea", "pre"] + skipHtmlTags: ["script", "noscript", "style", "textarea", "pre", "code"] }, startup: { ready: () => { diff --git a/dist/reveal.css b/dist/reveal.css index 0f398284..1e0a15fe 100644 --- a/dist/reveal.css +++ b/dist/reveal.css @@ -1 +1 @@ -.reveal .stretch,.reveal .r-stretch{max-width:none;max-height:none}.reveal pre.stretch code,.reveal pre.r-stretch code{height:100%;max-height:100%;box-sizing:border-box}.reveal .r-fit-text{display:inline-block;white-space:nowrap}.reveal .r-stack{display:grid;grid-template-rows:100%}.reveal .r-stack>*{grid-area:1/1;margin:auto}.reveal .r-vstack,.reveal .r-hstack{display:flex}.reveal .r-vstack img,.reveal .r-vstack video,.reveal .r-hstack img,.reveal .r-hstack video{min-width:0;min-height:0;object-fit:contain}.reveal .r-vstack{flex-direction:column;align-items:center;justify-content:center}.reveal .r-hstack{flex-direction:row;align-items:center;justify-content:center}.reveal .items-stretch{align-items:stretch}.reveal .items-start{align-items:flex-start}.reveal .items-center{align-items:center}.reveal .items-end{align-items:flex-end}.reveal .justify-between{justify-content:space-between}.reveal .justify-around{justify-content:space-around}.reveal .justify-start{justify-content:flex-start}.reveal .justify-center{justify-content:center}.reveal .justify-end{justify-content:flex-end}html.reveal-print *{-webkit-print-color-adjust:exact}html.reveal-print{width:100%;height:100%;overflow:visible}html.reveal-print body{margin:0 auto!important;border:0;padding:0;float:none!important;overflow:visible}html.reveal-print .nestedarrow,html.reveal-print .reveal .controls,html.reveal-print .reveal .progress,html.reveal-print .reveal .playback,html.reveal-print .reveal.overview,html.reveal-print .state-background{display:none!important}html.reveal-print .reveal pre code{overflow:hidden!important}html.reveal-print .reveal{width:auto!important;height:auto!important;overflow:hidden!important}html.reveal-print .reveal .slides{position:static;width:100%!important;height:auto!important;zoom:1!important;pointer-events:initial;left:auto;top:auto;margin:0!important;padding:0!important;overflow:visible;display:block;perspective:none;perspective-origin:50% 50%}html.reveal-print .reveal .slides .pdf-page{position:relative;overflow:hidden;z-index:1;page-break-after:always}html.reveal-print .reveal .slides .pdf-page:last-of-type{page-break-after:avoid}html.reveal-print .reveal .slides section{visibility:visible!important;display:block!important;position:absolute!important;margin:0!important;padding:0!important;box-sizing:border-box!important;min-height:1px;opacity:1!important;transform-style:flat!important;transform:none!important}html.reveal-print .reveal section.stack{position:relative!important;margin:0!important;padding:0!important;page-break-after:avoid!important;height:auto!important;min-height:auto!important}html.reveal-print .reveal img{box-shadow:none}html.reveal-print .reveal .backgrounds{display:none}html.reveal-print .reveal .slide-background{display:block!important;position:absolute;top:0;left:0;width:100%;height:100%;z-index:auto!important}html.reveal-print .reveal.show-notes{max-width:none;max-height:none}html.reveal-print .reveal .speaker-notes-pdf{display:block;width:100%;height:auto;max-height:none;top:auto;right:auto;bottom:auto;left:auto;z-index:100}html.reveal-print .reveal .speaker-notes-pdf[data-layout=separate-page]{position:relative;color:inherit;background-color:transparent;padding:20px;page-break-after:always;border:0}html.reveal-print .reveal .slide-number-pdf{display:block;position:absolute;font-size:14px;visibility:visible}html.reveal-print .aria-status{display:none}@media print{html:not(.print-pdf){overflow:visible;width:auto;height:auto}html:not(.print-pdf) body{margin:0;padding:0;overflow:visible}html:not(.print-pdf) .reveal{background:#fff;font-size:20pt}html:not(.print-pdf) .reveal .controls,html:not(.print-pdf) .reveal .state-background,html:not(.print-pdf) .reveal .progress,html:not(.print-pdf) .reveal .backgrounds,html:not(.print-pdf) .reveal .slide-number{display:none!important}html:not(.print-pdf) .reveal p,html:not(.print-pdf) .reveal td,html:not(.print-pdf) .reveal li{font-size:20pt!important;color:#000}html:not(.print-pdf) .reveal h1,html:not(.print-pdf) .reveal h2,html:not(.print-pdf) .reveal h3,html:not(.print-pdf) .reveal h4,html:not(.print-pdf) .reveal h5,html:not(.print-pdf) .reveal h6{color:#000!important;height:auto;line-height:normal;text-align:left;letter-spacing:normal}html:not(.print-pdf) .reveal h1{font-size:28pt!important}html:not(.print-pdf) .reveal h2{font-size:24pt!important}html:not(.print-pdf) .reveal h3{font-size:22pt!important}html:not(.print-pdf) .reveal h4{font-size:22pt!important;font-variant:small-caps}html:not(.print-pdf) .reveal h5{font-size:21pt!important}html:not(.print-pdf) .reveal h6{font-size:20pt!important;font-style:italic}html:not(.print-pdf) .reveal a:link,html:not(.print-pdf) .reveal a:visited{color:#000!important;font-weight:700;text-decoration:underline}html:not(.print-pdf) .reveal ul,html:not(.print-pdf) .reveal ol,html:not(.print-pdf) .reveal div,html:not(.print-pdf) .reveal p{visibility:visible;position:static;width:auto;height:auto;display:block;overflow:visible;margin:0;text-align:left!important}html:not(.print-pdf) .reveal pre,html:not(.print-pdf) .reveal table{margin-left:0;margin-right:0}html:not(.print-pdf) .reveal pre code{padding:20px}html:not(.print-pdf) .reveal blockquote{margin:20px 0}html:not(.print-pdf) .reveal .slides{position:static!important;width:auto!important;height:auto!important;left:0!important;top:0!important;margin-left:0!important;margin-top:0!important;padding:0!important;zoom:1!important;transform:none!important;overflow:visible!important;display:block!important;text-align:left!important;perspective:none;perspective-origin:50% 50%}html:not(.print-pdf) .reveal .slides section{visibility:visible!important;position:static!important;width:auto!important;height:auto!important;display:block!important;overflow:visible!important;left:0!important;top:0!important;margin-left:0!important;margin-top:0!important;padding:60px 20px!important;z-index:auto!important;opacity:1!important;page-break-after:always!important;transform-style:flat!important;transform:none!important;transition:none!important}html:not(.print-pdf) .reveal .slides section.stack{padding:0!important}html:not(.print-pdf) .reveal .slides section:last-of-type{page-break-after:avoid!important}html:not(.print-pdf) .reveal .slides section .fragment{opacity:1!important;visibility:visible!important;transform:none!important}html:not(.print-pdf) .reveal .r-fit-text{white-space:normal!important}html:not(.print-pdf) .reveal section img{display:block;margin:15px 0;background:#fff;border:1px solid #666;box-shadow:none}html:not(.print-pdf) .reveal section small{font-size:.8em}html:not(.print-pdf) .reveal .hljs{max-height:100%;white-space:pre-wrap;word-wrap:break-word;word-break:break-word;font-size:15pt}html:not(.print-pdf) .reveal .hljs .hljs-ln-numbers{white-space:nowrap}html:not(.print-pdf) .reveal .hljs td{font-size:inherit!important;color:inherit!important}}html.reveal-full-page{width:100%;height:100%;height:100vh;height:calc(var(--vh, 1vh) * 100);height:100svh;overflow:hidden}.reveal-viewport{height:100%;overflow:hidden;position:relative;line-height:1;margin:0;background-color:#fff;color:#000;--r-controls-spacing: 12px}.reveal-viewport:fullscreen{top:0!important;left:0!important;width:100%!important;height:100%!important;transform:none!important}.reveal .fragment{transition:all .2s ease}.reveal .fragment:not(.custom){opacity:0;visibility:hidden;will-change:opacity}.reveal .fragment.visible{opacity:1;visibility:inherit}.reveal .fragment.disabled{transition:none}.reveal .fragment.grow{opacity:1;visibility:inherit}.reveal .fragment.grow.visible{transform:scale(1.3)}.reveal .fragment.shrink{opacity:1;visibility:inherit}.reveal .fragment.shrink.visible{transform:scale(.7)}.reveal .fragment.zoom-in{transform:scale(.1)}.reveal .fragment.zoom-in.visible{transform:none}.reveal .fragment.fade-out{opacity:1;visibility:inherit}.reveal .fragment.fade-out.visible{opacity:0;visibility:hidden}.reveal .fragment.semi-fade-out{opacity:1;visibility:inherit}.reveal .fragment.semi-fade-out.visible{opacity:.5;visibility:inherit}.reveal .fragment.strike{opacity:1;visibility:inherit}.reveal .fragment.strike.visible{text-decoration:line-through}.reveal .fragment.fade-up{transform:translateY(40px)}.reveal .fragment.fade-up.visible{transform:translate(0)}.reveal .fragment.fade-down{transform:translateY(-40px)}.reveal .fragment.fade-down.visible{transform:translate(0)}.reveal .fragment.fade-right{transform:translate(-40px)}.reveal .fragment.fade-right.visible{transform:translate(0)}.reveal .fragment.fade-left{transform:translate(40px)}.reveal .fragment.fade-left.visible{transform:translate(0)}.reveal .fragment.fade-in-then-out,.reveal .fragment.current-visible{opacity:0;visibility:hidden}.reveal .fragment.fade-in-then-out.current-fragment,.reveal .fragment.current-visible.current-fragment{opacity:1;visibility:inherit}.reveal .fragment.fade-in-then-semi-out{opacity:0;visibility:hidden}.reveal .fragment.fade-in-then-semi-out.visible{opacity:.5;visibility:inherit}.reveal .fragment.fade-in-then-semi-out.current-fragment,.reveal .fragment.highlight-red,.reveal .fragment.highlight-current-red,.reveal .fragment.highlight-green,.reveal .fragment.highlight-current-green,.reveal .fragment.highlight-blue,.reveal .fragment.highlight-current-blue{opacity:1;visibility:inherit}.reveal .fragment.highlight-red.visible{color:#ff2c2d}.reveal .fragment.highlight-green.visible{color:#17ff2e}.reveal .fragment.highlight-blue.visible{color:#1b91ff}.reveal .fragment.highlight-current-red.current-fragment{color:#ff2c2d}.reveal .fragment.highlight-current-green.current-fragment{color:#17ff2e}.reveal .fragment.highlight-current-blue.current-fragment{color:#1b91ff}.reveal:after{content:"";font-style:italic}.reveal iframe{z-index:1}.reveal a{position:relative}@keyframes bounce-right{0%,10%,25%,40%,50%{transform:translate(0)}20%{transform:translate(10px)}30%{transform:translate(-5px)}}@keyframes bounce-left{0%,10%,25%,40%,50%{transform:translate(0)}20%{transform:translate(-10px)}30%{transform:translate(5px)}}@keyframes bounce-down{0%,10%,25%,40%,50%{transform:translateY(0)}20%{transform:translateY(10px)}30%{transform:translateY(-5px)}}.reveal .controls{display:none;position:absolute;top:auto;bottom:var(--r-controls-spacing);right:var(--r-controls-spacing);left:auto;z-index:11;color:#000;pointer-events:none;font-size:10px}.reveal .controls button{position:absolute;padding:0;background-color:transparent;border:0;outline:0;cursor:pointer;color:currentColor;transform:scale(.9999);transition:color .2s ease,opacity .2s ease,transform .2s ease;z-index:2;pointer-events:auto;font-size:inherit;visibility:hidden;opacity:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.reveal .controls .controls-arrow:before,.reveal .controls .controls-arrow:after{content:"";position:absolute;top:0;left:0;width:2.6em;height:.5em;border-radius:.25em;background-color:currentColor;transition:all .15s ease,background-color .8s ease;transform-origin:.2em 50%;will-change:transform}.reveal .controls .controls-arrow{position:relative;width:3.6em;height:3.6em}.reveal .controls .controls-arrow:before{transform:translate(.5em) translateY(1.55em) rotate(45deg)}.reveal .controls .controls-arrow:after{transform:translate(.5em) translateY(1.55em) rotate(-45deg)}.reveal .controls .controls-arrow:hover:before{transform:translate(.5em) translateY(1.55em) rotate(40deg)}.reveal .controls .controls-arrow:hover:after{transform:translate(.5em) translateY(1.55em) rotate(-40deg)}.reveal .controls .controls-arrow:active:before{transform:translate(.5em) translateY(1.55em) rotate(36deg)}.reveal .controls .controls-arrow:active:after{transform:translate(.5em) translateY(1.55em) rotate(-36deg)}.reveal .controls .navigate-left{right:6.4em;bottom:3.2em;transform:translate(-10px)}.reveal .controls .navigate-left.highlight{animation:bounce-left 2s 50 both ease-out}.reveal .controls .navigate-right{right:0;bottom:3.2em;transform:translate(10px)}.reveal .controls .navigate-right .controls-arrow{transform:rotate(180deg)}.reveal .controls .navigate-right.highlight{animation:bounce-right 2s 50 both ease-out}.reveal .controls .navigate-up{right:3.2em;bottom:6.4em;transform:translateY(-10px)}.reveal .controls .navigate-up .controls-arrow{transform:rotate(90deg)}.reveal .controls .navigate-down{right:3.2em;bottom:-1.4em;padding-bottom:1.4em;transform:translateY(10px)}.reveal .controls .navigate-down .controls-arrow{transform:rotate(-90deg)}.reveal .controls .navigate-down.highlight{animation:bounce-down 2s 50 both ease-out}.reveal .controls[data-controls-back-arrows=faded] .navigate-up.enabled{opacity:.3}.reveal .controls[data-controls-back-arrows=faded] .navigate-up.enabled:hover{opacity:1}.reveal .controls[data-controls-back-arrows=hidden] .navigate-up.enabled{opacity:0;visibility:hidden}.reveal .controls .enabled{visibility:visible;opacity:.9;cursor:pointer;transform:none}.reveal .controls .enabled.fragmented{opacity:.5}.reveal .controls .enabled:hover,.reveal .controls .enabled.fragmented:hover{opacity:1}.reveal:not(.rtl) .controls[data-controls-back-arrows=faded] .navigate-left.enabled{opacity:.3}.reveal:not(.rtl) .controls[data-controls-back-arrows=faded] .navigate-left.enabled:hover{opacity:1}.reveal:not(.rtl) .controls[data-controls-back-arrows=hidden] .navigate-left.enabled{opacity:0;visibility:hidden}.reveal.rtl .controls[data-controls-back-arrows=faded] .navigate-right.enabled{opacity:.3}.reveal.rtl .controls[data-controls-back-arrows=faded] .navigate-right.enabled:hover{opacity:1}.reveal.rtl .controls[data-controls-back-arrows=hidden] .navigate-right.enabled{opacity:0;visibility:hidden}.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-up,.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-down{display:none}.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-left,.reveal:not(.has-vertical-slides) .controls .navigate-left{bottom:1.4em;right:5.5em}.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-right,.reveal:not(.has-vertical-slides) .controls .navigate-right{bottom:1.4em;right:.5em}.reveal:not(.has-horizontal-slides) .controls .navigate-up{right:1.4em;bottom:5em}.reveal:not(.has-horizontal-slides) .controls .navigate-down{right:1.4em;bottom:.5em}.reveal.has-dark-background .controls{color:#fff}.reveal.has-light-background .controls{color:#000}.reveal.no-hover .controls .controls-arrow:hover:before,.reveal.no-hover .controls .controls-arrow:active:before{transform:translate(.5em) translateY(1.55em) rotate(45deg)}.reveal.no-hover .controls .controls-arrow:hover:after,.reveal.no-hover .controls .controls-arrow:active:after{transform:translate(.5em) translateY(1.55em) rotate(-45deg)}@media screen and (min-width: 500px){.reveal-viewport{--r-controls-spacing: .8em}.reveal .controls[data-controls-layout=edges]{top:0;right:0;bottom:0;left:0}.reveal .controls[data-controls-layout=edges] .navigate-left,.reveal .controls[data-controls-layout=edges] .navigate-right,.reveal .controls[data-controls-layout=edges] .navigate-up,.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:auto;right:auto}.reveal .controls[data-controls-layout=edges] .navigate-left{top:50%;left:var(--r-controls-spacing);margin-top:-1.8em}.reveal .controls[data-controls-layout=edges] .navigate-right{top:50%;right:var(--r-controls-spacing);margin-top:-1.8em}.reveal .controls[data-controls-layout=edges] .navigate-up{top:var(--r-controls-spacing);left:50%;margin-left:-1.8em}.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:calc(var(--r-controls-spacing) - 1.4em + .3em);left:50%;margin-left:-1.8em}}.reveal .progress{position:absolute;display:none;height:3px;width:100%;bottom:0;left:0;z-index:10;background-color:#0003;color:#fff}.reveal .progress:after{content:"";display:block;position:absolute;height:10px;width:100%;top:-10px}.reveal .progress span{display:block;height:100%;width:100%;background-color:currentColor;transition:transform .8s cubic-bezier(.26,.86,.44,.985);transform-origin:0 0;transform:scaleX(0)}.reveal .slide-number{position:absolute;display:block;right:8px;bottom:8px;z-index:31;font-family:Helvetica,sans-serif;font-size:12px;line-height:1;color:#fff;background-color:#0006;padding:5px}.reveal .slide-number a{color:currentColor}.reveal .slide-number-delimiter{margin:0 3px}.reveal{position:relative;width:100%;height:100%;overflow:hidden;touch-action:pinch-zoom}.reveal.embedded{touch-action:pan-y}.reveal.embedded.is-vertical-slide{touch-action:none}.reveal .slides{position:absolute;width:100%;height:100%;top:0;right:0;bottom:0;left:0;margin:auto;pointer-events:none;overflow:visible;z-index:1;text-align:center;perspective:600px;perspective-origin:50% 40%}.reveal .slides>section{perspective:600px}.reveal .slides>section,.reveal .slides>section>section{display:none;position:absolute;width:100%;pointer-events:auto;z-index:10;transform-style:flat;transition:transform-origin .8s cubic-bezier(.26,.86,.44,.985),transform .8s cubic-bezier(.26,.86,.44,.985),visibility .8s cubic-bezier(.26,.86,.44,.985),opacity .8s cubic-bezier(.26,.86,.44,.985)}.reveal[data-transition-speed=fast] .slides section{transition-duration:.4s}.reveal[data-transition-speed=slow] .slides section{transition-duration:1.2s}.reveal .slides section[data-transition-speed=fast]{transition-duration:.4s}.reveal .slides section[data-transition-speed=slow]{transition-duration:1.2s}.reveal .slides>section.stack{padding-top:0;padding-bottom:0;pointer-events:none;height:100%}.reveal .slides>section.present,.reveal .slides>section>section.present{display:block;z-index:11;opacity:1}.reveal .slides>section:empty,.reveal .slides>section>section:empty,.reveal .slides>section[data-background-interactive],.reveal .slides>section>section[data-background-interactive]{pointer-events:none}.reveal.center,.reveal.center .slides,.reveal.center .slides section{min-height:0!important}.reveal .slides>section:not(.present),.reveal .slides>section>section:not(.present){pointer-events:none}.reveal.overview .slides>section,.reveal.overview .slides>section>section{pointer-events:auto}.reveal .slides>section.past,.reveal .slides>section.future,.reveal .slides>section.past>section,.reveal .slides>section.future>section,.reveal .slides>section>section.past,.reveal .slides>section>section.future{opacity:0}.reveal .slides>section[data-transition=slide].past,.reveal .slides>section[data-transition~=slide-out].past,.reveal.slide .slides>section:not([data-transition]).past{transform:translate(-150%)}.reveal .slides>section[data-transition=slide].future,.reveal .slides>section[data-transition~=slide-in].future,.reveal.slide .slides>section:not([data-transition]).future{transform:translate(150%)}.reveal .slides>section>section[data-transition=slide].past,.reveal .slides>section>section[data-transition~=slide-out].past,.reveal.slide .slides>section>section:not([data-transition]).past{transform:translateY(-150%)}.reveal .slides>section>section[data-transition=slide].future,.reveal .slides>section>section[data-transition~=slide-in].future,.reveal.slide .slides>section>section:not([data-transition]).future{transform:translateY(150%)}.reveal .slides>section[data-transition=linear].past,.reveal .slides>section[data-transition~=linear-out].past,.reveal.linear .slides>section:not([data-transition]).past{transform:translate(-150%)}.reveal .slides>section[data-transition=linear].future,.reveal .slides>section[data-transition~=linear-in].future,.reveal.linear .slides>section:not([data-transition]).future{transform:translate(150%)}.reveal .slides>section>section[data-transition=linear].past,.reveal .slides>section>section[data-transition~=linear-out].past,.reveal.linear .slides>section>section:not([data-transition]).past{transform:translateY(-150%)}.reveal .slides>section>section[data-transition=linear].future,.reveal .slides>section>section[data-transition~=linear-in].future,.reveal.linear .slides>section>section:not([data-transition]).future{transform:translateY(150%)}.reveal .slides section[data-transition=default].stack,.reveal.default .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=default].past,.reveal .slides>section[data-transition~=default-out].past,.reveal.default .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=default].future,.reveal .slides>section[data-transition~=default-in].future,.reveal.default .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=default].past,.reveal .slides>section>section[data-transition~=default-out].past,.reveal.default .slides>section>section:not([data-transition]).past{transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=default].future,.reveal .slides>section>section[data-transition~=default-in].future,.reveal.default .slides>section>section:not([data-transition]).future{transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides section[data-transition=convex].stack,.reveal.convex .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=convex].past,.reveal .slides>section[data-transition~=convex-out].past,.reveal.convex .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=convex].future,.reveal .slides>section[data-transition~=convex-in].future,.reveal.convex .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=convex].past,.reveal .slides>section>section[data-transition~=convex-out].past,.reveal.convex .slides>section>section:not([data-transition]).past{transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=convex].future,.reveal .slides>section>section[data-transition~=convex-in].future,.reveal.convex .slides>section>section:not([data-transition]).future{transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides section[data-transition=concave].stack,.reveal.concave .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=concave].past,.reveal .slides>section[data-transition~=concave-out].past,.reveal.concave .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=concave].future,.reveal .slides>section[data-transition~=concave-in].future,.reveal.concave .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=concave].past,.reveal .slides>section>section[data-transition~=concave-out].past,.reveal.concave .slides>section>section:not([data-transition]).past{transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0)}.reveal .slides>section>section[data-transition=concave].future,.reveal .slides>section>section[data-transition~=concave-in].future,.reveal.concave .slides>section>section:not([data-transition]).future{transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0)}.reveal .slides section[data-transition=zoom],.reveal.zoom .slides section:not([data-transition]){transition-timing-function:ease}.reveal .slides>section[data-transition=zoom].past,.reveal .slides>section[data-transition~=zoom-out].past,.reveal.zoom .slides>section:not([data-transition]).past{visibility:hidden;transform:scale(16)}.reveal .slides>section[data-transition=zoom].future,.reveal .slides>section[data-transition~=zoom-in].future,.reveal.zoom .slides>section:not([data-transition]).future{visibility:hidden;transform:scale(.2)}.reveal .slides>section>section[data-transition=zoom].past,.reveal .slides>section>section[data-transition~=zoom-out].past,.reveal.zoom .slides>section>section:not([data-transition]).past{transform:scale(16)}.reveal .slides>section>section[data-transition=zoom].future,.reveal .slides>section>section[data-transition~=zoom-in].future,.reveal.zoom .slides>section>section:not([data-transition]).future{transform:scale(.2)}.reveal.cube .slides{perspective:1300px}.reveal.cube .slides section{padding:30px;min-height:700px;backface-visibility:hidden;box-sizing:border-box;transform-style:preserve-3d}.reveal.center.cube .slides section{min-height:0}.reveal.cube .slides section:not(.stack):before{content:"";position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:#0000001a;border-radius:4px;transform:translateZ(-20px)}.reveal.cube .slides section:not(.stack):after{content:"";position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:none;z-index:1;border-radius:4px;box-shadow:0 95px 25px #0003;transform:translateZ(-90px) rotateX(65deg)}.reveal.cube .slides>section.stack{padding:0;background:none}.reveal.cube .slides>section.past{transform-origin:100% 0%;transform:translate3d(-100%,0,0) rotateY(-90deg)}.reveal.cube .slides>section.future{transform-origin:0% 0%;transform:translate3d(100%,0,0) rotateY(90deg)}.reveal.cube .slides>section>section.past{transform-origin:0% 100%;transform:translate3d(0,-100%,0) rotateX(90deg)}.reveal.cube .slides>section>section.future{transform-origin:0% 0%;transform:translate3d(0,100%,0) rotateX(-90deg)}.reveal.page .slides{perspective-origin:0% 50%;perspective:3000px}.reveal.page .slides section{padding:30px;min-height:700px;box-sizing:border-box;transform-style:preserve-3d}.reveal.page .slides section.past{z-index:12}.reveal.page .slides section:not(.stack):before{content:"";position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:#0000001a;transform:translateZ(-20px)}.reveal.page .slides section:not(.stack):after{content:"";position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:none;z-index:1;border-radius:4px;box-shadow:0 95px 25px #0003;-webkit-transform:translateZ(-90px) rotateX(65deg)}.reveal.page .slides>section.stack{padding:0;background:none}.reveal.page .slides>section.past{transform-origin:0% 0%;transform:translate3d(-40%,0,0) rotateY(-80deg)}.reveal.page .slides>section.future{transform-origin:100% 0%;transform:translateZ(0)}.reveal.page .slides>section>section.past{transform-origin:0% 0%;transform:translate3d(0,-40%,0) rotateX(80deg)}.reveal.page .slides>section>section.future{transform-origin:0% 100%;transform:translateZ(0)}.reveal .slides section[data-transition=fade],.reveal.fade .slides section:not([data-transition]),.reveal.fade .slides>section>section:not([data-transition]){transform:none;transition:opacity .5s}.reveal.fade.overview .slides section,.reveal.fade.overview .slides>section>section{transition:none}.reveal .slides section[data-transition=none],.reveal.none .slides section:not([data-transition]){transform:none;transition:none}.reveal .pause-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000;visibility:hidden;opacity:0;z-index:100;transition:all 1s ease}.reveal .pause-overlay .resume-button{position:absolute;bottom:20px;right:20px;color:#ccc;border-radius:2px;padding:6px 14px;border:2px solid #ccc;font-size:16px;background:transparent;cursor:pointer}.reveal .pause-overlay .resume-button:hover{color:#fff;border-color:#fff}.reveal.paused .pause-overlay{visibility:visible;opacity:1}.reveal .no-transition,.reveal .no-transition *,.reveal .slides.disable-slide-transitions section{transition:none!important}.reveal .slides.disable-slide-transitions section{transform:none!important}.reveal .backgrounds{position:absolute;width:100%;height:100%;top:0;left:0;perspective:600px}.reveal .slide-background{display:none;position:absolute;width:100%;height:100%;opacity:0;visibility:hidden;overflow:hidden;background-color:#0000;transition:all .8s cubic-bezier(.26,.86,.44,.985)}.reveal .slide-background-content{position:absolute;width:100%;height:100%;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.reveal .slide-background.stack{display:block}.reveal .slide-background.present{opacity:1;visibility:visible;z-index:2}.print-pdf .reveal .slide-background{opacity:1!important;visibility:visible!important}.reveal .slide-background video{position:absolute;width:100%;height:100%;max-width:none;max-height:none;top:0;left:0;object-fit:cover}.reveal .slide-background[data-background-size=contain] video{object-fit:contain}.reveal[data-background-transition=none]>.backgrounds .slide-background:not([data-background-transition]),.reveal>.backgrounds .slide-background[data-background-transition=none]{transition:none}.reveal[data-background-transition=slide]>.backgrounds .slide-background:not([data-background-transition]),.reveal>.backgrounds .slide-background[data-background-transition=slide]{opacity:1}.reveal[data-background-transition=slide]>.backgrounds .slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background.past[data-background-transition=slide]{transform:translate(-100%)}.reveal[data-background-transition=slide]>.backgrounds .slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background.future[data-background-transition=slide]{transform:translate(100%)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide]{transform:translateY(-100%)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide]{transform:translateY(100%)}.reveal[data-background-transition=convex]>.backgrounds .slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background.past[data-background-transition=convex]{opacity:0;transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background.future[data-background-transition=convex]{opacity:0;transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex]{opacity:0;transform:translate3d(0,-100%,0) rotateX(90deg) translate3d(0,-100%,0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex]{opacity:0;transform:translate3d(0,100%,0) rotateX(-90deg) translate3d(0,100%,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background.past[data-background-transition=concave]{opacity:0;transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background.future[data-background-transition=concave]{opacity:0;transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave]{opacity:0;transform:translate3d(0,-100%,0) rotateX(-90deg) translate3d(0,-100%,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave]{opacity:0;transform:translate3d(0,100%,0) rotateX(90deg) translate3d(0,100%,0)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background:not([data-background-transition]),.reveal>.backgrounds .slide-background[data-background-transition=zoom]{transition-timing-function:ease}.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background.past[data-background-transition=zoom]{opacity:0;visibility:hidden;transform:scale(16)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background.future[data-background-transition=zoom]{opacity:0;visibility:hidden;transform:scale(.2)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom]{opacity:0;visibility:hidden;transform:scale(16)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom]{opacity:0;visibility:hidden;transform:scale(.2)}.reveal[data-transition-speed=fast]>.backgrounds .slide-background{transition-duration:.4s}.reveal[data-transition-speed=slow]>.backgrounds .slide-background{transition-duration:1.2s}.reveal [data-auto-animate-target^=unmatched]{will-change:opacity}.reveal section[data-auto-animate]:not(.stack):not([data-auto-animate=running]) [data-auto-animate-target^=unmatched]{opacity:0}.reveal.overview{perspective-origin:50% 50%;perspective:700px}.reveal.overview .slides{-moz-transform-style:preserve-3d}.reveal.overview .slides section{height:100%;top:0!important;opacity:1!important;overflow:hidden;visibility:visible!important;cursor:pointer;box-sizing:border-box}.reveal.overview .slides section:hover,.reveal.overview .slides section.present{outline:10px solid rgba(150,150,150,.4);outline-offset:10px}.reveal.overview .slides section .fragment{opacity:1;transition:none}.reveal.overview .slides section:after,.reveal.overview .slides section:before{display:none!important}.reveal.overview .slides>section.stack{padding:0;top:0!important;background:none;outline:none;overflow:visible}.reveal.overview .backgrounds{perspective:inherit;-moz-transform-style:preserve-3d}.reveal.overview .backgrounds .slide-background{opacity:1;visibility:visible;outline:10px solid rgba(150,150,150,.1);outline-offset:10px}.reveal.overview .backgrounds .slide-background.stack{overflow:visible}.reveal.overview .slides section,.reveal.overview-deactivating .slides section{transition:none}.reveal.overview .backgrounds .slide-background,.reveal.overview-deactivating .backgrounds .slide-background{transition:none}.reveal.rtl .slides,.reveal.rtl .slides h1,.reveal.rtl .slides h2,.reveal.rtl .slides h3,.reveal.rtl .slides h4,.reveal.rtl .slides h5,.reveal.rtl .slides h6{direction:rtl;font-family:sans-serif}.reveal.rtl pre,.reveal.rtl code{direction:ltr}.reveal.rtl ol,.reveal.rtl ul{text-align:right}.reveal.rtl .progress span{transform-origin:100% 0}.reveal.has-parallax-background .backgrounds{transition:all .8s ease}.reveal.has-parallax-background[data-transition-speed=fast] .backgrounds{transition-duration:.4s}.reveal.has-parallax-background[data-transition-speed=slow] .backgrounds{transition-duration:1.2s}.reveal>.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1000;background:#000000f2;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:all .3s ease}.reveal>.overlay .spinner{position:absolute;display:block;top:50%;left:50%;width:32px;height:32px;margin:-16px 0 0 -16px;z-index:10;background-image:url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D);visibility:visible;opacity:.6;transition:all .3s ease}.reveal>.overlay header{position:absolute;left:0;top:0;width:100%;padding:5px;z-index:2;box-sizing:border-box}.reveal>.overlay header a{display:inline-block;width:40px;height:40px;line-height:36px;padding:0 10px;float:right;opacity:.6;box-sizing:border-box}.reveal>.overlay header a:hover{opacity:1}.reveal>.overlay header a .icon{display:inline-block;width:20px;height:20px;background-position:50% 50%;background-size:100%;background-repeat:no-repeat}.reveal>.overlay header a.close .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC)}.reveal>.overlay header a.external .icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==)}.reveal>.overlay .viewport{position:absolute;display:flex;top:50px;right:0;bottom:0;left:0}.reveal>.overlay.overlay-preview .viewport iframe{width:100%;height:100%;max-width:100%;max-height:100%;border:0;opacity:0;visibility:hidden;transition:all .3s ease}.reveal>.overlay.overlay-preview.loaded .viewport iframe{opacity:1;visibility:visible}.reveal>.overlay.overlay-preview.loaded .viewport-inner{position:absolute;z-index:-1;left:0;top:45%;width:100%;text-align:center;letter-spacing:normal}.reveal>.overlay.overlay-preview .x-frame-error{opacity:0;transition:opacity .3s ease .3s}.reveal>.overlay.overlay-preview.loaded .x-frame-error{opacity:1}.reveal>.overlay.overlay-preview.loaded .spinner{opacity:0;visibility:hidden;transform:scale(.2)}.reveal>.overlay.overlay-help .viewport{overflow:auto;color:#fff}.reveal>.overlay.overlay-help .viewport .viewport-inner{width:600px;margin:auto;padding:20px 20px 80px;text-align:center;letter-spacing:normal}.reveal>.overlay.overlay-help .viewport .viewport-inner .title{font-size:20px}.reveal>.overlay.overlay-help .viewport .viewport-inner table{border:1px solid #fff;border-collapse:collapse;font-size:16px}.reveal>.overlay.overlay-help .viewport .viewport-inner table th,.reveal>.overlay.overlay-help .viewport .viewport-inner table td{width:200px;padding:14px;border:1px solid #fff;vertical-align:middle}.reveal>.overlay.overlay-help .viewport .viewport-inner table th{padding-top:20px;padding-bottom:20px}.reveal .playback{position:absolute;left:15px;bottom:20px;z-index:30;cursor:pointer;transition:all .4s ease;-webkit-tap-highlight-color:rgba(0,0,0,0)}.reveal.overview .playback{opacity:0;visibility:hidden}.reveal .hljs{min-height:100%}.reveal .hljs table{margin:initial}.reveal .hljs-ln-code,.reveal .hljs-ln-numbers{padding:0;border:0}.reveal .hljs-ln-numbers{opacity:.6;padding-right:.75em;text-align:right;vertical-align:top}.reveal .hljs.has-highlights tr:not(.highlight-line){opacity:.4}.reveal .hljs.has-highlights.fragment{transition:all .2s ease}.reveal .hljs:not(:first-child).fragment{position:absolute;top:0;left:0;width:100%;box-sizing:border-box}.reveal pre[data-auto-animate-target]{overflow:hidden}.reveal pre[data-auto-animate-target] code{height:100%}.reveal .roll{display:inline-block;line-height:1.2;overflow:hidden;vertical-align:top;perspective:400px;perspective-origin:50% 50%}.reveal .roll:hover{background:none;text-shadow:none}.reveal .roll span{display:block;position:relative;padding:0 2px;pointer-events:none;transition:all .4s ease;transform-origin:50% 0%;transform-style:preserve-3d;backface-visibility:hidden}.reveal .roll:hover span{background:#00000080;transform:translateZ(-45px) rotateX(90deg)}.reveal .roll span:after{content:attr(data-title);display:block;position:absolute;left:0;top:0;padding:0 2px;backface-visibility:hidden;transform-origin:50% 0%;transform:translate3d(0,110%,0) rotateX(-90deg)}.reveal aside.notes{display:none}.reveal .speaker-notes{display:none;position:absolute;width:33.3333333333%;height:100%;top:0;left:100%;padding:14px 18px;z-index:1;font-size:18px;line-height:1.4;border:1px solid rgba(0,0,0,.05);color:#222;background-color:#f5f5f5;overflow:auto;box-sizing:border-box;text-align:left;font-family:Helvetica,sans-serif;-webkit-overflow-scrolling:touch}.reveal .speaker-notes .notes-placeholder{color:#ccc;font-style:italic}.reveal .speaker-notes:focus{outline:none}.reveal .speaker-notes:before{content:"Speaker notes";display:block;margin-bottom:10px;opacity:.5}.reveal.show-notes{max-width:75%;overflow:visible}.reveal.show-notes .speaker-notes{display:block}@media screen and (min-width: 1600px){.reveal .speaker-notes{font-size:20px}}@media screen and (max-width: 1024px){.reveal.show-notes{border-left:0;max-width:none;max-height:70%;max-height:70vh;overflow:visible}.reveal.show-notes .speaker-notes{top:100%;left:0;width:100%;height:30vh;border:0}}@media screen and (max-width: 600px){.reveal.show-notes{max-height:60%;max-height:60vh}.reveal.show-notes .speaker-notes{top:100%;height:40vh}.reveal .speaker-notes{font-size:14px}}.reveal .jump-to-slide{position:absolute;top:15px;left:15px;z-index:30;font-size:32px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.reveal .jump-to-slide-input{background:transparent;padding:8px;font-size:inherit;color:currentColor;border:0}.reveal .jump-to-slide-input::placeholder{color:currentColor;opacity:.5}.reveal.has-dark-background .jump-to-slide-input{color:#fff}.reveal.has-light-background .jump-to-slide-input{color:#222}.reveal .jump-to-slide-input:focus{outline:none}.zoomed .reveal *,.zoomed .reveal *:before,.zoomed .reveal *:after{backface-visibility:visible!important}.zoomed .reveal .progress,.zoomed .reveal .controls{opacity:0}.zoomed .reveal .roll span{background:none}.zoomed .reveal .roll span:after{visibility:hidden}.reveal-viewport.loading-scroll-mode{visibility:hidden}.reveal-viewport.reveal-scroll{margin:0 auto;overflow:auto;overflow-x:hidden;overflow-y:auto;z-index:1;--r-scrollbar-width: 7px;--r-scrollbar-trigger-size: 5px;--r-controls-spacing: 8px}@media screen and (max-width: 500px){.reveal-viewport.reveal-scroll{--r-scrollbar-width: 3px;--r-scrollbar-trigger-size: 3px}}.reveal-viewport.reveal-scroll .controls,.reveal-viewport.reveal-scroll .progress,.reveal-viewport.reveal-scroll .playback,.reveal-viewport.reveal-scroll .backgrounds,.reveal-viewport.reveal-scroll .slide-number,.reveal-viewport.reveal-scroll .speaker-notes{display:none!important}.reveal-viewport.reveal-scroll .overlay,.reveal-viewport.reveal-scroll .pause-overlay{position:fixed}.reveal-viewport.reveal-scroll .reveal{overflow:visible;touch-action:manipulation}.reveal-viewport.reveal-scroll .slides{position:static;pointer-events:initial;left:auto;top:auto;width:100%!important;margin:0;padding:0;overflow:visible;display:block;perspective:none;perspective-origin:50% 50%}.reveal-viewport.reveal-scroll .scroll-page{position:relative;width:100%;height:calc(var(--page-height) + var(--page-scroll-padding));z-index:1;overflow:visible}.reveal-viewport.reveal-scroll .scroll-page-sticky{position:sticky;height:var(--page-height);top:0}.reveal-viewport.reveal-scroll .scroll-page-content{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.reveal-viewport.reveal-scroll .scroll-page section{visibility:visible!important;display:block!important;position:absolute!important;width:var(--slide-width)!important;height:var(--slide-height)!important;top:50%!important;left:50%!important;opacity:1!important;transform:scale(var(--slide-scale)) translate(-50%,-50%)!important;transform-style:flat!important;transform-origin:0 0!important}.reveal-viewport.reveal-scroll .slide-background{display:block!important;position:absolute;top:0;left:0;width:100%;height:100%;z-index:auto!important;visibility:visible;opacity:1;touch-action:manipulation}.reveal-viewport.reveal-scroll[data-scrollbar=true]::-webkit-scrollbar,.reveal-viewport.reveal-scroll[data-scrollbar=auto]::-webkit-scrollbar{display:none}.reveal-viewport.reveal-scroll[data-scrollbar=true],.reveal-viewport.reveal-scroll[data-scrollbar=auto]{scrollbar-width:none}.reveal.has-dark-background,.reveal-viewport.has-dark-background{--r-overlay-element-bg-color: 240, 240, 240;--r-overlay-element-fg-color: 0, 0, 0}.reveal.has-light-background,.reveal-viewport.has-light-background{--r-overlay-element-bg-color: 0, 0, 0;--r-overlay-element-fg-color: 240, 240, 240}.reveal-viewport.reveal-scroll .scrollbar{position:sticky;top:50%;z-index:20;opacity:0;transition:all .3s ease}.reveal-viewport.reveal-scroll .scrollbar.visible,.reveal-viewport.reveal-scroll .scrollbar:hover{opacity:1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-inner{position:absolute;width:var(--r-scrollbar-width);height:calc(var(--viewport-height) - var(--r-controls-spacing) * 2);right:var(--r-controls-spacing);top:0;transform:translateY(-50%);border-radius:var(--r-scrollbar-width);z-index:10}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-playhead{position:absolute;width:var(--r-scrollbar-width);height:var(--r-scrollbar-width);top:0;left:0;border-radius:var(--r-scrollbar-width);background-color:rgba(var(--r-overlay-element-bg-color),1);z-index:11;transition:background-color .2s ease}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide{position:absolute;width:100%;background-color:rgba(var(--r-overlay-element-bg-color),.2);box-shadow:0 0 0 1px rgba(var(--r-overlay-element-fg-color),.1);border-radius:var(--r-scrollbar-width);transition:background-color .2s ease}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide:after{content:"";position:absolute;width:200%;height:100%;top:0;left:-50%;background:#0000;z-index:-1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide:hover,.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active{background-color:rgba(var(--r-overlay-element-bg-color),.4)}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-trigger{position:absolute;width:100%;transition:background-color .2s ease}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active.has-triggers{background-color:rgba(var(--r-overlay-element-bg-color),.4);z-index:10}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger:after{content:"";position:absolute;width:var(--r-scrollbar-trigger-size);height:var(--r-scrollbar-trigger-size);border-radius:20px;top:50%;left:50%;transform:translate(-50%,-50%);background-color:rgba(var(--r-overlay-element-bg-color),1);transition:transform .2s ease,opacity .2s ease;opacity:.4}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger.active:after,.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger.active~.scrollbar-trigger:after{opacity:1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger~.scrollbar-trigger.active:after{transform:translate(calc(var(--r-scrollbar-width) * -2));background-color:rgba(var(--r-overlay-element-bg-color),1)} +.reveal .stretch,.reveal .r-stretch{max-width:none;max-height:none}.reveal pre.stretch code,.reveal pre.r-stretch code{height:100%;max-height:100%;box-sizing:border-box}.reveal .r-fit-text{display:inline-block;white-space:nowrap}.reveal .r-stack{display:grid;grid-template-rows:100%}.reveal .r-stack>*{grid-area:1/1;margin:auto}.reveal .r-vstack,.reveal .r-hstack{display:flex}.reveal .r-vstack img,.reveal .r-vstack video,.reveal .r-hstack img,.reveal .r-hstack video{min-width:0;min-height:0;object-fit:contain}.reveal .r-vstack{flex-direction:column;align-items:center;justify-content:center}.reveal .r-hstack{flex-direction:row;align-items:center;justify-content:center}.reveal .items-stretch{align-items:stretch}.reveal .items-start{align-items:flex-start}.reveal .items-center{align-items:center}.reveal .items-end{align-items:flex-end}.reveal .justify-between{justify-content:space-between}.reveal .justify-around{justify-content:space-around}.reveal .justify-start{justify-content:flex-start}.reveal .justify-center{justify-content:center}.reveal .justify-end{justify-content:flex-end}html.reveal-print *{-webkit-print-color-adjust:exact}html.reveal-print{width:100%;height:100%;overflow:visible}html.reveal-print body{margin:0 auto!important;border:0;padding:0;float:none!important;overflow:visible}html.reveal-print .nestedarrow,html.reveal-print .reveal .controls,html.reveal-print .reveal .progress,html.reveal-print .reveal .playback,html.reveal-print .reveal.overview,html.reveal-print .state-background{display:none!important}html.reveal-print .reveal pre code{overflow:hidden!important}html.reveal-print .reveal{width:auto!important;height:auto!important;overflow:hidden!important}html.reveal-print .reveal .slides{position:static;width:100%!important;height:auto!important;zoom:1!important;pointer-events:initial;left:auto;top:auto;margin:0!important;padding:0!important;overflow:visible;display:block;perspective:none;perspective-origin:50% 50%}html.reveal-print .reveal .slides .pdf-page{position:relative;overflow:hidden;z-index:1;page-break-after:always}html.reveal-print .reveal .slides .pdf-page:last-of-type{page-break-after:avoid}html.reveal-print .reveal .slides section{visibility:visible!important;display:block!important;position:absolute!important;margin:0!important;padding:0!important;box-sizing:border-box!important;min-height:1px;opacity:1!important;transform-style:flat!important;transform:none!important}html.reveal-print .reveal section.stack{position:relative!important;margin:0!important;padding:0!important;page-break-after:avoid!important;height:auto!important;min-height:auto!important}html.reveal-print .reveal img{box-shadow:none}html.reveal-print .reveal .backgrounds{display:none}html.reveal-print .reveal .slide-background{display:block!important;position:absolute;top:0;left:0;width:100%;height:100%;z-index:auto!important}html.reveal-print .reveal.show-notes{max-width:none;max-height:none}html.reveal-print .reveal .speaker-notes-pdf{display:block;width:100%;height:auto;max-height:none;top:auto;right:auto;bottom:auto;left:auto;z-index:100}html.reveal-print .reveal .speaker-notes-pdf[data-layout=separate-page]{position:relative;color:inherit;background-color:transparent;padding:20px;page-break-after:always;border:0}html.reveal-print .reveal .slide-number-pdf{display:block;position:absolute;font-size:14px;visibility:visible}html.reveal-print .aria-status{display:none}@media print{html:not(.print-pdf){overflow:visible;width:auto;height:auto}html:not(.print-pdf) body{margin:0;padding:0;overflow:visible}html:not(.print-pdf) .reveal{background:#fff;font-size:20pt}html:not(.print-pdf) .reveal .controls,html:not(.print-pdf) .reveal .state-background,html:not(.print-pdf) .reveal .progress,html:not(.print-pdf) .reveal .backgrounds,html:not(.print-pdf) .reveal .slide-number{display:none!important}html:not(.print-pdf) .reveal p,html:not(.print-pdf) .reveal td,html:not(.print-pdf) .reveal li{font-size:20pt!important;color:#000}html:not(.print-pdf) .reveal h1,html:not(.print-pdf) .reveal h2,html:not(.print-pdf) .reveal h3,html:not(.print-pdf) .reveal h4,html:not(.print-pdf) .reveal h5,html:not(.print-pdf) .reveal h6{color:#000!important;height:auto;line-height:normal;text-align:left;letter-spacing:normal}html:not(.print-pdf) .reveal h1{font-size:28pt!important}html:not(.print-pdf) .reveal h2{font-size:24pt!important}html:not(.print-pdf) .reveal h3{font-size:22pt!important}html:not(.print-pdf) .reveal h4{font-size:22pt!important;font-variant:small-caps}html:not(.print-pdf) .reveal h5{font-size:21pt!important}html:not(.print-pdf) .reveal h6{font-size:20pt!important;font-style:italic}html:not(.print-pdf) .reveal a:link,html:not(.print-pdf) .reveal a:visited{color:#000!important;font-weight:700;text-decoration:underline}html:not(.print-pdf) .reveal ul,html:not(.print-pdf) .reveal ol,html:not(.print-pdf) .reveal div,html:not(.print-pdf) .reveal p{visibility:visible;position:static;width:auto;height:auto;display:block;overflow:visible;margin:0;text-align:left!important}html:not(.print-pdf) .reveal pre,html:not(.print-pdf) .reveal table{margin-left:0;margin-right:0}html:not(.print-pdf) .reveal pre code{padding:20px}html:not(.print-pdf) .reveal blockquote{margin:20px 0}html:not(.print-pdf) .reveal .slides{position:static!important;width:auto!important;height:auto!important;left:0!important;top:0!important;margin-left:0!important;margin-top:0!important;padding:0!important;zoom:1!important;transform:none!important;overflow:visible!important;display:block!important;text-align:left!important;perspective:none;perspective-origin:50% 50%}html:not(.print-pdf) .reveal .slides section{visibility:visible!important;position:static!important;width:auto!important;height:auto!important;display:block!important;overflow:visible!important;left:0!important;top:0!important;margin-left:0!important;margin-top:0!important;padding:60px 20px!important;z-index:auto!important;opacity:1!important;page-break-after:always!important;transform-style:flat!important;transform:none!important;transition:none!important}html:not(.print-pdf) .reveal .slides section.stack{padding:0!important}html:not(.print-pdf) .reveal .slides section:last-of-type{page-break-after:avoid!important}html:not(.print-pdf) .reveal .slides section .fragment{opacity:1!important;visibility:visible!important;transform:none!important}html:not(.print-pdf) .reveal .r-fit-text{white-space:normal!important}html:not(.print-pdf) .reveal section img{display:block;margin:15px 0;background:#fff;border:1px solid #666;box-shadow:none}html:not(.print-pdf) .reveal section small{font-size:.8em}html:not(.print-pdf) .reveal .hljs{max-height:100%;white-space:pre-wrap;word-wrap:break-word;word-break:break-word;font-size:15pt}html:not(.print-pdf) .reveal .hljs .hljs-ln-numbers{white-space:nowrap}html:not(.print-pdf) .reveal .hljs td{font-size:inherit!important;color:inherit!important}}html.reveal-full-page{width:100%;height:100%;height:100vh;height:calc(var(--vh, 1vh) * 100);height:100dvh;overflow:hidden}.reveal-viewport{height:100%;overflow:hidden;position:relative;line-height:1;margin:0;background-color:#fff;color:#000;--r-controls-spacing: 12px;--r-overlay-header-height: 40px;--r-overlay-margin: 0px;--r-overlay-padding: 6px;--r-overlay-gap: 5px}.reveal-viewport:fullscreen{top:0!important;left:0!important;width:100%!important;height:100%!important;transform:none!important}.reveal .fragment{transition:all .2s ease}.reveal .fragment:not(.custom){opacity:0;visibility:hidden;will-change:opacity}.reveal .fragment.visible{opacity:1;visibility:inherit}.reveal .fragment.disabled{transition:none}.reveal .fragment.grow{opacity:1;visibility:inherit}.reveal .fragment.grow.visible{transform:scale(1.3)}.reveal .fragment.shrink{opacity:1;visibility:inherit}.reveal .fragment.shrink.visible{transform:scale(.7)}.reveal .fragment.zoom-in{transform:scale(.1)}.reveal .fragment.zoom-in.visible{transform:none}.reveal .fragment.fade-out{opacity:1;visibility:inherit}.reveal .fragment.fade-out.visible{opacity:0;visibility:hidden}.reveal .fragment.semi-fade-out{opacity:1;visibility:inherit}.reveal .fragment.semi-fade-out.visible{opacity:.5;visibility:inherit}.reveal .fragment.strike{opacity:1;visibility:inherit}.reveal .fragment.strike.visible{text-decoration:line-through}.reveal .fragment.fade-up{transform:translateY(40px)}.reveal .fragment.fade-up.visible{transform:translate(0)}.reveal .fragment.fade-down{transform:translateY(-40px)}.reveal .fragment.fade-down.visible{transform:translate(0)}.reveal .fragment.fade-right{transform:translate(-40px)}.reveal .fragment.fade-right.visible{transform:translate(0)}.reveal .fragment.fade-left{transform:translate(40px)}.reveal .fragment.fade-left.visible{transform:translate(0)}.reveal .fragment.fade-in-then-out,.reveal .fragment.current-visible{opacity:0;visibility:hidden}.reveal .fragment.fade-in-then-out.current-fragment,.reveal .fragment.current-visible.current-fragment{opacity:1;visibility:inherit}.reveal .fragment.fade-in-then-semi-out{opacity:0;visibility:hidden}.reveal .fragment.fade-in-then-semi-out.visible{opacity:.5;visibility:inherit}.reveal .fragment.fade-in-then-semi-out.current-fragment,.reveal .fragment.highlight-red,.reveal .fragment.highlight-current-red,.reveal .fragment.highlight-green,.reveal .fragment.highlight-current-green,.reveal .fragment.highlight-blue,.reveal .fragment.highlight-current-blue{opacity:1;visibility:inherit}.reveal .fragment.highlight-red.visible{color:#ff2c2d}.reveal .fragment.highlight-green.visible{color:#17ff2e}.reveal .fragment.highlight-blue.visible{color:#1b91ff}.reveal .fragment.highlight-current-red.current-fragment{color:#ff2c2d}.reveal .fragment.highlight-current-green.current-fragment{color:#17ff2e}.reveal .fragment.highlight-current-blue.current-fragment{color:#1b91ff}.reveal:after{content:"";font-style:italic}.reveal iframe{z-index:1}.reveal a{position:relative}@keyframes bounce-right{0%,10%,25%,40%,50%{transform:translate(0)}20%{transform:translate(10px)}30%{transform:translate(-5px)}}@keyframes bounce-left{0%,10%,25%,40%,50%{transform:translate(0)}20%{transform:translate(-10px)}30%{transform:translate(5px)}}@keyframes bounce-down{0%,10%,25%,40%,50%{transform:translateY(0)}20%{transform:translateY(10px)}30%{transform:translateY(-5px)}}.reveal .controls{display:none;position:absolute;top:auto;bottom:var(--r-controls-spacing);right:var(--r-controls-spacing);left:auto;z-index:11;color:#000;pointer-events:none;font-size:10px}.reveal .controls button{position:absolute;padding:0;background-color:transparent;border:0;outline:0;cursor:pointer;color:currentColor;transform:scale(.9999);transition:color .2s ease,opacity .2s ease,transform .2s ease;z-index:2;pointer-events:auto;font-size:inherit;visibility:hidden;opacity:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.reveal .controls .controls-arrow:before,.reveal .controls .controls-arrow:after{content:"";position:absolute;top:0;left:0;width:2.6em;height:.5em;border-radius:.25em;background-color:currentColor;transition:all .15s ease,background-color .8s ease;transform-origin:.2em 50%;will-change:transform}.reveal .controls .controls-arrow{position:relative;width:3.6em;height:3.6em}.reveal .controls .controls-arrow:before{transform:translate(.5em) translateY(1.55em) rotate(45deg)}.reveal .controls .controls-arrow:after{transform:translate(.5em) translateY(1.55em) rotate(-45deg)}.reveal .controls .controls-arrow:hover:before{transform:translate(.5em) translateY(1.55em) rotate(40deg)}.reveal .controls .controls-arrow:hover:after{transform:translate(.5em) translateY(1.55em) rotate(-40deg)}.reveal .controls .controls-arrow:active:before{transform:translate(.5em) translateY(1.55em) rotate(36deg)}.reveal .controls .controls-arrow:active:after{transform:translate(.5em) translateY(1.55em) rotate(-36deg)}.reveal .controls .navigate-left{right:6.4em;bottom:3.2em;transform:translate(-10px)}.reveal .controls .navigate-left.highlight{animation:bounce-left 2s 50 both ease-out}.reveal .controls .navigate-right{right:0;bottom:3.2em;transform:translate(10px)}.reveal .controls .navigate-right .controls-arrow{transform:rotate(180deg)}.reveal .controls .navigate-right.highlight{animation:bounce-right 2s 50 both ease-out}.reveal .controls .navigate-up{right:3.2em;bottom:6.4em;transform:translateY(-10px)}.reveal .controls .navigate-up .controls-arrow{transform:rotate(90deg)}.reveal .controls .navigate-down{right:3.2em;bottom:-1.4em;padding-bottom:1.4em;transform:translateY(10px)}.reveal .controls .navigate-down .controls-arrow{transform:rotate(-90deg)}.reveal .controls .navigate-down.highlight{animation:bounce-down 2s 50 both ease-out}.reveal .controls[data-controls-back-arrows=faded] .navigate-up.enabled{opacity:.3}.reveal .controls[data-controls-back-arrows=faded] .navigate-up.enabled:hover{opacity:1}.reveal .controls[data-controls-back-arrows=hidden] .navigate-up.enabled{opacity:0;visibility:hidden}.reveal .controls .enabled{visibility:visible;opacity:.9;cursor:pointer;transform:none}.reveal .controls .enabled.fragmented{opacity:.5}.reveal .controls .enabled:hover,.reveal .controls .enabled.fragmented:hover{opacity:1}.reveal:not(.rtl) .controls[data-controls-back-arrows=faded] .navigate-left.enabled{opacity:.3}.reveal:not(.rtl) .controls[data-controls-back-arrows=faded] .navigate-left.enabled:hover{opacity:1}.reveal:not(.rtl) .controls[data-controls-back-arrows=hidden] .navigate-left.enabled{opacity:0;visibility:hidden}.reveal.rtl .controls[data-controls-back-arrows=faded] .navigate-right.enabled{opacity:.3}.reveal.rtl .controls[data-controls-back-arrows=faded] .navigate-right.enabled:hover{opacity:1}.reveal.rtl .controls[data-controls-back-arrows=hidden] .navigate-right.enabled{opacity:0;visibility:hidden}.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-up,.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-down{display:none}.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-left,.reveal:not(.has-vertical-slides) .controls .navigate-left{bottom:1.4em;right:5.5em}.reveal[data-navigation-mode=linear].has-horizontal-slides .navigate-right,.reveal:not(.has-vertical-slides) .controls .navigate-right{bottom:1.4em;right:.5em}.reveal:not(.has-horizontal-slides) .controls .navigate-up{right:1.4em;bottom:5em}.reveal:not(.has-horizontal-slides) .controls .navigate-down{right:1.4em;bottom:.5em}.reveal.has-dark-background .controls{color:#fff}.reveal.has-light-background .controls{color:#000}.reveal.no-hover .controls .controls-arrow:hover:before,.reveal.no-hover .controls .controls-arrow:active:before{transform:translate(.5em) translateY(1.55em) rotate(45deg)}.reveal.no-hover .controls .controls-arrow:hover:after,.reveal.no-hover .controls .controls-arrow:active:after{transform:translate(.5em) translateY(1.55em) rotate(-45deg)}@media screen and (min-width: 500px){.reveal-viewport{--r-controls-spacing: .8em}.reveal .controls[data-controls-layout=edges]{top:0;right:0;bottom:0;left:0}.reveal .controls[data-controls-layout=edges] .navigate-left,.reveal .controls[data-controls-layout=edges] .navigate-right,.reveal .controls[data-controls-layout=edges] .navigate-up,.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:auto;right:auto}.reveal .controls[data-controls-layout=edges] .navigate-left{top:50%;left:var(--r-controls-spacing);margin-top:-1.8em}.reveal .controls[data-controls-layout=edges] .navigate-right{top:50%;right:var(--r-controls-spacing);margin-top:-1.8em}.reveal .controls[data-controls-layout=edges] .navigate-up{top:var(--r-controls-spacing);left:50%;margin-left:-1.8em}.reveal .controls[data-controls-layout=edges] .navigate-down{bottom:calc(var(--r-controls-spacing) - 1.4em + .3em);left:50%;margin-left:-1.8em}}.reveal .progress{position:absolute;display:none;height:3px;width:100%;bottom:0;left:0;z-index:10;background-color:#0003;color:#fff}.reveal .progress:after{content:"";display:block;position:absolute;height:10px;width:100%;top:-10px}.reveal .progress span{display:block;height:100%;width:100%;background-color:currentColor;transition:transform .8s cubic-bezier(.26,.86,.44,.985);transform-origin:0 0;transform:scaleX(0)}.reveal .slide-number{position:absolute;display:block;right:8px;bottom:8px;z-index:31;font-family:Helvetica,sans-serif;font-size:12px;line-height:1;color:#fff;background-color:#0006;padding:5px}.reveal .slide-number a{color:currentColor}.reveal .slide-number-delimiter{margin:0 3px}.reveal{position:relative;width:100%;height:100%;overflow:hidden;touch-action:pinch-zoom}.reveal.embedded{touch-action:pan-y}.reveal.embedded.is-vertical-slide{touch-action:none}.reveal .slides{position:absolute;width:100%;height:100%;top:0;right:0;bottom:0;left:0;margin:auto;pointer-events:none;overflow:visible;z-index:1;text-align:center;perspective:600px;perspective-origin:50% 40%}.reveal .slides>section{perspective:600px}.reveal .slides>section,.reveal .slides>section>section{display:none;position:absolute;width:100%;pointer-events:auto;z-index:10;transform-style:flat;transition:transform-origin .8s cubic-bezier(.26,.86,.44,.985),transform .8s cubic-bezier(.26,.86,.44,.985),visibility .8s cubic-bezier(.26,.86,.44,.985),opacity .8s cubic-bezier(.26,.86,.44,.985)}.reveal[data-transition-speed=fast] .slides section{transition-duration:.4s}.reveal[data-transition-speed=slow] .slides section{transition-duration:1.2s}.reveal .slides section[data-transition-speed=fast]{transition-duration:.4s}.reveal .slides section[data-transition-speed=slow]{transition-duration:1.2s}.reveal .slides>section.stack{padding-top:0;padding-bottom:0;pointer-events:none;height:100%}.reveal .slides>section.present,.reveal .slides>section>section.present{display:block;z-index:11;opacity:1}.reveal .slides>section:empty,.reveal .slides>section>section:empty,.reveal .slides>section[data-background-interactive],.reveal .slides>section>section[data-background-interactive]{pointer-events:none}.reveal.center,.reveal.center .slides,.reveal.center .slides section{min-height:0!important}.reveal .slides>section:not(.present),.reveal .slides>section>section:not(.present){pointer-events:none}.reveal.overview .slides>section,.reveal.overview .slides>section>section{pointer-events:auto}.reveal .slides>section.past,.reveal .slides>section.future,.reveal .slides>section.past>section,.reveal .slides>section.future>section,.reveal .slides>section>section.past,.reveal .slides>section>section.future{opacity:0}.reveal .slides>section[data-transition=slide].past,.reveal .slides>section[data-transition~=slide-out].past,.reveal.slide .slides>section:not([data-transition]).past{transform:translate(-150%)}.reveal .slides>section[data-transition=slide].future,.reveal .slides>section[data-transition~=slide-in].future,.reveal.slide .slides>section:not([data-transition]).future{transform:translate(150%)}.reveal .slides>section>section[data-transition=slide].past,.reveal .slides>section>section[data-transition~=slide-out].past,.reveal.slide .slides>section>section:not([data-transition]).past{transform:translateY(-150%)}.reveal .slides>section>section[data-transition=slide].future,.reveal .slides>section>section[data-transition~=slide-in].future,.reveal.slide .slides>section>section:not([data-transition]).future{transform:translateY(150%)}.reveal .slides>section[data-transition=linear].past,.reveal .slides>section[data-transition~=linear-out].past,.reveal.linear .slides>section:not([data-transition]).past{transform:translate(-150%)}.reveal .slides>section[data-transition=linear].future,.reveal .slides>section[data-transition~=linear-in].future,.reveal.linear .slides>section:not([data-transition]).future{transform:translate(150%)}.reveal .slides>section>section[data-transition=linear].past,.reveal .slides>section>section[data-transition~=linear-out].past,.reveal.linear .slides>section>section:not([data-transition]).past{transform:translateY(-150%)}.reveal .slides>section>section[data-transition=linear].future,.reveal .slides>section>section[data-transition~=linear-in].future,.reveal.linear .slides>section>section:not([data-transition]).future{transform:translateY(150%)}.reveal .slides section[data-transition=default].stack,.reveal.default .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=default].past,.reveal .slides>section[data-transition~=default-out].past,.reveal.default .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=default].future,.reveal .slides>section[data-transition~=default-in].future,.reveal.default .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=default].past,.reveal .slides>section>section[data-transition~=default-out].past,.reveal.default .slides>section>section:not([data-transition]).past{transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=default].future,.reveal .slides>section>section[data-transition~=default-in].future,.reveal.default .slides>section>section:not([data-transition]).future{transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides section[data-transition=convex].stack,.reveal.convex .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=convex].past,.reveal .slides>section[data-transition~=convex-out].past,.reveal.convex .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=convex].future,.reveal .slides>section[data-transition~=convex-in].future,.reveal.convex .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=convex].past,.reveal .slides>section>section[data-transition~=convex-out].past,.reveal.convex .slides>section>section:not([data-transition]).past{transform:translate3d(0,-300px,0) rotateX(70deg) translate3d(0,-300px,0)}.reveal .slides>section>section[data-transition=convex].future,.reveal .slides>section>section[data-transition~=convex-in].future,.reveal.convex .slides>section>section:not([data-transition]).future{transform:translate3d(0,300px,0) rotateX(-70deg) translate3d(0,300px,0)}.reveal .slides section[data-transition=concave].stack,.reveal.concave .slides section.stack{transform-style:preserve-3d}.reveal .slides>section[data-transition=concave].past,.reveal .slides>section[data-transition~=concave-out].past,.reveal.concave .slides>section:not([data-transition]).past{transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal .slides>section[data-transition=concave].future,.reveal .slides>section[data-transition~=concave-in].future,.reveal.concave .slides>section:not([data-transition]).future{transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal .slides>section>section[data-transition=concave].past,.reveal .slides>section>section[data-transition~=concave-out].past,.reveal.concave .slides>section>section:not([data-transition]).past{transform:translate3d(0,-80%,0) rotateX(-70deg) translate3d(0,-80%,0)}.reveal .slides>section>section[data-transition=concave].future,.reveal .slides>section>section[data-transition~=concave-in].future,.reveal.concave .slides>section>section:not([data-transition]).future{transform:translate3d(0,80%,0) rotateX(70deg) translate3d(0,80%,0)}.reveal .slides section[data-transition=zoom],.reveal.zoom .slides section:not([data-transition]){transition-timing-function:ease}.reveal .slides>section[data-transition=zoom].past,.reveal .slides>section[data-transition~=zoom-out].past,.reveal.zoom .slides>section:not([data-transition]).past{visibility:hidden;transform:scale(16)}.reveal .slides>section[data-transition=zoom].future,.reveal .slides>section[data-transition~=zoom-in].future,.reveal.zoom .slides>section:not([data-transition]).future{visibility:hidden;transform:scale(.2)}.reveal .slides>section>section[data-transition=zoom].past,.reveal .slides>section>section[data-transition~=zoom-out].past,.reveal.zoom .slides>section>section:not([data-transition]).past{transform:scale(16)}.reveal .slides>section>section[data-transition=zoom].future,.reveal .slides>section>section[data-transition~=zoom-in].future,.reveal.zoom .slides>section>section:not([data-transition]).future{transform:scale(.2)}.reveal.cube .slides{perspective:1300px}.reveal.cube .slides section{padding:30px;min-height:700px;backface-visibility:hidden;box-sizing:border-box;transform-style:preserve-3d}.reveal.center.cube .slides section{min-height:0}.reveal.cube .slides section:not(.stack):before{content:"";position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:#0000001a;border-radius:4px;transform:translateZ(-20px)}.reveal.cube .slides section:not(.stack):after{content:"";position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:none;z-index:1;border-radius:4px;box-shadow:0 95px 25px #0003;transform:translateZ(-90px) rotateX(65deg)}.reveal.cube .slides>section.stack{padding:0;background:none}.reveal.cube .slides>section.past{transform-origin:100% 0%;transform:translate3d(-100%,0,0) rotateY(-90deg)}.reveal.cube .slides>section.future{transform-origin:0% 0%;transform:translate3d(100%,0,0) rotateY(90deg)}.reveal.cube .slides>section>section.past{transform-origin:0% 100%;transform:translate3d(0,-100%,0) rotateX(90deg)}.reveal.cube .slides>section>section.future{transform-origin:0% 0%;transform:translate3d(0,100%,0) rotateX(-90deg)}.reveal.page .slides{perspective-origin:0% 50%;perspective:3000px}.reveal.page .slides section{padding:30px;min-height:700px;box-sizing:border-box;transform-style:preserve-3d}.reveal.page .slides section.past{z-index:12}.reveal.page .slides section:not(.stack):before{content:"";position:absolute;display:block;width:100%;height:100%;left:0;top:0;background:#0000001a;transform:translateZ(-20px)}.reveal.page .slides section:not(.stack):after{content:"";position:absolute;display:block;width:90%;height:30px;left:5%;bottom:0;background:none;z-index:1;border-radius:4px;box-shadow:0 95px 25px #0003;transform:translateZ(-90px) rotateX(65deg)}.reveal.page .slides>section.stack{padding:0;background:none}.reveal.page .slides>section.past{transform-origin:0% 0%;transform:translate3d(-40%,0,0) rotateY(-80deg)}.reveal.page .slides>section.future{transform-origin:100% 0%;transform:translateZ(0)}.reveal.page .slides>section>section.past{transform-origin:0% 0%;transform:translate3d(0,-40%,0) rotateX(80deg)}.reveal.page .slides>section>section.future{transform-origin:0% 100%;transform:translateZ(0)}.reveal .slides section[data-transition=fade],.reveal.fade .slides section:not([data-transition]),.reveal.fade .slides>section>section:not([data-transition]){transform:none;transition:opacity .5s}.reveal.fade.overview .slides section,.reveal.fade.overview .slides>section>section{transition:none}.reveal .slides section[data-transition=none],.reveal.none .slides section:not([data-transition]){transform:none;transition:none}.reveal .pause-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000;visibility:hidden;opacity:0;z-index:100;transition:all 1s ease}.reveal .pause-overlay .resume-button{position:absolute;bottom:20px;right:20px;color:#ccc;border-radius:2px;padding:6px 14px;border:2px solid #ccc;font-size:16px;background:transparent;cursor:pointer}.reveal .pause-overlay .resume-button:hover{color:#fff;border-color:#fff}.reveal.paused .pause-overlay{visibility:visible;opacity:1}.reveal .no-transition,.reveal .no-transition *,.reveal .slides.disable-slide-transitions section{transition:none!important}.reveal .slides.disable-slide-transitions section{transform:none!important}.reveal .backgrounds{position:absolute;width:100%;height:100%;top:0;left:0;perspective:600px}.reveal .slide-background{display:none;position:absolute;width:100%;height:100%;opacity:0;visibility:hidden;overflow:hidden;background-color:#0000;transition:all .8s cubic-bezier(.26,.86,.44,.985)}.reveal .slide-background-content{position:absolute;width:100%;height:100%;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.reveal .slide-background.stack{display:block}.reveal .slide-background.present{opacity:1;visibility:visible;z-index:2}.print-pdf .reveal .slide-background{opacity:1!important;visibility:visible!important}.reveal .slide-background video{position:absolute;width:100%;height:100%;max-width:none;max-height:none;top:0;left:0;object-fit:cover}.reveal .slide-background[data-background-size=contain] video{object-fit:contain}.reveal[data-background-transition=none]>.backgrounds .slide-background:not([data-background-transition]),.reveal>.backgrounds .slide-background[data-background-transition=none]{transition:none}.reveal[data-background-transition=slide]>.backgrounds .slide-background:not([data-background-transition]),.reveal>.backgrounds .slide-background[data-background-transition=slide]{opacity:1}.reveal[data-background-transition=slide]>.backgrounds .slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background.past[data-background-transition=slide]{transform:translate(-100%)}.reveal[data-background-transition=slide]>.backgrounds .slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background.future[data-background-transition=slide]{transform:translate(100%)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide]{transform:translateY(-100%)}.reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide]{transform:translateY(100%)}.reveal[data-background-transition=convex]>.backgrounds .slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background.past[data-background-transition=convex]{opacity:0;transform:translate3d(-100%,0,0) rotateY(-90deg) translate3d(-100%,0,0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background.future[data-background-transition=convex]{opacity:0;transform:translate3d(100%,0,0) rotateY(90deg) translate3d(100%,0,0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex]{opacity:0;transform:translate3d(0,-100%,0) rotateX(90deg) translate3d(0,-100%,0)}.reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex]{opacity:0;transform:translate3d(0,100%,0) rotateX(-90deg) translate3d(0,100%,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background.past[data-background-transition=concave]{opacity:0;transform:translate3d(-100%,0,0) rotateY(90deg) translate3d(-100%,0,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background.future[data-background-transition=concave]{opacity:0;transform:translate3d(100%,0,0) rotateY(-90deg) translate3d(100%,0,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave]{opacity:0;transform:translate3d(0,-100%,0) rotateX(-90deg) translate3d(0,-100%,0)}.reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave]{opacity:0;transform:translate3d(0,100%,0) rotateX(90deg) translate3d(0,100%,0)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background:not([data-background-transition]),.reveal>.backgrounds .slide-background[data-background-transition=zoom]{transition-timing-function:ease}.reveal[data-background-transition=zoom]>.backgrounds .slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background.past[data-background-transition=zoom]{opacity:0;visibility:hidden;transform:scale(16)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background.future[data-background-transition=zoom]{opacity:0;visibility:hidden;transform:scale(.2)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom]{opacity:0;visibility:hidden;transform:scale(16)}.reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future:not([data-background-transition]),.reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom]{opacity:0;visibility:hidden;transform:scale(.2)}.reveal[data-transition-speed=fast]>.backgrounds .slide-background{transition-duration:.4s}.reveal[data-transition-speed=slow]>.backgrounds .slide-background{transition-duration:1.2s}.reveal [data-auto-animate-target^=unmatched]{will-change:opacity}.reveal section[data-auto-animate]:not(.stack):not([data-auto-animate=running]) [data-auto-animate-target^=unmatched]{opacity:0}.reveal.overview{perspective-origin:50% 50%;perspective:700px}.reveal.overview .slides section{height:100%;top:0!important;opacity:1!important;overflow:hidden;visibility:visible!important;cursor:pointer;box-sizing:border-box}.reveal.overview .slides section:hover,.reveal.overview .slides section.present{outline:10px solid rgba(150,150,150,.4);outline-offset:10px}.reveal.overview .slides section .fragment{opacity:1;transition:none}.reveal.overview .slides section:after,.reveal.overview .slides section:before{display:none!important}.reveal.overview .slides>section.stack{padding:0;top:0!important;background:none;outline:none;overflow:visible}.reveal.overview .backgrounds{perspective:inherit}.reveal.overview .backgrounds .slide-background{opacity:1;visibility:visible;outline:10px solid rgba(150,150,150,.1);outline-offset:10px}.reveal.overview .backgrounds .slide-background.stack{overflow:visible}.reveal.overview .slides section,.reveal.overview-deactivating .slides section{transition:none}.reveal.overview .backgrounds .slide-background,.reveal.overview-deactivating .backgrounds .slide-background{transition:none}.reveal.rtl .slides,.reveal.rtl .slides h1,.reveal.rtl .slides h2,.reveal.rtl .slides h3,.reveal.rtl .slides h4,.reveal.rtl .slides h5,.reveal.rtl .slides h6{direction:rtl;font-family:sans-serif}.reveal.rtl pre,.reveal.rtl code{direction:ltr}.reveal.rtl ol,.reveal.rtl ul{text-align:right}.reveal.rtl .progress span{transform-origin:100% 0}.reveal.has-parallax-background .backgrounds{transition:all .8s ease}.reveal.has-parallax-background[data-transition-speed=fast] .backgrounds{transition-duration:.4s}.reveal.has-parallax-background[data-transition-speed=slow] .backgrounds{transition-duration:1.2s}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes scale-up{0%{transform:scale(.95)}to{transform:scale(1)}}.reveal [data-preview-image],.reveal [data-preview-video]{cursor:zoom-in}.r-overlay{position:absolute;top:var(--r-overlay-margin);right:var(--r-overlay-margin);bottom:var(--r-overlay-margin);left:var(--r-overlay-margin);border-radius:min(var(--r-overlay-margin),6px);z-index:1000;background:#000000f2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all .3s ease;color:#fff;animation:fade-in .3s ease;font-family:ui-sans-serif,system-ui,-apple-system,Helvetica,sans-serif}.r-overlay-viewport{position:absolute;top:var(--r-overlay-padding);right:var(--r-overlay-padding);bottom:var(--r-overlay-padding);left:var(--r-overlay-padding);gap:var(--r-overlay-gap);display:flex;flex-direction:column}.r-overlay-header{display:flex;z-index:2;box-sizing:border-box;align-items:center;justify-content:flex-end;height:var(--r-overlay-header-height);gap:6px}.r-overlay-header .r-overlay-button{all:unset;display:flex;align-items:center;justify-content:center;min-width:var(--r-overlay-header-height);min-height:var(--r-overlay-header-height);padding:0 10px;opacity:1;border-radius:6px;font-size:18px;gap:8px;cursor:pointer;box-sizing:border-box}.r-overlay-header .r-overlay-button:hover{opacity:1;background-color:#ffffff26}.r-overlay-header .icon{display:inline-block;width:20px;height:20px;background-position:50% 50%;background-size:100%;background-repeat:no-repeat}.r-overlay-close .icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIuODU0IDIuODU0YS41LjUgMCAwIDAtLjcwOC0uNzA4TDcuNSA2Ljc5MyAyLjg1NCAyLjE0NmEuNS41IDAgMSAwLS43MDguNzA4TDYuNzkzIDcuNWwtNC42NDcgNC42NDZhLjUuNSAwIDAgMCAuNzA4LjcwOEw3LjUgOC4yMDdsNC42NDYgNC42NDdhLjUuNSAwIDAgMCAuNzA4LS43MDhMOC4yMDcgNy41bDQuNjQ3LTQuNjQ2WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.r-overlay-external .icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMyAyYTEgMSAwIDAgMC0xIDF2OWExIDEgMCAwIDAgMSAxaDlhMSAxIDAgMCAwIDEtMVY4LjVhLjUuNSAwIDAgMC0xIDBWMTJIM1YzaDMuNWEuNS41IDAgMCAwIDAtMUgzWm05Ljg1NC4xNDZhLjUuNSAwIDAgMSAuMTQ2LjM1MVY1LjVhLjUuNSAwIDAgMS0xIDBWMy43MDdMNi44NTQgOC44NTRhLjUuNSAwIDEgMS0uNzA4LS43MDhMMTEuMjkzIDNIOS41YS41LjUgMCAwIDEgMC0xaDNhLjQ5OS40OTkgMCAwIDEgLjM1NC4xNDZaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.r-overlay-content{position:relative;display:grid;place-items:center;border-radius:6px;overflow:hidden;flex-grow:1;background-color:#141414cc;animation:scale-up .5s cubic-bezier(.26,.86,.44,.985)}.r-overlay-spinner{position:absolute;display:block;top:50%;left:50%;width:32px;height:32px;margin:-16px 0 0 -16px;z-index:10;background-image:url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D);visibility:hidden;opacity:0}.r-overlay-preview iframe{width:100%;height:100%;max-width:100%;max-height:100%;border:0;opacity:0;visibility:hidden;transition:all .3s ease}.r-overlay-preview[data-state=loaded] iframe{opacity:1;visibility:visible}.r-overlay-preview img,.r-overlay-preview video{position:absolute;max-width:100%;max-height:100%;width:100%;height:100%;margin:0;object-fit:scale-down}.r-overlay-preview[data-preview-fit=none] img,.r-overlay-preview[data-preview-fit=none] video{object-fit:none}.r-overlay-preview[data-preview-fit=scale-down] img,.r-overlay-preview[data-preview-fit=scale-down] video{object-fit:scale-down}.r-overlay-preview[data-preview-fit=contain] img,.r-overlay-preview[data-preview-fit=contain] video{object-fit:contain}.r-overlay-preview[data-preview-fit=cover] img,.r-overlay-preview[data-preview-fit=cover] video{object-fit:cover}.r-overlay-preview[data-state=loaded] .r-overlay-content-inner{position:absolute;z-index:-1;left:0;top:45%;width:100%;text-align:center;letter-spacing:normal}.r-overlay-preview .r-overlay-error{font-size:18px;color:orange}.r-overlay-preview .x-frame-error{opacity:0;transition:opacity .3s ease .3s}.r-overlay-preview[data-state=loaded] .x-frame-error{opacity:1}.r-overlay-preview[data-state=loading] .r-overlay-spinner{opacity:.6;visibility:visible}.r-overlay-help .r-overlay-content{overflow:auto}.r-overlay-help-content{max-width:560px;padding:20px 0;margin:auto;text-align:center;letter-spacing:normal}.r-overlay-help-content .title{font-size:20px;margin-top:0}.r-overlay-help-content table{border:1px solid #fff;border-collapse:collapse;font-size:16px;text-align:left}.r-overlay-help-content table th,.r-overlay-help-content table td{width:240px;padding:14px;border:1px solid #fff;vertical-align:middle}.r-overlay-help-content table th{padding-top:20px;padding-bottom:20px}.reveal .playback{position:absolute;left:15px;bottom:20px;z-index:30;cursor:pointer;transition:all .4s ease;-webkit-tap-highlight-color:rgba(0,0,0,0)}.reveal.overview .playback{opacity:0;visibility:hidden}.reveal .hljs{min-height:100%}.reveal .hljs table{margin:initial}.reveal .hljs-ln-code,.reveal .hljs-ln-numbers{padding:0;border:0}.reveal .hljs-ln-numbers{opacity:.6;padding-right:.75em;text-align:right;vertical-align:top}.reveal .hljs.has-highlights tr:not(.highlight-line){opacity:.4}.reveal .hljs.has-highlights.fragment{transition:all .2s ease}.reveal .hljs:not(:first-child).fragment{position:absolute;top:0;left:0;width:100%;box-sizing:border-box}.reveal pre[data-auto-animate-target]{overflow:hidden}.reveal pre[data-auto-animate-target] code{height:100%}.reveal .roll{display:inline-block;line-height:1.2;overflow:hidden;vertical-align:top;perspective:400px;perspective-origin:50% 50%}.reveal .roll:hover{background:none;text-shadow:none}.reveal .roll span{display:block;position:relative;padding:0 2px;pointer-events:none;transition:all .4s ease;transform-origin:50% 0%;transform-style:preserve-3d;backface-visibility:hidden}.reveal .roll:hover span{background:#00000080;transform:translateZ(-45px) rotateX(90deg)}.reveal .roll span:after{content:attr(data-title);display:block;position:absolute;left:0;top:0;padding:0 2px;backface-visibility:hidden;transform-origin:50% 0%;transform:translate3d(0,110%,0) rotateX(-90deg)}.reveal aside.notes{display:none}.reveal .speaker-notes{display:none;position:absolute;width:33.3333333333%;height:100%;top:0;left:100%;padding:14px 18px;z-index:1;font-size:18px;line-height:1.4;border:1px solid rgba(0,0,0,.05);color:#222;background-color:#f5f5f5;overflow:auto;box-sizing:border-box;text-align:left;font-family:Helvetica,sans-serif;-webkit-overflow-scrolling:touch}.reveal .speaker-notes .notes-placeholder{color:#ccc;font-style:italic}.reveal .speaker-notes:focus{outline:none}.reveal .speaker-notes:before{content:"Speaker notes";display:block;margin-bottom:10px;opacity:.5}.reveal.show-notes{max-width:75%;overflow:visible}.reveal.show-notes .speaker-notes{display:block}@media screen and (min-width: 1600px){.reveal .speaker-notes{font-size:20px}}@media screen and (max-width: 1024px){.reveal.show-notes{border-left:0;max-width:none;max-height:70%;max-height:70vh;overflow:visible}.reveal.show-notes .speaker-notes{top:100%;left:0;width:100%;height:30vh;border:0}}@media screen and (max-width: 600px){.reveal.show-notes{max-height:60%;max-height:60vh}.reveal.show-notes .speaker-notes{top:100%;height:40vh}.reveal .speaker-notes{font-size:14px}}.reveal .jump-to-slide{position:absolute;top:15px;left:15px;z-index:30;font-size:32px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.reveal .jump-to-slide-input{background:transparent;padding:8px;font-size:inherit;color:currentColor;border:0}.reveal .jump-to-slide-input::placeholder{color:currentColor;opacity:.5}.reveal.has-dark-background .jump-to-slide-input{color:#fff}.reveal.has-light-background .jump-to-slide-input{color:#222}.reveal .jump-to-slide-input:focus{outline:none}.zoomed .reveal *,.zoomed .reveal *:before,.zoomed .reveal *:after{backface-visibility:visible!important}.zoomed .reveal .progress,.zoomed .reveal .controls{opacity:0}.zoomed .reveal .roll span{background:none}.zoomed .reveal .roll span:after{visibility:hidden}.reveal-viewport.loading-scroll-mode{visibility:hidden}.reveal-viewport.reveal-scroll{margin:0 auto;overflow:auto;overflow-x:hidden;overflow-y:auto;z-index:1;--r-scrollbar-width: 7px;--r-scrollbar-trigger-size: 5px;--r-controls-spacing: 8px}@media screen and (max-width: 500px){.reveal-viewport.reveal-scroll{--r-scrollbar-width: 3px;--r-scrollbar-trigger-size: 3px}}.reveal-viewport.reveal-scroll .controls,.reveal-viewport.reveal-scroll .progress,.reveal-viewport.reveal-scroll .playback,.reveal-viewport.reveal-scroll .backgrounds,.reveal-viewport.reveal-scroll .slide-number,.reveal-viewport.reveal-scroll .speaker-notes{display:none!important}.reveal-viewport.reveal-scroll .r-overlay,.reveal-viewport.reveal-scroll .pause-overlay{position:fixed}.reveal-viewport.reveal-scroll .reveal{overflow:visible;touch-action:manipulation}.reveal-viewport.reveal-scroll .slides{position:static;pointer-events:initial;left:auto;top:auto;width:100%!important;margin:0;padding:0;overflow:visible;display:block;perspective:none;perspective-origin:50% 50%}.reveal-viewport.reveal-scroll .scroll-page{position:relative;width:100%;height:calc(var(--page-height) + var(--page-scroll-padding));z-index:1;overflow:visible}.reveal-viewport.reveal-scroll .scroll-page-sticky{position:sticky;height:var(--page-height);top:0}.reveal-viewport.reveal-scroll .scroll-page-content{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.reveal-viewport.reveal-scroll .scroll-page section{visibility:visible!important;display:block!important;position:absolute!important;width:var(--slide-width)!important;height:var(--slide-height)!important;top:50%!important;left:50%!important;opacity:1!important;transform:scale(var(--slide-scale)) translate(-50%,-50%)!important;transform-style:flat!important;transform-origin:0 0!important}.reveal-viewport.reveal-scroll .slide-background{display:block!important;position:absolute;top:0;left:0;width:100%;height:100%;z-index:auto!important;visibility:visible;opacity:1;touch-action:manipulation}.reveal-viewport.reveal-scroll[data-scrollbar=true]::-webkit-scrollbar,.reveal-viewport.reveal-scroll[data-scrollbar=auto]::-webkit-scrollbar{display:none}.reveal-viewport.reveal-scroll[data-scrollbar=true],.reveal-viewport.reveal-scroll[data-scrollbar=auto]{scrollbar-width:none}.reveal.has-dark-background,.reveal-viewport.has-dark-background{--r-overlay-element-bg-color: 240, 240, 240;--r-overlay-element-fg-color: 0, 0, 0}.reveal.has-light-background,.reveal-viewport.has-light-background{--r-overlay-element-bg-color: 0, 0, 0;--r-overlay-element-fg-color: 240, 240, 240}.reveal-viewport.reveal-scroll .scrollbar{position:sticky;top:50%;z-index:20;opacity:0;transition:all .3s ease}.reveal-viewport.reveal-scroll .scrollbar.visible,.reveal-viewport.reveal-scroll .scrollbar:hover{opacity:1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-inner{position:absolute;width:var(--r-scrollbar-width);height:calc(var(--viewport-height) - var(--r-controls-spacing) * 2);right:var(--r-controls-spacing);top:0;transform:translateY(-50%);border-radius:var(--r-scrollbar-width);z-index:10}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-playhead{position:absolute;width:var(--r-scrollbar-width);height:var(--r-scrollbar-width);top:0;left:0;border-radius:var(--r-scrollbar-width);background-color:rgba(var(--r-overlay-element-bg-color),1);z-index:11;transition:background-color .2s ease}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide{position:absolute;width:100%;background-color:rgba(var(--r-overlay-element-bg-color),.2);box-shadow:0 0 0 1px rgba(var(--r-overlay-element-fg-color),.1);border-radius:var(--r-scrollbar-width);transition:background-color .2s ease}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide:after{content:"";position:absolute;width:200%;height:100%;top:0;left:-50%;background:#0000;z-index:-1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide:hover,.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active{background-color:rgba(var(--r-overlay-element-bg-color),.4)}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-trigger{position:absolute;width:100%;transition:background-color .2s ease}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active.has-triggers{background-color:rgba(var(--r-overlay-element-bg-color),.4);z-index:10}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger:after{content:"";position:absolute;width:var(--r-scrollbar-trigger-size);height:var(--r-scrollbar-trigger-size);border-radius:20px;top:50%;left:50%;transform:translate(-50%,-50%);background-color:rgba(var(--r-overlay-element-bg-color),1);transition:transform .2s ease,opacity .2s ease;opacity:.4}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger.active:after,.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger.active~.scrollbar-trigger:after{opacity:1}.reveal-viewport.reveal-scroll .scrollbar .scrollbar-slide.active .scrollbar-trigger~.scrollbar-trigger.active:after{transform:translate(calc(var(--r-scrollbar-width) * -2));background-color:rgba(var(--r-overlay-element-bg-color),1)} diff --git a/dist/reveal.d.ts b/dist/reveal.d.ts index e547a39e..6d9a45d9 100644 --- a/dist/reveal.d.ts +++ b/dist/reveal.d.ts @@ -32,10 +32,13 @@ declare interface Config { maxScale?: number; /** * Display presentation control arrows + * - true: Display controls in all views + * - false: Hide controls in all views + * - 'speaker-only': Display controls only in the speaker view * * @defaultValue true */ - controls?: boolean; + controls?: boolean | 'speaker-only'; /** * Help the user learn the controls by providing hints, for example by * bouncing the down arrow when they first encounter a vertical slide diff --git a/dist/reveal.mjs b/dist/reveal.mjs index e94f4048..aea912bd 100644 --- a/dist/reveal.mjs +++ b/dist/reveal.mjs @@ -1,11 +1,11 @@ -var vi = Object.defineProperty; -var mi = (h, e, i) => e in h ? vi(h, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : h[e] = i; -var Pt = (h, e, i) => mi(h, typeof e != "symbol" ? e + "" : e, i); +var di = Object.defineProperty; +var ci = (h, e, i) => e in h ? di(h, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : h[e] = i; +var At = (h, e, i) => ci(h, typeof e != "symbol" ? e + "" : e, i); const ue = (h, e) => { for (let i in e) h[i] = e[i]; return h; -}, E = (h, e) => Array.from(h.querySelectorAll(e)), qe = (h, e, i) => { +}, E = (h, e) => Array.from(h.querySelectorAll(e)), Ve = (h, e, i) => { i ? h.classList.add(e) : h.classList.remove(e); }, he = (h) => { if (typeof h == "string") { @@ -20,7 +20,7 @@ const ue = (h, e) => { }, Pe = (h, e) => { let i = h.matches || h.matchesSelector || h.msMatchesSelector; return !!(i && i.call(h, e)); -}, F = (h, e) => { +}, O = (h, e) => { if (typeof h.closest == "function") return h.closest(e); for (; h; ) { @@ -29,23 +29,23 @@ const ue = (h, e) => { h = h.parentNode; } return null; -}, Ht = (h) => { +}, xt = (h) => { h = h || document.documentElement; let e = h.requestFullscreen || h.webkitRequestFullscreen || h.webkitRequestFullScreen || h.mozRequestFullScreen || h.msRequestFullscreen; e && e.apply(h); -}, yi = (h, e, i, t = "") => { +}, hi = (h, e, i, t = "") => { let s = h.querySelectorAll("." + i); - for (let n = 0; n < s.length; n++) { - let o = s[n]; + for (let a = 0; a < s.length; a++) { + let o = s[a]; if (o.parentNode === h) return o; } - let l = document.createElement(e); - return l.className = i, l.innerHTML = t, h.appendChild(l), l; -}, We = (h) => { + let r = document.createElement(e); + return r.className = i, r.innerHTML = t, h.appendChild(r), r; +}, Ue = (h) => { let e = document.createElement("style"); return e.type = "text/css", h && h.length > 0 && (e.styleSheet ? e.styleSheet.cssText = h : e.appendChild(document.createTextNode(h))), document.head.appendChild(e), e; -}, xt = () => { +}, Rt = () => { let h = {}; location.search.replace(/[A-Z0-9]+?=([\w\.%-]*)/gi, (e) => { h[e.split("=").shift()] = e.split("=").pop(); @@ -55,31 +55,31 @@ const ue = (h, e) => { h[e] = he(unescape(i)); } return typeof h.dependencies < "u" && delete h.dependencies, h; -}, bi = (h, e = 0) => { +}, ui = (h, e = 0) => { if (h) { let i, t = h.style.height; return h.style.height = "0px", h.parentNode.style.height = "auto", i = e - h.parentNode.offsetHeight, h.style.height = t + "px", h.parentNode.style.removeProperty("height"), i; } return e; -}, wi = { +}, fi = { mp4: "video/mp4", m4a: "video/mp4", ogv: "video/ogg", mpeg: "video/mpeg", webm: "video/webm" -}, Ei = (h = "") => wi[h.split(".").pop()], Si = (h = "") => encodeURI(h).replace(/%5B/g, "[").replace(/%5D/g, "]").replace( +}, gi = (h = "") => fi[h.split(".").pop()], pi = (h = "") => encodeURI(h).replace(/%5B/g, "[").replace(/%5D/g, "]").replace( /[!'()*]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase()}` -), Dt = navigator.userAgent, fe = /(iphone|ipod|ipad|android)/gi.test(Dt) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1, zt = /android/gi.test(Dt); -var Ai = function(h) { +), Tt = navigator.userAgent, fe = /(iphone|ipod|ipad|android)/gi.test(Tt) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1, It = /android/gi.test(Tt); +var vi = function(h) { if (h) { var e = function(u) { return [].slice.call(u); - }, i = 0, t = 1, s = 2, l = 3, n = [], o = null, c = "requestAnimationFrame" in h ? function() { + }, i = 0, t = 1, s = 2, r = 3, a = [], o = null, c = "requestAnimationFrame" in h ? function() { var u = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : { sync: !1 }; h.cancelAnimationFrame(o); var S = function() { - return g(n.filter(function(x) { + return g(a.filter(function(x) { return x.dirty && x.active; })); }; @@ -88,7 +88,7 @@ var Ai = function(h) { } : function() { }, f = function(u) { return function(S) { - n.forEach(function(x) { + a.forEach(function(x) { return x.dirty = u; }), c(S); }; @@ -96,19 +96,19 @@ var Ai = function(h) { u.filter(function(x) { return !x.styleComputed; }).forEach(function(x) { - x.styleComputed = r(x); + x.styleComputed = l(x); }), u.filter(A).forEach(I); var S = u.filter(w); S.forEach(y), S.forEach(function(x) { - I(x), v(x); + I(x), p(x); }), S.forEach(V); - }, v = function(u) { + }, p = function(u) { return u.dirty = i; }, y = function(u) { u.availableWidth = u.element.parentNode.clientWidth, u.currentWidth = u.element.scrollWidth, u.previousFontSize = u.currentFontSize, u.currentFontSize = Math.min(Math.max(u.minSize, u.availableWidth / u.currentWidth * u.previousFontSize), u.maxSize), u.whiteSpace = u.multiLine && u.currentFontSize === u.minSize ? "normal" : "nowrap"; }, w = function(u) { return u.dirty !== s || u.dirty === s && u.element.parentNode.clientWidth !== u.availableWidth; - }, r = function(u) { + }, l = function(u) { var S = h.getComputedStyle(u.element, null); return u.currentFontSize = parseFloat(S.getPropertyValue("font-size")), u.display = S.getPropertyValue("display"), u.whiteSpace = S.getPropertyValue("white-space"), !0; }, A = function(u) { @@ -118,13 +118,13 @@ var Ai = function(h) { u.element.style.whiteSpace = u.whiteSpace, u.element.style.display = u.display, u.element.style.fontSize = u.currentFontSize + "px"; }, V = function(u) { u.element.dispatchEvent(new CustomEvent("fit", { detail: { oldValue: u.previousFontSize, newValue: u.currentFontSize, scaleFactor: u.currentFontSize / u.previousFontSize } })); - }, O = function(u, S) { + }, q = function(u, S) { return function(x) { u.dirty = S, u.active && c(x); }; }, se = function(u) { return function() { - n = n.filter(function(S) { + a = a.filter(function(S) { return S.element !== u.element; }), u.observeMutations && u.observer.disconnect(), u.element.style.whiteSpace = u.originalStyle.whiteSpace, u.element.style.display = u.originalStyle.display, u.element.style.fontSize = u.originalStyle.fontSize; }; @@ -136,33 +136,33 @@ var Ai = function(h) { return function() { return u.active = !1; }; - }, N = function(u) { - u.observeMutations && (u.observer = new MutationObserver(O(u, t)), u.observer.observe(u.element, u.observeMutations)); - }, U = { minSize: 16, maxSize: 512, multiLine: !0, observeMutations: "MutationObserver" in h && { subtree: !0, childList: !0, characterData: !0 } }, W = null, P = function() { - h.clearTimeout(W), W = h.setTimeout(f(s), L.observeWindowDelay); + }, M = function(u) { + u.observeMutations && (u.observer = new MutationObserver(q(u, t)), u.observer.observe(u.element, u.observeMutations)); + }, W = { minSize: 16, maxSize: 512, multiLine: !0, observeMutations: "MutationObserver" in h && { subtree: !0, childList: !0, characterData: !0 } }, j = null, P = function() { + h.clearTimeout(j), j = h.setTimeout(f(s), C.observeWindowDelay); }, R = ["resize", "orientationchange"]; - return Object.defineProperty(L, "observeWindow", { set: function(u) { + return Object.defineProperty(C, "observeWindow", { set: function(u) { var S = "".concat(u ? "add" : "remove", "EventListener"); R.forEach(function(x) { h[S](x, P); }); - } }), L.observeWindow = !0, L.observeWindowDelay = 100, L.fitAll = f(l), L; + } }), C.observeWindow = !0, C.observeWindowDelay = 100, C.fitAll = f(r), C; } function D(u, S) { - var x = Object.assign({}, U, S), $ = u.map(function(j) { - var Z = Object.assign({}, x, { element: j, active: !0 }); + var x = Object.assign({}, W, S), X = u.map(function(K) { + var Z = Object.assign({}, x, { element: K, active: !0 }); return function(H) { - H.originalStyle = { whiteSpace: H.element.style.whiteSpace, display: H.element.style.display, fontSize: H.element.style.fontSize }, N(H), H.newbie = !0, H.dirty = !0, n.push(H); - }(Z), { element: j, fit: O(Z, l), unfreeze: z(Z), freeze: k(Z), unsubscribe: se(Z) }; + H.originalStyle = { whiteSpace: H.element.style.whiteSpace, display: H.element.style.display, fontSize: H.element.style.fontSize }, M(H), H.newbie = !0, H.dirty = !0, a.push(H); + }(Z), { element: K, fit: q(Z, r), unfreeze: z(Z), freeze: k(Z), unsubscribe: se(Z) }; }); - return c(), $; + return c(), X; } - function L(u) { + function C(u) { var S = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; return typeof u == "string" ? D(e(document.querySelectorAll(u)), S) : D([u], S)[0]; } }(typeof window > "u" ? null : window); -class Ri { +class mi { constructor(e) { this.Reveal = e, this.startEmbeddedIframe = this.startEmbeddedIframe.bind(this); } @@ -189,38 +189,38 @@ class Ri { e.style.display = this.Reveal.getConfig().display, E(e, "img[data-src], video[data-src], audio[data-src], iframe[data-src]").forEach((s) => { (s.tagName !== "IFRAME" || this.shouldPreload(s)) && (s.setAttribute("src", s.getAttribute("data-src")), s.setAttribute("data-lazy-loaded", ""), s.removeAttribute("data-src")); }), E(e, "video, audio").forEach((s) => { - let l = 0; - E(s, "source[data-src]").forEach((n) => { - n.setAttribute("src", n.getAttribute("data-src")), n.removeAttribute("data-src"), n.setAttribute("data-lazy-loaded", ""), l += 1; - }), fe && s.tagName === "VIDEO" && s.setAttribute("playsinline", ""), l > 0 && s.load(); + let r = 0; + E(s, "source[data-src]").forEach((a) => { + a.setAttribute("src", a.getAttribute("data-src")), a.removeAttribute("data-src"), a.setAttribute("data-lazy-loaded", ""), r += 1; + }), fe && s.tagName === "VIDEO" && s.setAttribute("playsinline", ""), r > 0 && s.load(); }); let t = e.slideBackgroundElement; if (t) { t.style.display = "block"; - let s = e.slideBackgroundContentElement, l = e.getAttribute("data-background-iframe"); + let s = e.slideBackgroundContentElement, r = e.getAttribute("data-background-iframe"); if (t.hasAttribute("data-loaded") === !1) { t.setAttribute("data-loaded", "true"); let o = e.getAttribute("data-background-image"), c = e.getAttribute("data-background-video"), f = e.hasAttribute("data-background-video-loop"), g = e.hasAttribute("data-background-video-muted"); if (o) - /^data:/.test(o.trim()) ? s.style.backgroundImage = `url(${o.trim()})` : s.style.backgroundImage = o.split(",").map((v) => { - let y = decodeURI(v.trim()); - return `url(${Si(y)})`; + /^data:/.test(o.trim()) ? s.style.backgroundImage = `url(${o.trim()})` : s.style.backgroundImage = o.split(",").map((p) => { + let y = decodeURI(p.trim()); + return `url(${pi(y)})`; }).join(","); else if (c) { - let v = document.createElement("video"); - f && v.setAttribute("loop", ""), (g || this.Reveal.isSpeakerNotes()) && (v.muted = !0), fe && (v.muted = !0, v.setAttribute("playsinline", "")), c.split(",").forEach((y) => { + let p = document.createElement("video"); + f && p.setAttribute("loop", ""), (g || this.Reveal.isSpeakerNotes()) && (p.muted = !0), fe && (p.muted = !0, p.setAttribute("playsinline", "")), c.split(",").forEach((y) => { const w = document.createElement("source"); w.setAttribute("src", y); - let r = Ei(y); - r && w.setAttribute("type", r), v.appendChild(w); - }), s.appendChild(v); - } else if (l && i.excludeIframes !== !0) { - let v = document.createElement("iframe"); - v.setAttribute("allowfullscreen", ""), v.setAttribute("mozallowfullscreen", ""), v.setAttribute("webkitallowfullscreen", ""), v.setAttribute("allow", "autoplay"), v.setAttribute("data-src", l), v.style.width = "100%", v.style.height = "100%", v.style.maxHeight = "100%", v.style.maxWidth = "100%", s.appendChild(v); + let l = gi(y); + l && w.setAttribute("type", l), p.appendChild(w); + }), s.appendChild(p); + } else if (r && i.excludeIframes !== !0) { + let p = document.createElement("iframe"); + p.setAttribute("allowfullscreen", ""), p.setAttribute("mozallowfullscreen", ""), p.setAttribute("webkitallowfullscreen", ""), p.setAttribute("allow", "autoplay"), p.setAttribute("data-src", r), p.style.width = "100%", p.style.height = "100%", p.style.maxHeight = "100%", p.style.maxWidth = "100%", s.appendChild(p); } } - let n = s.querySelector("iframe[data-src]"); - n && this.shouldPreload(t) && !/autoplay=(1|true|yes)/gi.test(l) && n.getAttribute("src") !== l && n.setAttribute("src", l); + let a = s.querySelector("iframe[data-src]"); + a && this.shouldPreload(t) && !/autoplay=(1|true|yes)/gi.test(r) && a.getAttribute("src") !== r && a.setAttribute("src", r); } this.layout(e); } @@ -229,7 +229,7 @@ class Ri { */ layout(e) { Array.from(e.querySelectorAll(".r-fit-text")).forEach((i) => { - Ai(i, { + vi(i, { minSize: 24, maxSize: this.Reveal.getConfig().height * 0.8, observeMutations: !1, @@ -259,9 +259,9 @@ class Ri { */ formatEmbeddedContent() { let e = (i, t, s) => { - E(this.Reveal.getSlidesElement(), "iframe[" + i + '*="' + t + '"]').forEach((l) => { - let n = l.getAttribute(i); - n && n.indexOf(s) === -1 && l.setAttribute(i, n + (/\?/.test(n) ? "&" : "?") + s); + E(this.Reveal.getSlidesElement(), "iframe[" + i + '*="' + t + '"]').forEach((r) => { + let a = r.getAttribute(i); + a && a.indexOf(s) === -1 && r.setAttribute(i, a + (/\?/.test(a) ? "&" : "?") + s); }); }; e("src", "youtube.com/embed/", "enablejsapi=1"), e("data-src", "youtube.com/embed/", "enablejsapi=1"), e("src", "player.vimeo.com/", "api=1"), e("data-src", "player.vimeo.com/", "api=1"); @@ -278,16 +278,16 @@ class Ri { E(e, 'img[src$=".gif"]').forEach((t) => { t.setAttribute("src", t.getAttribute("src")); }), E(e, "video, audio").forEach((t) => { - if (F(t, ".fragment") && !F(t, ".fragment.visible")) + if (O(t, ".fragment") && !O(t, ".fragment.visible")) return; let s = this.Reveal.getConfig().autoPlayMedia; - if (typeof s != "boolean" && (s = t.hasAttribute("data-autoplay") || !!F(t, ".slide-background")), s && typeof t.play == "function") { + if (typeof s != "boolean" && (s = t.hasAttribute("data-autoplay") || !!O(t, ".slide-background")), s && typeof t.play == "function") { if (i && !t.muted) return; if (t.readyState > 1) this.startEmbeddedMedia({ target: t }); else if (fe) { - let l = t.play(); - l && typeof l.catch == "function" && t.controls === !1 && l.catch(() => { + let r = t.play(); + r && typeof r.catch == "function" && t.controls === !1 && r.catch(() => { t.controls = !0, t.addEventListener("play", () => { t.controls = !1; }); @@ -296,9 +296,9 @@ class Ri { t.removeEventListener("loadeddata", this.startEmbeddedMedia), t.addEventListener("loadeddata", this.startEmbeddedMedia); } }), i || (E(e, "iframe[src]").forEach((t) => { - F(t, ".fragment") && !F(t, ".fragment.visible") || this.startEmbeddedIframe({ target: t }); + O(t, ".fragment") && !O(t, ".fragment.visible") || this.startEmbeddedIframe({ target: t }); }), E(e, "iframe[data-src]").forEach((t) => { - F(t, ".fragment") && !F(t, ".fragment.visible") || t.getAttribute("src") !== t.getAttribute("data-src") && (t.removeEventListener("load", this.startEmbeddedIframe), t.addEventListener("load", this.startEmbeddedIframe), t.setAttribute("src", t.getAttribute("data-src"))); + O(t, ".fragment") && !O(t, ".fragment.visible") || t.getAttribute("src") !== t.getAttribute("data-src") && (t.removeEventListener("load", this.startEmbeddedIframe), t.addEventListener("load", this.startEmbeddedIframe), t.setAttribute("src", t.getAttribute("data-src"))); })); } } @@ -309,7 +309,7 @@ class Ri { * @param {object} event */ startEmbeddedMedia(e) { - let i = !!F(e.target, "html"), t = !!F(e.target, ".present"); + let i = !!O(e.target, "html"), t = !!O(e.target, ".present"); i && t && (e.target.paused || e.target.ended) && (e.target.currentTime = 0, e.target.play()), e.target.removeEventListener("loadeddata", this.startEmbeddedMedia); } /** @@ -321,10 +321,10 @@ class Ri { startEmbeddedIframe(e) { let i = e.target; if (i && i.contentWindow) { - let t = !!F(e.target, "html"), s = !!F(e.target, ".present"); + let t = !!O(e.target, "html"), s = !!O(e.target, ".present"); if (t && s) { - let l = this.Reveal.getConfig().autoPlayMedia; - typeof l != "boolean" && (l = i.hasAttribute("data-autoplay") || !!F(i, ".slide-background")), /youtube\.com\/embed\//.test(i.getAttribute("src")) && l ? i.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', "*") : /player\.vimeo\.com\//.test(i.getAttribute("src")) && l ? i.contentWindow.postMessage('{"method":"play"}', "*") : i.contentWindow.postMessage("slide:start", "*"); + let r = this.Reveal.getConfig().autoPlayMedia; + typeof r != "boolean" && (r = i.hasAttribute("data-autoplay") || !!O(i, ".slide-background")), /youtube\.com\/embed\//.test(i.getAttribute("src")) && r ? i.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', "*") : /player\.vimeo\.com\//.test(i.getAttribute("src")) && r ? i.contentWindow.postMessage('{"method":"play"}', "*") : i.contentWindow.postMessage("slide:start", "*"); } } } @@ -351,8 +351,8 @@ class Ri { })); } } -const re = ".slides section", te = ".slides>section", Tt = ".slides>section.present>section", ki = ".backgrounds>.slide-background", Li = /registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener|showPreview/, It = /fade-(down|up|right|left|out|in-then-out|in-then-semi-out)|semi-fade-out|current-visible|shrink|grow/, Ci = "h.v", Pi = "h/v", je = "c", Ft = "c/t"; -class xi { +const re = ".slides section", te = ".slides>section", kt = ".slides>section.present>section", yi = ".backgrounds>.slide-background", bi = /registerPlugin|registerKeyboardShortcut|addKeyBinding|addEventListener|showPreview/, wi = "h.v", Ei = "h/v", We = "c", Mt = "c/t"; +class Si { constructor(e) { this.Reveal = e; } @@ -377,28 +377,28 @@ class xi { * number, including formatting. */ getSlideNumber(e = this.Reveal.getCurrentSlide()) { - let i = this.Reveal.getConfig(), t, s = Ci; + let i = this.Reveal.getConfig(), t, s = wi; if (typeof i.slideNumber == "function") t = i.slideNumber(e); else { - typeof i.slideNumber == "string" && (s = i.slideNumber), !/c/.test(s) && this.Reveal.getHorizontalSlides().length === 1 && (s = je); - let n = e && e.dataset.visibility === "uncounted" ? 0 : 1; + typeof i.slideNumber == "string" && (s = i.slideNumber), !/c/.test(s) && this.Reveal.getHorizontalSlides().length === 1 && (s = We); + let a = e && e.dataset.visibility === "uncounted" ? 0 : 1; switch (t = [], s) { - case je: - t.push(this.Reveal.getSlidePastCount(e) + n); + case We: + t.push(this.Reveal.getSlidePastCount(e) + a); break; - case Ft: - t.push(this.Reveal.getSlidePastCount(e) + n, "/", this.Reveal.getTotalSlides()); + case Mt: + t.push(this.Reveal.getSlidePastCount(e) + a, "/", this.Reveal.getTotalSlides()); break; default: let o = this.Reveal.getIndices(e); - t.push(o.h + n); - let c = s === Pi ? "/" : "."; + t.push(o.h + a); + let c = s === Ei ? "/" : "."; this.Reveal.isVerticalSlide(e) && t.push(c, o.v + 1); } } - let l = "#" + this.Reveal.location.getHash(e); - return this.formatNumber(t[0], t[1], t[2], l); + let r = "#" + this.Reveal.location.getHash(e); + return this.formatNumber(t[0], t[1], t[2], r); } /** * Applies HTML formatting to a slide number before it's @@ -423,7 +423,7 @@ class xi { this.element.remove(); } } -class Ti { +class Ai { constructor(e) { this.Reveal = e, this.onInput = this.onInput.bind(this), this.onBlur = this.onBlur.bind(this), this.onKeyDown = this.onKeyDown.bind(this); } @@ -447,7 +447,7 @@ class Ti { let e = this.jumpInput.value.trim(""), i; if (/^\d+$/.test(e)) { const t = this.Reveal.getConfig().slideNumber; - if (t === je || t === Ft) { + if (t === We || t === Mt) { const s = this.Reveal.getSlides()[parseInt(e, 10) - 1]; s && (i = this.Reveal.getIndices(s)); } @@ -488,7 +488,7 @@ class Ti { setTimeout(() => this.hide(), 1); } } -const _e = (h) => { +const je = (h) => { let e = h.match(/^#([0-9a-f]{3})$/i); if (e && e[1]) return e = e[1], { @@ -517,8 +517,8 @@ const _e = (h) => { b: parseInt(s[3], 10), a: parseFloat(s[4]) } : null; -}, Ii = (h) => (typeof h == "string" && (h = _e(h)), h ? (h.r * 299 + h.g * 587 + h.b * 114) / 1e3 : null); -class Ni { +}, Ri = (h) => (typeof h == "string" && (h = je(h)), h ? (h.r * 299 + h.g * 587 + h.b * 114) / 1e3 : null); +class ki { constructor(e) { this.Reveal = e; } @@ -573,10 +573,10 @@ class Ni { backgroundPosition: e.getAttribute("data-background-position"), backgroundTransition: e.getAttribute("data-background-transition"), backgroundOpacity: e.getAttribute("data-background-opacity") - }, l = e.hasAttribute("data-preload"); - e.classList.remove("has-dark-background"), e.classList.remove("has-light-background"), i.removeAttribute("data-loaded"), i.removeAttribute("data-background-hash"), i.removeAttribute("data-background-size"), i.removeAttribute("data-background-transition"), i.style.backgroundColor = "", t.style.backgroundSize = "", t.style.backgroundRepeat = "", t.style.backgroundPosition = "", t.style.backgroundImage = "", t.style.opacity = "", t.innerHTML = "", s.background && (/^(http|file|\/\/)/gi.test(s.background) || /\.(svg|png|jpg|jpeg|gif|bmp|webp)([?#\s]|$)/gi.test(s.background) ? e.setAttribute("data-background-image", s.background) : i.style.background = s.background), (s.background || s.backgroundColor || s.backgroundGradient || s.backgroundImage || s.backgroundVideo || s.backgroundIframe) && i.setAttribute("data-background-hash", s.background + s.backgroundSize + s.backgroundImage + s.backgroundVideo + s.backgroundIframe + s.backgroundColor + s.backgroundGradient + s.backgroundRepeat + s.backgroundPosition + s.backgroundTransition + s.backgroundOpacity), s.backgroundSize && i.setAttribute("data-background-size", s.backgroundSize), s.backgroundColor && (i.style.backgroundColor = s.backgroundColor), s.backgroundGradient && (i.style.backgroundImage = s.backgroundGradient), s.backgroundTransition && i.setAttribute("data-background-transition", s.backgroundTransition), l && i.setAttribute("data-preload", ""), s.backgroundSize && (t.style.backgroundSize = s.backgroundSize), s.backgroundRepeat && (t.style.backgroundRepeat = s.backgroundRepeat), s.backgroundPosition && (t.style.backgroundPosition = s.backgroundPosition), s.backgroundOpacity && (t.style.opacity = s.backgroundOpacity); - const n = this.getContrastClass(e); - typeof n == "string" && e.classList.add(n); + }, r = e.hasAttribute("data-preload"); + e.classList.remove("has-dark-background"), e.classList.remove("has-light-background"), i.removeAttribute("data-loaded"), i.removeAttribute("data-background-hash"), i.removeAttribute("data-background-size"), i.removeAttribute("data-background-transition"), i.style.backgroundColor = "", t.style.backgroundSize = "", t.style.backgroundRepeat = "", t.style.backgroundPosition = "", t.style.backgroundImage = "", t.style.opacity = "", t.innerHTML = "", s.background && (/^(http|file|\/\/)/gi.test(s.background) || /\.(svg|png|jpg|jpeg|gif|bmp|webp)([?#\s]|$)/gi.test(s.background) ? e.setAttribute("data-background-image", s.background) : i.style.background = s.background), (s.background || s.backgroundColor || s.backgroundGradient || s.backgroundImage || s.backgroundVideo || s.backgroundIframe) && i.setAttribute("data-background-hash", s.background + s.backgroundSize + s.backgroundImage + s.backgroundVideo + s.backgroundIframe + s.backgroundColor + s.backgroundGradient + s.backgroundRepeat + s.backgroundPosition + s.backgroundTransition + s.backgroundOpacity), s.backgroundSize && i.setAttribute("data-background-size", s.backgroundSize), s.backgroundColor && (i.style.backgroundColor = s.backgroundColor), s.backgroundGradient && (i.style.backgroundImage = s.backgroundGradient), s.backgroundTransition && i.setAttribute("data-background-transition", s.backgroundTransition), r && i.setAttribute("data-preload", ""), s.backgroundSize && (t.style.backgroundSize = s.backgroundSize), s.backgroundRepeat && (t.style.backgroundRepeat = s.backgroundRepeat), s.backgroundPosition && (t.style.backgroundPosition = s.backgroundPosition), s.backgroundOpacity && (t.style.opacity = s.backgroundOpacity); + const a = this.getContrastClass(e); + typeof a == "string" && e.classList.add(a); } /** * Returns a class name that can be applied to a slide to indicate @@ -589,14 +589,14 @@ class Ni { getContrastClass(e) { const i = e.slideBackgroundElement; let t = e.getAttribute("data-background-color"); - if (!t || !_e(t)) { + if (!t || !je(t)) { let s = window.getComputedStyle(i); s && s.backgroundColor && (t = s.backgroundColor); } if (t) { - const s = _e(t); + const s = je(t); if (s && s.a !== 0) - return Ii(t) < 128 ? "has-dark-background" : "has-light-background"; + return Ri(t) < 128 ? "has-dark-background" : "has-light-background"; } return null; } @@ -616,32 +616,32 @@ class Ni { * all vertical slides (not just the present) will be updated. */ update(e = !1) { - let i = this.Reveal.getConfig(), t = this.Reveal.getCurrentSlide(), s = this.Reveal.getIndices(), l = null, n = i.rtl ? "future" : "past", o = i.rtl ? "past" : "future"; + let i = this.Reveal.getConfig(), t = this.Reveal.getCurrentSlide(), s = this.Reveal.getIndices(), r = null, a = i.rtl ? "future" : "past", o = i.rtl ? "past" : "future"; if (Array.from(this.element.childNodes).forEach((c, f) => { - c.classList.remove("past", "present", "future"), f < s.h ? c.classList.add(n) : f > s.h ? c.classList.add(o) : (c.classList.add("present"), l = c), (e || f === s.h) && E(c, ".slide-background").forEach((g, v) => { + c.classList.remove("past", "present", "future"), f < s.h ? c.classList.add(a) : f > s.h ? c.classList.add(o) : (c.classList.add("present"), r = c), (e || f === s.h) && E(c, ".slide-background").forEach((g, p) => { g.classList.remove("past", "present", "future"); const y = typeof s.v == "number" ? s.v : 0; - v < y ? g.classList.add("past") : v > y ? g.classList.add("future") : (g.classList.add("present"), f === s.h && (l = g)); + p < y ? g.classList.add("past") : p > y ? g.classList.add("future") : (g.classList.add("present"), f === s.h && (r = g)); }); - }), this.previousBackground && !this.previousBackground.closest("body") && (this.previousBackground = null), l && this.previousBackground) { - let c = this.previousBackground.getAttribute("data-background-hash"), f = l.getAttribute("data-background-hash"); - if (f && f === c && l !== this.previousBackground) { + }), this.previousBackground && !this.previousBackground.closest("body") && (this.previousBackground = null), r && this.previousBackground) { + let c = this.previousBackground.getAttribute("data-background-hash"), f = r.getAttribute("data-background-hash"); + if (f && f === c && r !== this.previousBackground) { this.element.classList.add("no-transition"); - const g = l.querySelector("video"), v = this.previousBackground.querySelector("video"); - if (g && v) { + const g = r.querySelector("video"), p = this.previousBackground.querySelector("video"); + if (g && p) { const y = g.parentNode; - v.parentNode.appendChild(g), y.appendChild(v); + p.parentNode.appendChild(g), y.appendChild(p); } } } - if (this.previousBackground && this.Reveal.slideContent.stopEmbeddedContent(this.previousBackground, { unloadIframes: !this.Reveal.slideContent.shouldPreload(this.previousBackground) }), l) { - this.Reveal.slideContent.startEmbeddedContent(l); - let c = l.querySelector(".slide-background-content"); + if (this.previousBackground && this.Reveal.slideContent.stopEmbeddedContent(this.previousBackground, { unloadIframes: !this.Reveal.slideContent.shouldPreload(this.previousBackground) }), r) { + this.Reveal.slideContent.startEmbeddedContent(r); + let c = r.querySelector(".slide-background-content"); if (c) { let f = c.style.backgroundImage || ""; /\.gif/i.test(f) && (c.style.backgroundImage = "", window.getComputedStyle(c).opacity, c.style.backgroundImage = f); } - this.previousBackground = l; + this.previousBackground = r; } t && this.bubbleSlideContrastClassToElement(t, this.Reveal.getRevealElement()), setTimeout(() => { this.element.classList.remove("no-transition"); @@ -654,20 +654,20 @@ class Ni { updateParallax() { let e = this.Reveal.getIndices(); if (this.Reveal.getConfig().parallaxBackgroundImage) { - let i = this.Reveal.getHorizontalSlides(), t = this.Reveal.getVerticalSlides(), s = this.element.style.backgroundSize.split(" "), l, n; - s.length === 1 ? l = n = parseInt(s[0], 10) : (l = parseInt(s[0], 10), n = parseInt(s[1], 10)); + let i = this.Reveal.getHorizontalSlides(), t = this.Reveal.getVerticalSlides(), s = this.element.style.backgroundSize.split(" "), r, a; + s.length === 1 ? r = a = parseInt(s[0], 10) : (r = parseInt(s[0], 10), a = parseInt(s[1], 10)); let o = this.element.offsetWidth, c = i.length, f, g; - typeof this.Reveal.getConfig().parallaxBackgroundHorizontal == "number" ? f = this.Reveal.getConfig().parallaxBackgroundHorizontal : f = c > 1 ? (l - o) / (c - 1) : 0, g = f * e.h * -1; - let v = this.element.offsetHeight, y = t.length, w, r; - typeof this.Reveal.getConfig().parallaxBackgroundVertical == "number" ? w = this.Reveal.getConfig().parallaxBackgroundVertical : w = (n - v) / (y - 1), r = y > 0 ? w * e.v : 0, this.element.style.backgroundPosition = g + "px " + -r + "px"; + typeof this.Reveal.getConfig().parallaxBackgroundHorizontal == "number" ? f = this.Reveal.getConfig().parallaxBackgroundHorizontal : f = c > 1 ? (r - o) / (c - 1) : 0, g = f * e.h * -1; + let p = this.element.offsetHeight, y = t.length, w, l; + typeof this.Reveal.getConfig().parallaxBackgroundVertical == "number" ? w = this.Reveal.getConfig().parallaxBackgroundVertical : w = (a - p) / (y - 1), l = y > 0 ? w * e.v : 0, this.element.style.backgroundPosition = g + "px " + -l + "px"; } } destroy() { this.element.remove(); } } -let Nt = 0; -class Mi { +let Ct = 0; +class Ci { constructor(e) { this.Reveal = e; } @@ -679,19 +679,19 @@ class Mi { */ run(e, i) { this.reset(); - let t = this.Reveal.getSlides(), s = t.indexOf(i), l = t.indexOf(e); - if (e && i && e.hasAttribute("data-auto-animate") && i.hasAttribute("data-auto-animate") && e.getAttribute("data-auto-animate-id") === i.getAttribute("data-auto-animate-id") && !(s > l ? i : e).hasAttribute("data-auto-animate-restart")) { - this.autoAnimateStyleSheet = this.autoAnimateStyleSheet || We(); - let n = this.getAutoAnimateOptions(i); - e.dataset.autoAnimate = "pending", i.dataset.autoAnimate = "pending", n.slideDirection = s > l ? "forward" : "backward"; + let t = this.Reveal.getSlides(), s = t.indexOf(i), r = t.indexOf(e); + if (e && i && e.hasAttribute("data-auto-animate") && i.hasAttribute("data-auto-animate") && e.getAttribute("data-auto-animate-id") === i.getAttribute("data-auto-animate-id") && !(s > r ? i : e).hasAttribute("data-auto-animate-restart")) { + this.autoAnimateStyleSheet = this.autoAnimateStyleSheet || Ue(); + let a = this.getAutoAnimateOptions(i); + e.dataset.autoAnimate = "pending", i.dataset.autoAnimate = "pending", a.slideDirection = s > r ? "forward" : "backward"; let o = e.style.display === "none"; o && (e.style.display = this.Reveal.getConfig().display); - let c = this.getAutoAnimatableElements(e, i).map((f) => this.autoAnimateElements(f.from, f.to, f.options || {}, n, Nt++)); + let c = this.getAutoAnimatableElements(e, i).map((f) => this.autoAnimateElements(f.from, f.to, f.options || {}, a, Ct++)); if (o && (e.style.display = "none"), i.dataset.autoAnimateUnmatched !== "false" && this.Reveal.getConfig().autoAnimateUnmatched === !0) { - let f = n.duration * 0.8, g = n.duration * 0.2; - this.getUnmatchedAutoAnimateElements(i).forEach((v) => { - let y = this.getAutoAnimateOptions(v, n), w = "unmatched"; - (y.duration !== n.duration || y.delay !== n.delay) && (w = "unmatched-" + Nt++, c.push(`[data-auto-animate="running"] [data-auto-animate-target="${w}"] { transition: opacity ${y.duration}s ease ${y.delay}s; }`)), v.dataset.autoAnimateTarget = w; + let f = a.duration * 0.8, g = a.duration * 0.2; + this.getUnmatchedAutoAnimateElements(i).forEach((p) => { + let y = this.getAutoAnimateOptions(p, a), w = "unmatched"; + (y.duration !== a.duration || y.delay !== a.delay) && (w = "unmatched-" + Ct++, c.push(`[data-auto-animate="running"] [data-auto-animate-target="${w}"] { transition: opacity ${y.duration}s ease ${y.delay}s; }`)), p.dataset.autoAnimateTarget = w; }, this), c.push(`[data-auto-animate="running"] [data-auto-animate-target="unmatched"] { transition: opacity ${f}s ease ${g}s; }`); } this.autoAnimateStyleSheet.innerHTML = c.join(""), requestAnimationFrame(() => { @@ -729,38 +729,34 @@ class Mi { * @param {String} id Unique ID that we can use to identify this * auto-animate element in the DOM */ - autoAnimateElements(e, i, t, s, l) { - e.dataset.autoAnimateTarget = "", i.dataset.autoAnimateTarget = l; - let n = this.getAutoAnimateOptions(i, s); - typeof t.delay < "u" && (n.delay = t.delay), typeof t.duration < "u" && (n.duration = t.duration), typeof t.easing < "u" && (n.easing = t.easing); + autoAnimateElements(e, i, t, s, r) { + e.dataset.autoAnimateTarget = "", i.dataset.autoAnimateTarget = r; + let a = this.getAutoAnimateOptions(i, s); + typeof t.delay < "u" && (a.delay = t.delay), typeof t.duration < "u" && (a.duration = t.duration), typeof t.easing < "u" && (a.easing = t.easing); let o = this.getAutoAnimatableProperties("from", e, t), c = this.getAutoAnimatableProperties("to", i, t); - if (i.classList.contains("fragment") && (delete c.styles.opacity, e.classList.contains("fragment"))) { - let v = (e.className.match(It) || [""])[0], y = (i.className.match(It) || [""])[0]; - v === y && s.slideDirection === "forward" && i.classList.add("visible", "disabled"); - } - if (t.translate !== !1 || t.scale !== !1) { - let v = this.Reveal.getScale(), y = { - x: (o.x - c.x) / v, - y: (o.y - c.y) / v, + if (i.classList.contains("fragment") && delete c.styles.opacity, t.translate !== !1 || t.scale !== !1) { + let p = this.Reveal.getScale(), y = { + x: (o.x - c.x) / p, + y: (o.y - c.y) / p, scaleX: o.width / c.width, scaleY: o.height / c.height }; y.x = Math.round(y.x * 1e3) / 1e3, y.y = Math.round(y.y * 1e3) / 1e3, y.scaleX = Math.round(y.scaleX * 1e3) / 1e3, y.scaleX = Math.round(y.scaleX * 1e3) / 1e3; - let w = t.translate !== !1 && (y.x !== 0 || y.y !== 0), r = t.scale !== !1 && (y.scaleX !== 0 || y.scaleY !== 0); - if (w || r) { + let w = t.translate !== !1 && (y.x !== 0 || y.y !== 0), l = t.scale !== !1 && (y.scaleX !== 0 || y.scaleY !== 0); + if (w || l) { let A = []; - w && A.push(`translate(${y.x}px, ${y.y}px)`), r && A.push(`scale(${y.scaleX}, ${y.scaleY})`), o.styles.transform = A.join(" "), o.styles["transform-origin"] = "top left", c.styles.transform = "none"; + w && A.push(`translate(${y.x}px, ${y.y}px)`), l && A.push(`scale(${y.scaleX}, ${y.scaleY})`), o.styles.transform = A.join(" "), o.styles["transform-origin"] = "top left", c.styles.transform = "none"; } } - for (let v in c.styles) { - const y = c.styles[v], w = o.styles[v]; - y === w ? delete c.styles[v] : (y.explicitValue === !0 && (c.styles[v] = y.value), w.explicitValue === !0 && (o.styles[v] = w.value)); + for (let p in c.styles) { + const y = c.styles[p], w = o.styles[p]; + y === w ? delete c.styles[p] : (y.explicitValue === !0 && (c.styles[p] = y.value), w.explicitValue === !0 && (o.styles[p] = w.value)); } let f = "", g = Object.keys(c.styles); if (g.length > 0) { - o.styles.transition = "none", c.styles.transition = `all ${n.duration}s ${n.easing} ${n.delay}s`, c.styles["transition-property"] = g.join(", "), c.styles["will-change"] = g.join(", "); - let v = Object.keys(o.styles).map((w) => w + ": " + o.styles[w] + " !important;").join(""), y = Object.keys(c.styles).map((w) => w + ": " + c.styles[w] + " !important;").join(""); - f = '[data-auto-animate-target="' + l + '"] {' + v + '}[data-auto-animate="running"] [data-auto-animate-target="' + l + '"] {' + y + "}"; + o.styles.transition = "none", c.styles.transition = `all ${a.duration}s ${a.easing} ${a.delay}s`, c.styles["transition-property"] = g.join(", "), c.styles["will-change"] = g.join(", "); + let p = Object.keys(o.styles).map((w) => w + ": " + o.styles[w] + " !important;").join(""), y = Object.keys(c.styles).map((w) => w + ": " + c.styles[w] + " !important;").join(""); + f = '[data-auto-animate-target="' + r + '"] {' + p + '}[data-auto-animate="running"] [data-auto-animate-target="' + r + '"] {' + y + "}"; } return f; } @@ -779,7 +775,7 @@ class Mi { delay: 0 }; if (t = ue(t, i), e.parentNode) { - let s = F(e.parentNode, "[data-auto-animate-target]"); + let s = O(e.parentNode, "[data-auto-animate-target]"); s && (t = this.getAutoAnimateOptions(s, t)); } return e.dataset.autoAnimateEasing && (t.easing = e.dataset.autoAnimateEasing), e.dataset.autoAnimateDuration && (t.duration = parseFloat(e.dataset.autoAnimateDuration)), e.dataset.autoAnimateDelay && (t.delay = parseFloat(e.dataset.autoAnimateDelay)), t; @@ -792,7 +788,7 @@ class Mi { * @param {String} direction 'from' or 'to' */ getAutoAnimatableProperties(e, i, t) { - let s = this.Reveal.getConfig(), l = { styles: [] }; + let s = this.Reveal.getConfig(), r = { styles: [] }; if (t.translate !== !1 || t.scale !== !1) { let o; if (typeof t.measure == "function") @@ -808,13 +804,13 @@ class Mi { height: i.offsetHeight * c }; } - l.x = o.x, l.y = o.y, l.width = o.width, l.height = o.height; + r.x = o.x, r.y = o.y, r.width = o.width, r.height = o.height; } - const n = getComputedStyle(i); + const a = getComputedStyle(i); return (t.styles || s.autoAnimateStyles).forEach((o) => { let c; - typeof o == "string" && (o = { property: o }), typeof o.from < "u" && e === "from" ? c = { value: o.from, explicitValue: !0 } : typeof o.to < "u" && e === "to" ? c = { value: o.to, explicitValue: !0 } : (o.property === "line-height" && (c = parseFloat(n["line-height"]) / parseFloat(n["font-size"])), isNaN(c) && (c = n[o.property])), c !== "" && (l.styles[o.property] = c); - }), l; + typeof o == "string" && (o = { property: o }), typeof o.from < "u" && e === "from" ? c = { value: o.from, explicitValue: !0 } : typeof o.to < "u" && e === "to" ? c = { value: o.to, explicitValue: !0 } : (o.property === "line-height" && (c = parseFloat(a["line-height"]) / parseFloat(a["font-size"])), isNaN(c) && (c = a[o.property])), c !== "" && (r.styles[o.property] = c); + }), r; } /** * Get a list of all element pairs that we can animate @@ -828,10 +824,10 @@ class Mi { * element we're animating to */ getAutoAnimatableElements(e, i) { - let s = (typeof this.Reveal.getConfig().autoAnimateMatcher == "function" ? this.Reveal.getConfig().autoAnimateMatcher : this.getAutoAnimatePairs).call(this, e, i), l = []; - return s.filter((n, o) => { - if (l.indexOf(n.to) === -1) - return l.push(n.to), !0; + let s = (typeof this.Reveal.getConfig().autoAnimateMatcher == "function" ? this.Reveal.getConfig().autoAnimateMatcher : this.getAutoAnimatePairs).call(this, e, i), r = []; + return s.filter((a, o) => { + if (r.indexOf(a.to) === -1) + return r.push(a.to), !0; }); } /** @@ -842,9 +838,9 @@ class Mi { */ getAutoAnimatePairs(e, i) { let t = []; - const s = "pre", l = "h1, h2, h3, h4, h5, h6, p, li", n = "img, video, iframe"; - return this.findAutoAnimateMatches(t, e, i, "[data-id]", (o) => o.nodeName + ":::" + o.getAttribute("data-id")), this.findAutoAnimateMatches(t, e, i, l, (o) => o.nodeName + ":::" + o.innerText), this.findAutoAnimateMatches(t, e, i, n, (o) => o.nodeName + ":::" + (o.getAttribute("src") || o.getAttribute("data-src"))), this.findAutoAnimateMatches(t, e, i, s, (o) => o.nodeName + ":::" + o.innerText), t.forEach((o) => { - Pe(o.from, l) ? o.options = { scale: !1 } : Pe(o.from, s) && (o.options = { scale: !1, styles: ["width", "height"] }, this.findAutoAnimateMatches(t, o.from, o.to, ".hljs .hljs-ln-code", (c) => c.textContent, { + const s = "pre", r = "h1, h2, h3, h4, h5, h6, p, li", a = "img, video, iframe"; + return this.findAutoAnimateMatches(t, e, i, "[data-id]", (o) => o.nodeName + ":::" + o.getAttribute("data-id")), this.findAutoAnimateMatches(t, e, i, r, (o) => o.nodeName + ":::" + o.textContent.trim()), this.findAutoAnimateMatches(t, e, i, a, (o) => o.nodeName + ":::" + (o.getAttribute("src") || o.getAttribute("data-src"))), this.findAutoAnimateMatches(t, e, i, s, (o) => o.nodeName + ":::" + o.textContent.trim()), t.forEach((o) => { + Pe(o.from, r) ? o.options = { scale: !1 } : Pe(o.from, s) && (o.options = { scale: !1, styles: ["width", "height"] }, this.findAutoAnimateMatches(t, o.from, o.to, ".hljs .hljs-ln-code", (c) => c.textContent, { scale: !1, styles: [], measure: this.getLocalBoundingBox.bind(this) @@ -882,23 +878,23 @@ class Mi { * a stringified ID based on its contents * @param {Object} animationOptions Optional config options for this pair */ - findAutoAnimateMatches(e, i, t, s, l, n) { + findAutoAnimateMatches(e, i, t, s, r, a) { let o = {}, c = {}; [].slice.call(i.querySelectorAll(s)).forEach((f, g) => { - const v = l(f); - typeof v == "string" && v.length && (o[v] = o[v] || [], o[v].push(f)); + const p = r(f); + typeof p == "string" && p.length && (o[p] = o[p] || [], o[p].push(f)); }), [].slice.call(t.querySelectorAll(s)).forEach((f, g) => { - const v = l(f); - c[v] = c[v] || [], c[v].push(f); + const p = r(f); + c[p] = c[p] || [], c[p].push(f); let y; - if (o[v]) { - const w = c[v].length - 1, r = o[v].length - 1; - o[v][w] ? (y = o[v][w], o[v][w] = null) : o[v][r] && (y = o[v][r], o[v][r] = null); + if (o[p]) { + const w = c[p].length - 1, l = o[p].length - 1; + o[p][w] ? (y = o[p][w], o[p][w] = null) : o[p][l] && (y = o[p][l], o[p][l] = null); } y && e.push({ from: y, to: f, - options: n + options: a }); }); } @@ -921,8 +917,8 @@ class Mi { }, []); } } -const Bi = 500, Hi = 4, Di = 6, zi = 8; -class Fi { +const Li = 500, Pi = 4, xi = 6, Ti = 8; +class Ii { constructor(e) { this.Reveal = e, this.active = !1, this.activatedCallbacks = [], this.onScroll = this.onScroll.bind(this); } @@ -934,33 +930,33 @@ class Fi { if (this.active) return; const e = this.Reveal.getState(); this.active = !0, this.slideHTMLBeforeActivation = this.Reveal.getSlidesElement().innerHTML; - const i = E(this.Reveal.getRevealElement(), te), t = E(this.Reveal.getRevealElement(), ki); + const i = E(this.Reveal.getRevealElement(), te), t = E(this.Reveal.getRevealElement(), yi); this.viewportElement.classList.add("loading-scroll-mode", "reveal-scroll"); let s; - const l = window.getComputedStyle(this.viewportElement); - l && l.background && (s = l.background); - const n = [], o = i[0].parentNode; + const r = window.getComputedStyle(this.viewportElement); + r && r.background && (s = r.background); + const a = [], o = i[0].parentNode; let c; - const f = (g, v, y, w) => { - let r; + const f = (g, p, y, w) => { + let l; if (c && this.Reveal.shouldAutoAnimateBetween(c, g)) - r = document.createElement("div"), r.className = "scroll-page-content scroll-auto-animate-page", r.style.display = "none", c.closest(".scroll-page-content").parentNode.appendChild(r); + l = document.createElement("div"), l.className = "scroll-page-content scroll-auto-animate-page", l.style.display = "none", c.closest(".scroll-page-content").parentNode.appendChild(l); else { const A = document.createElement("div"); - if (A.className = "scroll-page", n.push(A), w && t.length > v) { - const V = t[v], O = window.getComputedStyle(V); - O && O.background ? A.style.background = O.background : s && (A.style.background = s); + if (A.className = "scroll-page", a.push(A), w && t.length > p) { + const V = t[p], q = window.getComputedStyle(V); + q && q.background ? A.style.background = q.background : s && (A.style.background = s); } else s && (A.style.background = s); const I = document.createElement("div"); - I.className = "scroll-page-sticky", A.appendChild(I), r = document.createElement("div"), r.className = "scroll-page-content", I.appendChild(r); + I.className = "scroll-page-sticky", A.appendChild(I), l = document.createElement("div"), l.className = "scroll-page-content", I.appendChild(l); } - r.appendChild(g), g.classList.remove("past", "future"), g.setAttribute("data-index-h", v), g.setAttribute("data-index-v", y), g.slideBackgroundElement && (g.slideBackgroundElement.remove("past", "future"), r.insertBefore(g.slideBackgroundElement, g)), c = g; + l.appendChild(g), g.classList.remove("past", "future"), g.setAttribute("data-index-h", p), g.setAttribute("data-index-v", y), g.slideBackgroundElement && (g.slideBackgroundElement.remove("past", "future"), l.insertBefore(g.slideBackgroundElement, g)), c = g; }; - i.forEach((g, v) => { + i.forEach((g, p) => { this.Reveal.isVerticalStack(g) ? g.querySelectorAll("section").forEach((y, w) => { - f(y, v, w, !0); - }) : f(g, v, 0); - }, this), this.createProgressBar(), E(this.Reveal.getRevealElement(), ".stack").forEach((g) => g.remove()), n.forEach((g) => o.appendChild(g)), this.Reveal.slideContent.layout(this.Reveal.getSlidesElement()), this.Reveal.layout(), this.Reveal.setState(e), this.activatedCallbacks.forEach((g) => g()), this.activatedCallbacks = [], this.restoreScrollPosition(), this.viewportElement.classList.remove("loading-scroll-mode"), this.viewportElement.addEventListener("scroll", this.onScroll, { passive: !0 }); + f(y, p, w, !0); + }) : f(g, p, 0); + }, this), this.createProgressBar(), E(this.Reveal.getRevealElement(), ".stack").forEach((g) => g.remove()), a.forEach((g) => o.appendChild(g)), this.Reveal.slideContent.layout(this.Reveal.getSlidesElement()), this.Reveal.layout(), this.Reveal.setState(e), this.activatedCallbacks.forEach((g) => g()), this.activatedCallbacks = [], this.restoreScrollPosition(), this.viewportElement.classList.remove("loading-scroll-mode"), this.viewportElement.addEventListener("scroll", this.onScroll, { passive: !0 }); } /** * Deactivates the scroll view and restores the standard slide-based @@ -986,8 +982,8 @@ class Fi { createProgressBar() { this.progressBar = document.createElement("div"), this.progressBar.className = "scrollbar", this.progressBarInner = document.createElement("div"), this.progressBarInner.className = "scrollbar-inner", this.progressBar.appendChild(this.progressBarInner), this.progressBarPlayhead = document.createElement("div"), this.progressBarPlayhead.className = "scrollbar-playhead", this.progressBarInner.appendChild(this.progressBarPlayhead), this.viewportElement.insertBefore(this.progressBar, this.viewportElement.firstChild); const e = (s) => { - let l = (s.clientY - this.progressBarInner.getBoundingClientRect().top) / this.progressBarHeight; - l = Math.max(Math.min(l, 1), 0), this.viewportElement.scrollTop = l * (this.viewportElement.scrollHeight - this.viewportElement.offsetHeight); + let r = (s.clientY - this.progressBarInner.getBoundingClientRect().top) / this.progressBarHeight; + r = Math.max(Math.min(r, 1), 0), this.viewportElement.scrollTop = r * (this.viewportElement.scrollHeight - this.viewportElement.offsetHeight); }, i = (s) => { this.draggingProgressBar = !1, this.showProgressBar(), document.removeEventListener("mousemove", e), document.removeEventListener("mouseup", i); }, t = (s) => { @@ -1006,8 +1002,8 @@ class Fi { * presentation size. */ syncPages() { - const e = this.Reveal.getConfig(), i = this.Reveal.getComputedSlideSize(window.innerWidth, window.innerHeight), t = this.Reveal.getScale(), s = e.scrollLayout === "compact", l = this.viewportElement.offsetHeight, n = i.height * t, o = s ? n : l; - this.scrollTriggerHeight = s ? n : l, this.viewportElement.style.setProperty("--page-height", o + "px"), this.viewportElement.style.scrollSnapType = typeof e.scrollSnap == "string" ? `y ${e.scrollSnap}` : "", this.slideTriggers = []; + const e = this.Reveal.getConfig(), i = this.Reveal.getComputedSlideSize(window.innerWidth, window.innerHeight), t = this.Reveal.getScale(), s = e.scrollLayout === "compact", r = this.viewportElement.offsetHeight, a = i.height * t, o = s ? a : r; + this.scrollTriggerHeight = s ? a : r, this.viewportElement.style.setProperty("--page-height", o + "px"), this.viewportElement.style.scrollSnapType = typeof e.scrollSnap == "string" ? `y ${e.scrollSnap}` : "", this.slideTriggers = []; const c = Array.from(this.Reveal.getRevealElement().querySelectorAll(".scroll-page")); this.pages = c.map((f) => { const g = this.createPage({ @@ -1024,13 +1020,13 @@ class Fi { activate: () => this.activatePage(g), deactivate: () => this.deactivatePage(g) }), this.createFragmentTriggersForPage(g), g.autoAnimateElements.length > 0 && this.createAutoAnimateTriggersForPage(g); - let v = Math.max(g.scrollTriggers.length - 1, 0); - v += g.autoAnimatePages.reduce((y, w) => y + Math.max(w.scrollTriggers.length - 1, 0), g.autoAnimatePages.length), g.pageElement.querySelectorAll(".scroll-snap-point").forEach((y) => y.remove()); - for (let y = 0; y < v + 1; y++) { + let p = Math.max(g.scrollTriggers.length - 1, 0); + p += g.autoAnimatePages.reduce((y, w) => y + Math.max(w.scrollTriggers.length - 1, 0), g.autoAnimatePages.length), g.pageElement.querySelectorAll(".scroll-snap-point").forEach((y) => y.remove()); + for (let y = 0; y < p + 1; y++) { const w = document.createElement("div"); w.className = "scroll-snap-point", w.style.height = this.scrollTriggerHeight + "px", w.style.scrollSnapAlign = s ? "center" : "start", g.pageElement.appendChild(w), y === 0 && (w.style.marginTop = -this.scrollTriggerHeight + "px"); } - return s && g.scrollTriggers.length > 0 ? (g.pageHeight = l, g.pageElement.style.setProperty("--page-height", l + "px")) : (g.pageHeight = o, g.pageElement.style.removeProperty("--page-height")), g.scrollPadding = this.scrollTriggerHeight * v, g.totalHeight = g.pageHeight + g.scrollPadding, g.pageElement.style.setProperty("--page-scroll-padding", g.scrollPadding + "px"), v > 0 ? (g.stickyElement.style.position = "sticky", g.stickyElement.style.top = Math.max((l - g.pageHeight) / 2, 0) + "px") : (g.stickyElement.style.position = "relative", g.pageElement.style.scrollSnapAlign = g.pageHeight < l ? "center" : "start"), g; + return s && g.scrollTriggers.length > 0 ? (g.pageHeight = r, g.pageElement.style.setProperty("--page-height", r + "px")) : (g.pageHeight = o, g.pageElement.style.removeProperty("--page-height")), g.scrollPadding = this.scrollTriggerHeight * p, g.totalHeight = g.pageHeight + g.scrollPadding, g.pageElement.style.setProperty("--page-scroll-padding", g.scrollPadding + "px"), p > 0 ? (g.stickyElement.style.position = "sticky", g.stickyElement.style.top = Math.max((r - g.pageHeight) / 2, 0) + "px") : (g.stickyElement.style.position = "relative", g.pageElement.style.scrollSnapAlign = g.pageHeight < r ? "center" : "start"), g; }), this.setTriggerRanges(), this.viewportElement.setAttribute("data-scrollbar", e.scrollProgress), e.scrollProgress && this.totalScrollTriggerCount > 1 ? (this.progressBar || this.createProgressBar(), this.syncProgressBar()) : this.removeProgressBar(); } /** @@ -1046,13 +1042,13 @@ class Fi { e + Math.max(i.page.scrollTriggers.length, 1) / this.totalScrollTriggerCount ]; const s = (i.range[1] - i.range[0]) / i.page.scrollTriggers.length; - i.page.scrollTriggers.forEach((l, n) => { - l.range = [ - e + n * s, - e + (n + 1) * s + i.page.scrollTriggers.forEach((r, a) => { + r.range = [ + e + a * s, + e + (a + 1) * s ]; }), e = i.range[1]; - }); + }), this.slideTriggers[this.slideTriggers.length - 1].range[1] = 1; } /** * Creates one scroll trigger for each fragments in the given page. @@ -1069,10 +1065,10 @@ class Fi { this.Reveal.fragments.update(-1, e.fragments, i); } } - ), t.forEach((s, l) => { + ), t.forEach((s, r) => { e.scrollTriggers.push({ activate: () => { - this.Reveal.fragments.update(l, e.fragments, i); + this.Reveal.fragments.update(r, e.fragments, i); } }); })), e.scrollTriggers.length; @@ -1109,30 +1105,30 @@ class Fi { * reveal.js config and size. */ syncProgressBar() { - this.progressBarInner.querySelectorAll(".scrollbar-slide").forEach((n) => n.remove()); + this.progressBarInner.querySelectorAll(".scrollbar-slide").forEach((a) => a.remove()); const e = this.viewportElement.scrollHeight, i = this.viewportElement.offsetHeight, t = i / e; - this.progressBarHeight = this.progressBarInner.offsetHeight, this.playheadHeight = Math.max(t * this.progressBarHeight, zi), this.progressBarScrollableHeight = this.progressBarHeight - this.playheadHeight; - const s = i / e * this.progressBarHeight, l = Math.min(s / 8, Hi); - this.progressBarPlayhead.style.height = this.playheadHeight - l + "px", s > Di ? this.slideTriggers.forEach((n) => { - const { page: o } = n; - o.progressBarSlide = document.createElement("div"), o.progressBarSlide.className = "scrollbar-slide", o.progressBarSlide.style.top = n.range[0] * this.progressBarHeight + "px", o.progressBarSlide.style.height = (n.range[1] - n.range[0]) * this.progressBarHeight - l + "px", o.progressBarSlide.classList.toggle("has-triggers", o.scrollTriggers.length > 0), this.progressBarInner.appendChild(o.progressBarSlide), o.scrollTriggerElements = o.scrollTriggers.map((c, f) => { + this.progressBarHeight = this.progressBarInner.offsetHeight, this.playheadHeight = Math.max(t * this.progressBarHeight, Ti), this.progressBarScrollableHeight = this.progressBarHeight - this.playheadHeight; + const s = i / e * this.progressBarHeight, r = Math.min(s / 8, Pi); + this.progressBarPlayhead.style.height = this.playheadHeight - r + "px", s > xi ? this.slideTriggers.forEach((a) => { + const { page: o } = a; + o.progressBarSlide = document.createElement("div"), o.progressBarSlide.className = "scrollbar-slide", o.progressBarSlide.style.top = a.range[0] * this.progressBarHeight + "px", o.progressBarSlide.style.height = (a.range[1] - a.range[0]) * this.progressBarHeight - r + "px", o.progressBarSlide.classList.toggle("has-triggers", o.scrollTriggers.length > 0), this.progressBarInner.appendChild(o.progressBarSlide), o.scrollTriggerElements = o.scrollTriggers.map((c, f) => { const g = document.createElement("div"); - return g.className = "scrollbar-trigger", g.style.top = (c.range[0] - n.range[0]) * this.progressBarHeight + "px", g.style.height = (c.range[1] - c.range[0]) * this.progressBarHeight - l + "px", o.progressBarSlide.appendChild(g), f === 0 && (g.style.display = "none"), g; + return g.className = "scrollbar-trigger", g.style.top = (c.range[0] - a.range[0]) * this.progressBarHeight + "px", g.style.height = (c.range[1] - c.range[0]) * this.progressBarHeight - r + "px", o.progressBarSlide.appendChild(g), f === 0 && (g.style.display = "none"), g; }); - }) : this.pages.forEach((n) => n.progressBarSlide = null); + }) : this.pages.forEach((a) => a.progressBarSlide = null); } /** * Reads the current scroll position and updates our active * trigger states accordingly. */ syncScrollPosition() { - const e = this.viewportElement.offsetHeight, i = e / this.viewportElement.scrollHeight, t = this.viewportElement.scrollTop, s = this.viewportElement.scrollHeight - e, l = Math.max(Math.min(t / s, 1), 0), n = Math.max(Math.min((t + e / 2) / this.viewportElement.scrollHeight, 1), 0); + const e = this.viewportElement.offsetHeight, i = e / this.viewportElement.scrollHeight, t = this.viewportElement.scrollTop, s = this.viewportElement.scrollHeight - e, r = Math.max(Math.min(t / s, 1), 0), a = Math.max(Math.min((t + e / 2) / this.viewportElement.scrollHeight, 1), 0); let o; this.slideTriggers.forEach((c) => { const { page: f } = c; - l >= c.range[0] - i * 2 && l <= c.range[1] + i * 2 && !f.loaded ? (f.loaded = !0, this.Reveal.slideContent.load(f.slideElement)) : f.loaded && (f.loaded = !1, this.Reveal.slideContent.unload(f.slideElement)), l >= c.range[0] && l <= c.range[1] ? (this.activateTrigger(c), o = c.page) : c.active && this.deactivateTrigger(c); + r >= c.range[0] - i * 2 && r <= c.range[1] + i * 2 && !f.loaded ? (f.loaded = !0, this.Reveal.slideContent.load(f.slideElement)) : f.loaded && (f.loaded = !1, this.Reveal.slideContent.unload(f.slideElement)), r >= c.range[0] && r <= c.range[1] ? (this.activateTrigger(c), o = c.page) : c.active && this.deactivateTrigger(c); }), o && o.scrollTriggers.forEach((c) => { - n >= c.range[0] && n <= c.range[1] ? this.activateTrigger(c) : c.active && this.deactivateTrigger(c); + a >= c.range[0] && a <= c.range[1] ? this.activateTrigger(c) : c.active && this.deactivateTrigger(c); }), this.setProgressBarValue(t / (this.viewportElement.scrollHeight - e)); } /** @@ -1154,7 +1150,7 @@ class Fi { showProgressBar() { this.progressBar.classList.add("visible"), clearTimeout(this.hideProgressBarTimeout), this.Reveal.getConfig().scrollProgress === "auto" && !this.draggingProgressBar && (this.hideProgressBarTimeout = setTimeout(() => { this.progressBar && this.progressBar.classList.remove("visible"); - }, Bi)); + }, Li)); } /** * Scroll to the previous page. @@ -1206,8 +1202,8 @@ class Fi { activatePage(e) { if (!e.active) { e.active = !0; - const { slideElement: i, backgroundElement: t, contentElement: s, indexh: l, indexv: n } = e; - s.style.display = "block", i.classList.add("present"), t && t.classList.add("present"), this.Reveal.setCurrentScrollPage(i, l, n), this.Reveal.backgrounds.bubbleSlideContrastClassToElement(i, this.viewportElement), Array.from(s.parentNode.querySelectorAll(".scroll-page-content")).forEach((o) => { + const { slideElement: i, backgroundElement: t, contentElement: s, indexh: r, indexv: a } = e; + s.style.display = "block", i.classList.add("present"), t && t.classList.add("present"), this.Reveal.setCurrentScrollPage(i, r, a), this.Reveal.backgrounds.bubbleSlideContrastClassToElement(i, this.viewportElement), Array.from(s.parentNode.querySelectorAll(".scroll-page-content")).forEach((o) => { o !== s && (o.style.display = "none"); }); } @@ -1264,7 +1260,7 @@ class Fi { return this.Reveal.getViewportElement(); } } -class Vi { +class Mi { constructor(e) { this.Reveal = e; } @@ -1273,8 +1269,8 @@ class Vi { * PDF. */ async activate() { - const e = this.Reveal.getConfig(), i = E(this.Reveal.getRevealElement(), re), t = e.slideNumber && /all|print/i.test(e.showSlideNumber), s = this.Reveal.getComputedSlideSize(window.innerWidth, window.innerHeight), l = Math.floor(s.width * (1 + e.margin)), n = Math.floor(s.height * (1 + e.margin)), o = s.width, c = s.height; - await new Promise(requestAnimationFrame), We("@page{size:" + l + "px " + n + "px; margin: 0px;}"), We(".reveal section>img, .reveal section>video, .reveal section>iframe{max-width: " + o + "px; max-height:" + c + "px}"), document.documentElement.classList.add("reveal-print", "print-pdf"), document.body.style.width = l + "px", document.body.style.height = n + "px"; + const e = this.Reveal.getConfig(), i = E(this.Reveal.getRevealElement(), re), t = e.slideNumber && /all|print/i.test(e.showSlideNumber), s = this.Reveal.getComputedSlideSize(window.innerWidth, window.innerHeight), r = Math.floor(s.width * (1 + e.margin)), a = Math.floor(s.height * (1 + e.margin)), o = s.width, c = s.height; + await new Promise(requestAnimationFrame), Ue("@page{size:" + r + "px " + a + "px; margin: 0px;}"), Ue(".reveal section>img, .reveal section>video, .reveal section>iframe{max-width: " + o + "px; max-height:" + c + "px}"), document.documentElement.classList.add("reveal-print", "print-pdf"), document.body.style.width = r + "px", document.body.style.height = a + "px"; const f = this.Reveal.getViewportElement(); let g; if (f) { @@ -1282,49 +1278,49 @@ class Vi { A && A.background && (g = A.background); } await new Promise(requestAnimationFrame), this.Reveal.layoutSlideContents(o, c), await new Promise(requestAnimationFrame); - const v = i.map((A) => A.scrollHeight), y = [], w = i[0].parentNode; - let r = 1; + const p = i.map((A) => A.scrollHeight), y = [], w = i[0].parentNode; + let l = 1; i.forEach(function(A, I) { if (A.classList.contains("stack") === !1) { - let V = (l - o) / 2, O = (n - c) / 2; - const se = v[I]; - let z = Math.max(Math.ceil(se / n), 1); - z = Math.min(z, e.pdfMaxPagesPerSlide), (z === 1 && e.center || A.classList.contains("center")) && (O = Math.max((n - se) / 2, 0)); + let V = (r - o) / 2, q = (a - c) / 2; + const se = p[I]; + let z = Math.max(Math.ceil(se / a), 1); + z = Math.min(z, e.pdfMaxPagesPerSlide), (z === 1 && e.center || A.classList.contains("center")) && (q = Math.max((a - se) / 2, 0)); const k = document.createElement("div"); - if (y.push(k), k.className = "pdf-page", k.style.height = (n + e.pdfPageHeightOffset) * z + "px", g && (k.style.background = g), k.appendChild(A), A.style.left = V + "px", A.style.top = O + "px", A.style.width = o + "px", this.Reveal.slideContent.layout(A), A.slideBackgroundElement && k.insertBefore(A.slideBackgroundElement, A), e.showNotes) { - const N = this.Reveal.getSlideNotes(A); - if (N) { - const W = typeof e.showNotes == "string" ? e.showNotes : "inline", P = document.createElement("div"); - P.classList.add("speaker-notes"), P.classList.add("speaker-notes-pdf"), P.setAttribute("data-layout", W), P.innerHTML = N, W === "separate-page" ? y.push(P) : (P.style.left = "8px", P.style.bottom = "8px", P.style.width = l - 8 * 2 + "px", k.appendChild(P)); + if (y.push(k), k.className = "pdf-page", k.style.height = (a + e.pdfPageHeightOffset) * z + "px", g && (k.style.background = g), k.appendChild(A), A.style.left = V + "px", A.style.top = q + "px", A.style.width = o + "px", this.Reveal.slideContent.layout(A), A.slideBackgroundElement && k.insertBefore(A.slideBackgroundElement, A), e.showNotes) { + const M = this.Reveal.getSlideNotes(A); + if (M) { + const j = typeof e.showNotes == "string" ? e.showNotes : "inline", P = document.createElement("div"); + P.classList.add("speaker-notes"), P.classList.add("speaker-notes-pdf"), P.setAttribute("data-layout", j), P.innerHTML = M, j === "separate-page" ? y.push(P) : (P.style.left = "8px", P.style.bottom = "8px", P.style.width = r - 8 * 2 + "px", k.appendChild(P)); } } if (t) { - const N = document.createElement("div"); - N.classList.add("slide-number"), N.classList.add("slide-number-pdf"), N.innerHTML = r++, k.appendChild(N); + const M = document.createElement("div"); + M.classList.add("slide-number"), M.classList.add("slide-number-pdf"), M.innerHTML = l++, k.appendChild(M); } if (e.pdfSeparateFragments) { - const N = this.Reveal.fragments.sort(k.querySelectorAll(".fragment"), !0); - let U; - N.forEach(function(W, P) { - U && U.forEach(function(D) { + const M = this.Reveal.fragments.sort(k.querySelectorAll(".fragment"), !0); + let W; + M.forEach(function(j, P) { + W && W.forEach(function(D) { D.classList.remove("current-fragment"); - }), W.forEach(function(D) { + }), j.forEach(function(D) { D.classList.add("visible", "current-fragment"); }, this); const R = k.cloneNode(!0); if (t) { - const D = R.querySelector(".slide-number-pdf"), L = P + 1; - D.innerHTML += "." + L; + const D = R.querySelector(".slide-number-pdf"), C = P + 1; + D.innerHTML += "." + C; } - y.push(R), U = W; - }, this), N.forEach(function(W) { - W.forEach(function(P) { + y.push(R), W = j; + }, this), M.forEach(function(j) { + j.forEach(function(P) { P.classList.remove("visible", "current-fragment"); }); }); } else - E(k, ".fragment:not(.fade-out)").forEach(function(N) { - N.classList.add("visible"); + E(k, ".fragment:not(.fade-out)").forEach(function(M) { + M.classList.add("visible"); }); } }, this), await new Promise(requestAnimationFrame), y.forEach((A) => w.appendChild(A)), this.Reveal.slideContent.layout(this.Reveal.getSlidesElement()), this.Reveal.dispatchEvent({ type: "pdf-ready" }), f.classList.remove("loading-scroll-mode"); @@ -1336,7 +1332,7 @@ class Vi { return this.Reveal.getConfig().view === "print"; } } -class Oi { +class Ni { constructor(e) { this.Reveal = e; } @@ -1402,7 +1398,7 @@ class Oi { */ sort(e, i = !1) { e = Array.from(e); - let t = [], s = [], l = []; + let t = [], s = [], r = []; e.forEach((o) => { if (o.hasAttribute("data-fragment-index")) { let c = parseInt(o.getAttribute("data-fragment-index"), 10); @@ -1410,12 +1406,12 @@ class Oi { } else s.push([o]); }), t = t.concat(s); - let n = 0; + let a = 0; return t.forEach((o) => { o.forEach((c) => { - l.push(c), c.setAttribute("data-fragment-index", n); - }), n++; - }), i === !0 ? t : l; + r.push(c), c.setAttribute("data-fragment-index", a); + }), a++; + }), i === !0 ? t : r; } /** * Sorts and formats all of fragments in the @@ -1445,28 +1441,28 @@ class Oi { hidden: [] }; if (t && this.Reveal.getConfig().fragments && (i = i || this.sort(t.querySelectorAll(".fragment")), i.length)) { - let l = 0; + let r = 0; if (typeof e != "number") { - let n = this.sort(t.querySelectorAll(".fragment.visible")).pop(); - n && (e = parseInt(n.getAttribute("data-fragment-index") || 0, 10)); + let a = this.sort(t.querySelectorAll(".fragment.visible")).pop(); + a && (e = parseInt(a.getAttribute("data-fragment-index") || 0, 10)); } - Array.from(i).forEach((n, o) => { - if (n.hasAttribute("data-fragment-index") && (o = parseInt(n.getAttribute("data-fragment-index"), 10)), l = Math.max(l, o), o <= e) { - let c = n.classList.contains("visible"); - n.classList.add("visible"), n.classList.remove("current-fragment"), o === e && (this.Reveal.announceStatus(this.Reveal.getStatusText(n)), n.classList.add("current-fragment"), this.Reveal.slideContent.startEmbeddedContent(n)), c || (s.shown.push(n), this.Reveal.dispatchEvent({ - target: n, + Array.from(i).forEach((a, o) => { + if (a.hasAttribute("data-fragment-index") && (o = parseInt(a.getAttribute("data-fragment-index"), 10)), r = Math.max(r, o), o <= e) { + let c = a.classList.contains("visible"); + a.classList.add("visible"), a.classList.remove("current-fragment"), o === e && (this.Reveal.announceStatus(this.Reveal.getStatusText(a)), a.classList.add("current-fragment"), this.Reveal.slideContent.startEmbeddedContent(a)), c || (s.shown.push(a), this.Reveal.dispatchEvent({ + target: a, type: "visible", bubbles: !1 })); } else { - let c = n.classList.contains("visible"); - n.classList.remove("visible"), n.classList.remove("current-fragment"), c && (this.Reveal.slideContent.stopEmbeddedContent(n), s.hidden.push(n), this.Reveal.dispatchEvent({ - target: n, + let c = a.classList.contains("visible"); + a.classList.remove("visible"), a.classList.remove("current-fragment"), c && (this.Reveal.slideContent.stopEmbeddedContent(a), s.hidden.push(a), this.Reveal.dispatchEvent({ + target: a, type: "hidden", bubbles: !1 })); } - }), e = typeof e == "number" ? e : -1, e = Math.max(Math.min(e, l), -1), t.setAttribute("data-fragment", e); + }), e = typeof e == "number" ? e : -1, e = Math.max(Math.min(e, r), -1), t.setAttribute("data-fragment", e); } return s.hidden.length && this.Reveal.dispatchEvent({ type: "fragmenthidden", @@ -1510,12 +1506,12 @@ class Oi { let s = this.sort(t.querySelectorAll(".fragment:not(.disabled)")); if (s.length) { if (typeof e != "number") { - let n = this.sort(t.querySelectorAll(".fragment:not(.disabled).visible")).pop(); - n ? e = parseInt(n.getAttribute("data-fragment-index") || 0, 10) : e = -1; + let a = this.sort(t.querySelectorAll(".fragment:not(.disabled).visible")).pop(); + a ? e = parseInt(a.getAttribute("data-fragment-index") || 0, 10) : e = -1; } e += i; - let l = this.update(e, s); - return this.Reveal.controls.update(), this.Reveal.progress.update(), this.Reveal.getConfig().fragmentInURL && this.Reveal.location.writeURL(), !!(l.shown.length || l.hidden.length); + let r = this.update(e, s); + return this.Reveal.controls.update(), this.Reveal.progress.update(), this.Reveal.getConfig().fragmentInURL && this.Reveal.location.writeURL(), !!(r.shown.length || r.hidden.length); } } return !1; @@ -1539,7 +1535,7 @@ class Oi { return this.goto(null, -1); } } -class qi { +class Bi { constructor(e) { this.Reveal = e, this.active = !1, this.onSlideClicked = this.onSlideClicked.bind(this); } @@ -1655,7 +1651,7 @@ class qi { } } } -class Ui { +class Hi { constructor(e) { this.Reveal = e, this.shortcuts = {}, this.bindings = {}, this.onDocumentKeyDown = this.onDocumentKeyDown.bind(this); } @@ -1732,37 +1728,37 @@ class Ui { return !0; let t = e.keyCode, s = !this.Reveal.isAutoSliding(); this.Reveal.onUserInput(e); - let l = document.activeElement && document.activeElement.isContentEditable === !0, n = document.activeElement && document.activeElement.tagName && /input|textarea/i.test(document.activeElement.tagName), o = document.activeElement && document.activeElement.className && /speaker-notes/i.test(document.activeElement.className), f = !([32, 37, 38, 39, 40, 63, 78, 80, 191].indexOf(e.keyCode) !== -1 && e.shiftKey || e.altKey) && (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey); - if (l || n || o || f) return; - let g = [66, 86, 190, 191, 112], v; + let r = document.activeElement && document.activeElement.isContentEditable === !0, a = document.activeElement && document.activeElement.tagName && /input|textarea/i.test(document.activeElement.tagName), o = document.activeElement && document.activeElement.className && /speaker-notes/i.test(document.activeElement.className), f = !([32, 37, 38, 39, 40, 63, 78, 80, 191].indexOf(e.keyCode) !== -1 && e.shiftKey || e.altKey) && (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey); + if (r || a || o || f) return; + let g = [66, 86, 190, 191, 112], p; if (typeof i.keyboard == "object") - for (v in i.keyboard) - i.keyboard[v] === "togglePause" && g.push(parseInt(v, 10)); + for (p in i.keyboard) + i.keyboard[p] === "togglePause" && g.push(parseInt(p, 10)); if (this.Reveal.isPaused() && g.indexOf(t) === -1) return !1; let y = i.navigationMode === "linear" || !this.Reveal.hasHorizontalSlides() || !this.Reveal.hasVerticalSlides(), w = !1; if (typeof i.keyboard == "object") { - for (v in i.keyboard) - if (parseInt(v, 10) === t) { - let r = i.keyboard[v]; - typeof r == "function" ? r.apply(null, [e]) : typeof r == "string" && typeof this.Reveal[r] == "function" && this.Reveal[r].call(), w = !0; + for (p in i.keyboard) + if (parseInt(p, 10) === t) { + let l = i.keyboard[p]; + typeof l == "function" ? l.apply(null, [e]) : typeof l == "string" && typeof this.Reveal[l] == "function" && this.Reveal[l].call(), w = !0; } } if (w === !1) { - for (v in this.bindings) - if (parseInt(v, 10) === t) { - let r = this.bindings[v].callback; - typeof r == "function" ? r.apply(null, [e]) : typeof r == "string" && typeof this.Reveal[r] == "function" && this.Reveal[r].call(), w = !0; + for (p in this.bindings) + if (parseInt(p, 10) === t) { + let l = this.bindings[p].callback; + typeof l == "function" ? l.apply(null, [e]) : typeof l == "string" && typeof this.Reveal[l] == "function" && this.Reveal[l].call(), w = !0; } } - w === !1 && (w = !0, t === 80 || t === 33 ? this.Reveal.prev({ skipFragments: e.altKey }) : t === 78 || t === 34 ? this.Reveal.next({ skipFragments: e.altKey }) : t === 72 || t === 37 ? e.shiftKey ? this.Reveal.slide(0) : !this.Reveal.overview.isActive() && y ? i.rtl ? this.Reveal.next({ skipFragments: e.altKey }) : this.Reveal.prev({ skipFragments: e.altKey }) : this.Reveal.left({ skipFragments: e.altKey }) : t === 76 || t === 39 ? e.shiftKey ? this.Reveal.slide(this.Reveal.getHorizontalSlides().length - 1) : !this.Reveal.overview.isActive() && y ? i.rtl ? this.Reveal.prev({ skipFragments: e.altKey }) : this.Reveal.next({ skipFragments: e.altKey }) : this.Reveal.right({ skipFragments: e.altKey }) : t === 75 || t === 38 ? e.shiftKey ? this.Reveal.slide(void 0, 0) : !this.Reveal.overview.isActive() && y ? this.Reveal.prev({ skipFragments: e.altKey }) : this.Reveal.up({ skipFragments: e.altKey }) : t === 74 || t === 40 ? e.shiftKey ? this.Reveal.slide(void 0, Number.MAX_VALUE) : !this.Reveal.overview.isActive() && y ? this.Reveal.next({ skipFragments: e.altKey }) : this.Reveal.down({ skipFragments: e.altKey }) : t === 36 ? this.Reveal.slide(0) : t === 35 ? this.Reveal.slide(this.Reveal.getHorizontalSlides().length - 1) : t === 32 ? (this.Reveal.overview.isActive() && this.Reveal.overview.deactivate(), e.shiftKey ? this.Reveal.prev({ skipFragments: e.altKey }) : this.Reveal.next({ skipFragments: e.altKey })) : [58, 59, 66, 86, 190].includes(t) || t === 191 && !e.shiftKey ? this.Reveal.togglePause() : t === 70 ? Ht(i.embedded ? this.Reveal.getViewportElement() : document.documentElement) : t === 65 ? i.autoSlideStoppable && this.Reveal.toggleAutoSlide(s) : t === 71 ? i.jumpToSlide && this.Reveal.toggleJumpToSlide() : (t === 63 || t === 191) && e.shiftKey ? this.Reveal.toggleHelp() : t === 112 ? this.Reveal.toggleHelp() : w = !1), w ? e.preventDefault && e.preventDefault() : (t === 27 || t === 79) && (this.Reveal.closeOverlay() === !1 && this.Reveal.overview.toggle(), e.preventDefault && e.preventDefault()), this.Reveal.cueAutoSlide(); + w === !1 && (w = !0, t === 80 || t === 33 ? this.Reveal.prev({ skipFragments: e.altKey }) : t === 78 || t === 34 ? this.Reveal.next({ skipFragments: e.altKey }) : t === 72 || t === 37 ? e.shiftKey ? this.Reveal.slide(0) : !this.Reveal.overview.isActive() && y ? i.rtl ? this.Reveal.next({ skipFragments: e.altKey }) : this.Reveal.prev({ skipFragments: e.altKey }) : this.Reveal.left({ skipFragments: e.altKey }) : t === 76 || t === 39 ? e.shiftKey ? this.Reveal.slide(this.Reveal.getHorizontalSlides().length - 1) : !this.Reveal.overview.isActive() && y ? i.rtl ? this.Reveal.prev({ skipFragments: e.altKey }) : this.Reveal.next({ skipFragments: e.altKey }) : this.Reveal.right({ skipFragments: e.altKey }) : t === 75 || t === 38 ? e.shiftKey ? this.Reveal.slide(void 0, 0) : !this.Reveal.overview.isActive() && y ? this.Reveal.prev({ skipFragments: e.altKey }) : this.Reveal.up({ skipFragments: e.altKey }) : t === 74 || t === 40 ? e.shiftKey ? this.Reveal.slide(void 0, Number.MAX_VALUE) : !this.Reveal.overview.isActive() && y ? this.Reveal.next({ skipFragments: e.altKey }) : this.Reveal.down({ skipFragments: e.altKey }) : t === 36 ? this.Reveal.slide(0) : t === 35 ? this.Reveal.slide(this.Reveal.getHorizontalSlides().length - 1) : t === 32 ? (this.Reveal.overview.isActive() && this.Reveal.overview.deactivate(), e.shiftKey ? this.Reveal.prev({ skipFragments: e.altKey }) : this.Reveal.next({ skipFragments: e.altKey })) : [58, 59, 66, 86, 190].includes(t) || t === 191 && !e.shiftKey ? this.Reveal.togglePause() : t === 70 ? xt(i.embedded ? this.Reveal.getViewportElement() : document.documentElement) : t === 65 ? i.autoSlideStoppable && this.Reveal.toggleAutoSlide(s) : t === 71 ? i.jumpToSlide && this.Reveal.toggleJumpToSlide() : (t === 63 || t === 191) && e.shiftKey ? this.Reveal.toggleHelp() : t === 112 ? this.Reveal.toggleHelp() : w = !1), w ? e.preventDefault && e.preventDefault() : (t === 27 || t === 79) && (this.Reveal.closeOverlay() === !1 && this.Reveal.overview.toggle(), e.preventDefault && e.preventDefault()), this.Reveal.cueAutoSlide(); } } -class Wi { +class Di { constructor(e) { // The minimum number of milliseconds that must pass between // calls to history.replaceState - Pt(this, "MAX_REPLACE_STATE_FREQUENCY", 1e3); + At(this, "MAX_REPLACE_STATE_FREQUENCY", 1e3); this.Reveal = e, this.writeURLTimeout = 0, this.replaceStateTimestamp = 0, this.onWindowHashChange = this.onWindowHashChange.bind(this); } bind() { @@ -1782,18 +1778,18 @@ class Wi { getIndicesFromHash(e = window.location.hash, i = {}) { let t = e.replace(/^#\/?/, ""), s = t.split("/"); if (!/^[0-9]*$/.test(s[0]) && t.length) { - let l, n; - /\/[-\d]+$/g.test(t) && (n = parseInt(t.split("/").pop(), 10), n = isNaN(n) ? void 0 : n, t = t.split("/").shift()); + let r, a; + /\/[-\d]+$/g.test(t) && (a = parseInt(t.split("/").pop(), 10), a = isNaN(a) ? void 0 : a, t = t.split("/").shift()); try { - l = document.getElementById(decodeURIComponent(t)).closest(".slides section"); + r = document.getElementById(decodeURIComponent(t)).closest(".slides section"); } catch { } - if (l) - return { ...this.Reveal.getIndices(l), f: n }; + if (r) + return { ...this.Reveal.getIndices(r), f: a }; } else { - const l = this.Reveal.getConfig(); - let n = l.hashOneBasedIndex || i.oneBasedIndex ? 1 : 0, o = parseInt(s[0], 10) - n || 0, c = parseInt(s[1], 10) - n || 0, f; - return l.fragmentInURL && (f = parseInt(s[2], 10), isNaN(f) && (f = void 0)), { h: o, v: c, f }; + const r = this.Reveal.getConfig(); + let a = r.hashOneBasedIndex || i.oneBasedIndex ? 1 : 0, o = parseInt(s[0], 10) - a || 0, c = parseInt(s[1], 10) - a || 0, f; + return r.fragmentInURL && (f = parseInt(s[2], 10), isNaN(f) && (f = void 0)), { h: o, v: c, f }; } return null; } @@ -1834,12 +1830,12 @@ class Wi { getHash(e) { let i = "/", t = e || this.Reveal.getCurrentSlide(), s = t ? t.getAttribute("id") : null; s && (s = encodeURIComponent(s)); - let l = this.Reveal.getIndices(e); - if (this.Reveal.getConfig().fragmentInURL || (l.f = void 0), typeof s == "string" && s.length) - i = "/" + s, l.f >= 0 && (i += "/" + l.f); + let r = this.Reveal.getIndices(e); + if (this.Reveal.getConfig().fragmentInURL || (r.f = void 0), typeof s == "string" && s.length) + i = "/" + s, r.f >= 0 && (i += "/" + r.f); else { - let n = this.Reveal.getConfig().hashOneBasedIndex ? 1 : 0; - (l.h > 0 || l.v > 0 || l.f >= 0) && (i += l.h + n), (l.v > 0 || l.f >= 0) && (i += "/" + (l.v + n)), l.f >= 0 && (i += "/" + l.f); + let a = this.Reveal.getConfig().hashOneBasedIndex ? 1 : 0; + (r.h > 0 || r.v > 0 || r.f >= 0) && (i += r.h + a), (r.v > 0 || r.f >= 0) && (i += "/" + (r.v + a)), r.f >= 0 && (i += "/" + r.f); } return i; } @@ -1852,7 +1848,7 @@ class Wi { this.readURL(); } } -class ji { +class zi { constructor(e) { this.Reveal = e, this.onNavigateLeftClicked = this.onNavigateLeftClicked.bind(this), this.onNavigateRightClicked = this.onNavigateRightClicked.bind(this), this.onNavigateUpClicked = this.onNavigateUpClicked.bind(this), this.onNavigateDownClicked = this.onNavigateDownClicked.bind(this), this.onNavigatePrevClicked = this.onNavigatePrevClicked.bind(this), this.onNavigateNextClicked = this.onNavigateNextClicked.bind(this), this.onEnterFullscreen = this.onEnterFullscreen.bind(this); } @@ -1867,11 +1863,11 @@ class ji { * Called when the reveal.js config is updated. */ configure(e, i) { - this.element.style.display = e.controls ? "block" : "none", this.element.setAttribute("data-controls-layout", e.controlsLayout), this.element.setAttribute("data-controls-back-arrows", e.controlsBackArrows); + this.element.style.display = e.controls && (e.controls !== "speaker-only" || this.Reveal.isSpeakerNotes()) ? "block" : "none", this.element.setAttribute("data-controls-layout", e.controlsLayout), this.element.setAttribute("data-controls-back-arrows", e.controlsBackArrows); } bind() { let e = ["touchstart", "click"]; - zt && (e = ["touchstart"]), e.forEach((i) => { + It && (e = ["touchstart"]), e.forEach((i) => { this.controlsLeft.forEach((t) => t.addEventListener(i, this.onNavigateLeftClicked, !1)), this.controlsRight.forEach((t) => t.addEventListener(i, this.onNavigateRightClicked, !1)), this.controlsUp.forEach((t) => t.addEventListener(i, this.onNavigateUpClicked, !1)), this.controlsDown.forEach((t) => t.addEventListener(i, this.onNavigateDownClicked, !1)), this.controlsPrev.forEach((t) => t.addEventListener(i, this.onNavigatePrevClicked, !1)), this.controlsNext.forEach((t) => t.addEventListener(i, this.onNavigateNextClicked, !1)), this.controlsFullscreen.forEach((t) => t.addEventListener(i, this.onEnterFullscreen, !1)); }); } @@ -1903,20 +1899,20 @@ class ji { let i = this.Reveal.getCurrentSlide(); if (i) { let t = this.Reveal.fragments.availableRoutes(); - t.prev && this.controlsPrev.forEach((n) => { - n.classList.add("fragmented", "enabled"), n.removeAttribute("disabled"); - }), t.next && this.controlsNext.forEach((n) => { - n.classList.add("fragmented", "enabled"), n.removeAttribute("disabled"); + t.prev && this.controlsPrev.forEach((a) => { + a.classList.add("fragmented", "enabled"), a.removeAttribute("disabled"); + }), t.next && this.controlsNext.forEach((a) => { + a.classList.add("fragmented", "enabled"), a.removeAttribute("disabled"); }); - const s = this.Reveal.isVerticalSlide(i), l = s && i.parentElement && i.parentElement.querySelectorAll(":scope > section").length > 1; - s && l ? (t.prev && this.controlsUp.forEach((n) => { - n.classList.add("fragmented", "enabled"), n.removeAttribute("disabled"); - }), t.next && this.controlsDown.forEach((n) => { - n.classList.add("fragmented", "enabled"), n.removeAttribute("disabled"); - })) : (t.prev && this.controlsLeft.forEach((n) => { - n.classList.add("fragmented", "enabled"), n.removeAttribute("disabled"); - }), t.next && this.controlsRight.forEach((n) => { - n.classList.add("fragmented", "enabled"), n.removeAttribute("disabled"); + const s = this.Reveal.isVerticalSlide(i), r = s && i.parentElement && i.parentElement.querySelectorAll(":scope > section").length > 1; + s && r ? (t.prev && this.controlsUp.forEach((a) => { + a.classList.add("fragmented", "enabled"), a.removeAttribute("disabled"); + }), t.next && this.controlsDown.forEach((a) => { + a.classList.add("fragmented", "enabled"), a.removeAttribute("disabled"); + })) : (t.prev && this.controlsLeft.forEach((a) => { + a.classList.add("fragmented", "enabled"), a.removeAttribute("disabled"); + }), t.next && this.controlsRight.forEach((a) => { + a.classList.add("fragmented", "enabled"), a.removeAttribute("disabled"); })); } if (this.Reveal.getConfig().controlsTutorial) { @@ -1950,10 +1946,10 @@ class ji { } onEnterFullscreen(e) { const i = this.Reveal.getConfig(), t = this.Reveal.getViewportElement(); - Ht(i.embedded ? t : t.parentElement); + xt(i.embedded ? t : t.parentElement); } } -class _i { +class Fi { constructor(e) { this.Reveal = e, this.onProgressClicked = this.onProgressClicked.bind(this); } @@ -1996,14 +1992,14 @@ class _i { this.Reveal.onUserInput(e), e.preventDefault(); let i = this.Reveal.getSlides(), t = i.length, s = Math.floor(e.clientX / this.getMaxWidth() * t); this.Reveal.getConfig().rtl && (s = t - s); - let l = this.Reveal.getIndices(i[s]); - this.Reveal.slide(l.h, l.v); + let r = this.Reveal.getIndices(i[s]); + this.Reveal.slide(r.h, r.v); } destroy() { this.element.remove(); } } -class Ki { +class Oi { constructor(e) { this.Reveal = e, this.lastMouseWheelStep = 0, this.cursorHidden = !1, this.cursorInactiveTimeout = 0, this.onDocumentCursorActive = this.onDocumentCursorActive.bind(this), this.onDocumentMouseScroll = this.onDocumentMouseScroll.bind(this); } @@ -2053,7 +2049,7 @@ class Ki { } } } -const Mt = (h, e) => { +const Lt = (h, e) => { const i = document.createElement("script"); i.type = "text/javascript", i.async = !1, i.defer = !1, i.src = h, typeof e == "function" && (i.onload = i.onreadystatechange = (s) => { (s.type === "load" || /loaded|complete/.test(i.readyState)) && (i.onload = i.onreadystatechange = i.onerror = null, e()); @@ -2064,7 +2060,7 @@ const Mt = (h, e) => { const t = document.querySelector("head"); t.insertBefore(i, t.lastChild); }; -class $i { +class Vi { constructor(e) { this.Reveal = e, this.state = "idle", this.registeredPlugins = {}, this.asyncDependencies = []; } @@ -2083,16 +2079,16 @@ class $i { */ load(e, i) { return this.state = "loading", e.forEach(this.registerPlugin.bind(this)), new Promise((t) => { - let s = [], l = 0; - if (i.forEach((n) => { - (!n.condition || n.condition()) && (n.async ? this.asyncDependencies.push(n) : s.push(n)); + let s = [], r = 0; + if (i.forEach((a) => { + (!a.condition || a.condition()) && (a.async ? this.asyncDependencies.push(a) : s.push(a)); }), s.length) { - l = s.length; - const n = (o) => { - o && typeof o.callback == "function" && o.callback(), --l === 0 && this.initPlugins().then(t); + r = s.length; + const a = (o) => { + o && typeof o.callback == "function" && o.callback(), --r === 0 && this.initPlugins().then(t); }; s.forEach((o) => { - typeof o.id == "string" ? (this.registerPlugin(o), n(o)) : typeof o.src == "string" ? Mt(o.src, () => n(o)) : (console.warn("Unrecognized plugin format", o), n()); + typeof o.id == "string" ? (this.registerPlugin(o), a(o)) : typeof o.src == "string" ? Lt(o.src, () => a(o)) : (console.warn("Unrecognized plugin format", o), a()); }); } else this.initPlugins().then(t); @@ -2108,16 +2104,16 @@ class $i { if (t === 0) this.loadAsync().then(e); else { - let s, l = () => { + let s, r = () => { --t === 0 ? this.loadAsync().then(e) : s(); - }, n = 0; + }, a = 0; s = () => { - let o = i[n++]; + let o = i[a++]; if (typeof o.init == "function") { let c = o.init(this.Reveal); - c && typeof c.then == "function" ? c.then(l) : l(); + c && typeof c.then == "function" ? c.then(r) : r(); } else - l(); + r(); }, s(); } }); @@ -2127,7 +2123,7 @@ class $i { */ loadAsync() { return this.state = "loaded", this.asyncDependencies.length && this.asyncDependencies.forEach((e) => { - Mt(e.src, e.callback); + Lt(e.src, e.callback); }), Promise.resolve(); } /** @@ -2168,8 +2164,150 @@ class $i { }), this.registeredPlugins = {}, this.asyncDependencies = []; } } -const Ce = 40; -class Xi { +class qi { + constructor(e) { + this.Reveal = e, this.onSlidesClicked = this.onSlidesClicked.bind(this), this.linkPreviewSelector = null, this.mediaPreviewSelector = "[data-preview-image], [data-preview-video]"; + } + update() { + this.Reveal.getConfig().previewLinks ? this.linkPreviewSelector = "a[href]:not([data-preview-link=false])" : this.linkPreviewSelector = "[data-preview-link]:not([data-preview-link=false])", this.hasLinkPreviews = this.Reveal.getSlidesElement().querySelectorAll(this.linkPreviewSelector).length > 0, this.hasMediaPreviews = this.Reveal.getSlidesElement().querySelectorAll(this.mediaPreviewSelector).length > 0, this.hasLinkPreviews || this.hasMediaPreviews ? this.Reveal.getSlidesElement().addEventListener("click", this.onSlidesClicked, !1) : this.Reveal.getSlidesElement().removeEventListener("click", this.onSlidesClicked, !1); + } + createOverlay(e) { + this.dom = document.createElement("div"), this.dom.classList.add("r-overlay"), this.dom.classList.add(e), this.viewport = document.createElement("div"), this.viewport.classList.add("r-overlay-viewport"), this.dom.appendChild(this.viewport), this.Reveal.getViewportElement().appendChild(this.dom); + } + /** + * Opens a preview window for the target URL. + * + * @param {string} url - url for preview iframe src + */ + showIframePreview(e) { + this.close(), this.createOverlay("r-overlay-preview"), this.dom.dataset.state = "loading", this.viewport.innerHTML = `
+ + +
+
+
+ + + Unable to load iframe. This is likely due to the site's policy (x-frame-options). + +
`, this.dom.querySelector("iframe").addEventListener("load", (i) => { + this.dom.dataset.state = "loaded"; + }, !1), this.dom.querySelector(".r-overlay-close").addEventListener("click", (i) => { + this.close(), i.preventDefault(); + }, !1), this.dom.querySelector(".r-overlay-external").addEventListener("click", (i) => { + this.close(); + }, !1); + } + /** + * Opens a preview window that provides a larger view of the + * given image/video. + * + * @param {string} url - url to the image/video to preview + * @param {image|video} mediaType + * @param {HTMLElement} [trigger] - the element that triggered + * the preview + */ + showMediaPreview(e, i, t) { + if (i !== "image" && i !== "video") { + console.warn("Please specify a valid media type to preview (image|video)"); + return; + } + this.close(), this.createOverlay("r-overlay-preview"), this.dom.dataset.state = "loading", this.dom.dataset.previewFit = t && t.dataset.previewFit || "scale-down", this.viewport.innerHTML = `
+ +
+
+
`; + const s = this.dom.querySelector(".r-overlay-content"); + if (i === "image") { + const r = document.createElement("img", {}); + r.src = e, s.appendChild(r), r.addEventListener("load", () => { + this.dom.dataset.state = "loaded"; + }, !1), r.addEventListener("error", () => { + this.dom.dataset.state = "error", s.innerHTML = 'Unable to load image.'; + }, !1), this.dom.style.cursor = "zoom-out", this.dom.addEventListener("click", (a) => { + this.close(); + }, !1); + } else if (i === "video") { + const r = document.createElement("video"); + r.autoplay = this.dom.dataset.previewAutoplay !== "false", r.controls = this.dom.dataset.previewControls !== "false", r.loop = this.dom.dataset.previewLoop === "true", r.muted = this.dom.dataset.previewMuted === "true", r.playsInline = !0, r.src = e, s.appendChild(r), r.addEventListener("loadeddata", () => { + this.dom.dataset.state = "loaded"; + }, !1), r.addEventListener("error", () => { + this.dom.dataset.state = "error", s.innerHTML = 'Unable to load video.'; + }, !1); + } else + throw new Error("Please specify a valid media type to preview"); + this.dom.querySelector(".r-overlay-close").addEventListener("click", (r) => { + this.close(), r.preventDefault(); + }, !1); + } + /** + * Open or close help overlay window. + * + * @param {Boolean} [override] Flag which overrides the + * toggle logic and forcibly sets the desired state. True means + * help is open, false means it's closed. + */ + toggleHelp(e) { + typeof e == "boolean" ? e ? this.showHelp() : this.close() : this.dom ? this.close() : this.showHelp(); + } + /** + * Opens an overlay window with help material. + */ + showHelp() { + if (this.Reveal.getConfig().help) { + this.close(), this.createOverlay("r-overlay-help"); + let e = '

Keyboard Shortcuts

', i = this.Reveal.keyboard.getShortcuts(), t = this.Reveal.keyboard.getBindings(); + e += ""; + for (let s in i) + e += ``; + for (let s in t) + t[s].key && t[s].description && (e += ``); + e += "
KEYACTION
${s}${i[s]}
${t[s].key}${t[s].description}
", this.viewport.innerHTML = ` +
+ +
+
+
${e}
+
+ `, this.dom.querySelector(".r-overlay-close").addEventListener("click", (s) => { + this.close(), s.preventDefault(); + }, !1); + } + } + isOpen() { + return !!this.dom; + } + /** + * Closes any currently open overlay. + */ + close() { + return this.dom ? (this.dom.remove(), this.dom = null, !0) : !1; + } + onSlidesClicked(e) { + const i = e.target, t = i.closest(this.linkPreviewSelector), s = i.closest(this.mediaPreviewSelector); + if (t) { + let r = t.getAttribute("href"); + r && (this.showIframePreview(r), e.preventDefault()); + } else if (s) { + if (s.hasAttribute("data-preview-image")) { + let r = s.dataset.previewImage || s.getAttribute("src"); + r && (this.showMediaPreview(r, "image", s), e.preventDefault()); + } else if (s.hasAttribute("data-preview-video")) { + let r = s.dataset.previewVideo || s.getAttribute("src"); + if (!r) { + let a = s.querySelector("source"); + a && (r = a.getAttribute("src")); + } + r && (this.showMediaPreview(r, "video", s), e.preventDefault()); + } + } + } + destroy() { + this.close(); + } +} +const Le = 40; +class Ui { constructor(e) { this.Reveal = e, this.touchStartX = 0, this.touchStartY = 0, this.touchStartCount = 0, this.touchCaptured = !1, this.onPointerDown = this.onPointerDown.bind(this), this.onPointerMove = this.onPointerMove.bind(this), this.onPointerUp = this.onPointerUp.bind(this), this.onTouchStart = this.onTouchStart.bind(this), this.onTouchMove = this.onTouchMove.bind(this), this.onTouchEnd = this.onTouchEnd.bind(this); } @@ -2218,13 +2356,13 @@ class Xi { if (this.isSwipePrevented(e.target)) return !0; let i = this.Reveal.getConfig(); if (this.touchCaptured) - zt && e.preventDefault(); + It && e.preventDefault(); else { this.Reveal.onUserInput(e); let t = e.touches[0].clientX, s = e.touches[0].clientY; if (e.touches.length === 1 && this.touchStartCount !== 2) { - let l = this.Reveal.availableRoutes({ includeFragments: !0 }), n = t - this.touchStartX, o = s - this.touchStartY; - n > Ce && Math.abs(n) > Math.abs(o) ? (this.touchCaptured = !0, i.navigationMode === "linear" ? i.rtl ? this.Reveal.next() : this.Reveal.prev() : this.Reveal.left()) : n < -Ce && Math.abs(n) > Math.abs(o) ? (this.touchCaptured = !0, i.navigationMode === "linear" ? i.rtl ? this.Reveal.prev() : this.Reveal.next() : this.Reveal.right()) : o > Ce && l.up ? (this.touchCaptured = !0, i.navigationMode === "linear" ? this.Reveal.prev() : this.Reveal.up()) : o < -Ce && l.down && (this.touchCaptured = !0, i.navigationMode === "linear" ? this.Reveal.next() : this.Reveal.down()), i.embedded ? (this.touchCaptured || this.Reveal.isVerticalSlide()) && e.preventDefault() : e.preventDefault(); + let r = this.Reveal.availableRoutes({ includeFragments: !0 }), a = t - this.touchStartX, o = s - this.touchStartY; + a > Le && Math.abs(a) > Math.abs(o) ? (this.touchCaptured = !0, i.navigationMode === "linear" ? i.rtl ? this.Reveal.next() : this.Reveal.prev() : this.Reveal.left()) : a < -Le && Math.abs(a) > Math.abs(o) ? (this.touchCaptured = !0, i.navigationMode === "linear" ? i.rtl ? this.Reveal.prev() : this.Reveal.next() : this.Reveal.right()) : o > Le && r.up ? (this.touchCaptured = !0, i.navigationMode === "linear" ? this.Reveal.prev() : this.Reveal.up()) : o < -Le && r.down && (this.touchCaptured = !0, i.navigationMode === "linear" ? this.Reveal.next() : this.Reveal.down()), i.embedded ? (this.touchCaptured || this.Reveal.isVerticalSlide()) && e.preventDefault() : e.preventDefault(); } } } @@ -2261,8 +2399,8 @@ class Xi { (e.pointerType === e.MSPOINTER_TYPE_TOUCH || e.pointerType === "touch") && (e.touches = [{ clientX: e.clientX, clientY: e.clientY }], this.onTouchEnd(e)); } } -const Ue = "focus", Bt = "blur"; -class Yi { +const qe = "focus", Pt = "blur"; +class Wi { constructor(e) { this.Reveal = e, this.onRevealPointerDown = this.onRevealPointerDown.bind(this), this.onDocumentPointerDown = this.onDocumentPointerDown.bind(this); } @@ -2279,13 +2417,13 @@ class Yi { this.Reveal.getRevealElement().removeEventListener("pointerdown", this.onRevealPointerDown, !1), document.removeEventListener("pointerdown", this.onDocumentPointerDown, !1); } focus() { - this.state !== Ue && (this.Reveal.getRevealElement().classList.add("focused"), document.addEventListener("pointerdown", this.onDocumentPointerDown, !1)), this.state = Ue; + this.state !== qe && (this.Reveal.getRevealElement().classList.add("focused"), document.addEventListener("pointerdown", this.onDocumentPointerDown, !1)), this.state = qe; } blur() { - this.state !== Bt && (this.Reveal.getRevealElement().classList.remove("focused"), document.removeEventListener("pointerdown", this.onDocumentPointerDown, !1)), this.state = Bt; + this.state !== Pt && (this.Reveal.getRevealElement().classList.remove("focused"), document.removeEventListener("pointerdown", this.onDocumentPointerDown, !1)), this.state = Pt; } isFocused() { - return this.state === Ue; + return this.state === qe; } destroy() { this.Reveal.getRevealElement().classList.remove("focused"); @@ -2294,11 +2432,11 @@ class Yi { this.focus(); } onDocumentPointerDown(e) { - let i = F(e.target, ".reveal"); + let i = O(e.target, ".reveal"); (!i || i !== this.Reveal.getRevealElement()) && this.blur(); } } -class Gi { +class ji { constructor(e) { this.Reveal = e; } @@ -2365,7 +2503,7 @@ class Gi { this.element.remove(); } } -class Ji { +class Ki { /** * @param {HTMLElement} container The component will append * itself to this @@ -2388,10 +2526,10 @@ class Ji { * Renders the current progress and playback state. */ render() { - let e = this.playing ? this.progress : 0, i = this.diameter2 - this.thickness, t = this.diameter2, s = this.diameter2, l = 28; + let e = this.playing ? this.progress : 0, i = this.diameter2 - this.thickness, t = this.diameter2, s = this.diameter2, r = 28; this.progressOffset += (1 - this.progressOffset) * 0.1; - const n = -Math.PI / 2 + e * (Math.PI * 2), o = -Math.PI / 2 + this.progressOffset * (Math.PI * 2); - this.context.save(), this.context.clearRect(0, 0, this.diameter, this.diameter), this.context.beginPath(), this.context.arc(t, s, i + 4, 0, Math.PI * 2, !1), this.context.fillStyle = "rgba( 0, 0, 0, 0.4 )", this.context.fill(), this.context.beginPath(), this.context.arc(t, s, i, 0, Math.PI * 2, !1), this.context.lineWidth = this.thickness, this.context.strokeStyle = "rgba( 255, 255, 255, 0.2 )", this.context.stroke(), this.playing && (this.context.beginPath(), this.context.arc(t, s, i, o, n, !1), this.context.lineWidth = this.thickness, this.context.strokeStyle = "#fff", this.context.stroke()), this.context.translate(t - l / 2, s - l / 2), this.playing ? (this.context.fillStyle = "#fff", this.context.fillRect(0, 0, l / 2 - 4, l), this.context.fillRect(l / 2 + 4, 0, l / 2 - 4, l)) : (this.context.beginPath(), this.context.translate(4, 0), this.context.moveTo(0, 0), this.context.lineTo(l - 4, l / 2), this.context.lineTo(0, l), this.context.fillStyle = "#fff", this.context.fill()), this.context.restore(); + const a = -Math.PI / 2 + e * (Math.PI * 2), o = -Math.PI / 2 + this.progressOffset * (Math.PI * 2); + this.context.save(), this.context.clearRect(0, 0, this.diameter, this.diameter), this.context.beginPath(), this.context.arc(t, s, i + 4, 0, Math.PI * 2, !1), this.context.fillStyle = "rgba( 0, 0, 0, 0.4 )", this.context.fill(), this.context.beginPath(), this.context.arc(t, s, i, 0, Math.PI * 2, !1), this.context.lineWidth = this.thickness, this.context.strokeStyle = "rgba( 255, 255, 255, 0.2 )", this.context.stroke(), this.playing && (this.context.beginPath(), this.context.arc(t, s, i, o, a, !1), this.context.lineWidth = this.thickness, this.context.strokeStyle = "#fff", this.context.stroke()), this.context.translate(t - r / 2, s - r / 2), this.playing ? (this.context.fillStyle = "#fff", this.context.fillRect(0, 0, r / 2 - 4, r), this.context.fillRect(r / 2 + 4, 0, r / 2 - 4, r)) : (this.context.beginPath(), this.context.translate(4, 0), this.context.moveTo(0, 0), this.context.lineTo(r - 4, r / 2), this.context.lineTo(0, r), this.context.fillStyle = "#fff", this.context.fill()), this.context.restore(); } on(e, i) { this.canvas.addEventListener(e, i, !1); @@ -2403,7 +2541,7 @@ class Ji { this.playing = !1, this.canvas.parentNode && this.container.removeChild(this.canvas); } } -const Qi = { +const _i = { width: 960, height: 700, margin: 0.04, @@ -2493,430 +2631,374 @@ const Qi = { pdfPageHeightOffset: -1, dependencies: [], plugins: [] -}, Vt = "5.1.0"; -function Ot(h, e) { +}, Nt = "6.0.0"; +function Bt(h, e) { arguments.length < 2 && (e = arguments[0], h = document.querySelector(".reveal")); const i = {}; - let t = {}, s = !1, l = !1, n, o, c, f, g = { + let t = {}, s = !1, r = !1, a, o, c, f, g = { hasNavigatedHorizontally: !1, hasNavigatedVertically: !1 - }, v = [], y = 1, w = { layout: "", overview: "" }, r = {}, A = "idle", I = 0, V, O = 0, se = -1, z = !1, k = new Ri(i), N = new xi(i), U = new Ti(i), W = new Mi(i), P = new Ni(i), R = new Fi(i), D = new Vi(i), L = new Oi(i), u = new qi(i), S = new Ui(i), x = new Wi(i), $ = new ji(i), j = new _i(i), Z = new Ki(i), H = new $i(i), ae = new Yi(i), xe = new Xi(i), K = new Gi(i); - function Ut(a) { + }, p = [], y = 1, w = { layout: "", overview: "" }, l = {}, A = "idle", I = 0, V, q = 0, se = -1, z = !1, k = new mi(i), M = new Si(i), W = new Ai(i), j = new Ci(i), P = new ki(i), R = new Ii(i), D = new Mi(i), C = new Ni(i), u = new Bi(i), S = new Hi(i), x = new Di(i), X = new zi(i), K = new Fi(i), Z = new Oi(i), H = new Vi(i), F = new qi(i), ae = new Wi(i), xe = new Ui(i), $ = new ji(i); + function Dt(n) { if (!h) throw 'Unable to find presentation root (
).'; if (s) throw "Reveal.js has already been initialized."; - if (s = !0, r.wrapper = h, r.slides = h.querySelector(".slides"), !r.slides) throw 'Unable to find slides container (
).'; - return t = { ...Qi, ...t, ...e, ...a, ...xt() }, /print-pdf/gi.test(window.location.search) && (t.view = "print"), Wt(), window.addEventListener("load", le, !1), H.load(t.plugins, t.dependencies).then(jt), new Promise((d) => i.on("ready", d)); + if (s = !0, l.wrapper = h, l.slides = h.querySelector(".slides"), !l.slides) throw 'Unable to find slides container (
).'; + return t = { ..._i, ...t, ...e, ...n, ...Rt() }, /print-pdf/gi.test(window.location.search) && (t.view = "print"), zt(), window.addEventListener("load", le, !1), H.load(t.plugins, t.dependencies).then(Ft), new Promise((d) => i.on("ready", d)); } - function Wt() { - t.embedded === !0 ? r.viewport = F(h, ".reveal-viewport") || h : (r.viewport = document.body, document.documentElement.classList.add("reveal-full-page")), r.viewport.classList.add("reveal-viewport"); + function zt() { + t.embedded === !0 ? l.viewport = O(h, ".reveal-viewport") || h : (l.viewport = document.body, document.documentElement.classList.add("reveal-full-page")), l.viewport.classList.add("reveal-viewport"); } - function jt() { - s !== !1 && (l = !0, Kt(), $t(), Jt(), Yt(), Gt(), oi(), Ke(), P.update(!0), _t(), x.readURL(), setTimeout(() => { - r.slides.classList.remove("no-transition"), r.wrapper.classList.add("ready"), _({ + function Ft() { + s !== !1 && (r = !0, Vt(), qt(), Kt(), Wt(), jt(), ei(), Ke(), P.update(!0), Ot(), x.readURL(), setTimeout(() => { + l.slides.classList.remove("no-transition"), l.wrapper.classList.add("ready"), _({ type: "ready", data: { - indexh: n, + indexh: a, indexv: o, currentSlide: f } }); }, 1)); } - function _t() { - const a = t.view === "print", d = t.view === "scroll" || t.view === "reader"; - (a || d) && (a ? ye() : xe.unbind(), r.viewport.classList.add("loading-scroll-mode"), a ? document.readyState === "complete" ? D.activate() : window.addEventListener("load", () => D.activate()) : R.activate()); + function Ot() { + const n = t.view === "print", d = t.view === "scroll" || t.view === "reader"; + (n || d) && (n ? ye() : xe.unbind(), l.viewport.classList.add("loading-scroll-mode"), n ? document.readyState === "complete" ? D.activate() : window.addEventListener("load", () => D.activate()) : R.activate()); } - function Kt() { - t.showHiddenSlides || E(r.wrapper, 'section[data-visibility="hidden"]').forEach((a) => { - const d = a.parentNode; - d.childElementCount === 1 && /section/i.test(d.nodeName) ? d.remove() : a.remove(); + function Vt() { + t.showHiddenSlides || E(l.wrapper, 'section[data-visibility="hidden"]').forEach((n) => { + const d = n.parentNode; + d.childElementCount === 1 && /section/i.test(d.nodeName) ? d.remove() : n.remove(); }); } - function $t() { - r.slides.classList.add("no-transition"), fe ? r.wrapper.classList.add("no-hover") : r.wrapper.classList.remove("no-hover"), P.render(), N.render(), U.render(), $.render(), j.render(), K.render(), r.pauseOverlay = yi(r.wrapper, "div", "pause-overlay", t.controls ? '' : null), r.statusElement = Xt(), r.wrapper.setAttribute("role", "application"); + function qt() { + l.slides.classList.add("no-transition"), fe ? l.wrapper.classList.add("no-hover") : l.wrapper.classList.remove("no-hover"), P.render(), M.render(), W.render(), X.render(), K.render(), $.render(), l.pauseOverlay = hi(l.wrapper, "div", "pause-overlay", t.controls ? '' : null), l.statusElement = Ut(), l.wrapper.setAttribute("role", "application"); } - function Xt() { - let a = r.wrapper.querySelector(".aria-status"); - return a || (a = document.createElement("div"), a.style.position = "absolute", a.style.height = "1px", a.style.width = "1px", a.style.overflow = "hidden", a.style.clip = "rect( 1px, 1px, 1px, 1px )", a.classList.add("aria-status"), a.setAttribute("aria-live", "polite"), a.setAttribute("aria-atomic", "true"), r.wrapper.appendChild(a)), a; + function Ut() { + let n = l.wrapper.querySelector(".aria-status"); + return n || (n = document.createElement("div"), n.style.position = "absolute", n.style.height = "1px", n.style.width = "1px", n.style.overflow = "hidden", n.style.clip = "rect( 1px, 1px, 1px, 1px )", n.classList.add("aria-status"), n.setAttribute("aria-live", "polite"), n.setAttribute("aria-atomic", "true"), l.wrapper.appendChild(n)), n; } - function Te(a) { - r.statusElement.textContent = a; + function Te(n) { + l.statusElement.textContent = n; } - function me(a) { + function me(n) { let d = ""; - if (a.nodeType === 3) - d += a.textContent; - else if (a.nodeType === 1) { - let p = a.getAttribute("aria-hidden"), m = window.getComputedStyle(a).display === "none"; - p !== "true" && !m && Array.from(a.childNodes).forEach((b) => { + if (n.nodeType === 3) + d += n.textContent; + else if (n.nodeType === 1) { + let v = n.getAttribute("aria-hidden"), m = window.getComputedStyle(n).display === "none"; + v !== "true" && !m && Array.from(n.childNodes).forEach((b) => { d += me(b); }); } return d = d.trim(), d === "" ? "" : d + " "; } - function Yt() { + function Wt() { setInterval(() => { - (!R.isActive() && r.wrapper.scrollTop !== 0 || r.wrapper.scrollLeft !== 0) && (r.wrapper.scrollTop = 0, r.wrapper.scrollLeft = 0); + (!R.isActive() && l.wrapper.scrollTop !== 0 || l.wrapper.scrollLeft !== 0) && (l.wrapper.scrollTop = 0, l.wrapper.scrollLeft = 0); }, 1e3); } - function Gt() { + function jt() { document.addEventListener("fullscreenchange", ke), document.addEventListener("webkitfullscreenchange", ke); } - function Jt() { - t.postMessage && window.addEventListener("message", Et, !1); + function Kt() { + t.postMessage && window.addEventListener("message", mt, !1); } - function Ke(a) { + function Ke(n) { const d = { ...t }; - if (typeof a == "object" && ue(t, a), i.isReady() === !1) return; - const p = r.wrapper.querySelectorAll(re).length; - r.wrapper.classList.remove(d.transition), r.wrapper.classList.add(t.transition), r.wrapper.setAttribute("data-transition-speed", t.transitionSpeed), r.wrapper.setAttribute("data-background-transition", t.backgroundTransition), r.viewport.style.setProperty("--slide-width", typeof t.width == "string" ? t.width : t.width + "px"), r.viewport.style.setProperty("--slide-height", typeof t.height == "string" ? t.height : t.height + "px"), t.shuffle && He(), qe(r.wrapper, "embedded", t.embedded), qe(r.wrapper, "rtl", t.rtl), qe(r.wrapper, "center", t.center), t.pause === !1 && pe(), t.previewLinks ? (Qe(), Ne("[data-preview-link=false]")) : (Ne(), Qe("[data-preview-link]:not([data-preview-link=false])")), W.reset(), V && (V.destroy(), V = null), p > 1 && t.autoSlide && t.autoSlideStoppable && (V = new Ji(r.wrapper, () => Math.min(Math.max((Date.now() - se) / I, 0), 1)), V.on("click", gi), z = !1), t.navigationMode !== "default" ? r.wrapper.setAttribute("data-navigation-mode", t.navigationMode) : r.wrapper.removeAttribute("data-navigation-mode"), K.configure(t, d), ae.configure(t, d), Z.configure(t, d), $.configure(t, d), j.configure(t, d), S.configure(t, d), L.configure(t, d), N.configure(t, d), lt(); + if (typeof n == "object" && ue(t, n), i.isReady() === !1) return; + const v = l.wrapper.querySelectorAll(re).length; + l.wrapper.classList.remove(d.transition), l.wrapper.classList.add(t.transition), l.wrapper.setAttribute("data-transition-speed", t.transitionSpeed), l.wrapper.setAttribute("data-background-transition", t.backgroundTransition), l.viewport.style.setProperty("--slide-width", typeof t.width == "string" ? t.width : t.width + "px"), l.viewport.style.setProperty("--slide-height", typeof t.height == "string" ? t.height : t.height + "px"), t.shuffle && Be(), Ve(l.wrapper, "embedded", t.embedded), Ve(l.wrapper, "rtl", t.rtl), Ve(l.wrapper, "center", t.center), t.pause === !1 && pe(), j.reset(), V && (V.destroy(), V = null), v > 1 && t.autoSlide && t.autoSlideStoppable && (V = new Ki(l.wrapper, () => Math.min(Math.max((Date.now() - se) / I, 0), 1)), V.on("click", oi), z = !1), t.navigationMode !== "default" ? l.wrapper.setAttribute("data-navigation-mode", t.navigationMode) : l.wrapper.removeAttribute("data-navigation-mode"), $.configure(t, d), ae.configure(t, d), Z.configure(t, d), X.configure(t, d), K.configure(t, d), S.configure(t, d), C.configure(t, d), M.configure(t, d), at(); } - function $e() { - window.addEventListener("resize", Rt, !1), t.touch && xe.bind(), t.keyboard && S.bind(), t.progress && j.bind(), t.respondToHashChanges && x.bind(), $.bind(), ae.bind(), r.slides.addEventListener("click", At, !1), r.slides.addEventListener("transitionend", St, !1), r.pauseOverlay.addEventListener("click", pe, !1), t.focusBodyOnPageVisibilityChange && document.addEventListener("visibilitychange", kt, !1); + function _e() { + window.addEventListener("resize", wt, !1), t.touch && xe.bind(), t.keyboard && S.bind(), t.progress && K.bind(), t.respondToHashChanges && x.bind(), X.bind(), ae.bind(), l.slides.addEventListener("click", bt, !1), l.slides.addEventListener("transitionend", yt, !1), l.pauseOverlay.addEventListener("click", pe, !1), t.focusBodyOnPageVisibilityChange && document.addEventListener("visibilitychange", Et, !1); } function ye() { - xe.unbind(), ae.unbind(), S.unbind(), $.unbind(), j.unbind(), x.unbind(), window.removeEventListener("resize", Rt, !1), r.slides.removeEventListener("click", At, !1), r.slides.removeEventListener("transitionend", St, !1), r.pauseOverlay.removeEventListener("click", pe, !1); + xe.unbind(), ae.unbind(), S.unbind(), X.unbind(), K.unbind(), x.unbind(), window.removeEventListener("resize", wt, !1), l.slides.removeEventListener("click", bt, !1), l.slides.removeEventListener("transitionend", yt, !1), l.pauseOverlay.removeEventListener("click", pe, !1); } - function Qt() { - s = !1, l !== !1 && (ye(), we(), Ne(), K.destroy(), ae.destroy(), H.destroy(), Z.destroy(), $.destroy(), j.destroy(), P.destroy(), N.destroy(), U.destroy(), document.removeEventListener("fullscreenchange", ke), document.removeEventListener("webkitfullscreenchange", ke), document.removeEventListener("visibilitychange", kt, !1), window.removeEventListener("message", Et, !1), window.removeEventListener("load", le, !1), r.pauseOverlay && r.pauseOverlay.remove(), r.statusElement && r.statusElement.remove(), document.documentElement.classList.remove("reveal-full-page"), r.wrapper.classList.remove("ready", "center", "has-horizontal-slides", "has-vertical-slides"), r.wrapper.removeAttribute("data-transition-speed"), r.wrapper.removeAttribute("data-background-transition"), r.viewport.classList.remove("reveal-viewport"), r.viewport.style.removeProperty("--slide-width"), r.viewport.style.removeProperty("--slide-height"), r.slides.style.removeProperty("width"), r.slides.style.removeProperty("height"), r.slides.style.removeProperty("zoom"), r.slides.style.removeProperty("left"), r.slides.style.removeProperty("top"), r.slides.style.removeProperty("bottom"), r.slides.style.removeProperty("right"), r.slides.style.removeProperty("transform"), Array.from(r.wrapper.querySelectorAll(re)).forEach((a) => { - a.style.removeProperty("display"), a.style.removeProperty("top"), a.removeAttribute("hidden"), a.removeAttribute("aria-hidden"); + function _t() { + s = !1, r !== !1 && (ye(), we(), $.destroy(), ae.destroy(), F.destroy(), H.destroy(), Z.destroy(), X.destroy(), K.destroy(), P.destroy(), M.destroy(), W.destroy(), document.removeEventListener("fullscreenchange", ke), document.removeEventListener("webkitfullscreenchange", ke), document.removeEventListener("visibilitychange", Et, !1), window.removeEventListener("message", mt, !1), window.removeEventListener("load", le, !1), l.pauseOverlay && l.pauseOverlay.remove(), l.statusElement && l.statusElement.remove(), document.documentElement.classList.remove("reveal-full-page"), l.wrapper.classList.remove("ready", "center", "has-horizontal-slides", "has-vertical-slides"), l.wrapper.removeAttribute("data-transition-speed"), l.wrapper.removeAttribute("data-background-transition"), l.viewport.classList.remove("reveal-viewport"), l.viewport.style.removeProperty("--slide-width"), l.viewport.style.removeProperty("--slide-height"), l.slides.style.removeProperty("width"), l.slides.style.removeProperty("height"), l.slides.style.removeProperty("zoom"), l.slides.style.removeProperty("left"), l.slides.style.removeProperty("top"), l.slides.style.removeProperty("bottom"), l.slides.style.removeProperty("right"), l.slides.style.removeProperty("transform"), Array.from(l.wrapper.querySelectorAll(re)).forEach((n) => { + n.style.removeProperty("display"), n.style.removeProperty("top"), n.removeAttribute("hidden"), n.removeAttribute("aria-hidden"); })); } - function Xe(a, d, p) { - h.addEventListener(a, d, p); + function $e(n, d, v) { + h.addEventListener(n, d, v); } - function Ye(a, d, p) { - h.removeEventListener(a, d, p); + function Xe(n, d, v) { + h.removeEventListener(n, d, v); } - function Ie(a) { - typeof a.layout == "string" && (w.layout = a.layout), typeof a.overview == "string" && (w.overview = a.overview), w.layout ? ie(r.slides, w.layout + " " + w.overview) : ie(r.slides, w.overview); + function Ie(n) { + typeof n.layout == "string" && (w.layout = n.layout), typeof n.overview == "string" && (w.overview = n.overview), w.layout ? ie(l.slides, w.layout + " " + w.overview) : ie(l.slides, w.overview); } - function _({ target: a = r.wrapper, type: d, data: p, bubbles: m = !0 }) { + function _({ target: n = l.wrapper, type: d, data: v, bubbles: m = !0 }) { let b = document.createEvent("HTMLEvents", 1, 2); - return b.initEvent(d, m, !0), ue(b, p), a.dispatchEvent(b), a === r.wrapper && Je(d), b; + return b.initEvent(d, m, !0), ue(b, v), n.dispatchEvent(b), n === l.wrapper && Ge(d), b; } - function Ge(a) { + function Ye(n) { _({ type: "slidechanged", data: { - indexh: n, + indexh: a, indexv: o, previousSlide: c, currentSlide: f, - origin: a + origin: n } }); } - function Je(a, d) { + function Ge(n, d) { if (t.postMessageEvents && window.parent !== window.self) { - let p = { + let v = { namespace: "reveal", - eventName: a, - state: bt() + eventName: n, + state: pt() }; - ue(p, d), window.parent.postMessage(JSON.stringify(p), "*"); + ue(v, d), window.parent.postMessage(JSON.stringify(v), "*"); } } - function Qe(a = "a") { - Array.from(r.wrapper.querySelectorAll(a)).forEach((d) => { - /^(http|www)/gi.test(d.getAttribute("href")) && d.addEventListener("click", Lt, !1); - }); - } - function Ne(a = "a") { - Array.from(r.wrapper.querySelectorAll(a)).forEach((d) => { - /^(http|www)/gi.test(d.getAttribute("href")) && d.removeEventListener("click", Lt, !1); - }); - } - function Ze(a) { - G(), r.overlay = document.createElement("div"), r.overlay.classList.add("overlay"), r.overlay.classList.add("overlay-preview"), r.wrapper.appendChild(r.overlay), r.overlay.innerHTML = `
- - -
-
-
- - - Unable to load iframe. This is likely due to the site's policy (x-frame-options). - -
`, r.overlay.querySelector("iframe").addEventListener("load", (d) => { - r.overlay.classList.add("loaded"); - }, !1), r.overlay.querySelector(".close").addEventListener("click", (d) => { - G(), d.preventDefault(); - }, !1), r.overlay.querySelector(".external").addEventListener("click", (d) => { - G(); - }, !1); - } - function Zt(a) { - typeof a == "boolean" ? a ? et() : G() : r.overlay ? G() : et(); - } - function et() { - if (t.help) { - G(), r.overlay = document.createElement("div"), r.overlay.classList.add("overlay"), r.overlay.classList.add("overlay-help"), r.wrapper.appendChild(r.overlay); - let a = '

Keyboard Shortcuts


', d = S.getShortcuts(), p = S.getBindings(); - a += ""; - for (let m in d) - a += ``; - for (let m in p) - p[m].key && p[m].description && (a += ``); - a += "
KEYACTION
${m}${d[m]}
${p[m].key}${p[m].description}
", r.overlay.innerHTML = ` -
- -
-
-
${a}
-
- `, r.overlay.querySelector(".close").addEventListener("click", (m) => { - G(), m.preventDefault(); - }, !1); - } - } - function G() { - return r.overlay ? (r.overlay.parentNode.removeChild(r.overlay), r.overlay = null, !0) : !1; - } function le() { - if (r.wrapper && !D.isActive()) { - const a = r.viewport.offsetWidth, d = r.viewport.offsetHeight; + if (l.wrapper && !D.isActive()) { + const n = l.viewport.offsetWidth, d = l.viewport.offsetHeight; if (!t.disableLayout) { fe && !t.embedded && document.documentElement.style.setProperty("--vh", window.innerHeight * 0.01 + "px"); - const p = R.isActive() ? be(a, d) : be(), m = y; - tt(t.width, t.height), r.slides.style.width = p.width + "px", r.slides.style.height = p.height + "px", y = Math.min(p.presentationWidth / p.width, p.presentationHeight / p.height), y = Math.max(y, t.minScale), y = Math.min(y, t.maxScale), y === 1 || R.isActive() ? (r.slides.style.zoom = "", r.slides.style.left = "", r.slides.style.top = "", r.slides.style.bottom = "", r.slides.style.right = "", Ie({ layout: "" })) : (r.slides.style.zoom = "", r.slides.style.left = "50%", r.slides.style.top = "50%", r.slides.style.bottom = "auto", r.slides.style.right = "auto", Ie({ layout: "translate(-50%, -50%) scale(" + y + ")" })); - const b = Array.from(r.wrapper.querySelectorAll(re)); - for (let C = 0, T = b.length; C < T; C++) { - const B = b[C]; - B.style.display !== "none" && (t.center || B.classList.contains("center") ? B.classList.contains("stack") ? B.style.top = 0 : B.style.top = Math.max((p.height - B.scrollHeight) / 2, 0) + "px" : B.style.top = ""); + const v = R.isActive() ? be(n, d) : be(), m = y; + Je(t.width, t.height), l.slides.style.width = v.width + "px", l.slides.style.height = v.height + "px", y = Math.min(v.presentationWidth / v.width, v.presentationHeight / v.height), y = Math.max(y, t.minScale), y = Math.min(y, t.maxScale), y === 1 || R.isActive() ? (l.slides.style.zoom = "", l.slides.style.left = "", l.slides.style.top = "", l.slides.style.bottom = "", l.slides.style.right = "", Ie({ layout: "" })) : (l.slides.style.zoom = "", l.slides.style.left = "50%", l.slides.style.top = "50%", l.slides.style.bottom = "auto", l.slides.style.right = "auto", Ie({ layout: "translate(-50%, -50%) scale(" + y + ")" })); + const b = Array.from(l.wrapper.querySelectorAll(re)); + for (let L = 0, T = b.length; L < T; L++) { + const B = b[L]; + B.style.display !== "none" && (t.center || B.classList.contains("center") ? B.classList.contains("stack") ? B.style.top = 0 : B.style.top = Math.max((v.height - B.scrollHeight) / 2, 0) + "px" : B.style.top = ""); } m !== y && _({ type: "resize", data: { oldScale: m, scale: y, - size: p + size: v } }); } - ei(), r.viewport.style.setProperty("--slide-scale", y), r.viewport.style.setProperty("--viewport-width", a + "px"), r.viewport.style.setProperty("--viewport-height", d + "px"), R.layout(), j.update(), P.updateParallax(), u.isActive() && u.update(); + $t(), l.viewport.style.setProperty("--slide-scale", y), l.viewport.style.setProperty("--viewport-width", n + "px"), l.viewport.style.setProperty("--viewport-height", d + "px"), R.layout(), K.update(), P.updateParallax(), u.isActive() && u.update(); } } - function tt(a, d) { - E(r.slides, "section > .stretch, section > .r-stretch").forEach((p) => { - let m = bi(p, d); - if (/(img|video)/gi.test(p.nodeName)) { - const b = p.naturalWidth || p.videoWidth, C = p.naturalHeight || p.videoHeight, T = Math.min(a / b, m / C); - p.style.width = b * T + "px", p.style.height = C * T + "px"; + function Je(n, d) { + E(l.slides, "section > .stretch, section > .r-stretch").forEach((v) => { + let m = ui(v, d); + if (/(img|video)/gi.test(v.nodeName)) { + const b = v.naturalWidth || v.videoWidth, L = v.naturalHeight || v.videoHeight, T = Math.min(n / b, m / L); + v.style.width = b * T + "px", v.style.height = L * T + "px"; } else - p.style.width = a + "px", p.style.height = m + "px"; + v.style.width = n + "px", v.style.height = m + "px"; }); } - function ei() { - if (r.wrapper && !t.disableLayout && !D.isActive() && typeof t.scrollActivationWidth == "number" && t.view !== "scroll") { - const a = be(); - a.presentationWidth > 0 && a.presentationWidth <= t.scrollActivationWidth ? R.isActive() || (P.create(), R.activate()) : R.isActive() && R.deactivate(); + function $t() { + if (l.wrapper && !t.disableLayout && !D.isActive() && typeof t.scrollActivationWidth == "number" && t.view !== "scroll") { + const n = be(); + n.presentationWidth > 0 && n.presentationWidth <= t.scrollActivationWidth ? R.isActive() || (P.create(), R.activate()) : R.isActive() && R.deactivate(); } } - function be(a, d) { - let p = t.width, m = t.height; - t.disableLayout && (p = r.slides.offsetWidth, m = r.slides.offsetHeight); + function be(n, d) { + let v = t.width, m = t.height; + t.disableLayout && (v = l.slides.offsetWidth, m = l.slides.offsetHeight); const b = { // Slide size - width: p, + width: v, height: m, // Presentation size - presentationWidth: a || r.wrapper.offsetWidth, - presentationHeight: d || r.wrapper.offsetHeight + presentationWidth: n || l.wrapper.offsetWidth, + presentationHeight: d || l.wrapper.offsetHeight }; return b.presentationWidth -= b.presentationWidth * t.margin, b.presentationHeight -= b.presentationHeight * t.margin, typeof b.width == "string" && /%$/.test(b.width) && (b.width = parseInt(b.width, 10) / 100 * b.presentationWidth), typeof b.height == "string" && /%$/.test(b.height) && (b.height = parseInt(b.height, 10) / 100 * b.presentationHeight), b; } - function it(a, d) { - typeof a == "object" && typeof a.setAttribute == "function" && a.setAttribute("data-previous-indexv", d || 0); + function Qe(n, d) { + typeof n == "object" && typeof n.setAttribute == "function" && n.setAttribute("data-previous-indexv", d || 0); } - function st(a) { - if (typeof a == "object" && typeof a.setAttribute == "function" && a.classList.contains("stack")) { - const d = a.hasAttribute("data-start-indexv") ? "data-start-indexv" : "data-previous-indexv"; - return parseInt(a.getAttribute(d) || 0, 10); + function Ze(n) { + if (typeof n == "object" && typeof n.setAttribute == "function" && n.classList.contains("stack")) { + const d = n.hasAttribute("data-start-indexv") ? "data-start-indexv" : "data-previous-indexv"; + return parseInt(n.getAttribute(d) || 0, 10); } return 0; } - function ge(a = f) { - return a && a.parentNode && !!a.parentNode.nodeName.match(/section/i); + function ge(n = f) { + return n && n.parentNode && !!n.parentNode.nodeName.match(/section/i); } - function ti(a = f) { - return a.classList.contains(".stack") || a.querySelector("section") !== null; + function Xt(n = f) { + return n.classList.contains(".stack") || n.querySelector("section") !== null; } - function at() { + function et() { return f && ge(f) ? !f.nextElementSibling : !1; } - function nt() { - return n === 0 && o === 0; + function tt() { + return a === 0 && o === 0; } function Me() { return f ? !(f.nextElementSibling || ge(f) && f.parentNode.nextElementSibling) : !1; } - function rt() { + function it() { if (t.pause) { - const a = r.wrapper.classList.contains("paused"); - we(), r.wrapper.classList.add("paused"), a === !1 && _({ type: "paused" }); + const n = l.wrapper.classList.contains("paused"); + we(), l.wrapper.classList.add("paused"), n === !1 && _({ type: "paused" }); } } function pe() { - const a = r.wrapper.classList.contains("paused"); - r.wrapper.classList.remove("paused"), de(), a && _({ type: "resumed" }); + const n = l.wrapper.classList.contains("paused"); + l.wrapper.classList.remove("paused"), de(), n && _({ type: "resumed" }); } - function ot(a) { - typeof a == "boolean" ? a ? rt() : pe() : ve() ? pe() : rt(); + function st(n) { + typeof n == "boolean" ? n ? it() : pe() : ve() ? pe() : it(); } function ve() { - return r.wrapper.classList.contains("paused"); + return l.wrapper.classList.contains("paused"); } - function ii(a) { - typeof a == "boolean" ? a ? U.show() : U.hide() : U.isVisible() ? U.hide() : U.show(); + function Yt(n) { + typeof n == "boolean" ? n ? W.show() : W.hide() : W.isVisible() ? W.hide() : W.show(); } - function si(a) { - typeof a == "boolean" ? a ? Se() : Ee() : z ? Se() : Ee(); + function Gt(n) { + typeof n == "boolean" ? n ? Se() : Ee() : z ? Se() : Ee(); } - function ai() { + function Jt() { return !!(I && !z); } - function X(a, d, p, m) { + function Y(n, d, v, m) { if (_({ type: "beforeslidechange", data: { - indexh: a === void 0 ? n : a, + indexh: n === void 0 ? a : n, indexv: d === void 0 ? o : d, origin: m } }).defaultPrevented) return; c = f; - const C = r.wrapper.querySelectorAll(te); + const L = l.wrapper.querySelectorAll(te); if (R.isActive()) { - const Y = R.getSlideByIndices(a, d); - Y && R.scrollToSlide(Y); + const G = R.getSlideByIndices(n, d); + G && R.scrollToSlide(G); return; } - if (C.length === 0) return; - d === void 0 && !u.isActive() && (d = st(C[a])), c && c.parentNode && c.parentNode.classList.contains("stack") && it(c.parentNode, o); - const T = v.concat(); - v.length = 0; - let B = n || 0, ne = o || 0; - n = dt(te, a === void 0 ? n : a), o = dt(Tt, d === void 0 ? o : d); - let Q = n !== B || o !== ne; + if (L.length === 0) return; + d === void 0 && !u.isActive() && (d = Ze(L[n])), c && c.parentNode && c.parentNode.classList.contains("stack") && Qe(c.parentNode, o); + const T = p.concat(); + p.length = 0; + let B = a || 0, ne = o || 0; + a = nt(te, n === void 0 ? a : n), o = nt(kt, d === void 0 ? o : d); + let Q = a !== B || o !== ne; Q || (c = null); - let q = C[n], M = q.querySelectorAll("section"); - h.classList.toggle("is-vertical-slide", M.length > 1), f = M[o] || q; + let U = L[a], N = U.querySelectorAll("section"); + h.classList.toggle("is-vertical-slide", N.length > 1), f = N[o] || U; let ce = !1; - Q && c && f && !u.isActive() && (A = "running", ce = Be(c, f, B, ne), ce && r.slides.classList.add("disable-slide-transitions")), De(), le(), u.isActive() && u.update(), typeof p < "u" && L.goto(p), c && c !== f && (c.classList.remove("present"), c.setAttribute("aria-hidden", "true"), nt() && setTimeout(() => { - di().forEach((Y) => { - it(Y, 0); + Q && c && f && !u.isActive() && (A = "running", ce = Ne(c, f, B, ne), ce && l.slides.classList.add("disable-slide-transitions")), He(), le(), u.isActive() && u.update(), typeof v < "u" && C.goto(v), c && c !== f && (c.classList.remove("present"), c.setAttribute("aria-hidden", "true"), tt() && setTimeout(() => { + ii().forEach((G) => { + Qe(G, 0); }); }, 0)); - e: for (let Y = 0, pi = v.length; Y < pi; Y++) { - for (let Le = 0; Le < T.length; Le++) - if (T[Le] === v[Y]) { - T.splice(Le, 1); + e: for (let G = 0, li = p.length; G < li; G++) { + for (let Ce = 0; Ce < T.length; Ce++) + if (T[Ce] === p[G]) { + T.splice(Ce, 1); continue e; } - r.viewport.classList.add(v[Y]), _({ type: v[Y] }); + l.viewport.classList.add(p[G]), _({ type: p[G] }); } for (; T.length; ) - r.viewport.classList.remove(T.pop()); - Q && Ge(m), (Q || !c) && (k.stopEmbeddedContent(c), k.startEmbeddedContent(f)), requestAnimationFrame(() => { + l.viewport.classList.remove(T.pop()); + Q && Ye(m), (Q || !c) && (k.stopEmbeddedContent(c), k.startEmbeddedContent(f)), requestAnimationFrame(() => { Te(me(f)); - }), j.update(), $.update(), K.update(), P.update(), P.updateParallax(), N.update(), L.update(), x.writeURL(), de(), ce && (setTimeout(() => { - r.slides.classList.remove("disable-slide-transitions"); - }, 0), t.autoAnimate && W.run(c, f)); + }), K.update(), X.update(), $.update(), P.update(), P.updateParallax(), M.update(), C.update(), x.writeURL(), de(), ce && (setTimeout(() => { + l.slides.classList.remove("disable-slide-transitions"); + }, 0), t.autoAnimate && j.run(c, f)); } - function Be(a, d, p, m) { - return a.hasAttribute("data-auto-animate") && d.hasAttribute("data-auto-animate") && a.getAttribute("data-auto-animate-id") === d.getAttribute("data-auto-animate-id") && !(n > p || o > m ? d : a).hasAttribute("data-auto-animate-restart"); + function Ne(n, d, v, m) { + return n.hasAttribute("data-auto-animate") && d.hasAttribute("data-auto-animate") && n.getAttribute("data-auto-animate-id") === d.getAttribute("data-auto-animate-id") && !(a > v || o > m ? d : n).hasAttribute("data-auto-animate-restart"); } - function ni(a, d, p) { - let m = n || 0; - n = d, o = p; - const b = f !== a; - c = f, f = a, f && c && t.autoAnimate && Be(c, f, m, o) && W.run(c, f), b && (c && (k.stopEmbeddedContent(c), k.stopEmbeddedContent(c.slideBackgroundElement)), k.startEmbeddedContent(f), k.startEmbeddedContent(f.slideBackgroundElement)), requestAnimationFrame(() => { + function Qt(n, d, v) { + let m = a || 0; + a = d, o = v; + const b = f !== n; + c = f, f = n, f && c && t.autoAnimate && Ne(c, f, m, o) && j.run(c, f), b && (c && (k.stopEmbeddedContent(c), k.stopEmbeddedContent(c.slideBackgroundElement)), k.startEmbeddedContent(f), k.startEmbeddedContent(f.slideBackgroundElement)), requestAnimationFrame(() => { Te(me(f)); - }), Ge(); + }), Ye(); } - function lt() { - ye(), $e(), le(), I = t.autoSlide, de(), P.create(), x.writeURL(), t.sortFragmentsOnSync === !0 && L.sortAll(), $.update(), j.update(), De(), K.update(), K.updateVisibility(), P.update(!0), N.update(), k.formatEmbeddedContent(), t.autoPlayMedia === !1 ? k.stopEmbeddedContent(f, { unloadIframes: !1 }) : k.startEmbeddedContent(f), u.isActive() && u.layout(); + function at() { + ye(), _e(), le(), I = t.autoSlide, de(), P.create(), x.writeURL(), t.sortFragmentsOnSync === !0 && C.sortAll(), X.update(), K.update(), He(), $.update(), $.updateVisibility(), F.update(), P.update(!0), M.update(), k.formatEmbeddedContent(), t.autoPlayMedia === !1 ? k.stopEmbeddedContent(f, { unloadIframes: !1 }) : k.startEmbeddedContent(f), u.isActive() && u.layout(); } - function ri(a = f) { - P.sync(a), L.sync(a), k.load(a), P.update(), K.update(); + function Zt(n = f) { + P.sync(n), C.sync(n), k.load(n), P.update(), $.update(); } - function oi() { - ee().forEach((a) => { - E(a, "section").forEach((d, p) => { - p > 0 && (d.classList.remove("present"), d.classList.remove("past"), d.classList.add("future"), d.setAttribute("aria-hidden", "true")); + function ei() { + ee().forEach((n) => { + E(n, "section").forEach((d, v) => { + v > 0 && (d.classList.remove("present"), d.classList.remove("past"), d.classList.add("future"), d.setAttribute("aria-hidden", "true")); }); }); } - function He(a = ee()) { - a.forEach((d, p) => { - let m = a[Math.floor(Math.random() * a.length)]; + function Be(n = ee()) { + n.forEach((d, v) => { + let m = n[Math.floor(Math.random() * n.length)]; m.parentNode === d.parentNode && d.parentNode.insertBefore(d, m); let b = d.querySelectorAll("section"); - b.length && He(b); + b.length && Be(b); }); } - function dt(a, d) { - let p = E(r.wrapper, a), m = p.length, b = R.isActive() || D.isActive(), C = !1, T = !1; + function nt(n, d) { + let v = E(l.wrapper, n), m = v.length, b = R.isActive() || D.isActive(), L = !1, T = !1; if (m) { - t.loop && (d >= m && (C = !0), d %= m, d < 0 && (d = m + d, T = !0)), d = Math.max(Math.min(d, m - 1), 0); - for (let q = 0; q < m; q++) { - let M = p[q], ce = t.rtl && !ge(M); - if (M.classList.remove("past"), M.classList.remove("present"), M.classList.remove("future"), M.setAttribute("hidden", ""), M.setAttribute("aria-hidden", "true"), M.querySelector("section") && M.classList.add("stack"), b) { - M.classList.add("present"); + t.loop && (d >= m && (L = !0), d %= m, d < 0 && (d = m + d, T = !0)), d = Math.max(Math.min(d, m - 1), 0); + for (let U = 0; U < m; U++) { + let N = v[U], ce = t.rtl && !ge(N); + if (N.classList.remove("past"), N.classList.remove("present"), N.classList.remove("future"), N.setAttribute("hidden", ""), N.setAttribute("aria-hidden", "true"), N.querySelector("section") && N.classList.add("stack"), b) { + N.classList.add("present"); continue; } - q < d ? (M.classList.add(ce ? "future" : "past"), t.fragments && ct(M)) : q > d ? (M.classList.add(ce ? "past" : "future"), t.fragments && ht(M)) : q === d && t.fragments && (C ? ht(M) : T && ct(M)); + U < d ? (N.classList.add(ce ? "future" : "past"), t.fragments && rt(N)) : U > d ? (N.classList.add(ce ? "past" : "future"), t.fragments && ot(N)) : U === d && t.fragments && (L ? ot(N) : T && rt(N)); } - let B = p[d], ne = B.classList.contains("present"); + let B = v[d], ne = B.classList.contains("present"); B.classList.add("present"), B.removeAttribute("hidden"), B.removeAttribute("aria-hidden"), ne || _({ target: B, type: "visible", bubbles: !1 }); let Q = B.getAttribute("data-state"); - Q && (v = v.concat(Q.split(" "))); + Q && (p = p.concat(Q.split(" "))); } else d = 0; return d; } - function ct(a) { - E(a, ".fragment").forEach((d) => { + function rt(n) { + E(n, ".fragment").forEach((d) => { d.classList.add("visible"), d.classList.remove("current-fragment"); }); } - function ht(a) { - E(a, ".fragment.visible").forEach((d) => { + function ot(n) { + E(n, ".fragment.visible").forEach((d) => { d.classList.remove("visible", "current-fragment"); }); } - function De() { - let a = ee(), d = a.length, p, m; - if (d && typeof n < "u") { + function He() { + let n = ee(), d = n.length, v, m; + if (d && typeof a < "u") { let b = u.isActive() ? 10 : t.viewDistance; fe && (b = u.isActive() ? 6 : t.mobileViewDistance), D.isActive() && (b = Number.MAX_VALUE); - for (let C = 0; C < d; C++) { - let T = a[C], B = E(T, "section"), ne = B.length; - if (p = Math.abs((n || 0) - C) || 0, t.loop && (p = Math.abs(((n || 0) - C) % (d - b)) || 0), p < b ? k.load(T) : k.unload(T), ne) { - let Q = st(T); - for (let q = 0; q < ne; q++) { - let M = B[q]; - m = Math.abs(C === (n || 0) ? (o || 0) - q : q - Q), p + m < b ? k.load(M) : k.unload(M); + for (let L = 0; L < d; L++) { + let T = n[L], B = E(T, "section"), ne = B.length; + if (v = Math.abs((a || 0) - L) || 0, t.loop && (v = Math.abs(((a || 0) - L) % (d - b)) || 0), v < b ? k.load(T) : k.unload(T), ne) { + let Q = Ze(T); + for (let U = 0; U < ne; U++) { + let N = B[U]; + m = Math.abs(L === (a || 0) ? (o || 0) - U : U - Q), v + m < b ? k.load(N) : k.unload(N); } } } - vt() ? r.wrapper.classList.add("has-vertical-slides") : r.wrapper.classList.remove("has-vertical-slides"), pt() ? r.wrapper.classList.add("has-horizontal-slides") : r.wrapper.classList.remove("has-horizontal-slides"); + ut() ? l.wrapper.classList.add("has-vertical-slides") : l.wrapper.classList.remove("has-vertical-slides"), ht() ? l.wrapper.classList.add("has-horizontal-slides") : l.wrapper.classList.remove("has-horizontal-slides"); } } - function J({ includeFragments: a = !1 } = {}) { - let d = r.wrapper.querySelectorAll(te), p = r.wrapper.querySelectorAll(Tt), m = { - left: n > 0, - right: n < d.length - 1, + function J({ includeFragments: n = !1 } = {}) { + let d = l.wrapper.querySelectorAll(te), v = l.wrapper.querySelectorAll(kt), m = { + left: a > 0, + right: a < d.length - 1, up: o > 0, - down: o < p.length - 1 + down: o < v.length - 1 }; - if (t.loop && (d.length > 1 && (m.left = !0, m.right = !0), p.length > 1 && (m.up = !0, m.down = !0)), d.length > 1 && t.navigationMode === "linear" && (m.right = m.right || m.down, m.left = m.left || m.up), a === !0) { - let b = L.availableRoutes(); + if (t.loop && (d.length > 1 && (m.left = !0, m.right = !0), v.length > 1 && (m.up = !0, m.down = !0)), d.length > 1 && t.navigationMode === "linear" && (m.right = m.right || m.down, m.left = m.left || m.up), n === !0) { + let b = C.availableRoutes(); m.left = m.left || b.prev, m.up = m.up || b.prev, m.down = m.down || b.next, m.right = m.right || b.next; } if (t.rtl) { @@ -2925,273 +3007,268 @@ function Ot(h, e) { } return m; } - function ut(a = f) { - let d = ee(), p = 0; + function lt(n = f) { + let d = ee(), v = 0; e: for (let m = 0; m < d.length; m++) { - let b = d[m], C = b.querySelectorAll("section"); - for (let T = 0; T < C.length; T++) { - if (C[T] === a) + let b = d[m], L = b.querySelectorAll("section"); + for (let T = 0; T < L.length; T++) { + if (L[T] === n) break e; - C[T].dataset.visibility !== "uncounted" && p++; + L[T].dataset.visibility !== "uncounted" && v++; } - if (b === a) + if (b === n) break; - b.classList.contains("stack") === !1 && b.dataset.visibility !== "uncounted" && p++; + b.classList.contains("stack") === !1 && b.dataset.visibility !== "uncounted" && v++; } - return p; + return v; } - function li() { - let a = mt(), d = ut(); + function ti() { + let n = ft(), d = lt(); if (f) { - let p = f.querySelectorAll(".fragment"); - if (p.length > 0) { + let v = f.querySelectorAll(".fragment"); + if (v.length > 0) { let m = f.querySelectorAll(".fragment.visible"); - d += m.length / p.length * 0.9; + d += m.length / v.length * 0.9; } } - return Math.min(d / (a - 1), 1); + return Math.min(d / (n - 1), 1); } - function ft(a) { - let d = n, p = o, m; - if (a) + function dt(n) { + let d = a, v = o, m; + if (n) if (R.isActive()) - d = parseInt(a.getAttribute("data-index-h"), 10), a.getAttribute("data-index-v") && (p = parseInt(a.getAttribute("data-index-v"), 10)); + d = parseInt(n.getAttribute("data-index-h"), 10), n.getAttribute("data-index-v") && (v = parseInt(n.getAttribute("data-index-v"), 10)); else { - let b = ge(a), C = b ? a.parentNode : a, T = ee(); - d = Math.max(T.indexOf(C), 0), p = void 0, b && (p = Math.max(E(a.parentNode, "section").indexOf(a), 0)); + let b = ge(n), L = b ? n.parentNode : n, T = ee(); + d = Math.max(T.indexOf(L), 0), v = void 0, b && (v = Math.max(E(n.parentNode, "section").indexOf(n), 0)); } - if (!a && f && f.querySelectorAll(".fragment").length > 0) { - let C = f.querySelector(".current-fragment"); - C && C.hasAttribute("data-fragment-index") ? m = parseInt(C.getAttribute("data-fragment-index"), 10) : m = f.querySelectorAll(".fragment.visible").length - 1; + if (!n && f && f.querySelectorAll(".fragment").length > 0) { + let L = f.querySelector(".current-fragment"); + L && L.hasAttribute("data-fragment-index") ? m = parseInt(L.getAttribute("data-fragment-index"), 10) : m = f.querySelectorAll(".fragment.visible").length - 1; } - return { h: d, v: p, f: m }; + return { h: d, v, f: m }; } - function ze() { - return E(r.wrapper, re + ':not(.stack):not([data-visibility="uncounted"])'); + function De() { + return E(l.wrapper, re + ':not(.stack):not([data-visibility="uncounted"])'); } function ee() { - return E(r.wrapper, te); + return E(l.wrapper, te); } - function gt() { - return E(r.wrapper, ".slides>section>section"); + function ct() { + return E(l.wrapper, ".slides>section>section"); } - function di() { - return E(r.wrapper, te + ".stack"); + function ii() { + return E(l.wrapper, te + ".stack"); } - function pt() { + function ht() { return ee().length > 1; } - function vt() { - return gt().length > 1; + function ut() { + return ct().length > 1; } - function ci() { - return ze().map((a) => { + function si() { + return De().map((n) => { let d = {}; - for (let p = 0; p < a.attributes.length; p++) { - let m = a.attributes[p]; + for (let v = 0; v < n.attributes.length; v++) { + let m = n.attributes[v]; d[m.name] = m.value; } return d; }); } - function mt() { - return ze().length; + function ft() { + return De().length; } - function yt(a, d) { - let p = ee()[a], m = p && p.querySelectorAll("section"); - return m && m.length && typeof d == "number" ? m ? m[d] : void 0 : p; + function gt(n, d) { + let v = ee()[n], m = v && v.querySelectorAll("section"); + return m && m.length && typeof d == "number" ? m ? m[d] : void 0 : v; } - function hi(a, d) { - let p = typeof a == "number" ? yt(a, d) : a; - if (p) - return p.slideBackgroundElement; + function ai(n, d) { + let v = typeof n == "number" ? gt(n, d) : n; + if (v) + return v.slideBackgroundElement; } - function bt() { - let a = ft(); + function pt() { + let n = dt(); return { - indexh: a.h, - indexv: a.v, - indexf: a.f, + indexh: n.h, + indexv: n.v, + indexf: n.f, paused: ve(), overview: u.isActive() }; } - function ui(a) { - if (typeof a == "object") { - X(he(a.indexh), he(a.indexv), he(a.indexf)); - let d = he(a.paused), p = he(a.overview); - typeof d == "boolean" && d !== ve() && ot(d), typeof p == "boolean" && p !== u.isActive() && u.toggle(p); + function ni(n) { + if (typeof n == "object") { + Y(he(n.indexh), he(n.indexv), he(n.indexf)); + let d = he(n.paused), v = he(n.overview); + typeof d == "boolean" && d !== ve() && st(d), typeof v == "boolean" && v !== u.isActive() && u.toggle(v); } } function de() { if (we(), f && t.autoSlide !== !1) { - let a = f.querySelector(".current-fragment[data-autoslide]"), d = a ? a.getAttribute("data-autoslide") : null, p = f.parentNode ? f.parentNode.getAttribute("data-autoslide") : null, m = f.getAttribute("data-autoslide"); - d ? I = parseInt(d, 10) : m ? I = parseInt(m, 10) : p ? I = parseInt(p, 10) : (I = t.autoSlide, f.querySelectorAll(".fragment").length === 0 && E(f, "video, audio").forEach((b) => { + let n = f.querySelector(".current-fragment[data-autoslide]"), d = n ? n.getAttribute("data-autoslide") : null, v = f.parentNode ? f.parentNode.getAttribute("data-autoslide") : null, m = f.getAttribute("data-autoslide"); + d ? I = parseInt(d, 10) : m ? I = parseInt(m, 10) : v ? I = parseInt(v, 10) : (I = t.autoSlide, f.querySelectorAll(".fragment").length === 0 && E(f, "video, audio").forEach((b) => { b.hasAttribute("data-autoplay") && I && b.duration * 1e3 / b.playbackRate > I && (I = b.duration * 1e3 / b.playbackRate + 1e3); - })), I && !z && !ve() && !u.isActive() && (!Me() || L.availableRoutes().next || t.loop === !0) && (O = setTimeout(() => { + })), I && !z && !ve() && !u.isActive() && (!Me() || C.availableRoutes().next || t.loop === !0) && (q = setTimeout(() => { typeof t.autoSlideMethod == "function" ? t.autoSlideMethod() : Oe(), de(); - }, I), se = Date.now()), V && V.setPlaying(O !== -1); + }, I), se = Date.now()), V && V.setPlaying(q !== -1); } } function we() { - clearTimeout(O), O = -1; + clearTimeout(q), q = -1; } function Ee() { - I && !z && (z = !0, _({ type: "autoslidepaused" }), clearTimeout(O), V && V.setPlaying(!1)); + I && !z && (z = !0, _({ type: "autoslidepaused" }), clearTimeout(q), V && V.setPlaying(!1)); } function Se() { I && z && (z = !1, _({ type: "autoslideresumed" }), de()); } - function Ae({ skipFragments: a = !1 } = {}) { + function Ae({ skipFragments: n = !1 } = {}) { if (g.hasNavigatedHorizontally = !0, R.isActive()) return R.prev(); - t.rtl ? (u.isActive() || a || L.next() === !1) && J().left && X(n + 1, t.navigationMode === "grid" ? o : void 0) : (u.isActive() || a || L.prev() === !1) && J().left && X(n - 1, t.navigationMode === "grid" ? o : void 0); + t.rtl ? (u.isActive() || n || C.next() === !1) && J().left && Y(a + 1, t.navigationMode === "grid" ? o : void 0) : (u.isActive() || n || C.prev() === !1) && J().left && Y(a - 1, t.navigationMode === "grid" ? o : void 0); } - function Re({ skipFragments: a = !1 } = {}) { + function Re({ skipFragments: n = !1 } = {}) { if (g.hasNavigatedHorizontally = !0, R.isActive()) return R.next(); - t.rtl ? (u.isActive() || a || L.prev() === !1) && J().right && X(n - 1, t.navigationMode === "grid" ? o : void 0) : (u.isActive() || a || L.next() === !1) && J().right && X(n + 1, t.navigationMode === "grid" ? o : void 0); + t.rtl ? (u.isActive() || n || C.prev() === !1) && J().right && Y(a - 1, t.navigationMode === "grid" ? o : void 0) : (u.isActive() || n || C.next() === !1) && J().right && Y(a + 1, t.navigationMode === "grid" ? o : void 0); } - function Fe({ skipFragments: a = !1 } = {}) { + function ze({ skipFragments: n = !1 } = {}) { if (R.isActive()) return R.prev(); - (u.isActive() || a || L.prev() === !1) && J().up && X(n, o - 1); + (u.isActive() || n || C.prev() === !1) && J().up && Y(a, o - 1); } - function Ve({ skipFragments: a = !1 } = {}) { + function Fe({ skipFragments: n = !1 } = {}) { if (g.hasNavigatedVertically = !0, R.isActive()) return R.next(); - (u.isActive() || a || L.next() === !1) && J().down && X(n, o + 1); + (u.isActive() || n || C.next() === !1) && J().down && Y(a, o + 1); } - function wt({ skipFragments: a = !1 } = {}) { + function vt({ skipFragments: n = !1 } = {}) { if (R.isActive()) return R.prev(); - if (a || L.prev() === !1) + if (n || C.prev() === !1) if (J().up) - Fe({ skipFragments: a }); + ze({ skipFragments: n }); else { let d; - if (t.rtl ? d = E(r.wrapper, te + ".future").pop() : d = E(r.wrapper, te + ".past").pop(), d && d.classList.contains("stack")) { - let p = d.querySelectorAll("section").length - 1 || void 0, m = n - 1; - X(m, p); - } else t.rtl ? Re({ skipFragments: a }) : Ae({ skipFragments: a }); + if (t.rtl ? d = E(l.wrapper, te + ".future").pop() : d = E(l.wrapper, te + ".past").pop(), d && d.classList.contains("stack")) { + let v = d.querySelectorAll("section").length - 1 || void 0, m = a - 1; + Y(m, v); + } else t.rtl ? Re({ skipFragments: n }) : Ae({ skipFragments: n }); } } - function Oe({ skipFragments: a = !1 } = {}) { + function Oe({ skipFragments: n = !1 } = {}) { if (g.hasNavigatedHorizontally = !0, g.hasNavigatedVertically = !0, R.isActive()) return R.next(); - if (a || L.next() === !1) { + if (n || C.next() === !1) { let d = J(); - d.down && d.right && t.loop && at() && (d.down = !1), d.down ? Ve({ skipFragments: a }) : t.rtl ? Ae({ skipFragments: a }) : Re({ skipFragments: a }); + d.down && d.right && t.loop && et() && (d.down = !1), d.down ? Fe({ skipFragments: n }) : t.rtl ? Ae({ skipFragments: n }) : Re({ skipFragments: n }); } } - function fi(a) { + function ri(n) { t.autoSlideStoppable && Ee(); } - function Et(a) { - let d = a.data; + function mt(n) { + let d = n.data; if (typeof d == "string" && d.charAt(0) === "{" && d.charAt(d.length - 1) === "}" && (d = JSON.parse(d), d.method && typeof i[d.method] == "function")) - if (Li.test(d.method) === !1) { - const p = i[d.method].apply(i, d.args); - Je("callback", { method: d.method, result: p }); + if (bi.test(d.method) === !1) { + const v = i[d.method].apply(i, d.args); + Ge("callback", { method: d.method, result: v }); } else console.warn('reveal.js: "' + d.method + '" is is blacklisted from the postMessage API'); } - function St(a) { - A === "running" && /section/gi.test(a.target.nodeName) && (A = "idle", _({ + function yt(n) { + A === "running" && /section/gi.test(n.target.nodeName) && (A = "idle", _({ type: "slidetransitionend", - data: { indexh: n, indexv: o, previousSlide: c, currentSlide: f } + data: { indexh: a, indexv: o, previousSlide: c, currentSlide: f } })); } - function At(a) { - const d = F(a.target, 'a[href^="#"]'); + function bt(n) { + const d = O(n.target, 'a[href^="#"]'); if (d) { - const p = d.getAttribute("href"), m = x.getIndicesFromHash(p); - m && (i.slide(m.h, m.v, m.f), a.preventDefault()); + const v = d.getAttribute("href"), m = x.getIndicesFromHash(v); + m && (i.slide(m.h, m.v, m.f), n.preventDefault()); } } - function Rt(a) { + function wt(n) { le(); } - function kt(a) { + function Et(n) { document.hidden === !1 && document.activeElement !== document.body && (typeof document.activeElement.blur == "function" && document.activeElement.blur(), document.body.focus()); } - function ke(a) { - (document.fullscreenElement || document.webkitFullscreenElement) === r.wrapper && (a.stopImmediatePropagation(), setTimeout(() => { + function ke(n) { + (document.fullscreenElement || document.webkitFullscreenElement) === l.wrapper && (n.stopImmediatePropagation(), setTimeout(() => { i.layout(), i.focus.focus(); }, 1)); } - function Lt(a) { - if (a.currentTarget && a.currentTarget.hasAttribute("href")) { - let d = a.currentTarget.getAttribute("href"); - d && (Ze(d), a.preventDefault()); - } + function oi(n) { + Me() && t.loop === !1 ? (Y(0, 0), Se()) : z ? Se() : Ee(); } - function gi(a) { - Me() && t.loop === !1 ? (X(0, 0), Se()) : z ? Se() : Ee(); - } - const Ct = { - VERSION: Vt, - initialize: Ut, + const St = { + VERSION: Nt, + initialize: Dt, configure: Ke, - destroy: Qt, - sync: lt, - syncSlide: ri, - syncFragments: L.sync.bind(L), + destroy: _t, + sync: at, + syncSlide: Zt, + syncFragments: C.sync.bind(C), // Navigation methods - slide: X, + slide: Y, left: Ae, right: Re, - up: Fe, - down: Ve, - prev: wt, + up: ze, + down: Fe, + prev: vt, next: Oe, // Navigation aliases navigateLeft: Ae, navigateRight: Re, - navigateUp: Fe, - navigateDown: Ve, - navigatePrev: wt, + navigateUp: ze, + navigateDown: Fe, + navigatePrev: vt, navigateNext: Oe, // Fragment methods - navigateFragment: L.goto.bind(L), - prevFragment: L.prev.bind(L), - nextFragment: L.next.bind(L), + navigateFragment: C.goto.bind(C), + prevFragment: C.prev.bind(C), + nextFragment: C.next.bind(C), // Event binding - on: Xe, - off: Ye, + on: $e, + off: Xe, // Legacy event binding methods left in for backwards compatibility - addEventListener: Xe, - removeEventListener: Ye, + addEventListener: $e, + removeEventListener: Xe, // Forces an update in slide layout layout: le, // Randomizes the order of slides - shuffle: He, + shuffle: Be, // Returns an object with the available routes as booleans (left/right/top/bottom) availableRoutes: J, // Returns an object with the available fragments as booleans (prev/next) - availableFragments: L.availableRoutes.bind(L), + availableFragments: C.availableRoutes.bind(C), // Toggles a help overlay with keyboard shortcuts - toggleHelp: Zt, + toggleHelp: F.toggleHelp.bind(F), // Toggles the overview mode on/off toggleOverview: u.toggle.bind(u), // Toggles the scroll view on/off toggleScrollView: R.toggle.bind(R), // Toggles the "black screen" mode on/off - togglePause: ot, + togglePause: st, // Toggles the auto slide mode on/off - toggleAutoSlide: si, + toggleAutoSlide: Gt, // Toggles visibility of the jump-to-slide UI - toggleJumpToSlide: ii, + toggleJumpToSlide: Yt, // Slide navigation checks - isFirstSlide: nt, + isFirstSlide: tt, isLastSlide: Me, - isLastVerticalSlide: at, + isLastVerticalSlide: et, isVerticalSlide: ge, - isVerticalStack: ti, + isVerticalStack: Xt, // State checks isPaused: ve, - isAutoSliding: ai, - isSpeakerNotes: K.isSpeakerNotesWindow.bind(K), + isAutoSliding: Jt, + isSpeakerNotes: $.isSpeakerNotesWindow.bind($), isOverview: u.isActive.bind(u), isFocused: ae.isFocused.bind(ae), + isOverlayOpen: F.isOpen.bind(F), isScrollView: R.isActive.bind(R), isPrintView: D.isActive.bind(D), // Checks if reveal.js has been loaded and is ready for use - isReady: () => l, + isReady: () => r, // Slide preloading loadSlide: k.load.bind(k), unloadSlide: k.unload.bind(k), @@ -3199,49 +3276,52 @@ function Ot(h, e) { startEmbeddedContent: () => k.startEmbeddedContent(f), stopEmbeddedContent: () => k.stopEmbeddedContent(f, { unloadIframes: !1 }), // Preview management - showPreview: Ze, - hidePreview: G, + showIframePreview: F.showIframePreview.bind(F), + showMediaPreview: F.showMediaPreview.bind(F), + showPreview: F.showIframePreview.bind(F), + // deprecated in favor of showIframePreview + hidePreview: F.close.bind(F), // Adds or removes all internal event listeners - addEventListeners: $e, + addEventListeners: _e, removeEventListeners: ye, dispatchEvent: _, // Facility for persisting and restoring the presentation state - getState: bt, - setState: ui, + getState: pt, + setState: ni, // Presentation progress on range of 0-1 - getProgress: li, + getProgress: ti, // Returns the indices of the current, or specified, slide - getIndices: ft, + getIndices: dt, // Returns an Array of key:value maps of the attributes of each // slide in the deck - getSlidesAttributes: ci, + getSlidesAttributes: si, // Returns the number of slides that we have passed - getSlidePastCount: ut, + getSlidePastCount: lt, // Returns the total number of slides - getTotalSlides: mt, + getTotalSlides: ft, // Returns the slide element at the specified index - getSlide: yt, + getSlide: gt, // Returns the previous slide element, may be null getPreviousSlide: () => c, // Returns the current slide element getCurrentSlide: () => f, // Returns the slide background element at the specified index - getSlideBackground: hi, + getSlideBackground: ai, // Returns the speaker notes string for a slide, or null - getSlideNotes: K.getSlideNotes.bind(K), + getSlideNotes: $.getSlideNotes.bind($), // Returns an Array of all slides - getSlides: ze, + getSlides: De, // Returns an array with all horizontal/vertical slides in the deck getHorizontalSlides: ee, - getVerticalSlides: gt, + getVerticalSlides: ct, // Checks if the presentation contains two or more horizontal // and vertical slides - hasHorizontalSlides: pt, - hasVerticalSlides: vt, + hasHorizontalSlides: ht, + hasVerticalSlides: ut, // Checks if the deck has navigated on either axis at least once hasNavigatedHorizontally: () => g.hasNavigatedHorizontally, hasNavigatedVertically: () => g.hasNavigatedVertically, - shouldAutoAnimateBetween: Be, + shouldAutoAnimateBetween: Ne, // Adds/removes a custom key binding addKeyBinding: S.addKeyBinding.bind(S), removeKeyBinding: S.removeKeyBinding.bind(S), @@ -3250,19 +3330,19 @@ function Ot(h, e) { // Registers a new shortcut to include in the help overlay registerKeyboardShortcut: S.registerKeyboardShortcut.bind(S), getComputedSlideSize: be, - setCurrentScrollPage: ni, + setCurrentScrollPage: Qt, // Returns the current scale of the presentation content getScale: () => y, // Returns the current configuration object getConfig: () => t, // Helper method, retrieves query string as a key:value map - getQueryHash: xt, + getQueryHash: Rt, // Returns the path to the current slide as represented in the URL getSlidePath: x.getHash.bind(x), // Returns reveal.js DOM elements getRevealElement: () => h, - getSlidesElement: () => r.slides, - getViewportElement: () => r.viewport, + getSlidesElement: () => l.slides, + getViewportElement: () => l.viewport, getBackgroundsElement: () => P.element, // API for registering and retrieving plugins registerPlugin: H.registerPlugin.bind(H), @@ -3271,41 +3351,42 @@ function Ot(h, e) { getPlugins: H.getRegisteredPlugins.bind(H) }; return ue(i, { - ...Ct, + ...St, // Methods for announcing content to screen readers announceStatus: Te, getStatusText: me, // Controllers focus: ae, scroll: R, - progress: j, - controls: $, + progress: K, + controls: X, location: x, overview: u, - fragments: L, + keyboard: S, + fragments: C, backgrounds: P, slideContent: k, - slideNumber: N, - onUserInput: fi, - closeOverlay: G, - updateSlidesVisibility: De, - layoutSlideContents: tt, + slideNumber: M, + onUserInput: ri, + closeOverlay: F.close.bind(F), + updateSlidesVisibility: He, + layoutSlideContents: Je, transformSlides: Ie, cueAutoSlide: de, cancelAutoSlide: we - }), Ct; + }), St; } -let oe = Ot, qt = []; -oe.initialize = (h) => (Object.assign(oe, new Ot(document.querySelector(".reveal"), h)), qt.map((e) => e(oe)), oe.initialize()); +let oe = Bt, Ht = []; +oe.initialize = (h) => (Object.assign(oe, new Bt(document.querySelector(".reveal"), h)), Ht.map((e) => e(oe)), oe.initialize()); ["configure", "on", "off", "addEventListener", "removeEventListener", "registerPlugin"].forEach( (h) => { oe[h] = (...e) => { - qt.push((i) => i[h].call(null, ...e)); + Ht.push((i) => i[h].call(null, ...e)); }; } ); oe.isReady = () => !1; -oe.VERSION = Vt; +oe.VERSION = Nt; export { oe as default }; diff --git a/package-lock.json b/package-lock.json index 1555335d..aaff5849 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1934,9 +1934,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "dependencies": { "path-key": "^3.1.0", @@ -2755,9 +2755,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -3629,9 +3629,9 @@ "dev": true }, "node_modules/vite": { - "version": "5.4.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", - "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "version": "5.4.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", + "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", "dev": true, "dependencies": { "esbuild": "^0.21.3",