CoreLightning-Core-Architec.../dist/assets/index.bbf1bd16.js

1202 lines
1.2 MiB
JavaScript
Raw Normal View History

(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const E of document.querySelectorAll('link[rel="modulepreload"]'))d(E);new MutationObserver(E=>{for(const N of E)if(N.type==="childList")for(const v of N.addedNodes)v.tagName==="LINK"&&v.rel==="modulepreload"&&d(v)}).observe(document,{childList:!0,subtree:!0});function r(E){const N={};return E.integrity&&(N.integrity=E.integrity),E.referrerpolicy&&(N.referrerPolicy=E.referrerpolicy),E.crossorigin==="use-credentials"?N.credentials="include":E.crossorigin==="anonymous"?N.credentials="omit":N.credentials="same-origin",N}function d(E){if(E.ep)return;E.ep=!0;const N=r(E);fetch(E.href,N)}})();function et(){}function fi(f){return f()}function oi(){return Object.create(null)}function ca(f){f.forEach(fi)}function Ti(f){return typeof f=="function"}function zt(f,n){return f!=f?n==n:f!==n||f&&typeof f=="object"||typeof f=="function"}function wo(f){return Object.keys(f).length===0}function xo(f,n){f.appendChild(n)}function bt(f,n,r){f.insertBefore(n,r||null)}function St(f){f.parentNode&&f.parentNode.removeChild(f)}function Ht(f){return document.createElement(f)}function Mo(f){return document.createTextNode(f)}function dn(){return Mo(" ")}function li(f,n,r){r==null?f.removeAttribute(n):f.getAttribute(n)!==r&&f.setAttribute(n,r)}function Lo(f){return Array.from(f.childNodes)}let yn;function Nn(f){yn=f}function ko(){if(!yn)throw new Error("Function called outside component initialization");return yn}function Po(f){ko().$$.on_mount.push(f)}const _n=[],ci=[];let mn=[];const di=[],vi=Promise.resolve();let Pa=!1;function Ci(){Pa||(Pa=!0,vi.then(Ri))}function Uo(){return Ci(),vi}function Ua(f){mn.push(f)}const xa=new Set;let cn=0;function Ri(){if(cn!==0)return;const f=yn;do{try{for(;cn<_n.length;){const n=_n[cn];cn++,Nn(n),Fo(n.$$)}}catch(n){throw _n.length=0,cn=0,n}for(Nn(null),_n.length=0,cn=0;ci.length;)ci.pop()();for(let n=0;n<mn.length;n+=1){const r=mn[n];xa.has(r)||(xa.add(r),r())}mn.length=0}while(_n.length);for(;di.length;)di.pop()();Pa=!1,xa.clear(),Nn(f)}function Fo(f){if(f.fragment!==null){f.update(),ca(f.before_update);const n=f.dirty;f.dirty=[-1],f.fragment&&f.fragment.p(f.ctx,n),f.after_update.forEach(Ua)}}function Bo(f){const n=[],r=[];mn.forEach(d=>f.indexOf(d)===-1?n.push(d):r.push(d)),r.forEach(d=>d()),mn=n}const sa=new Set;let Go;function Ft(f,n){f&&f.i&&(sa.delete(f),f.i(n))}function Zt(f,n,r,d){if(f&&f.o){if(sa.has(f))return;sa.add(f),Go.c.push(()=>{sa.delete(f),d&&(r&&f.d(1),d())}),f.o(n)}else d&&d()}function Jt(f){f&&f.c()}function Bt(f,n,r,d){const{fragment:E,after_update:N}=f.$$;E&&E.m(n,r),d||Ua(()=>{const v=f.$$.on_mount.map(fi).filter(Ti);f.$$.on_destroy?f.$$.on_destroy.push(...v):ca(v),f.$$.on_mount=[]}),N.forEach(Ua)}function Gt(f,n){const r=f.$$;r.fragment!==null&&(Bo(r.after_update),ca(r.on_destroy),r.fragment&&r.fragment.d(n),r.on_destroy=r.fragment=null,r.ctx=[])}function Yo(f,n){f.$$.dirty[0]===-1&&(_n.push(f),Ci(),f.$$.dirty.fill(0)),f.$$.dirty[n/31|0]|=1<<n%31}function qt(f,n,r,d,E,N,v,A=[-1]){const C=yn;Nn(f);const Z=f.$$={fragment:null,ctx:[],props:N,update:et,not_equal:E,bound:oi(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(n.context||(C?C.$$.context:[])),callbacks:oi(),dirty:A,skip_bound:!1,root:n.target||C.$$.root};v&&v(Z.root);let j=!1;if(Z.ctx=r?r(f,n.props||{},(V,X,...$)=>{const h=$.length?$[0]:X;return Z.ctx&&E(Z.ctx[V],Z.ctx[V]=h)&&(!Z.skip_bound&&Z.bound[V]&&Z.bound[V](h),j&&Yo(f,V)),X}):[],Z.update(),j=!0,ca(Z.before_update),Z.fragment=d?d(Z.ctx):!1,n.target){if(n.hydrate){const V=Lo(n.target);Z.fragment&&Z.fragment.l(V),V.forEach(St)}else Z.fragment&&Z.fragment.c();n.intro&&Ft(f.$$.fragment),Bt(f,n.target,n.anchor,n.customElement),Ri()}Nn(C)}class Vt{$destroy(){Gt(this,1),this.$destroy=et}$on(n,r){if(!Ti(r))return et;const d=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return d.push(r),()=>{const E=d.indexOf(r);E!==-1&&d.splice(E,1)}}$set(n){this.$$set&&!wo(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}}/*!
* reveal.js 4.6.0
* https://revealjs.com
* MIT licensed
*
* Copyright (C) 2011-2023 Hakim El Hattab, https://hakim.se
*/const pn=(f,n)=>{for(let r in n)f[r]=n[r];return f},Se=(f,n)=>Array.from(f.querySelectorAll(n)),Ma=(f,n,r)=>{r?f.classList.add(n):f.classList.remove(n)},un=f=>{if(typeof f=="string"){if(f==="null")return null;if(f==="true")return!0;if(f==="false")return!1;if(f.match(/^-?[\d\.]+$/))return parseFloat(f)}return f},Yt=(f,n)=>{f.style.transform=n},oa=(f,n)=>{let r=f.matches||f.matchesSelector||f.msMatchesSelector;return!(!r||!r.call(f,n))},ut=(f,n)=>{if(typeof f.closest=="function")return f.closest(n);for(;f;){if(oa(f,n))return f;f=f.parentNode}return null},Ho=(f,n,r,d="")=>{let E=f.querySelectorAll("."+r);for(let v=0;v<E.length;v++){let A=E[v];if(A.parentNode===f)return A}let N=document.createElement(n);return N.className=r,N.innerHTML=d,f.appendChild(N),N},Fa=f=>{let n=document.createElement("style");return n.type="text/css",f&&f.length>0&&(n.styleSheet?n.styleSheet.cssText=f:n.appendChild(document.createTextNode(f))),document.head.appendChild(n),n},_i=()=>{let f={};location.search.replace(/[A-Z0-9]+?=([\w\.%-]*)/gi,n=>{f[n.split("=").shift()]=n.split("=").pop()});for(let n in f){let r=f[n];f[n]=un(unescape(r))}return f.dependencies!==void 0&&delete f.dependencies,f},zo=(f,n=0)=>{if(f){let r,d=f.style.height;return f.style.height="0px",f.parentNode.style.height="auto",r=n-f.parentNode.offsetHeight,f.style.height=d+"px",f.parentNode.style.removeProperty("height"),r}return n},qo={mp4:"video/mp4",m4a:"video/mp4",ogv:"video/ogg",mpeg:"video/mpeg",webm:"video/webm"},la=navigator.userAgent,gn=/(iphone|ipod|ipad|android)/gi.test(la)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1;/chrome/i.test(la)&&/edge/i.test(la);const Ni=/android/gi.test(la);var yi={};Object.defineProperty(yi,"__esModule",{value:!0});var ui=Object.assign||function(f){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var d in r)Object.prototype.hasOwnProperty.call(r,d)&&(f[d]=r[d])}return f},Vo=yi.default=function(f){if(f){var n=function(z){return[].slice.call(z)},r=0,d=1,E=2,N=3,v=[],A=null,C="requestAnimationFrame"in f?function(){f.cancelAnimationFrame(A),A=f.requestAnimationFrame(function(){return j(v.filter(function(z){return z.dirty&&z.active}))})}:function(){},Z=function(z){return function(){v.forEach(function(k){return k.dirty=z}),C()}},j=function(z){z.filter(function(x){return!x.styleComputed}).forEach(function(x){x.styleComputed=h(x)}),z.filter(ye).forEach(Me);var k=z.filter($);k.forEach(X),k.forEach(function(x){Me(x),V(x)}),k.forEach(tt)},V=function(z){return z.dirty=r},X=function(z){z.availableWidth=z.element.parentNode.clientWidth,z.currentWidth=z.element.scrollWidth,z.previousFontSize=z.currentFontSize,z.currentFontSize=Math.min(Math.max(z.minSize,z.availableWidth/z.currentWidth*z.previousFontSize),z.maxSize),z.whiteSpace=z.multiLine&&z.currentFontSize===z.minSize?"normal":"nowrap"},$=function(z){return z.dirty!==E||z.dirty===E&&z.element.parentNode.clientWidth!==z.availableWidth},h=function(z){var k=f.getComputedStyle(z.element,null);z.currentFontSize=parseFloat(k.getPropertyValue("font-size")),z.display=k.getPropertyValue("display"),z.whiteSpace=k.getPropertyValue("white-space")},ye=function(z){var k=!1;return!z.preStyleTestCompleted&&(/inline-/.test(z.display)||(k=!0,z.display="inline-block"),z.whiteSpace!=="nowrap"&&(k=!0,z.whiteSpace="nowrap"),z.preStyleTestCompleted=!0,k)},Me=function(z){z.element.style.whiteSpace=z.whiteSpace,z.element.style.display=z.display,z.element.style.fontSize=z.currentFontSize+"px"},tt=function(z){z.element.dispatchEvent(new CustomEvent("fit",{detail:{oldValue:z.previousFontSize,newValue:z.currentFontSize,scaleFactor:z.currentFontSize/z.previousFontSize}}))},je=function(z,k){return function(){z.dirty=k,z.active&&C()}},Qe=function(z){return function(){v=v.filter(function(k){return k.element!==z.element}),z.observeMutations&&z.observer.disconnect(),z.element.style.whiteSpace=z.originalStyle.whiteSpace,z.element.style.display=z.originalStyle.display,z.element.style.fontSize=z.originalStyle.fontSize}},we=function(z){return function(){z.active||(z.active=!0,C())}},ke=function(z){return function(){
<span class="slide-number-a">${n}</span>
</a>`:`<a href="${E}">
<span class="slide-number-a">${n}</span>
<span class="slide-number-delimiter">${r}</span>
<span class="slide-number-b">${d}</span>
</a>`}destroy(){this.element.remove()}}class Qo{constructor(n){this.Reveal=n,this.onInput=this.onInput.bind(this),this.onBlur=this.onBlur.bind(this),this.onKeyDown=this.onKeyDown.bind(this)}render(){this.element=document.createElement("div"),this.element.className="jump-to-slide",this.jumpInput=document.createElement("input"),this.jumpInput.type="text",this.jumpInput.className="jump-to-slide-input",this.jumpInput.placeholder="Jump to slide",this.jumpInput.addEventListener("input",this.onInput),this.jumpInput.addEventListener("keydown",this.onKeyDown),this.jumpInput.addEventListener("blur",this.onBlur),this.element.appendChild(this.jumpInput)}show(){this.indicesOnShow=this.Reveal.getIndices(),this.Reveal.getRevealElement().appendChild(this.element),this.jumpInput.focus()}hide(){this.isVisible()&&(this.element.remove(),this.jumpInput.value="",clearTimeout(this.jumpTimeout),delete this.jumpTimeout)}isVisible(){return!!this.element.parentNode}jump(){clearTimeout(this.jumpTimeout),delete this.jumpTimeout;const n=this.jumpInput.value.trim("");let r=this.Reveal.location.getIndicesFromHash(n,{oneBasedIndex:!0});return!r&&/\S+/i.test(n)&&n.length>1&&(r=this.search(n)),r&&n!==""?(this.Reveal.slide(r.h,r.v,r.f),!0):(this.Reveal.slide(this.indicesOnShow.h,this.indicesOnShow.v,this.indicesOnShow.f),!1)}jumpAfter(n){clearTimeout(this.jumpTimeout),this.jumpTimeout=setTimeout(()=>this.jump(),n)}search(n){const r=new RegExp("\\b"+n.trim()+"\\b","i"),d=this.Reveal.getSlides().find(E=>r.test(E.innerText));return d?this.Reveal.getIndices(d):null}cancel(){this.Reveal.slide(this.indicesOnShow.h,this.indicesOnShow.v,this.indicesOnShow.f),this.hide()}confirm(){this.jump(),this.hide()}destroy(){this.jumpInput.removeEventListener("input",this.onInput),this.jumpInput.removeEventListener("keydown",this.onKeyDown),this.jumpInput.removeEventListener("blur",this.onBlur),this.element.remove()}onKeyDown(n){n.keyCode===13?this.confirm():n.keyCode===27&&(this.cancel(),n.stopImmediatePropagation())}onInput(n){this.jumpAfter(200)}onBlur(){setTimeout(()=>this.hide(),1)}}const La=f=>{let n=f.match(/^#([0-9a-f]{3})$/i);if(n&&n[1])return n=n[1],{r:17*parseInt(n.charAt(0),16),g:17*parseInt(n.charAt(1),16),b:17*parseInt(n.charAt(2),16)};let r=f.match(/^#([0-9a-f]{6})$/i);if(r&&r[1])return r=r[1],{r:parseInt(r.slice(0,2),16),g:parseInt(r.slice(2,4),16),b:parseInt(r.slice(4,6),16)};let d=f.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i);if(d)return{r:parseInt(d[1],10),g:parseInt(d[2],10),b:parseInt(d[3],10)};let E=f.match(/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\,\s*([\d]+|[\d]*.[\d]+)\s*\)$/i);return E?{r:parseInt(E[1],10),g:parseInt(E[2],10),b:parseInt(E[3],10),a:parseFloat(E[4])}:null};class Ko{constructor(n){this.Reveal=n}render(){this.element=document.createElement("div"),this.element.className="backgrounds",this.Reveal.getRevealElement().appendChild(this.element)}create(){this.element.innerHTML="",this.element.classList.add("no-transition"),this.Reveal.getHorizontalSlides().forEach(n=>{let r=this.createBackground(n,this.element);Se(n,"section").forEach(d=>{this.createBackground(d,r),r.classList.add("stack")})}),this.Reveal.getConfig().parallaxBackgroundImage?(this.element.style.backgroundImage='url("'+this.Reveal.getConfig().parallaxBackgroundImage+'")',this.element.style.backgroundSize=this.Reveal.getConfig().parallaxBackgroundSize,this.element.style.backgroundRepeat=this.Reveal.getConfig().parallaxBackgroundRepeat,this.element.style.backgroundPosition=this.Reveal.getConfig().parallaxBackgroundPosition,setTimeout(()=>{this.Reveal.getRevealElement().classList.add("has-parallax-background")},1)):(this.element.style.backgroundImage="",this.Reveal.getRevealElement().classList.remove("has-parallax-background"))}createBackground(n,r){let d=document.createElement("div");d.className="slide-background "+n.className.replace(/present|past|future/,"");let E=document.createElement("div");return E.className="slide-background-content",d.appendChild(E),r.appendChild(d),n.slideBackgroundElement=d,n.slideBackgroundContentElement=E,this.sync(n),d}sync(n){
<button class="navigate-right" aria-label="${n?"previous slide":"next slide"}"><div class="controls-arrow"></div></button>
<button class="navigate-up" aria-label="above slide"><div class="controls-arrow"></div></button>
<button class="navigate-down" aria-label="below slide"><div class="controls-arrow"></div></button>`,this.Reveal.getRevealElement().appendChild(this.element),this.controlsLeft=Se(r,".navigate-left"),this.controlsRight=Se(r,".navigate-right"),this.controlsUp=Se(r,".navigate-up"),this.controlsDown=Se(r,".navigate-down"),this.controlsPrev=Se(r,".navigate-prev"),this.controlsNext=Se(r,".navigate-next"),this.controlsRightArrow=this.element.querySelector(".navigate-right"),this.controlsLeftArrow=this.element.querySelector(".navigate-left"),this.controlsDownArrow=this.element.querySelector(".navigate-down")}configure(n,r){this.element.style.display=n.controls?"block":"none",this.element.setAttribute("data-controls-layout",n.controlsLayout),this.element.setAttribute("data-controls-back-arrows",n.controlsBackArrows)}bind(){let n=["touchstart","click"];Ni&&(n=["touchstart"]),n.forEach(r=>{this.controlsLeft.forEach(d=>d.addEventListener(r,this.onNavigateLeftClicked,!1)),this.controlsRight.forEach(d=>d.addEventListener(r,this.onNavigateRightClicked,!1)),this.controlsUp.forEach(d=>d.addEventListener(r,this.onNavigateUpClicked,!1)),this.controlsDown.forEach(d=>d.addEventListener(r,this.onNavigateDownClicked,!1)),this.controlsPrev.forEach(d=>d.addEventListener(r,this.onNavigatePrevClicked,!1)),this.controlsNext.forEach(d=>d.addEventListener(r,this.onNavigateNextClicked,!1))})}unbind(){["touchstart","click"].forEach(n=>{this.controlsLeft.forEach(r=>r.removeEventListener(n,this.onNavigateLeftClicked,!1)),this.controlsRight.forEach(r=>r.removeEventListener(n,this.onNavigateRightClicked,!1)),this.controlsUp.forEach(r=>r.removeEventListener(n,this.onNavigateUpClicked,!1)),this.controlsDown.forEach(r=>r.removeEventListener(n,this.onNavigateDownClicked,!1)),this.controlsPrev.forEach(r=>r.removeEventListener(n,this.onNavigatePrevClicked,!1)),this.controlsNext.forEach(r=>r.removeEventListener(n,this.onNavigateNextClicked,!1))})}update(){let n=this.Reveal.availableRoutes();[...this.controlsLeft,...this.controlsRight,...this.controlsUp,...this.controlsDown,...this.controlsPrev,...this.controlsNext].forEach(d=>{d.classList.remove("enabled","fragmented"),d.setAttribute("disabled","disabled")}),n.left&&this.controlsLeft.forEach(d=>{d.classList.add("enabled"),d.removeAttribute("disabled")}),n.right&&this.controlsRight.forEach(d=>{d.classList.add("enabled"),d.removeAttribute("disabled")}),n.up&&this.controlsUp.forEach(d=>{d.classList.add("enabled"),d.removeAttribute("disabled")}),n.down&&this.controlsDown.forEach(d=>{d.classList.add("enabled"),d.removeAttribute("disabled")}),(n.left||n.up)&&this.controlsPrev.forEach(d=>{d.classList.add("enabled"),d.removeAttribute("disabled")}),(n.right||n.down)&&this.controlsNext.forEach(d=>{d.classList.add("enabled"),d.removeAttribute("disabled")});let r=this.Reveal.getCurrentSlide();if(r){let d=this.Reveal.fragments.availableRoutes();d.prev&&this.controlsPrev.forEach(E=>{E.classList.add("fragmented","enabled"),E.removeAttribute("disabled")}),d.next&&this.controlsNext.forEach(E=>{E.classList.add("fragmented","enabled"),E.removeAttribute("disabled")}),this.Reveal.isVerticalSlide(r)?(d.prev&&this.controlsUp.forEach(E=>{E.classList.add("fragmented","enabled"),E.removeAttribute("disabled")}),d.next&&this.controlsDown.forEach(E=>{E.classList.add("fragmented","enabled"),E.removeAttribute("disabled")})):(d.prev&&this.controlsLeft.forEach(E=>{E.classList.add("fragmented","enabled"),E.removeAttribute("disabled")}),d.next&&this.controlsRight.forEach(E=>{E.classList.add("fragmented","enabled"),E.removeAttribute("disabled")}))}if(this.Reveal.getConfig().controlsTutorial){let d=this.Reveal.getIndices();!this.Reveal.hasNavigatedVertically()&&n.down?this.controlsDownArrow.classList.add("highlight"):(this.controlsDownArrow.classList.remove("highlight"),this.Reveal.getConfig().rtl?!this.Reveal.hasNavigatedHorizontally()&&n.left&&d.v===0?this.controlsLeftArrow.classList.add("highlight"):this.controlsLeftArrow.classList.remove("highlight"):!this.Reveal.hasNavigatedHorizontally()&&n.right&&d.v===0?this.controlsRightArrow.classList.a
`+E))});const d=document.querySelector("head");d.insertBefore(r,d.lastChild)};class rl{constructor(n){this.Reveal=n,this.state="idle",this.registeredPlugins={},this.asyncDependencies=[]}load(n,r){return this.state="loading",n.forEach(this.registerPlugin.bind(this)),new Promise(d=>{let E=[],N=0;if(r.forEach(v=>{v.condition&&!v.condition()||(v.async?this.asyncDependencies.push(v):E.push(v))}),E.length){N=E.length;const v=A=>{A&&typeof A.callback=="function"&&A.callback(),--N==0&&this.initPlugins().then(d)};E.forEach(A=>{typeof A.id=="string"?(this.registerPlugin(A),v(A)):typeof A.src=="string"?Ei(A.src,()=>v(A)):(console.warn("Unrecognized plugin format",A),v())})}else this.initPlugins().then(d)})}initPlugins(){return new Promise(n=>{let r=Object.values(this.registeredPlugins),d=r.length;if(d===0)this.loadAsync().then(n);else{let E,N=()=>{--d==0?this.loadAsync().then(n):E()},v=0;E=()=>{let A=r[v++];if(typeof A.init=="function"){let C=A.init(this.Reveal);C&&typeof C.then=="function"?C.then(N):N()}else N()},E()}})}loadAsync(){return this.state="loaded",this.asyncDependencies.length&&this.asyncDependencies.forEach(n=>{Ei(n.src,n.callback)}),Promise.resolve()}registerPlugin(n){arguments.length===2&&typeof arguments[0]=="string"?(n=arguments[1]).id=arguments[0]:typeof n=="function"&&(n=n());let r=n.id;typeof r!="string"?console.warn("Unrecognized plugin format; can't find plugin.id",n):this.registeredPlugins[r]===void 0?(this.registeredPlugins[r]=n,this.state==="loaded"&&typeof n.init=="function"&&n.init(this.Reveal)):console.warn('reveal.js: "'+r+'" plugin has already been registered')}hasPlugin(n){return!!this.registeredPlugins[n]}getPlugin(n){return this.registeredPlugins[n]}getRegisteredPlugins(){return this.registeredPlugins}destroy(){Object.values(this.registeredPlugins).forEach(n=>{typeof n.destroy=="function"&&n.destroy()}),this.registeredPlugins={},this.asyncDependencies=[]}}class sl{constructor(n){this.Reveal=n}async setupPDF(){const n=this.Reveal.getConfig(),r=Se(this.Reveal.getRevealElement(),en),d=n.slideNumber&&/all|print/i.test(n.showSlideNumber),E=this.Reveal.getComputedSlideSize(window.innerWidth,window.innerHeight),N=Math.floor(E.width*(1+n.margin)),v=Math.floor(E.height*(1+n.margin)),A=E.width,C=E.height;await new Promise(requestAnimationFrame),Fa("@page{size:"+N+"px "+v+"px; margin: 0px;}"),Fa(".reveal section>img, .reveal section>video, .reveal section>iframe{max-width: "+A+"px; max-height:"+C+"px}"),document.documentElement.classList.add("print-pdf"),document.body.style.width=N+"px",document.body.style.height=v+"px";const Z=document.querySelector(".reveal-viewport");let j;if(Z){const ye=window.getComputedStyle(Z);ye&&ye.background&&(j=ye.background)}await new Promise(requestAnimationFrame),this.Reveal.layoutSlideContents(A,C),await new Promise(requestAnimationFrame);const V=r.map(ye=>ye.scrollHeight),X=[],$=r[0].parentNode;let h=1;r.forEach(function(ye,Me){if(ye.classList.contains("stack")===!1){let tt=(N-A)/2,je=(v-C)/2;const Qe=V[Me];let we=Math.max(Math.ceil(Qe/v),1);we=Math.min(we,n.pdfMaxPagesPerSlide),(we===1&&n.center||ye.classList.contains("center"))&&(je=Math.max((v-Qe)/2,0));const ke=document.createElement("div");if(X.push(ke),ke.className="pdf-page",ke.style.height=(v+n.pdfPageHeightOffset)*we+"px",j&&(ke.style.background=j),ke.appendChild(ye),ye.style.left=tt+"px",ye.style.top=je+"px",ye.style.width=A+"px",this.Reveal.slideContent.layout(ye),ye.slideBackgroundElement&&ke.insertBefore(ye.slideBackgroundElement,ye),n.showNotes){const Re=this.Reveal.getSlideNotes(ye);if(Re){const Pe=typeof n.showNotes=="string"?n.showNotes:"inline",me=document.createElement("div");me.classList.add("speaker-notes"),me.classList.add("speaker-notes-pdf"),me.setAttribute("data-layout",Pe),me.innerHTML=Re,Pe==="separate-page"?X.push(me):(me.style.left=8+"px",me.style.bottom=8+"px",me.style.width=N-2*8+"px",ke.appendChild(me))}}if(d){const Re=document.createElement("div");Re.classList.add("slide-number"),Re.classList.add("slide-number-pdf"),Re.innerHTML=h++,ke.appendChild(Re)}if(n.pdfSeparateFragments){const Re=this.Re
`):null}destroy(){this.element.remove()}}class dl{constructor(n,r){this.diameter=100,this.diameter2=this.diameter/2,this.thickness=6,this.playing=!1,this.progress=0,this.progressOffset=1,this.container=n,this.progressCheck=r,this.canvas=document.createElement("canvas"),this.canvas.className="playback",this.canvas.width=this.diameter,this.canvas.height=this.diameter,this.canvas.style.width=this.diameter2+"px",this.canvas.style.height=this.diameter2+"px",this.context=this.canvas.getContext("2d"),this.container.appendChild(this.canvas),this.render()}setPlaying(n){const r=this.playing;this.playing=n,!r&&this.playing?this.animate():this.render()}animate(){const n=this.progress;this.progress=this.progressCheck(),n>.8&&this.progress<.2&&(this.progressOffset=this.progress),this.render(),this.playing&&requestAnimationFrame(this.animate.bind(this))}render(){let n=this.playing?this.progress:0,r=this.diameter2-this.thickness,d=this.diameter2,E=this.diameter2,N=28;this.progressOffset+=.1*(1-this.progressOffset);const v=-Math.PI/2+n*(2*Math.PI),A=-Math.PI/2+this.progressOffset*(2*Math.PI);this.context.save(),this.context.clearRect(0,0,this.diameter,this.diameter),this.context.beginPath(),this.context.arc(d,E,r+4,0,2*Math.PI,!1),this.context.fillStyle="rgba( 0, 0, 0, 0.4 )",this.context.fill(),this.context.beginPath(),this.context.arc(d,E,r,0,2*Math.PI,!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(d,E,r,A,v,!1),this.context.lineWidth=this.thickness,this.context.strokeStyle="#fff",this.context.stroke()),this.context.translate(d-14,E-14),this.playing?(this.context.fillStyle="#fff",this.context.fillRect(0,0,10,N),this.context.fillRect(18,0,10,N)):(this.context.beginPath(),this.context.translate(4,0),this.context.moveTo(0,0),this.context.lineTo(24,14),this.context.lineTo(0,N),this.context.fillStyle="#fff",this.context.fill()),this.context.restore()}on(n,r){this.canvas.addEventListener(n,r,!1)}off(n,r){this.canvas.removeEventListener(n,r,!1)}destroy(){this.playing=!1,this.canvas.parentNode&&this.container.removeChild(this.canvas)}}var _l={width:960,height:700,margin:.04,minScale:.2,maxScale:2,controls:!0,controlsTutorial:!0,controlsLayout:"bottom-right",controlsBackArrows:"faded",progress:!0,slideNumber:!1,showSlideNumber:"all",hashOneBasedIndex:!1,hash:!1,respondToHashChanges:!0,jumpToSlide:!0,history:!1,keyboard:!0,keyboardCondition:null,disableLayout:!1,overview:!0,center:!0,touch:!0,loop:!1,rtl:!1,navigationMode:"default",shuffle:!1,fragments:!0,fragmentInURL:!0,embedded:!1,help:!0,pause:!0,showNotes:!1,showHiddenSlides:!1,autoPlayMedia:null,preloadIframes:null,autoAnimate:!0,autoAnimateMatcher:null,autoAnimateEasing:"ease",autoAnimateDuration:1,autoAnimateUnmatched:!0,autoAnimateStyles:["opacity","color","background-color","padding","font-size","line-height","letter-spacing","border-width","border-color","border-radius","outline","outline-offset"],autoSlide:0,autoSlideStoppable:!0,autoSlideMethod:null,defaultTiming:null,mouseWheel:!1,previewLinks:!1,postMessage:!0,postMessageEvents:!1,focusBodyOnPageVisibilityChange:!0,transition:"slide",transitionSpeed:"default",backgroundTransition:"fade",parallaxBackgroundImage:"",parallaxBackgroundSize:"",parallaxBackgroundRepeat:"",parallaxBackgroundPosition:"",parallaxBackgroundHorizontal:null,parallaxBackgroundVertical:null,pdfMaxPagesPerSlide:Number.POSITIVE_INFINITY,pdfSeparateFragments:!0,pdfPageHeightOffset:-1,viewDistance:3,mobileViewDistance:2,display:"block",hideInactiveCursor:!0,hideCursorTime:5e3,sortFragmentsOnSync:!0,dependencies:[],plugins:[]};const Oi="4.6.0";function Ai(f,n){arguments.length<2&&(n=arguments[0],f=document.querySelector(".reveal"));const r={};let d,E,N,v,A,C={},Z=!1,j={hasNavigatedHorizontally:!1,hasNavigatedVertically:!1},V=[],X=1,$={layout:"",overview:""},h={},ye="idle",Me=0,tt=0,je=-1,Qe=!1,we=new $o(r),ke=new Wo(r),Re=new Qo(r),De=new Xo(r),Pe=new Ko(r),me=new Zo(r),Ne=new Jo(r),Be=new el(r),Ke=new tl(r),z=new nl(r),k=new al(r),x=new i
<a class="close" href="#"><span class="icon"></span></a>
<a class="external" href="${R}" target="_blank"><span class="icon"></span></a>
</header>
<div class="spinner"></div>
<div class="viewport">
<iframe src="${R}"></iframe>
<small class="viewport-inner">
<span class="x-frame-error">Unable to load iframe. This is likely due to the site's policy (x-frame-options).</span>
</small>
</div>`,h.overlay.querySelector("iframe").addEventListener("load",M=>{h.overlay.classList.add("loaded")},!1),h.overlay.querySelector(".close").addEventListener("click",M=>{ge(),M.preventDefault()},!1),h.overlay.querySelector(".external").addEventListener("click",M=>{ge()},!1)}function se(R){typeof R=="boolean"?R?Oe():ge():h.overlay?ge():Oe()}function Oe(){if(C.help){ge(),h.overlay=document.createElement("div"),h.overlay.classList.add("overlay"),h.overlay.classList.add("overlay-help"),h.wrapper.appendChild(h.overlay);let R='<p class="title">Keyboard Shortcuts</p><br/>',M=Be.getShortcuts(),ne=Be.getBindings();R+="<table><th>KEY</th><th>ACTION</th>";for(let ee in M)R+=`<tr><td>${ee}</td><td>${M[ee]}</td></tr>`;for(let ee in ne)ne[ee].key&&ne[ee].description&&(R+=`<tr><td>${ne[ee].key}</td><td>${ne[ee].description}</td></tr>`);R+="</table>",h.overlay.innerHTML=`
<header>
<a class="close" href="#"><span class="icon"></span></a>
</header>
<div class="viewport">
<div class="viewport-inner">${R}</div>
</div>
`,h.overlay.querySelector(".close").addEventListener("click",ee=>{ge(),ee.preventDefault()},!1)}}function ge(){return!!h.overlay&&(h.overlay.parentNode.removeChild(h.overlay),h.overlay=null,!0)}function Ae(){if(h.wrapper&&!st.isPrintingPDF()){if(!C.disableLayout){gn&&!C.embedded&&document.documentElement.style.setProperty("--vh",.01*window.innerHeight+"px");const R=Ue(),M=X;Ge(C.width,C.height),h.slides.style.width=R.width+"px",h.slides.style.height=R.height+"px",X=Math.min(R.presentationWidth/R.width,R.presentationHeight/R.height),X=Math.max(X,C.minScale),X=Math.min(X,C.maxScale),X===1?(h.slides.style.zoom="",h.slides.style.left="",h.slides.style.top="",h.slides.style.bottom="",h.slides.style.right="",G({layout:""})):(h.slides.style.zoom="",h.slides.style.left="50%",h.slides.style.top="50%",h.slides.style.bottom="auto",h.slides.style.right="auto",G({layout:"translate(-50%, -50%) scale("+X+")"}));const ne=Array.from(h.wrapper.querySelectorAll(en));for(let ee=0,oe=ne.length;ee<oe;ee++){const xe=ne[ee];xe.style.display!=="none"&&(C.center||xe.classList.contains("center")?xe.classList.contains("stack")?xe.style.top=0:xe.style.top=Math.max((R.height-xe.scrollHeight)/2,0)+"px":xe.style.top="")}M!==X&&Q({type:"resize",data:{oldScale:M,scale:X,size:R}})}h.viewport.style.setProperty("--slide-scale",X),k.update(),Pe.updateParallax(),Ne.isActive()&&Ne.update()}}function Ge(R,M){Se(h.slides,"section > .stretch, section > .r-stretch").forEach(ne=>{let ee=zo(ne,M);if(/(img|video)/gi.test(ne.nodeName)){const oe=ne.naturalWidth||ne.videoWidth,xe=ne.naturalHeight||ne.videoHeight,Ze=Math.min(R/oe,ee/xe);ne.style.width=oe*Ze+"px",ne.style.height=xe*Ze+"px"}else ne.style.width=R+"px",ne.style.height=ee+"px"})}function Ue(R,M){let ne=C.width,ee=C.height;C.disableLayout&&(ne=h.slides.offsetWidth,ee=h.slides.offsetHeight);const oe={width:ne,height:ee,presentationWidth:R||h.wrapper.offsetWidth,presentationHeight:M||h.wrapper.offsetHeight};return oe.presentationWidth-=oe.presentationWidth*C.margin,oe.presentationHeight-=oe.presentationHeight*C.margin,typeof oe.width=="string"&&/%$/.test(oe.width)&&(oe.width=parseInt(oe.width,10)/100*oe.presentationWidth),typeof oe.height=="string"&&/%$/.test(oe.height)&&(oe.height=parseInt(oe.height,10)/100*oe.presentationHeight),oe}function Ct(R,M){typeof R=="object"&&typeof R.setAttribute=="function"&&R.setAttribute("data-previous-indexv",M||0)}function Ot(R){if(typeof R=="object"&&typeof R.setAttribute=="function"&&R.classList.contains("stack")){const M=R.hasAttribute("data-start-indexv")?"data-start-indexv":"data-previous-indexv";return parseInt(R.getAttribute(M)||0,10)}return 0}function Dt(R=v){return R&&R.parentNode&&!!R.parentNode.nodeName.match(/section/i)}function On(){return!(!v||!Dt(v))&&!v.nextElementSibling}function An(){return d===0&&E===0}function En(){return!!v&&!v.nextElementSibling&&(!Dt(v)||!v.parentNode.nextElementSibling)}function In(){if(C.pause){const R=h.wrapper.classList.contains("paused");tn(),h.wrapper.classList.add("paused"),R===!1&&Q({type:"paused"})}}function $t(){const R=h.wrapper.classList.contains("paused");h.wrapper.classList.remove("paused"),kt(),R&&Q({type:"resumed"})}function Dn(R){typeof R=="boolean"?R?In():$t():Wt()?$t():In()}function Wt(){return h.wrapper.classList.contains("paused")}function _a(R){typeof R=="boolean"?R?Re.show():Re.hide():Re.isVisible()?Re.hide():Re.show()}function ua(R){typeof R=="boolean"?R?an():nn():Qe?an():nn()}function pa(){return!(!Me||Qe)}function ht(R,M,ne,ee){if(Q({type:"beforeslidechange",data:{indexh:R===void 0?d:R,indexv:M===void 0?E:M,origin:ee}}).defaultPrevented)return;N=v;const oe=h.wrapper.querySelectorAll(Xt);if(oe.length===0)return;M!==void 0||Ne.isActive()||(M=Ot(oe[R])),N&&N.parentNode&&N.parentNode.classList.contains("stack")&&Ct(N.parentNode,E);const xe=V.concat();V.length=0;let Ze=d||0,gt=E||0;d=xn(Xt,R===void 0?d:R),E=xn(pi,M===void 0?E:M);let Nt=d!==Ze||E!==gt;Nt||(N=null);let wt=oe[d];v=wt.querySelectorAll("section")[E]||wt;let Xe=!1;Nt&&N&&v&&!Ne.isActive()&&(N.hasAttribute("data-auto-animate")&&v.hasAttribute("data-auto-a
<img src="https://avatars.githubusercontent.com/u/17150045?v=4" width="120"/>
<p><a href="https://github.com/vincenzopalazzo">vincenzopalazzo</a></p>
<a href="mailito:vincenzopalazzo@member.fsf.org">vincenzopalazzo@member.fsf.org</a>
<div align="center"><p><small>Sep 28, 2023</small></p></div></section>`},m(r,d){bt(r,n,d)},p:et,i:et,o:et,d(r){r&&St(n)}}}class pl extends Vt{constructor(n){super(),qt(this,n,null,ul,zt,{})}}function ml(f){let n;return{c(){n=Ht("section"),n.innerHTML=`<section><p style="background-color: #373A3C; color: #ADB5BD;border-radius:25px;width:30%;text-align:left;padding:8px"><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> whoami</p>
<q>CLN Core Contributor &amp; Lightning Network developer!</q></section>
<section><h4>Area of Work</h4>
<ul><li class="fragment">Lightning Network
<ul><li>Core Contributor <a href="https://github.com/ElementsProject/lightning">Core Lightning</a></li>
<li>Lightning Network Developer in the <a href="https://github.com/lightning/bolts">BOLTs</a></li></ul></li>
<li class="fragment">Mantainer of <a href="https://github.com/rustyrussell/lnprototest">lnprototest</a>;</li>
<li class="fragment">Side Project developer.</li></ul></section>
<section><p style="background-color: #373A3C; color: #ADB5BD;border-radius:25px;width:40%;text-align:left;padding:8px"><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> cat topics.txt</p>
<h3>Today topics</h3></section>
<section><ul><li>Understand what core lightning provides;</li>
<li class="fragment">Understand how core lightning provides things;</li>
<li class="fragment">How core lightning plugin are used inside the code.</li></ul></section>`},m(r,d){bt(r,n,d)},p:et,i:et,o:et,d(r){r&&St(n)}}}class gl extends Vt{constructor(n){super(),qt(this,n,null,ml,zt,{})}}function El(f){let n;return{c(){n=Ht("section"),n.innerHTML=`<section><p style="background-color: #373A3C; color: #ADB5BD;border-radius:25px;width:70%;text-align:left;padding:8px"><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> show lightningd/lightningd.c</p>
<h3>Introduction</h3>
<q>One day in core lightning</q></section>
<section><ul><li>Lightning Network Implementation written in C</li>
<li class="fragment">Compliant with the <a href="https://github.com/lightning/bolts/pulls">BOLTs</a></li>
<li class="fragment">First real implementation of the Lightning Network</li>
<li class="fragment">Developed and Mantained by <a href="https://blockstream.com/">Blockstream</a></li></ul></section>
<section><ul><li>Developed in a Unix Style</li>
<li class="fragment">Support a very powerful plugin system language agnostic</li></ul></section>
<section><img src="https://i.ibb.co/VtKR2qg/Untitled-2023-09-27-1945.png"/></section>
<section><img src="https://i.ibb.co/GkKt4L3/Untitled-2023-09-27-1945-2.png"/></section>
<section><p>Cool, this is cool, right?</p>
<p class="fragment">But you can replace deamon with your implementation</p></section>
<section><img src="https://i.ibb.co/bdrzgpq/Untitled-2023-09-27-1945-3.png"/></section>
<section><img src="https://i.ibb.co/1bMmX6s/Untitled-2023-09-27-1945-4.png"/></section>
<section><div><img src="https://i.ibb.co/260M5yW/Untitled-2023-09-27-1945-5.png"/></div>
<div><p>You can visit <a href="https://vls.tech">https://vls.tech</a></p></div></section>`},m(r,d){bt(r,n,d)},p:et,i:et,o:et,d(r){r&&St(n)}}}class Sl extends Vt{constructor(n){super(),qt(this,n,null,El,zt,{})}}function bl(f){let n;return{c(){n=Ht("section"),n.innerHTML=`<section><p style="background-color: #373A3C; color: #ADB5BD;border-radius:25px;width:70%;text-align:left;padding:8px"><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> emacs -nw lightningd/lightningd.c</p>
<h3>Implementation Details</h3></section>
2023-09-28 23:25:20 +01:00
<section><p>How CLN deal with encoding and decoding (aka <strong>wire</strong>)
messages</p>
<ul><li class="fragment">Every lightning network messages is a <strong>struct</strong></li>
<li class="fragment">Every message information is defined inside a <strong>csv</strong> file</li>
<li class="fragment">CLN build system generate the equivalent C code</li></ul></section>
<section><pre> <code data-trim="" data-noescape="">
<script type="text/template">
msgtype,hsmd_init,11
msgdata,hsmd_init,bip32_key_version,bip32_key_version,
msgdata,hsmd_init,chainparams,chainparams,
msgdata,hsmd_init,hsm_encryption_key,?secret,
msgdata,hsmd_init,dev_force_privkey,?privkey,
msgdata,hsmd_init,dev_force_bip32_seed,?secret,
msgdata,hsmd_init,dev_force_channel_secrets,?secrets,
msgdata,hsmd_init,dev_force_channel_secrets_shaseed,?sha256,
msgdata,hsmd_init,hsm_wire_min_version,u32,
msgdata,hsmd_init,hsm_wire_max_version,u32,
<\/script>
</code>
</pre></section>
<section><pre> <code data-trim="" data-noescape="">
<script type="text/template">
/** hsmd/hsmd_wiregen.h after running make **/
u8 *towire_hsmd_init(const tal_t *ctx, ...);
bool fromwire_hsmd_init(const tal_t *ctx, ...);
<\/script>
</code>
</pre>
<p class="fragment">Then write/read through a file descriptor (UNIX concept) to communicate
with a deamon</p></section>
<section><p>Message format:</p>
<ul><li class="fragment">All the message are in binary format</li>
<li class="fragment">Following the <a href="https://github.com/lightning/bolts/blob/master/01-messaging.md#lightning-message-format">BOLT 1</a></li>
<li class="fragment">There are different code generator, e.g <a href="https://github.com/lnspec-tools/lncodegen">https://github.com/lnspec-tools/lncodegen</a></li></ul></section>`},m(r,d){bt(r,n,d)},p:et,i:et,o:et,d(r){r&&St(n)}}}class hl extends Vt{constructor(n){super(),qt(this,n,null,bl,zt,{})}}function fl(f){let n;return{c(){n=Ht("section"),n.innerHTML=`<section><p style="background-color: #373A3C; color: #ADB5BD;border-radius:25px;width:70%;text-align:left;padding:8px"><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> emacs -nw lightningd/plugin.c</p>
<h3>How CLN uses plugins</h3></section>
2023-09-28 23:25:20 +01:00
<section><ul><li>Plugins in core lightning are first citizen</li>
<li class="fragment">CLN implement functions with builtin plugins</li>
<li class="fragment">Most of the major important functionality are plugins</li>
<li class="fragment">You can write the plugin in any languages</li></ul></section>
<section><ul><li>CLN talk with bitcoin through a plugin</li>
<li class="fragment">CLN pay an invoice through a plugin</li>
<li class="fragment"><strong>plugins can be replaced</strong></li></ul></section>
<section><ul><li>List of plugins <a href="https://github.com/lightningd/plugins">lightningd/plugins</a></li>
<li class="fragment">Initial support for plugins manager. e.g <a href="https://github.com/coffee-tools/coffee">coffee</a></li></ul></section>
<section><p>Why use a plugin manager:</p>
<ul><li class="fragment">Every language required different setup</li>
<li class="fragment">A plugin manager <strong>try to do</strong> all the setup for you under the
hood</li></ul></section>`},m(r,d){bt(r,n,d)},p:et,i:et,o:et,d(r){r&&St(n)}}}class Tl extends Vt{constructor(n){super(),qt(this,n,null,fl,zt,{})}}function vl(f){let n;return{c(){n=Ht("section"),n.innerHTML=`<section><p style="background-color: #373A3C; color: #ADB5BD;border-radius:25px;width:40%;text-align:left;padding:8px"><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> lightningd --help</p>
<q>Demo Time!</q></section>
2023-09-28 23:25:20 +01:00
<section><h3>Compile and Install step</h3>
<div style="background-color: #373A3C; color: #ADB5BD;border-radius:25px;width:90%;text-align:left;padding:8px;font-size:28px"><div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> git clone git@github.com:ElementsProject/lightning.git</div>
<div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> ./configure &amp;&amp; poetry shell</div>
<div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> make &amp;&amp; make install</div></div>
<p>See official docs <a href="https://docs.corelightning.org/docs/installation">INSTALL.md</a></p></section>
<section><h3>Install Coffee</h3>
<div style="background-color: #373A3C; color: #ADB5BD;border-radius:25px;width:90%;text-align:left;padding:8px;font-size:28px"><div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> git clone git@github.com:coffee-tools/coffee.git</div>
<div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> cd coffee &amp;&amp; make install</div></div>
<p>See official docs <a href="https://coffee-docs.netlify.app/">coffee docs</a></p></section>
<section><h3>Run Lightning Deamon</h3>
<div style="background-color: #373A3C; color: #ADB5BD;border-radius:25px;width:90%;text-align:left;padding:8px;font-size:28px"><div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> lightningd --signet</div></div>
<pre class="fragment" style="font-size: 12px"> <code data-trim="" data-noescape="">
<script type="text/template">
\u279C coffee git:(master) lightningd --signet
2023-09-28T17:10:10.571Z INFO lightningd: Creating configuration directory /home/vincent/.lightning/signet
2023-09-28T17:10:10.645Z INFO plugin-clnrest.py: Killing plugin: disabled itself: No module named 'gunicorn'
2023-09-28T17:10:10.658Z INFO lightningd: Creating database
2023-09-28T17:10:10.687Z UNUSUAL hsmd: HSM: created new hsm_secret file
Could not connect to bitcoind using bitcoin-cli. Is bitcoind running?
Make sure you have bitcoind running and that bitcoin-cli is able to connect to bitcoind.
You can verify that your Bitcoin Core installation is ready for use by running:
$ bitcoin-cli -signet echo 'hello world'
2023-09-28T17:10:10.969Z **BROKEN** plugin-bcli: \\nCould not connect to bitcoind using bitcoin-cli.
Is bitcoind running?
Make sure you have bitcoind running and that bitcoin-cli is able to connect to bitcoind.
You can verify that your Bitcoin Core installation is ready for use by running:
$ bitcoin-cli -signet echo 'hello world'\\n
2023-09-28T17:10:10.969Z INFO plugin-bcli: Killing plugin: exited before we sent init
The Bitcoin backend died.
<\/script>
</code>
</pre></section>
<section><p>What is the problem?</p>
<p class="fragment">We do not have bitcoin core running</p>
<p class="fragment">But maybe I do not have it sync and it can take days on mainet</p>
<p class="fragment">We can solve this problem?</p>
<p class="fragment">Yes with a plugin called <a href="https://github.com/coffee-tools/folgore">folgore</a></p></section>
<section><h3>Install Folgore</h3>
<div style="background-color: #373A3C; color: #ADB5BD;border-radius:25px;width:90%;text-align:left;padding:8px;font-size:28px"><div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> git clone git@github.com:coffee-tools/folgore.git</div>
<div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> coffee --network signet setup
/home/<user>/.lightning</user></div>
<div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> coffee --network signet remote add folgore-git
https://github.com/coffee-tools/folgore.git</div>
<div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> coffee --network signet install folgore
--verbose</div></div></section>
<section><h3>Run Lightning Deamon</h3>
<div style="background-color: #373A3C; color: #ADB5BD;border-radius:25px;width:90%;text-align:left;padding:8px;font-size:22px"><div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> lightningd --signet --disable-plugin
bcli --bitcoin-client=esplora --bitcoin-rpcuser=&quot;&quot; --bitcoin-rpcpassword=&quot;&quot;
--bitcoin-esplora-url=&quot;&quot; --bitcoin-rpcurl=&quot;&quot;</div>
<div><span style="color:green;diplay:flex;margin-left:14px">\u279C</span>
<span style="color:#ADB5BD">~</span> lightning-cli --signet getinfo</div></div></section>`},m(r,d){bt(r,n,d)},p:et,i:et,o:et,d(r){r&&St(n)}}}class Cl extends Vt{constructor(n){super(),qt(this,n,null,vl,zt,{})}}function Rl(f){let n,r,d,E,N,v,A,C,Z,j,V,X;return n=new pl({}),d=new gl({}),N=new Sl({}),A=new hl({}),Z=new Tl({}),V=new Cl({}),{c(){Jt(n.$$.fragment),r=dn(),Jt(d.$$.fragment),E=dn(),Jt(N.$$.fragment),v=dn(),Jt(A.$$.fragment),C=dn(),Jt(Z.$$.fragment),j=dn(),Jt(V.$$.fragment)},m($,h){Bt(n,$,h),bt($,r,h),Bt(d,$,h),bt($,E,h),Bt(N,$,h),bt($,v,h),Bt(A,$,h),bt($,C,h),Bt(Z,$,h),bt($,j,h),Bt(V,$,h),X=!0},p:et,i($){X||(Ft(n.$$.fragment,$),Ft(d.$$.fragment,$),Ft(N.$$.fragment,$),Ft(A.$$.fragment,$),Ft(Z.$$.fragment,$),Ft(V.$$.fragment,$),X=!0)},o($){Zt(n.$$.fragment,$),Zt(d.$$.fragment,$),Zt(N.$$.fragment,$),Zt(A.$$.fragment,$),Zt(Z.$$.fragment,$),Zt(V.$$.fragment,$),X=!1},d($){Gt(n,$),$&&St(r),Gt(d,$),$&&St(E),Gt(N,$),$&&St(v),Gt(A,$),$&&St(C),Gt(Z,$),$&&St(j),Gt(V,$)}}}class Nl extends Vt{constructor(n){super(),qt(this,n,null,Rl,zt,{})}}function yl(f){let n,r,d,E,N,v;return document.title=n=f[0].name,N=new Nl({}),{c(){r=dn(),d=Ht("div"),E=Ht("div"),Jt(N.$$.fragment),li(E,"class","slides"),li(d,"class","reveal")},m(A,C){bt(A,r,C),bt(A,d,C),xo(d,E),Bt(N,E,null),v=!0},p(A,[C]){(!v||C&1)&&n!==(n=A[0].name)&&(document.title=n)},i(A){v||(Ft(N.$$.fragment,A),v=!0)},o(A){Zt(N.$$.fragment,A),v=!1},d(A){A&&St(r),A&&St(d),Gt(N)}}}function Ol(f,n,r){let{app:d}=n,{reveal:E}=n;return Po(async()=>{await Uo(),new Ut(E).initialize()}),f.$$set=N=>{"app"in N&&r(0,d=N.app),"reveal"in N&&r(1,E=N.reveal)},[d,E]}class Al extends Vt{constructor(n){super(),qt(this,n,Ol,yl,zt,{app:0,reveal:1})}}var da=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Ii={exports:{}};(function(f,n){(function(r,d){f.exports=d()})(da,function(){var r={exports:{}};function d(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(function(t){var i=e[t];typeof i!="object"||Object.isFrozen(i)||d(i)}),e}r.exports=d,r.exports.default=d;class E{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function N(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function v(e,...t){const i=Object.create(null);for(const l in e)i[l]=e[l];return t.forEach(function(l){for(const p in l)i[p]=l[p]}),i}const A=e=>!!e.scope||e.sublanguage&&e.language;class C{constructor(t,i){this.buffer="",this.classPrefix=i.classPrefix,t.walk(this)}addText(t){this.buffer+=N(t)}openNode(t){if(!A(t))return;let i="";i=t.sublanguage?`language-${t.language}`:((l,{prefix:p})=>{if(l.includes(".")){const m=l.split(".");return[`${p}${m.shift()}`,...m.map((b,S)=>`${b}${"_".repeat(S+1)}`)].join(" ")}return`${p}${l}`})(t.scope,{prefix:this.classPrefix}),this.span(i)}closeNode(t){A(t)&&(this.buffer+="</span>")}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}}const Z=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class j{constructor(){this.rootNode=Z(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const i=Z({scope:t});this.add(i),this.stack.push(i)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,i){return typeof i=="string"?t.addText(i):i.children&&(t.openNode(i),i.children.forEach(l=>this._walk(t,l)),t.closeNode(i)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(i=>typeof i=="string")?t.children=[t.children.join("")]:t.children.forEach(i=>{j._collapse(i)}))}}class V extends j{constructor(t){supe
https://github.com/highlightjs/highlight.js/issues/2277`),pe=q,Ce=ie),re===void 0&&(re=!0);const Ee={code:Ce,language:pe};_e("before:highlight",Ee);const he=Ee.result?Ee.result:w(Ee.language,Ee.code,re);return he.code=Ee.code,_e("after:highlight",he),he}function w(q,ie,re,Ce){const pe=Object.create(null);function Ee(){if(!fe.keywords)return void dt.addText($e);let de=0;fe.keywordPatternRe.lastIndex=0;let ve=fe.keywordPatternRe.exec($e),He="";for(;ve;){He+=$e.substring(de,ve.index);const We=ct.case_insensitive?ve[0].toLowerCase():ve[0],_t=(Ye=We,fe.keywords[Ye]);if(_t){const[Lt,wa]=_t;if(dt.addText(He),He="",pe[We]=(pe[We]||0)+1,pe[We]<=7&&(ia+=wa),Lt.startsWith("_"))He+=ve[0];else{const ra=ct.classNameAliases[Lt]||Lt;dt.addKeyword(ve[0],ra)}}else He+=ve[0];de=fe.keywordPatternRe.lastIndex,ve=fe.keywordPatternRe.exec($e)}var Ye;He+=$e.substring(de),dt.addText(He)}function he(){fe.subLanguage!=null?function(){if($e==="")return;let de=null;if(typeof fe.subLanguage=="string"){if(!t[fe.subLanguage])return void dt.addText($e);de=w(fe.subLanguage,$e,!0,Pt[fe.subLanguage]),Pt[fe.subLanguage]=de._top}else de=F($e,fe.subLanguage.length?fe.subLanguage:null);fe.relevance>0&&(ia+=de.relevance),dt.addSublanguage(de._emitter,de.language)}():Ee(),$e=""}function qe(de,ve){let He=1;const Ye=ve.length-1;for(;He<=Ye;){if(!de._emit[He]){He++;continue}const We=ct.classNameAliases[de[He]]||de[He],_t=ve[He];We?dt.addKeyword(_t,We):($e=_t,Ee(),$e=""),He++}}function Ie(de,ve){return de.scope&&typeof de.scope=="string"&&dt.openNode(ct.classNameAliases[de.scope]||de.scope),de.beginScope&&(de.beginScope._wrap?(dt.addKeyword($e,ct.classNameAliases[de.beginScope._wrap]||de.beginScope._wrap),$e=""):de.beginScope._multi&&(qe(de.beginScope,ve),$e="")),fe=Object.create(de,{parent:{value:fe}}),fe}function Ve(de,ve,He){let Ye=function(We,_t){const Lt=We&&We.exec(_t);return Lt&&Lt.index===0}(de.endRe,He);if(Ye){if(de["on:end"]){const We=new E(de);de["on:end"](ve,We),We.isMatchIgnored&&(Ye=!1)}if(Ye){for(;de.endsParent&&de.parent;)de=de.parent;return de}}if(de.endsWithParent)return Ve(de.parent,ve,He)}function Je(de){return fe.matcher.regexIndex===0?($e+=de[0],1):(Da=!0,0)}function mt(de){const ve=de[0],He=ie.substring(de.index),Ye=Ve(fe,de,He);if(!Ye)return Ae;const We=fe;fe.endScope&&fe.endScope._wrap?(he(),dt.addKeyword(ve,fe.endScope._wrap)):fe.endScope&&fe.endScope._multi?(he(),qe(fe.endScope,de)):We.skip?$e+=ve:(We.returnEnd||We.excludeEnd||($e+=ve),he(),We.excludeEnd&&($e=ve));do fe.scope&&dt.closeNode(),fe.skip||fe.subLanguage||(ia+=fe.relevance),fe=fe.parent;while(fe!==Ye.parent);return Ye.starts&&Ie(Ye.starts,de),We.returnEnd?0:ve.length}let rt={};function Tt(de,ve){const He=ve&&ve[0];if($e+=de,He==null)return he(),0;if(rt.type==="begin"&&ve.type==="end"&&rt.index===ve.index&&He===""){if($e+=ie.slice(ve.index,ve.index+1),!p){const Ye=new Error(`0 width match regex (${q})`);throw Ye.languageName=q,Ye.badRule=rt.rule,Ye}return 1}if(rt=ve,ve.type==="begin")return function(Ye){const We=Ye[0],_t=Ye.rule,Lt=new E(_t),wa=[_t.__beforeBegin,_t["on:begin"]];for(const ra of wa)if(ra&&(ra(Ye,Lt),Lt.isMatchIgnored))return Je(We);return _t.skip?$e+=We:(_t.excludeBegin&&($e+=We),he(),_t.returnBegin||_t.excludeBegin||($e=We)),Ie(_t,Ye),_t.returnBegin?0:We.length}(ve);if(ve.type==="illegal"&&!re){const Ye=new Error('Illegal lexeme "'+He+'" for mode "'+(fe.scope||"<unnamed>")+'"');throw Ye.mode=fe,Ye}if(ve.type==="end"){const Ye=mt(ve);if(Ye!==Ae)return Ye}if(ve.type==="illegal"&&He==="")return 1;if(Ia>1e5&&Ia>3*ve.index)throw new Error("potential infinite loop, way more iterations than matches");return $e+=He,He.length}const ct=Y(q);if(!ct)throw P(m.replace("{}",q)),new Error('Unknown language: "'+q+'"');const Fe=ue(ct);let vt="",fe=Ce||Fe;const Pt={},dt=new S.__emitter(S);(function(){const de=[];for(let ve=fe;ve!==ct;ve=ve.parent)ve.scope&&de.unshift(ve.scope);de.forEach(ve=>dt.openNode(ve))})();let $e="",ia=0,jt=0,Ia=0,Da=!1;try{for(fe.matcher.considerAll();;){Ia++,Da?Da=!1:fe.matcher.considerAll(),fe.matcher.lastIndex=jt;const de=fe.matcher.exec(ie);if(!de)break
`},y]}},mr=function(e){const t="[a-zA-Z_][\\w.]*",i="<\\?(lasso(script)?|=)",l="\\]|\\?>",p={$pattern:t+"|&[lg]t;",literal:"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft",built_in:"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock",keyword:"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome"},m=e.COMMENT("<!--","-->",{relevance:0}),b={className:"meta",begin:"\\[noprocess\\]",starts:{end:"\\[/noprocess\\]",returnEnd:!0,contains:[m]}},S={className:"meta",begin:"\\[/noprocess|"+i},y={className:"symbol",begin:"'"+t+"'"},D=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(e.C_NUMBER_MODE,{begin:e.C_NUMBER_RE+"|(-?infinity|NaN)\\b"}),e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"`",end:"`"},{variants:[{begin:"[#$]"+t},{begin:"#",end:"\\d+",illegal:"\\W"}]},{className:"type",begin:"::\\s*",end:t,illegal:"\\W"},{className:"params",variants:[{begin:"-(?!infinity)"+t,relevance:0},{begin:"(\\.\\.\\.)"}]},{begin:/(->|\.)\s*/,relevance:0,contains:[y]},{className:"class",beginKeywords:"define",returnEnd:!0,end:"\\(|=>",contains:[e.inherit(e.TITLE_MODE,{begin:t+"(=(?!>))?|[-+*/%](?!>)"})]}];return{name:"Lasso",aliases:["ls","lassoscript"],case_insensitive:!0,keywords:p,contains:[{className:"meta",begin:l,relevance:0,starts:{end:"\\[|"+i,returnEnd:!0,relevance:0,contains:[m]}},b,S,{className:"meta",begin:"\\[no_square_brackets",starts:{end:"\\[/no_square_brackets\\]",keywords:p,contains:[{className:"meta",begin:l,relevance:0,starts:{end:"\\[noprocess\\]|"+i,returnEnd:!0,contains:[m]}},b,S].concat(D)}},{className:"meta",begin:"\\[",relevance:0},{className:"meta",begin:"^#!",end:"lasso9$",relevance:10}].concat(D)}},gr=function(e){const t=[{begin:/\^{6}[0-9a-f]{6}/},{begin:/\^{5}[0-9a-f]{5}/},{begin:/\^{4}[0-9a-f]{4}/},{begin:/\^{3}[0-9a-f]{3}/},{begin:/\^{2}[0-9a-f]{2}/},{begin:/\^{2}[\u0000-\u007f]/}],i=[{className:"keyword",begin:/\\/,relevance:0,contains:[{endsParent:!0,begin:e.regex.either(...["(?:NeedsTeXFormat|RequirePackage|GetIdInfo)","Provides(?:Expl)?(?:Package|Class|File)","(?:DeclareOption|ProcessOptions)","(?:documentclass|usepackage|input|include)","makeat(?:letter|other)","ExplSyntax(?:On|Off)","(?:new|renew|provide)?command","(?:re)newenvironment","(?:New|Renew|Provide|Declare)(?:Expandable)?DocumentCommand","(?:New|Renew|Provide|Declare)DocumentEnvironment","(?:(?:e|g|x)?def|let)","(?:begin|end)","(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph)","caption","(?:label|(?:eq|page|name)?ref|(?:paren|foot|super)?cite)","(?:alpha|beta|[Gg]amma|[Dd]elta|(?:var)?epsilon|zeta|eta|[Tt]heta|vartheta)","(?:iota|(?:var)?kappa|[Ll]ambda|mu|nu|[Xx]i|[Pp]i|varpi|(?:var)rho)","(?:[Ss]igma|varsigma|tau|[Uu]psilon|[Pp]hi|varphi|chi|[Pp]si|[Oo]mega)","(?:frac|sum|prod|lim|infty|times|sqrt|leq|geq|left|right|middle|[bB]igg?)","(?:[lr]angle|q?quad|[lcvdi]?dots|d?dot|hat|tilde|bar)"]
]`,D={scope:"string",variants:[e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(b)}),S,e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(b)})]},w={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},F=["false","null","true"],U=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],K=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],B={keyword:U,literal:(pe=>{const Ee=[];return pe.forEach(he=>{Ee.push(he),he.toLowerCase()===he?Ee.push(he.toUpperCase()):Ee.push(he.toLowerCase())}),Ee})(F),built_in:K},Y=pe=>pe.map(Ee=>Ee.replace(/\|\d+$/,"")),te={variants:[{match:[/new/,t.concat(y,"+"),t.concat("(?!",Y(K).join("\\b|"),"\\b)"),p],scope:{1:"keyword",4:"title.class"}}]},be=t.concat(l,"\\b(?!\\()"),_e={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),be],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[p,t.concat(/::/,t.lookahead(/(?!class\b)/)),be],scope:{1:"title.class",3:"variable.constant"}},{match:[p,t.concat("::",t.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[p,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},q={scope:"attr",match:t.concat(l,t.lookahead(":"),t.lookahead(/(?!::)/))},ie={relevance:0,begin:/\(/,end:/\)/,keywords:B,contains:[q,m,_e,e.C_BLOCK_COMMENT_MODE,D,w,te]},re={relevance:0,match:[/\b/,t.concat("(?!fn\\b|function\\b|",Y(U).join("\\b|"),"|",Y(K).join("\\b|"),"\\b)"),l,t.concat(y,"*"),t.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[ie]};ie.contains.push(re);const Ce=[q,_e,e.C_BLOCK_COMMENT_
]*;`,relevance:0},{begin:"[vp][0-9]+"}]}},Ys=function(e){const t="[a-z][a-zA-Z0-9_]*",i={className:"string",begin:"\\$.{1}"},l={className:"symbol",begin:"#"+e.UNDERSCORE_IDENT_RE};return{name:"Smalltalk",aliases:["st"],keywords:["self","super","nil","true","false","thisContext"],contains:[e.COMMENT('"','"'),e.APOS_STRING_MODE,{className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},{begin:t+":",relevance:0},e.C_NUMBER_MODE,l,i,{begin:"\\|[ ]*"+t+"([ ]+"+t+")*[ ]*\\|",returnBegin:!0,end:/\|/,illegal:/\S/,contains:[{begin:"(\\|[ ]*)?"+t}]},{begin:"#\\(",end:"\\)",contains:[e.APOS_STRING_MODE,i,e.C_NUMBER_MODE,l]}]}},Hs=function(e){return{name:"SML (Standard ML)",aliases:["ml"],keywords:{$pattern:"[a-z_]\\w*!?",keyword:"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while",built_in:"array bool char exn int list option order real ref string substring vector unit word",literal:"true false NONE SOME LESS EQUAL GREATER nil"},illegal:/\/\/|>>/,contains:[{className:"literal",begin:/\[(\|\|)?\]|\(\)/,relevance:0},e.COMMENT("\\(\\*","\\*\\)",{contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{className:"type",begin:"`[A-Z][\\w']*"},{className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*"},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",relevance:0},{begin:/[-=]>/}]}},zs=function(e){const t={className:"string",variants:[{begin:'"',end:'"',contains:[{begin:'""',relevance:0}]},{begin:"'",end:"'",contains:[{begin:"''",relevance:0}]}]},i={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"define undef ifdef ifndef else endif include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(t,{className:"string"}),{className:"string",begin:/<[^\n>]*>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]};return{name:"SQF",case_insensitive:!0,keywords:{keyword:["case","catch","default","do","else","exit","exitWith","for","forEach","from","if","private","switch","then","throw","to","try","waitUntil","while","with"],built_in:["abs","accTime","acos","action","actionIDs","actionKeys","actionKeysImages","actionKeysNames","actionKeysNamesArray","actionName","actionParams","activateAddons","activatedAddons","activateKey","add3DENConnection","add3DENEventHandler","add3DENLayer","addAction","addBackpack","addBackpackCargo","addBackpackCargoGlobal","addBackpackGlobal","addBinocularItem","addCamShake","addCuratorAddons","addCuratorCameraArea","addCuratorEditableObjects","addCuratorEditingArea","addCuratorPoints","addEditorObject","addEventHandler","addForce","addForceGeneratorRTD","addGoggles","addGroupIcon","addHandgunItem","addHeadgear","addItem","addItemCargo","addItemCargoGlobal","addItemPool","addItemToBackpack","addItemToUniform","addItemToVest","addLiveStats","addMagazine","addMagazineAmmoCargo","addMagazineCargo","addMagazineCargoGlobal","addMagazineGlobal","addMagazinePool","addMagazines","addMagazineTurret","addMenu","addMenuItem","addMissionEventHandler","addMPEventHandler","addMusicEventHandler","addonFiles","addOwnedMine","addPlayerScores","addPrimaryWeaponItem","addPublicVariableEventHandler","addRating","addResources","addScore","addScoreSide","addSecondaryWeaponItem","addSwitchableUnit","addTeamMember","addToRemainsCollector","addTorque","addUniform","addVehicle","addVest","addWaypoint","addWeapon","addWeaponCargo","addWeaponCargoGlobal","addWeaponGlobal","addWeaponItem","addWeaponPool","addWeaponTurret","addWeaponWithAttachmentsCargo","addWeaponWithAttachmentsCargoGlobal","admin","agent","agents","AGLToASL","aimedAtTarget","aimPos","airDensityCurveRTD","airDensityRTD","airplaneThrottle","airportSide","AISFinishHeal","alive","all3DENEntities","allActiveTitleEffects","allAd
]*?"'`},{begin:`"[^\r
"]*"`}]},{className:"built_in",variants:[{begin:"\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\()"}]},e.COMMENT("^[ ]*\\*.*$",!1),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}},Ws=function(e){return{name:"STEP Part 21",aliases:["p21","step","stp"],case_insensitive:!0,keywords:{$pattern:"[A-Z_][A-Z0-9_.]*",keyword:["HEADER","ENDSEC","DATA"]},contains:[{className:"meta",begin:"ISO-10303-21;",relevance:10},{className:"meta",begin:"END-ISO-10303-21;",relevance:10},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT("/\\*\\*!","\\*/"),e.C_NUMBER_MODE,e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"string",begin:"'",end:"'"},{className:"symbol",variants:[{begin:"#",end:"\\d+",illegal:"\\W"}]}]}};const Qs=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Ks=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],js=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],Xs=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],Zs=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fi
(multipart)?`,end:`\\]
`},{className:"string",begin:"\\d{4}-\\d{2}-\\d{2}(\\s+)\\d{2}:\\d{2}:\\d{2}.\\d+Z"},{className:"string",begin:"(\\+|-)\\d+"},{className:"keyword",relevance:10,variants:[{begin:"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\s+(test)?"},{begin:"^progress(:?)(\\s+)?(pop|push)?"},{begin:"^tags:"},{begin:"^time:"}]}]}};function Wa(e){return e?typeof e=="string"?e:e.source:null}function ta(e){return ze("(?=",e,")")}function ze(...e){return e.map(t=>Wa(t)).join("")}function Et(...e){return"("+(function(i){const l=i[i.length-1];return typeof l=="object"&&l.constructor===Object?(i.splice(i.length-1,1),l):{}}(e).capture?"":"?:")+e.map(i=>Wa(i)).join("|")+")"}const Na=e=>ze(/\b/,e,/\w$/.test(e)?/\b/:/\B/),to=["Protocol","Type"].map(Na),Qa=["init","self"].map(Na),no=["Any","Self"],ya=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","distributed","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],Ka=["false","nil","true"],ao=["assignment","associativity","higherThan","left","lowerThan","none","right"],io=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],ja=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],Xa=Et(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),Za=Et(Xa,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),Oa=ze(Xa,Za,"*"),Ja=Et(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),na=Et(Ja,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),xt=ze(Ja,na,"*"),Aa=ze(/[A-Z]/,na,"*"),ro=["autoclosure",ze(/convention\(/,Et("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",ze(/objc\(/,xt,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],so=["iOS","iOSApplicationExtension","macOS","macOSAppl
`,[Y,0<te[be].length?te[be]:" "]);B.innerHTML=_e.trim()}}function U(B){return B.length===0?[]:B.split(S)}function K(B,Y){return B.replace(/\{(\d+)\}/g,function(te,be){return Y[be]!==void 0?Y[be]:te})}Mt?(Mt.initLineNumbersOnLoad=function(B){t.readyState==="interactive"||t.readyState==="complete"?y(B):e.addEventListener("DOMContentLoaded",function(){y(B)})},Mt.lineNumbersBlock=D,Mt.lineNumbersValue=function(B,Y){if(typeof B=="string"){var te=document.createElement("code");return te.innerHTML=B,w(te,Y)}},(i=t.createElement("style")).type="text/css",i.innerHTML=K(".{0}{border-collapse:collapse}.{0} td{padding:0}.{1}:before{content:attr({2})}",[l,m,b]),t.getElementsByTagName("head")[0].appendChild(i)):e.console.error("highlight.js not detected!"),document.addEventListener("copy",function(B){var Y,te=window.getSelection();!function(be){for(var _e=be;_e;){if(_e.className&&_e.className.indexOf("hljs-ln-code")!==-1)return 1;_e=_e.parentNode}}(te.anchorNode)||(Y=window.navigator.userAgent.indexOf("Edge")!==-1?function(be){for(var _e=be.toString(),q=be.anchorNode;q.nodeName!=="TD";)q=q.parentNode;for(var ie=be.focusNode;ie.nodeName!=="TD";)ie=ie.parentNode;var re=parseInt(q.dataset.lineNumber),Ce=parseInt(ie.dataset.lineNumber);if(re==Ce)return _e;var pe,Ee=q.textContent,he=ie.textContent;for(Ce<re&&(pe=re,re=Ce,Ce=pe,pe=Ee,Ee=he,he=pe);_e.indexOf(Ee)!==0;)Ee=Ee.slice(1);for(;_e.lastIndexOf(he)===-1;)he=he.slice(0,-1);for(var qe=Ee,Ie=function(mt){for(var rt=mt;rt.nodeName!=="TABLE";)rt=rt.parentNode;return rt}(q),Ve=re+1;Ve<Ce;++Ve){var Je=K('.{0}[{1}="{2}"]',[p,b,Ve]);qe+=`
`+Ie.querySelector(Je).textContent}return qe+`
`+he}(te):te.toString(),B.clipboardData.setData("text/plain",Y),B.preventDefault())})})(window,document);/*!
* reveal.js plugin that adds syntax highlight support.
*/const it={id:"highlight",HIGHLIGHT_STEP_DELIMITER:"|",HIGHLIGHT_LINE_DELIMITER:",",HIGHLIGHT_LINE_RANGE_DELIMITER:"-",hljs:Mt,init:function(e){let t=e.getConfig().highlight||{};t.highlightOnLoad=typeof t.highlightOnLoad!="boolean"||t.highlightOnLoad,t.escapeHTML=typeof t.escapeHTML!="boolean"||t.escapeHTML,Array.from(e.getRevealElement().querySelectorAll("pre code")).forEach(i=>{i.parentNode.classList.add("code-wrapper");let l=i.querySelector('script[type="text/template"]');l&&(i.textContent=l.innerHTML),i.hasAttribute("data-trim")&&typeof i.innerHTML.trim=="function"&&(i.innerHTML=function(p){function m(S){return S.replace(/^[\s\uFEFF\xA0]+/g,"")}function b(S){for(var y=S.split(`
`),D=0;D<y.length&&y[D].trim()==="";D++)y.splice(D--,1);for(D=y.length-1;D>=0&&y[D].trim()==="";D--)y.splice(D,1);return y.join(`
`)}return function(S){var y=b(S.innerHTML).split(`
`),D=y.reduce(function(w,F){return F.length>0&&m(F).length>0&&w>F.length-m(F).length?F.length-m(F).length:w},Number.POSITIVE_INFINITY);return y.map(function(w,F){return w.slice(D)}).join(`
`)}(p)}(i)),t.escapeHTML&&!i.hasAttribute("data-noescape")&&(i.innerHTML=i.innerHTML.replace(/</g,"&lt;").replace(/>/g,"&gt;")),i.addEventListener("focusout",function(p){Mt.highlightElement(p.currentTarget)},!1)}),typeof t.beforeHighlight=="function"&&t.beforeHighlight(Mt),t.highlightOnLoad&&Array.from(e.getRevealElement().querySelectorAll("pre code")).forEach(i=>{it.highlightBlock(i)}),e.on("pdf-ready",function(){[].slice.call(e.getRevealElement().querySelectorAll("pre code[data-line-numbers].current-fragment")).forEach(function(i){it.scrollHighlightedLineIntoView(i,{},!0)})})},highlightBlock:function(e){if(Mt.highlightElement(e),e.innerHTML.trim().length!==0&&e.hasAttribute("data-line-numbers")){Mt.lineNumbersBlock(e,{singleLine:!0});var t={currentBlock:e},i=it.deserializeHighlightSteps(e.getAttribute("data-line-numbers"));if(i.length>1){var l=parseInt(e.getAttribute("data-fragment-index"),10);(typeof l!="number"||isNaN(l))&&(l=null),i.slice(1).forEach(function(b){var S=e.cloneNode(!0);S.setAttribute("data-line-numbers",it.serializeHighlightSteps([b])),S.classList.add("fragment"),e.parentNode.appendChild(S),it.highlightLines(S),typeof l=="number"?(S.setAttribute("data-fragment-index",l),l+=1):S.removeAttribute("data-fragment-index"),S.addEventListener("visible",it.scrollHighlightedLineIntoView.bind(it,S,t)),S.addEventListener("hidden",it.scrollHighlightedLineIntoView.bind(it,S.previousSibling,t))}),e.removeAttribute("data-fragment-index"),e.setAttribute("data-line-numbers",it.serializeHighlightSteps([i[0]]))}var p=typeof e.closest=="function"?e.closest("section:not(.stack)"):null;if(p){var m=function(){it.scrollHighlightedLineIntoView(e,t,!0),p.removeEventListener("visible",m)};p.addEventListener("visible",m)}it.highlightLines(e)}},scrollHighlightedLineIntoView:function(e,t,i){cancelAnimationFrame(t.animationFrameID),t.currentBlock&&(e.scrollTop=t.currentBlock.scrollTop),t.currentBlock=e;var l=this.getHighlightedLineBounds(e),p=e.offsetHeight,m=getComputedStyle(e);p-=parseInt(m.paddingTop)+parseInt(m.paddingBottom);var b=e.scrollTop,S=l.top+(Math.min(l.bottom-l.top,p)-p)/2,y=e.querySelector(".hljs-ln");if(y&&(S+=y.offsetTop-parseInt(m.paddingTop)),S=Math.max(Math.min(S,e.scrollHeight-p),0),i===!0||b===S)e.scrollTop=S;else{if(e.scrollHeight<=p)return;var D=0,w=function(){D=Math.min(D+.02,1),e.scrollTop=b+(S-b)*it.easeInOutQuart(D),D<1&&(t.animationFrameID=requestAnimationFrame(w))};w()}},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},getHighlightedLineBounds:function(e){var t=e.querySelectorAll(".highlight-line");if(t.length===0)return{top:0,bottom:0};var i=t[0],l=t[t.length-1];return{top:i.offsetTop,bottom:l.offsetTop+l.offsetHeight}},highlightLines:function(e,t){var i=it.deserializeHighlightSteps(t||e.getAttribute("data-line-numbers"));i.length&&i[0].forEach(function(l){var p=[];typeof l.end=="number"?p=[].slice.call(e.querySelectorAll("table tr:nth-child(n+"+l.start+"):nth-child(-n+"+l.end+")")):typeof l.start=="number"&&(p=[].slice.call(e.querySelectorAll("table tr:nth-child("+l.start+")"))),p.length&&(p.forEach(function(m){m.classList.add("highlight-line")}),e.classList.add("has-highlights"))})},deserializeHighlightSteps:function(e){return(e=(e=e.replace(/\s/g,"")).split(it.HIGHLIGHT_STEP_DELIMITER)).map(function(t){return t.split(it.HIGHLIGHT_LINE_DELIMITER).map(function(i){if(/^[\d-]+$/.test(i)){i=i.split(it.HIGHLIGHT_LINE_RANGE_DELIMITER);var l=parseInt(i[0],10),p=parseInt(i[1],10);return isNaN(p)?{start:l}:{start:l,end:p}}return{}})})},serializeHighlightSteps:function(e){return e.map(function(t){return t.map(function(i){return typeof i.end=="number"?i.start+it.HIGHLIGHT_LINE_RANGE_DELIMITER+i.end:typeof i.start=="number"?i.start:""}).join(it.HIGHLIGHT_LINE_DELIMITER)}).join(it.HIGHLIGHT_STEP_DELIMITER)}};return()=>it})})(Ii);const Il=Ii.exports;var Di={exports:{}};(function(f,n){(function(r,d){f.exports=d()})(da,function(){function r(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sani
`)}}}fences(a){const s=this.rules.block.fences.exec(a);if(s){const o=s[0],g=function(T,I){const L=T.match(/^(\s+)(?:```)/);if(L===null)return I;const H=L[1];return I.split(`
`).map(P=>{const W=P.match(/^\s+/);if(W===null)return P;const[G]=W;return G.length>=H.length?P.slice(H.length):P}).join(`
`)}(o,s[3]||"");return{type:"code",raw:o,lang:s[2]?s[2].trim():s[2],text:g}}}heading(a){const s=this.rules.block.heading.exec(a);if(s){let o=s[2].trim();if(/#$/.test(o)){const T=me(o,"#");this.options.pedantic?o=T.trim():T&&!/ $/.test(T)||(o=T.trim())}const g={type:"heading",raw:s[0],depth:s[1].length,text:o,tokens:[]};return this.lexer.inline(g.text,g.tokens),g}}hr(a){const s=this.rules.block.hr.exec(a);if(s)return{type:"hr",raw:s[0]}}blockquote(a){const s=this.rules.block.blockquote.exec(a);if(s){const o=s[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:s[0],tokens:this.lexer.blockTokens(o,[]),text:o}}}list(a){let s=this.rules.block.list.exec(a);if(s){let o,g,T,I,L,H,P,W,G,Q,le,ce,ue=s[1].trim();const Te=ue.length>1,se={type:"list",raw:"",ordered:Te,start:Te?+ue.slice(0,-1):"",loose:!1,items:[]};ue=Te?`\\d{1,9}\\${ue.slice(-1)}`:`\\${ue}`,this.options.pedantic&&(ue=Te?ue:"[*+-]");const Oe=new RegExp(`^( {0,3}${ue})((?: [^\\n]*)?(?:\\n|$))`);for(;a&&(ce=!1,s=Oe.exec(a))&&!this.rules.block.hr.test(a);){if(o=s[0],a=a.substring(o.length),W=s[2].split(`
`,1)[0],G=a.split(`
`,1)[0],this.options.pedantic?(I=2,le=W.trimLeft()):(I=s[2].search(/[^ ]/),I=I>4?1:I,le=W.slice(I),I+=s[1].length),H=!1,!W&&/^ *$/.test(G)&&(o+=G+`
`,a=a.substring(G.length+1),ce=!0),!ce){const Ae=new RegExp(`^ {0,${Math.min(3,I-1)}}(?:[*+-]|\\d{1,9}[.)])`);for(;a&&(Q=a.split(`
`,1)[0],W=Q,this.options.pedantic&&(W=W.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!Ae.test(W));){if(W.search(/[^ ]/)>=I||!W.trim())le+=`
`+W.slice(I);else{if(H)break;le+=`
`+W}H||W.trim()||(H=!0),o+=Q+`
`,a=a.substring(Q.length+1)}}se.loose||(P?se.loose=!0:/\n *\n *$/.test(o)&&(P=!0)),this.options.gfm&&(g=/^\[[ xX]\] /.exec(le),g&&(T=g[0]!=="[ ] ",le=le.replace(/^\[[ xX]\] +/,""))),se.items.push({type:"list_item",raw:o,task:!!g,checked:T,loose:!1,text:le}),se.raw+=o}se.items[se.items.length-1].raw=o.trimRight(),se.items[se.items.length-1].text=le.trimRight(),se.raw=se.raw.trimRight();const ge=se.items.length;for(L=0;L<ge;L++){this.lexer.state.top=!1,se.items[L].tokens=this.lexer.blockTokens(se.items[L].text,[]);const Ae=se.items[L].tokens.filter(Ue=>Ue.type==="space"),Ge=Ae.every(Ue=>{const Ct=Ue.raw.split("");let Ot=0;for(const Dt of Ct)if(Dt===`
`&&(Ot+=1),Ot>1)return!0;return!1});!se.loose&&Ae.length&&Ge&&(se.loose=!0,se.items[L].loose=!0)}return se}}html(a){const s=this.rules.block.html.exec(a);if(s){const o={type:"html",raw:s[0],pre:!this.options.sanitizer&&(s[1]==="pre"||s[1]==="script"||s[1]==="style"),text:s[0]};return this.options.sanitize&&(o.type="paragraph",o.text=this.options.sanitizer?this.options.sanitizer(s[0]):j(s[0]),o.tokens=[],this.lexer.inline(o.text,o.tokens)),o}}def(a){const s=this.rules.block.def.exec(a);if(s)return s[3]&&(s[3]=s[3].substring(1,s[3].length-1)),{type:"def",tag:s[1].toLowerCase().replace(/\s+/g," "),raw:s[0],href:s[2],title:s[3]}}table(a){const s=this.rules.block.table.exec(a);if(s){const o={type:"table",header:Pe(s[1]).map(g=>({text:g})),align:s[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:s[3]&&s[3].trim()?s[3].replace(/\n[ \t]*$/,"").split(`
`):[]};if(o.header.length===o.align.length){o.raw=s[0];let g,T,I,L,H=o.align.length;for(g=0;g<H;g++)/^ *-+: *$/.test(o.align[g])?o.align[g]="right":/^ *:-+: *$/.test(o.align[g])?o.align[g]="center":/^ *:-+ *$/.test(o.align[g])?o.align[g]="left":o.align[g]=null;for(H=o.rows.length,g=0;g<H;g++)o.rows[g]=Pe(o.rows[g],o.header.length).map(P=>({text:P}));for(H=o.header.length,T=0;T<H;T++)o.header[T].tokens=[],this.lexer.inlineTokens(o.header[T].text,o.header[T].tokens);for(H=o.rows.length,T=0;T<H;T++)for(L=o.rows[T],I=0;I<L.length;I++)L[I].tokens=[],this.lexer.inlineTokens(L[I].text,L[I].tokens);return o}}}lheading(a){const s=this.rules.block.lheading.exec(a);if(s){const o={type:"heading",raw:s[0],depth:s[2].charAt(0)==="="?1:2,text:s[1],tokens:[]};return this.lexer.inline(o.text,o.tokens),o}}paragraph(a){const s=this.rules.block.paragraph.exec(a);if(s){const o={type:"paragraph",raw:s[0],text:s[1].charAt(s[1].length-1)===`
`?s[1].slice(0,-1):s[1],tokens:[]};return this.lexer.inline(o.text,o.tokens),o}}text(a){const s=this.rules.block.text.exec(a);if(s){const o={type:"text",raw:s[0],text:s[0],tokens:[]};return this.lexer.inline(o.text,o.tokens),o}}escape(a){const s=this.rules.inline.escape.exec(a);if(s)return{type:"escape",raw:s[0],text:j(s[1])}}tag(a){const s=this.rules.inline.tag.exec(a);if(s)return!this.lexer.state.inLink&&/^<a /i.test(s[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(s[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(s[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(s[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:s[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(s[0]):j(s[0]):s[0]}}link(a){const s=this.rules.inline.link.exec(a);if(s){const o=s[2].trim();if(!this.options.pedantic&&/^</.test(o)){if(!/>$/.test(o))return;const I=me(o.slice(0,-1),"\\");if((o.length-I.length)%2==0)return}else{const I=function(L,H){if(L.indexOf(H[1])===-1)return-1;const P=L.length;let W=0,G=0;for(;G<P;G++)if(L[G]==="\\")G++;else if(L[G]===H[0])W++;else if(L[G]===H[1]&&(W--,W<0))return G;return-1}(s[2],"()");if(I>-1){const L=(s[0].indexOf("!")===0?5:4)+s[1].length+I;s[2]=s[2].substring(0,I),s[0]=s[0].substring(0,L).trim(),s[3]=""}}let g=s[2],T="";if(this.options.pedantic){const I=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(g);I&&(g=I[1],T=I[3])}else T=s[3]?s[3].slice(1,-1):"";return g=g.trim(),/^</.test(g)&&(g=this.options.pedantic&&!/>$/.test(o)?g.slice(1):g.slice(1,-1)),Ke(s,{href:g&&g.replace(this.rules.inline._escapes,"$1"),title:T&&T.replace(this.rules.inline._escapes,"$1")},s[0],this.lexer)}}reflink(a,s){let o;if((o=this.rules.inline.reflink.exec(a))||(o=this.rules.inline.nolink.exec(a))){let g=(o[2]||o[1]).replace(/\s+/g," ");if(g=s[g.toLowerCase()],!g||!g.href){const T=o[0].charAt(0);return{type:"text",raw:T,text:T}}return Ke(o,g,o[0],this.lexer)}}emStrong(a,s,o=""){let g=this.rules.inline.emStrong.lDelim.exec(a);if(!g||g[3]&&o.match(/[\p{L}\p{N}]/u))return;const T=g[1]||g[2]||"";if(!T||T&&(o===""||this.rules.inline.punctuation.exec(o))){const I=g[0].length-1;let L,H,P=I,W=0;const G=g[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(G.lastIndex=0,s=s.slice(-1*a.length+I);(g=G.exec(s))!=null;){if(L=g[1]||g[2]||g[3]||g[4]||g[5]||g[6],!L)continue;if(H=L.length,g[3]||g[4]){P+=H;continue}if((g[5]||g[6])&&I%3&&!((I+H)%3)){W+=H;continue}if(P-=H,P>0)continue;if(H=Math.min(H,H+P+W),Math.min(I,H)%2){const le=a.slice(1,I+g.index+H);return{type:"em",raw:a.slice(0,I+g.index+H+1),text:le,tokens:this.lexer.inlineTokens(le,[])}}const Q=a.slice(2,I+g.index+H-1);return{type:"strong",raw:a.slice(0,I+g.index+H+1),text:Q,tokens:this.lexer.inlineTokens(Q,[])}}}}codespan(a){const s=this.rules.inline.code.exec(a);if(s){let o=s[2].replace(/\n/g," ");const g=/[^ ]/.test(o),T=/^ /.test(o)&&/ $/.test(o);return g&&T&&(o=o.substring(1,o.length-1)),o=j(o,!0),{type:"codespan",raw:s[0],text:o}}}br(a){const s=this.rules.inline.br.exec(a);if(s)return{type:"br",raw:s[0]}}del(a){const s=this.rules.inline.del.exec(a);if(s)return{type:"del",raw:s[0],text:s[2],tokens:this.lexer.inlineTokens(s[2],[])}}autolink(a,s){const o=this.rules.inline.autolink.exec(a);if(o){let g,T;return o[2]==="@"?(g=j(this.options.mangle?s(o[1]):o[1]),T="mailto:"+g):(g=j(o[1]),T=g),{type:"link",raw:o[0],text:g,href:T,tokens:[{type:"text",raw:g,text:g}]}}}url(a,s){let o;if(o=this.rules.inline.url.exec(a)){let g,T;if(o[2]==="@")g=j(this.options.mangle?s(o[0]):o[0]),T="mailto:"+g;else{let I;do I=o[0],o[0]=this.rules.inline._backpedal.exec(o[0])[0];while(I!==o[0]);g=j(o[0]),T=o[1]==="www."?"http://"+g:g}return{type:"link",raw:o[0],text:g,href:T,tokens:[{type:"text",raw:g,text:g}]}}}inlineText(a,s){const o=this.rules.inline.text.exec(a);if(o){let g;return g=this.lexer.state.inRawBlock?this.options.sanitize?th
]`).replace("lheading",k.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});const x={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Re,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Re,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/};function lt(c){return c.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201C").replace(/"/g,"\u201D").replace(/\.{3}/g,"\u2026")}function st(c){let a,s,o="";const g=c.length;for(a=0;a<g;a++)s=c.charCodeAt(a),Math.random()>.5&&(s="x"+s.toString(16)),o+="&#"+s+";";return o}x._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",x.punctuation=h(x.punctuation).replace(/punctuation/g,x._punctuation).getRegex(),x.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,x.escapedEmSt=/\\\*|\\_/g,x._comment=h(k._comment).replace("(?:-->|$)","-->").getRegex(),x.emStrong.lDelim=h(x.emStrong.lDelim).replace(/punct/g,x._punctuation).getRegex(),x.emStrong.rDelimAst=h(x.emStrong.rDelimAst,"g").replace(/punct/g,x._punctuation).getRegex(),x.emStrong.rDelimUnd=h(x.emStrong.rDelimUnd,"g").replace(/punct/g,x._punctuation).getRegex(),x._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,x._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,x._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,x.autolink=h(x.autolink).replace("scheme",x._scheme).replace("email",x._email).getRegex(),x._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,x.tag=h(x.tag).replace("comment",x._comment).replace("attribute",x._attribute).getRegex(),x._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,x._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,x._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,x.link=h(x.link).replace("label",x._label).replace("href",x._href).replace("title",x._title).getRegex(),x.reflink=h(x.reflink).replace("label",x._label).replace("ref",k._label).getRegex(),x.nolink=h(x.nolink).replace("ref",k._label).getRegex(),x.reflinkSearch=h(x.reflinkSearch,"g").replace("reflink",x.reflink).replace("nolink",x.nolink).getRegex(),x.normal=De({},x),x.pedantic=De({},x.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:h(/^!?\[(label)\]\((.*?)\)/).replace("label",x._label).getRegex(),reflink:h(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",x._label).getRegex()}),x.gfm=De({},x.normal,{escape:h(x.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?=
`).replace(/\t/g," "),this.blockTokens(a,this.tokens);s=this.inlineQueue.shift();)this.inlineTokens(s.src,s.tokens);return this.tokens}blockTokens(a,s=[]){let o,g,T,I;for(this.options.pedantic&&(a=a.replace(/^ +$/gm,""));a;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(L=>!!(o=L.call({lexer:this},a,s))&&(a=a.substring(o.raw.length),s.push(o),!0))))if(o=this.tokenizer.space(a))a=a.substring(o.raw.length),o.raw.length===1&&s.length>0?s[s.length-1].raw+=`
`:s.push(o);else if(o=this.tokenizer.code(a))a=a.substring(o.raw.length),g=s[s.length-1],!g||g.type!=="paragraph"&&g.type!=="text"?s.push(o):(g.raw+=`
`+o.raw,g.text+=`
`+o.text,this.inlineQueue[this.inlineQueue.length-1].src=g.text);else if(o=this.tokenizer.fences(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.heading(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.hr(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.blockquote(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.list(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.html(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.def(a))a=a.substring(o.raw.length),g=s[s.length-1],!g||g.type!=="paragraph"&&g.type!=="text"?this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title}):(g.raw+=`
`+o.raw,g.text+=`
`+o.raw,this.inlineQueue[this.inlineQueue.length-1].src=g.text);else if(o=this.tokenizer.table(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.lheading(a))a=a.substring(o.raw.length),s.push(o);else{if(T=a,this.options.extensions&&this.options.extensions.startBlock){let L=1/0;const H=a.slice(1);let P;this.options.extensions.startBlock.forEach(function(W){P=W.call({lexer:this},H),typeof P=="number"&&P>=0&&(L=Math.min(L,P))}),L<1/0&&L>=0&&(T=a.substring(0,L+1))}if(this.state.top&&(o=this.tokenizer.paragraph(T)))g=s[s.length-1],I&&g.type==="paragraph"?(g.raw+=`
`+o.raw,g.text+=`
`+o.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=g.text):s.push(o),I=T.length!==a.length,a=a.substring(o.raw.length);else if(o=this.tokenizer.text(a))a=a.substring(o.raw.length),g=s[s.length-1],g&&g.type==="text"?(g.raw+=`
`+o.raw,g.text+=`
`+o.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=g.text):s.push(o);else if(a){const L="Infinite loop on byte: "+a.charCodeAt(0);if(this.options.silent){console.error(L);break}throw new Error(L)}}return this.state.top=!0,s}inline(a,s){this.inlineQueue.push({src:a,tokens:s})}inlineTokens(a,s=[]){let o,g,T,I,L,H,P=a;if(this.tokens.links){const W=Object.keys(this.tokens.links);if(W.length>0)for(;(I=this.tokenizer.rules.inline.reflinkSearch.exec(P))!=null;)W.includes(I[0].slice(I[0].lastIndexOf("[")+1,-1))&&(P=P.slice(0,I.index)+"["+Be("a",I[0].length-2)+"]"+P.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(I=this.tokenizer.rules.inline.blockSkip.exec(P))!=null;)P=P.slice(0,I.index)+"["+Be("a",I[0].length-2)+"]"+P.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(I=this.tokenizer.rules.inline.escapedEmSt.exec(P))!=null;)P=P.slice(0,I.index)+"++"+P.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;a;)if(L||(H=""),L=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(W=>!!(o=W.call({lexer:this},a,s))&&(a=a.substring(o.raw.length),s.push(o),!0))))if(o=this.tokenizer.escape(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.tag(a))a=a.substring(o.raw.length),g=s[s.length-1],g&&o.type==="text"&&g.type==="text"?(g.raw+=o.raw,g.text+=o.text):s.push(o);else if(o=this.tokenizer.link(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.reflink(a,this.tokens.links))a=a.substring(o.raw.length),g=s[s.length-1],g&&o.type==="text"&&g.type==="text"?(g.raw+=o.raw,g.text+=o.text):s.push(o);else if(o=this.tokenizer.emStrong(a,P,H))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.codespan(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.br(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.del(a))a=a.substring(o.raw.length),s.push(o);else if(o=this.tokenizer.autolink(a,st))a=a.substring(o.raw.length),s.push(o);else if(this.state.inLink||!(o=this.tokenizer.url(a,st))){if(T=a,this.options.extensions&&this.options.extensions.startInline){let W=1/0;const G=a.slice(1);let Q;this.options.extensions.startInline.forEach(function(le){Q=le.call({lexer:this},G),typeof Q=="number"&&Q>=0&&(W=Math.min(W,Q))}),W<1/0&&W>=0&&(T=a.substring(0,W+1))}if(o=this.tokenizer.inlineText(T,lt))a=a.substring(o.raw.length),o.raw.slice(-1)!=="_"&&(H=o.raw.slice(-1)),L=!0,g=s[s.length-1],g&&g.type==="text"?(g.raw+=o.raw,g.text+=o.text):s.push(o);else if(a){const W="Infinite loop on byte: "+a.charCodeAt(0);if(this.options.silent){console.error(W);break}throw new Error(W)}}else a=a.substring(o.raw.length),s.push(o);return s}}class nt{constructor(a){this.options=a||d}code(a,s,o){const g=(s||"").match(/\S*/)[0];if(this.options.highlight){const T=this.options.highlight(a,g);T!=null&&T!==a&&(o=!0,a=T)}return a=a.replace(/\n$/,"")+`
`,g?'<pre><code class="'+this.options.langPrefix+j(g,!0)+'">'+(o?a:j(a,!0))+`</code></pre>
`:"<pre><code>"+(o?a:j(a,!0))+`</code></pre>
`}blockquote(a){return`<blockquote>
`+a+`</blockquote>
`}html(a){return a}heading(a,s,o,g){return this.options.headerIds?"<h"+s+' id="'+this.options.headerPrefix+g.slug(o)+'">'+a+"</h"+s+`>
`:"<h"+s+">"+a+"</h"+s+`>
`}hr(){return this.options.xhtml?`<hr/>
`:`<hr>
`}list(a,s,o){const g=s?"ol":"ul";return"<"+g+(s&&o!==1?' start="'+o+'"':"")+`>
`+a+"</"+g+`>
`}listitem(a){return"<li>"+a+`</li>
`}checkbox(a){return"<input "+(a?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "}paragraph(a){return"<p>"+a+`</p>
`}table(a,s){return s&&(s="<tbody>"+s+"</tbody>"),`<table>
<thead>
`+a+`</thead>
`+s+`</table>
`}tablerow(a){return`<tr>
`+a+`</tr>
`}tablecell(a,s){const o=s.header?"th":"td";return(s.align?"<"+o+' align="'+s.align+'">':"<"+o+">")+a+"</"+o+`>
`}strong(a){return"<strong>"+a+"</strong>"}em(a){return"<em>"+a+"</em>"}codespan(a){return"<code>"+a+"</code>"}br(){return this.options.xhtml?"<br/>":"<br>"}del(a){return"<del>"+a+"</del>"}link(a,s,o){if((a=tt(this.options.sanitize,this.options.baseUrl,a))===null)return o;let g='<a href="'+j(a)+'"';return s&&(g+=' title="'+s+'"'),g+=">"+o+"</a>",g}image(a,s,o){if((a=tt(this.options.sanitize,this.options.baseUrl,a))===null)return o;let g='<img src="'+a+'" alt="'+o+'"';return s&&(g+=' title="'+s+'"'),g+=this.options.xhtml?"/>":">",g}text(a){return a}}class ot{strong(a){return a}em(a){return a}codespan(a){return a}del(a){return a}html(a){return a}text(a){return a}link(a,s,o){return""+o}image(a,s,o){return""+o}br(){return""}}class It{constructor(){this.seen={}}serialize(a){return a.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(a,s){let o=a,g=0;if(this.seen.hasOwnProperty(o)){g=this.seen[a];do g++,o=a+"-"+g;while(this.seen.hasOwnProperty(o))}return s||(this.seen[a]=g,this.seen[o]=0),o}slug(a,s={}){const o=this.serialize(a);return this.getNextSafeSlug(o,s.dryrun)}}class at{constructor(a){this.options=a||d,this.options.renderer=this.options.renderer||new nt,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new ot,this.slugger=new It}static parse(a,s){return new at(s).parse(a)}static parseInline(a,s){return new at(s).parseInline(a)}parse(a,s=!0){let o,g,T,I,L,H,P,W,G,Q,le,ce,ue,Te,se,Oe,ge,Ae,Ge,Ue="";const Ct=a.length;for(o=0;o<Ct;o++)if(Q=a[o],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[Q.type]&&(Ge=this.options.extensions.renderers[Q.type].call({parser:this},Q),Ge!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(Q.type)))Ue+=Ge||"";else switch(Q.type){case"space":continue;case"hr":Ue+=this.renderer.hr();continue;case"heading":Ue+=this.renderer.heading(this.parseInline(Q.tokens),Q.depth,X(this.parseInline(Q.tokens,this.textRenderer)),this.slugger);continue;case"code":Ue+=this.renderer.code(Q.text,Q.lang,Q.escaped);continue;case"table":for(W="",P="",I=Q.header.length,g=0;g<I;g++)P+=this.renderer.tablecell(this.parseInline(Q.header[g].tokens),{header:!0,align:Q.align[g]});for(W+=this.renderer.tablerow(P),G="",I=Q.rows.length,g=0;g<I;g++){for(H=Q.rows[g],P="",L=H.length,T=0;T<L;T++)P+=this.renderer.tablecell(this.parseInline(H[T].tokens),{header:!1,align:Q.align[T]});G+=this.renderer.tablerow(P)}Ue+=this.renderer.table(W,G);continue;case"blockquote":G=this.parse(Q.tokens),Ue+=this.renderer.blockquote(G);continue;case"list":for(le=Q.ordered,ce=Q.start,ue=Q.loose,I=Q.items.length,G="",g=0;g<I;g++)se=Q.items[g],Oe=se.checked,ge=se.task,Te="",se.task&&(Ae=this.renderer.checkbox(Oe),ue?se.tokens.length>0&&se.tokens[0].type==="paragraph"?(se.tokens[0].text=Ae+" "+se.tokens[0].text,se.tokens[0].tokens&&se.tokens[0].tokens.length>0&&se.tokens[0].tokens[0].type==="text"&&(se.tokens[0].tokens[0].text=Ae+" "+se.tokens[0].tokens[0].text)):se.tokens.unshift({type:"text",text:Ae}):Te+=Ae),Te+=this.parse(se.tokens,ue),G+=this.renderer.listitem(Te,ge,Oe);Ue+=this.renderer.list(G,le,ce);continue;case"html":Ue+=this.renderer.html(Q.text);continue;case"paragraph":Ue+=this.renderer.paragraph(this.parseInline(Q.tokens));continue;case"text":for(G=Q.tokens?this.parseInline(Q.tokens):Q.text;o+1<Ct&&a[o+1].type==="text";)Q=a[++o],G+=`
`+(Q.tokens?this.parseInline(Q.tokens):Q.text);Ue+=s?this.renderer.paragraph(G):G;continue;default:{const Ot='Token with "'+Q.type+'" type was not found.';if(this.options.silent)return void console.error(Ot);throw new Error(Ot)}}return Ue}parseInline(a,s){s=s||this.renderer;let o,g,T,I="";const L=a.length;for(o=0;o<L;o++)if(g=a[o],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[g.type]&&(T=this.options.extensions.renderers[g.type].call({parser:this},g),T!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(g.type)))I+=T||"";else switch(g.type){case"escape":case"text":I+=s.text(g.text);break;case"html":I+=s.html(g.text);break;case"link":I+=s.link(g.href,g.title,this.parseInline(g.tokens,s));break;case"image":I+=s.image(g.href,g.title,g.text);break;case"strong":I+=s.strong(this.parseInline(g.tokens,s));break;case"em":I+=s.em(this.parseInline(g.tokens,s));break;case"codespan":I+=s.codespan(g.text);break;case"br":I+=s.br();break;case"del":I+=s.del(this.parseInline(g.tokens,s));break;default:{const H='Token with "'+g.type+'" type was not found.';if(this.options.silent)return void console.error(H);throw new Error(H)}}return I}}function J(c,a,s){if(c==null)throw new Error("marked(): input parameter is undefined or null");if(typeof c!="string")throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(c)+", string expected");if(typeof a=="function"&&(s=a,a=null),Ne(a=De({},J.defaults,a||{})),s){const o=a.highlight;let g;try{g=Le.lex(c,a)}catch(L){return s(L)}const T=function(L){let H;if(!L)try{a.walkTokens&&J.walkTokens(g,a.walkTokens),H=at.parse(g,a)}catch(P){L=P}return a.highlight=o,L?s(L):s(null,H)};if(!o||o.length<3||(delete a.highlight,!g.length))return T();let I=0;return J.walkTokens(g,function(L){L.type==="code"&&(I++,setTimeout(()=>{o(L.text,L.lang,function(H,P){if(H)return T(H);P!=null&&P!==L.text&&(L.text=P,L.escaped=!0),I--,I===0&&T()})},0))}),void(I===0&&T())}try{const o=Le.lex(c,a);return a.walkTokens&&J.walkTokens(o,a.walkTokens),at.parse(o,a)}catch(o){if(o.message+=`
Please report this to https://github.com/markedjs/marked.`,a.silent)return"<p>An error occurred:</p><pre>"+j(o.message+"",!0)+"</pre>";throw o}}J.options=J.setOptions=function(c){var a;return De(J.defaults,c),a=J.defaults,d=a,J},J.getDefaults=r,J.defaults=d,J.use=function(...c){const a=De({},...c),s=J.defaults.extensions||{renderers:{},childTokens:{}};let o;c.forEach(g=>{if(g.extensions&&(o=!0,g.extensions.forEach(T=>{if(!T.name)throw new Error("extension name required");if(T.renderer){const I=s.renderers?s.renderers[T.name]:null;s.renderers[T.name]=I?function(...L){let H=T.renderer.apply(this,L);return H===!1&&(H=I.apply(this,L)),H}:T.renderer}if(T.tokenizer){if(!T.level||T.level!=="block"&&T.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");s[T.level]?s[T.level].unshift(T.tokenizer):s[T.level]=[T.tokenizer],T.start&&(T.level==="block"?s.startBlock?s.startBlock.push(T.start):s.startBlock=[T.start]:T.level==="inline"&&(s.startInline?s.startInline.push(T.start):s.startInline=[T.start]))}T.childTokens&&(s.childTokens[T.name]=T.childTokens)})),g.renderer){const T=J.defaults.renderer||new nt;for(const I in g.renderer){const L=T[I];T[I]=(...H)=>{let P=g.renderer[I].apply(T,H);return P===!1&&(P=L.apply(T,H)),P}}a.renderer=T}if(g.tokenizer){const T=J.defaults.tokenizer||new z;for(const I in g.tokenizer){const L=T[I];T[I]=(...H)=>{let P=g.tokenizer[I].apply(T,H);return P===!1&&(P=L.apply(T,H)),P}}a.tokenizer=T}if(g.walkTokens){const T=J.defaults.walkTokens;a.walkTokens=function(I){g.walkTokens.call(this,I),T&&T.call(this,I)}}o&&(a.extensions=s),J.setOptions(a)})},J.walkTokens=function(c,a){for(const s of c)switch(a.call(J,s),s.type){case"table":for(const o of s.header)J.walkTokens(o.tokens,a);for(const o of s.rows)for(const g of o)J.walkTokens(g.tokens,a);break;case"list":J.walkTokens(s.items,a);break;default:J.defaults.extensions&&J.defaults.extensions.childTokens&&J.defaults.extensions.childTokens[s.type]?J.defaults.extensions.childTokens[s.type].forEach(function(o){J.walkTokens(s[o],a)}):s.tokens&&J.walkTokens(s.tokens,a)}},J.parseInline=function(c,a){if(c==null)throw new Error("marked.parseInline(): input parameter is undefined or null");if(typeof c!="string")throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(c)+", string expected");Ne(a=De({},J.defaults,a||{}));try{const s=Le.lexInline(c,a);return a.walkTokens&&J.walkTokens(s,a.walkTokens),at.parseInline(s,a)}catch(s){if(s.message+=`
Please report this to https://github.com/markedjs/marked.`,a.silent)return"<p>An error occurred:</p><pre>"+j(s.message+"",!0)+"</pre>";throw s}},J.Parser=at,J.parser=at.parse,J.Renderer=nt,J.TextRenderer=ot,J.Lexer=Le,J.lexer=Le.lex,J.Tokenizer=z,J.Slugger=It,J.parse=J;/*!
* The reveal.js markdown plugin. Handles parsing of
* markdown inside of presentations as well as loading
* of external markdown documents.
*/const ae="__SCRIPT_END__",_=/\[\s*((\d*):)?\s*([\s\d,|-]*)\]/,u={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};return()=>{let c;function a(W){let G=(W.querySelector("[data-template]")||W.querySelector("script")||W).textContent;G=G.replace(new RegExp(ae,"g"),"<\/script>");const Q=G.match(/^\n?(\s*)/)[1].length,le=G.match(/^\n?(\t*)/)[1].length;return le>0?G=G.replace(new RegExp("\\n?\\t{"+le+"}(.*)","g"),function(ce,ue){return`
`+ue}):Q>1&&(G=G.replace(new RegExp("\\n? {"+Q+"}(.*)","g"),function(ce,ue){return`
`+ue})),G}function s(W){const G=W.attributes,Q=[];for(let le=0,ce=G.length;le<ce;le++){const ue=G[le].name,Te=G[le].value;/data\-(markdown|separator|vertical|notes)/gi.test(ue)||(Te?Q.push(ue+'="'+Te+'"'):Q.push(ue))}return Q.join(" ")}function o(W){const G=c.getConfig().markdown;return(W=W||{}).separator=W.separator||(G==null?void 0:G.separator)||`\r?
---\r?
`,W.verticalSeparator=W.verticalSeparator||(G==null?void 0:G.verticalSeparator)||null,W.notesSeparator=W.notesSeparator||(G==null?void 0:G.notesSeparator)||"^s*notes?:",W.attributes=W.attributes||"",W}function g(W,G){G=o(G);const Q=W.split(new RegExp(G.notesSeparator,"mgi"));return Q.length===2&&(W=Q[0]+'<aside class="notes">'+J(Q[1].trim())+"</aside>"),'<script type="text/template">'+(W=W.replace(/<\/script>/g,ae))+"<\/script>"}function T(W,G){G=o(G);const Q=new RegExp(G.separator+(G.verticalSeparator?"|"+G.verticalSeparator:""),"mg"),le=new RegExp(G.separator);let ce,ue,Te,se=0,Oe=!0,ge=[];for(;ce=Q.exec(W);)ue=le.test(ce[0]),!ue&&Oe&&ge.push([]),Te=W.substring(se,ce.index),ue&&Oe?ge.push(Te):ge[ge.length-1].push(Te),se=Q.lastIndex,Oe=ue;(Oe?ge:ge[ge.length-1]).push(W.substring(se));let Ae="";for(let Ge=0,Ue=ge.length;Ge<Ue;Ge++)ge[Ge]instanceof Array?(Ae+="<section "+G.attributes+">",ge[Ge].forEach(function(Ct){Ae+="<section data-markdown>"+g(Ct,G)+"</section>"}),Ae+="</section>"):Ae+="<section "+G.attributes+" data-markdown>"+g(ge[Ge],G)+"</section>";return Ae}function I(W){return new Promise(function(G){const Q=[];[].slice.call(W.querySelectorAll("section[data-markdown]:not([data-markdown-parsed])")).forEach(function(le,ce){le.getAttribute("data-markdown").length?Q.push(function(ue){return new Promise(function(Te,se){const Oe=new XMLHttpRequest,ge=ue.getAttribute("data-markdown"),Ae=ue.getAttribute("data-charset");Ae!==null&&Ae!==""&&Oe.overrideMimeType("text/html; charset="+Ae),Oe.onreadystatechange=function(Ge,Ue){Ue.readyState===4&&(Ue.status>=200&&Ue.status<300||Ue.status===0?Te(Ue,ge):se(Ue,ge))}.bind(this,ue,Oe),Oe.open("GET",ge,!0);try{Oe.send()}catch(Ge){console.warn("Failed to get the Markdown file "+ge+". Make sure that the presentation and the file are served by a HTTP server and the file can be found there. "+Ge),Te(Oe,ge)}})}(le).then(function(ue,Te){le.outerHTML=T(ue.responseText,{separator:le.getAttribute("data-separator"),verticalSeparator:le.getAttribute("data-separator-vertical"),notesSeparator:le.getAttribute("data-separator-notes"),attributes:s(le)})},function(ue,Te){le.outerHTML='<section data-state="alert">ERROR: The attempt to fetch '+Te+" failed with HTTP status "+ue.status+".Check your browser's JavaScript console for more details.<p>Remember that you need to serve the presentation HTML from a HTTP server.</p></section>"})):le.outerHTML=T(a(le),{separator:le.getAttribute("data-separator"),verticalSeparator:le.getAttribute("data-separator-vertical"),notesSeparator:le.getAttribute("data-separator-notes"),attributes:s(le)})}),Promise.all(Q).then(G)})}function L(W,G,Q){const le=new RegExp(Q,"mg"),ce=new RegExp('([^"= ]+?)="([^"]+?)"|(data-[^"= ]+?)(?=[" ])',"mg");let ue,Te,se=W.nodeValue;if(ue=le.exec(se)){const Oe=ue[1];for(se=se.substring(0,ue.index)+se.substring(le.lastIndex),W.nodeValue=se;Te=ce.exec(Oe);)Te[2]?G.setAttribute(Te[1],Te[2]):G.setAttribute(Te[3],"");return!0}return!1}function H(W,G,Q,le,ce){if(G!==null&&G.childNodes!==void 0&&G.childNodes.length>0){let ue=G;for(let Te=0;Te<G.childNodes.length;Te++){const se=G.childNodes[Te];if(Te>0){let ge=Te-1;for(;ge>=0;){const Ae=G.childNodes[ge];if(typeof Ae.setAttribute=="function"&&Ae.tagName!=="BR"){ue=Ae;break}ge-=1}}let Oe=W;se.nodeName==="section"&&(Oe=se,ue=se),typeof se.setAttribute!="function"&&se.nodeType!==Node.COMMENT_NODE||H(Oe,se,ue,le,ce)}}G.nodeType===Node.COMMENT_NODE&&L(G,Q,le)===!1&&L(G,W,ce)}function P(){const W=c.getRevealElement().querySelectorAll("[data-markdown]:not([data-markdown-parsed])");return[].slice.call(W).forEach(function(G){G.setAttribute("data-markdown-parsed",!0);const Q=G.querySelector("aside.notes"),le=a(G);G.innerHTML=J(le),H(G,G,null,G.getAttribute("data-element-attributes")||G.parentNode.getAttribute("data-element-attributes")||"\\.element\\s*?(.+?)$",G.getAttribute("data-attributes")||G.parentNode.getAttribute("data-attributes")||"\\.slide:\\s*?(\\S.+?)$"),Q&&G.appendChild(Q)}),Promise.resolve()}return{id:"markdown",init:function(W){c=W;let{renderer:G,animateLists:Q,...le}=c.getConfig().markdown||{
`)}}}fences(_){const u=this.rules.block.fences.exec(_);if(u){const c=u[0],a=function(s,o){const g=s.match(/^(\s+)(?:```)/);if(g===null)return o;const T=g[1];return o.split(`
`).map(I=>{const L=I.match(/^\s+/);if(L===null)return I;const[H]=L;return H.length>=T.length?I.slice(T.length):I}).join(`
`)}(c,u[3]||"");return{type:"code",raw:c,lang:u[2]?u[2].trim():u[2],text:a}}}heading(_){const u=this.rules.block.heading.exec(_);if(u){let c=u[2].trim();if(/#$/.test(c)){const s=me(c,"#");this.options.pedantic?c=s.trim():s&&!/ $/.test(s)||(c=s.trim())}const a={type:"heading",raw:u[0],depth:u[1].length,text:c,tokens:[]};return this.lexer.inline(a.text,a.tokens),a}}hr(_){const u=this.rules.block.hr.exec(_);if(u)return{type:"hr",raw:u[0]}}blockquote(_){const u=this.rules.block.blockquote.exec(_);if(u){const c=u[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:u[0],tokens:this.lexer.blockTokens(c,[]),text:c}}}list(_){let u=this.rules.block.list.exec(_);if(u){let c,a,s,o,g,T,I,L,H,P,W,G,Q=u[1].trim();const le=Q.length>1,ce={type:"list",raw:"",ordered:le,start:le?+Q.slice(0,-1):"",loose:!1,items:[]};Q=le?`\\d{1,9}\\${Q.slice(-1)}`:`\\${Q}`,this.options.pedantic&&(Q=le?Q:"[*+-]");const ue=new RegExp(`^( {0,3}${Q})((?: [^\\n]*)?(?:\\n|$))`);for(;_&&(G=!1,u=ue.exec(_))&&!this.rules.block.hr.test(_);){if(c=u[0],_=_.substring(c.length),L=u[2].split(`
`,1)[0],H=_.split(`
`,1)[0],this.options.pedantic?(o=2,W=L.trimLeft()):(o=u[2].search(/[^ ]/),o=o>4?1:o,W=L.slice(o),o+=u[1].length),T=!1,!L&&/^ *$/.test(H)&&(c+=H+`
`,_=_.substring(H.length+1),G=!0),!G){const se=new RegExp(`^ {0,${Math.min(3,o-1)}}(?:[*+-]|\\d{1,9}[.)])`);for(;_&&(P=_.split(`
`,1)[0],L=P,this.options.pedantic&&(L=L.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!se.test(L));){if(L.search(/[^ ]/)>=o||!L.trim())W+=`
`+L.slice(o);else{if(T)break;W+=`
`+L}T||L.trim()||(T=!0),c+=P+`
`,_=_.substring(P.length+1)}}ce.loose||(I?ce.loose=!0:/\n *\n *$/.test(c)&&(I=!0)),this.options.gfm&&(a=/^\[[ xX]\] /.exec(W),a&&(s=a[0]!=="[ ] ",W=W.replace(/^\[[ xX]\] +/,""))),ce.items.push({type:"list_item",raw:c,task:!!a,checked:s,loose:!1,text:W}),ce.raw+=c}ce.items[ce.items.length-1].raw=c.trimRight(),ce.items[ce.items.length-1].text=W.trimRight(),ce.raw=ce.raw.trimRight();const Te=ce.items.length;for(g=0;g<Te;g++){this.lexer.state.top=!1,ce.items[g].tokens=this.lexer.blockTokens(ce.items[g].text,[]);const se=ce.items[g].tokens.filter(ge=>ge.type==="space"),Oe=se.every(ge=>{const Ae=ge.raw.split("");let Ge=0;for(const Ue of Ae)if(Ue===`
`&&(Ge+=1),Ge>1)return!0;return!1});!ce.loose&&se.length&&Oe&&(ce.loose=!0,ce.items[g].loose=!0)}return ce}}html(_){const u=this.rules.block.html.exec(_);if(u){const c={type:"html",raw:u[0],pre:!this.options.sanitizer&&(u[1]==="pre"||u[1]==="script"||u[1]==="style"),text:u[0]};return this.options.sanitize&&(c.type="paragraph",c.text=this.options.sanitizer?this.options.sanitizer(u[0]):j(u[0]),c.tokens=[],this.lexer.inline(c.text,c.tokens)),c}}def(_){const u=this.rules.block.def.exec(_);if(u)return u[3]&&(u[3]=u[3].substring(1,u[3].length-1)),{type:"def",tag:u[1].toLowerCase().replace(/\s+/g," "),raw:u[0],href:u[2],title:u[3]}}table(_){const u=this.rules.block.table.exec(_);if(u){const c={type:"table",header:Pe(u[1]).map(a=>({text:a})),align:u[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:u[3]&&u[3].trim()?u[3].replace(/\n[ \t]*$/,"").split(`
`):[]};if(c.header.length===c.align.length){c.raw=u[0];let a,s,o,g,T=c.align.length;for(a=0;a<T;a++)/^ *-+: *$/.test(c.align[a])?c.align[a]="right":/^ *:-+: *$/.test(c.align[a])?c.align[a]="center":/^ *:-+ *$/.test(c.align[a])?c.align[a]="left":c.align[a]=null;for(T=c.rows.length,a=0;a<T;a++)c.rows[a]=Pe(c.rows[a],c.header.length).map(I=>({text:I}));for(T=c.header.length,s=0;s<T;s++)c.header[s].tokens=[],this.lexer.inlineTokens(c.header[s].text,c.header[s].tokens);for(T=c.rows.length,s=0;s<T;s++)for(g=c.rows[s],o=0;o<g.length;o++)g[o].tokens=[],this.lexer.inlineTokens(g[o].text,g[o].tokens);return c}}}lheading(_){const u=this.rules.block.lheading.exec(_);if(u){const c={type:"heading",raw:u[0],depth:u[2].charAt(0)==="="?1:2,text:u[1],tokens:[]};return this.lexer.inline(c.text,c.tokens),c}}paragraph(_){const u=this.rules.block.paragraph.exec(_);if(u){const c={type:"paragraph",raw:u[0],text:u[1].charAt(u[1].length-1)===`
`?u[1].slice(0,-1):u[1],tokens:[]};return this.lexer.inline(c.text,c.tokens),c}}text(_){const u=this.rules.block.text.exec(_);if(u){const c={type:"text",raw:u[0],text:u[0],tokens:[]};return this.lexer.inline(c.text,c.tokens),c}}escape(_){const u=this.rules.inline.escape.exec(_);if(u)return{type:"escape",raw:u[0],text:j(u[1])}}tag(_){const u=this.rules.inline.tag.exec(_);if(u)return!this.lexer.state.inLink&&/^<a /i.test(u[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(u[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(u[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(u[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:u[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(u[0]):j(u[0]):u[0]}}link(_){const u=this.rules.inline.link.exec(_);if(u){const c=u[2].trim();if(!this.options.pedantic&&/^</.test(c)){if(!/>$/.test(c))return;const o=me(c.slice(0,-1),"\\");if((c.length-o.length)%2==0)return}else{const o=function(g,T){if(g.indexOf(T[1])===-1)return-1;const I=g.length;let L=0,H=0;for(;H<I;H++)if(g[H]==="\\")H++;else if(g[H]===T[0])L++;else if(g[H]===T[1]&&(L--,L<0))return H;return-1}(u[2],"()");if(o>-1){const g=(u[0].indexOf("!")===0?5:4)+u[1].length+o;u[2]=u[2].substring(0,o),u[0]=u[0].substring(0,g).trim(),u[3]=""}}let a=u[2],s="";if(this.options.pedantic){const o=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);o&&(a=o[1],s=o[3])}else s=u[3]?u[3].slice(1,-1):"";return a=a.trim(),/^</.test(a)&&(a=this.options.pedantic&&!/>$/.test(c)?a.slice(1):a.slice(1,-1)),Ke(u,{href:a&&a.replace(this.rules.inline._escapes,"$1"),title:s&&s.replace(this.rules.inline._escapes,"$1")},u[0],this.lexer)}}reflink(_,u){let c;if((c=this.rules.inline.reflink.exec(_))||(c=this.rules.inline.nolink.exec(_))){let a=(c[2]||c[1]).replace(/\s+/g," ");if(a=u[a.toLowerCase()],!a||!a.href){const s=c[0].charAt(0);return{type:"text",raw:s,text:s}}return Ke(c,a,c[0],this.lexer)}}emStrong(_,u,c=""){let a=this.rules.inline.emStrong.lDelim.exec(_);if(!a||a[3]&&c.match(/[\p{L}\p{N}]/u))return;const s=a[1]||a[2]||"";if(!s||s&&(c===""||this.rules.inline.punctuation.exec(c))){const o=a[0].length-1;let g,T,I=o,L=0;const H=a[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(H.lastIndex=0,u=u.slice(-1*_.length+o);(a=H.exec(u))!=null;){if(g=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!g)continue;if(T=g.length,a[3]||a[4]){I+=T;continue}if((a[5]||a[6])&&o%3&&!((o+T)%3)){L+=T;continue}if(I-=T,I>0)continue;if(T=Math.min(T,T+I+L),Math.min(o,T)%2){const W=_.slice(1,o+a.index+T);return{type:"em",raw:_.slice(0,o+a.index+T+1),text:W,tokens:this.lexer.inlineTokens(W,[])}}const P=_.slice(2,o+a.index+T-1);return{type:"strong",raw:_.slice(0,o+a.index+T+1),text:P,tokens:this.lexer.inlineTokens(P,[])}}}}codespan(_){const u=this.rules.inline.code.exec(_);if(u){let c=u[2].replace(/\n/g," ");const a=/[^ ]/.test(c),s=/^ /.test(c)&&/ $/.test(c);return a&&s&&(c=c.substring(1,c.length-1)),c=j(c,!0),{type:"codespan",raw:u[0],text:c}}}br(_){const u=this.rules.inline.br.exec(_);if(u)return{type:"br",raw:u[0]}}del(_){const u=this.rules.inline.del.exec(_);if(u)return{type:"del",raw:u[0],text:u[2],tokens:this.lexer.inlineTokens(u[2],[])}}autolink(_,u){const c=this.rules.inline.autolink.exec(_);if(c){let a,s;return c[2]==="@"?(a=j(this.options.mangle?u(c[1]):c[1]),s="mailto:"+a):(a=j(c[1]),s=a),{type:"link",raw:c[0],text:a,href:s,tokens:[{type:"text",raw:a,text:a}]}}}url(_,u){let c;if(c=this.rules.inline.url.exec(_)){let a,s;if(c[2]==="@")a=j(this.options.mangle?u(c[0]):c[0]),s="mailto:"+a;else{let o;do o=c[0],c[0]=this.rules.inline._backpedal.exec(c[0])[0];while(o!==c[0]);a=j(c[0]),s=c[1]==="www."?"http://"+a:a}return{type:"link",raw:c[0],text:a,href:s,tokens:[{type:"text",raw:a,text:a}]}}}inlineText(_,u){const c=this.rules.inline.text.exec(_);if(c){let a;return a=this.lexer.state.inRawBlock?this.options.sanitize?this.
]`).replace("lheading",k.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});const x={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Re,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Re,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/};function lt(ae){return ae.replace(/---/g,"\u2014").replace(/--/g,"\u2013").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201C").replace(/"/g,"\u201D").replace(/\.{3}/g,"\u2026")}function st(ae){let _,u,c="";const a=ae.length;for(_=0;_<a;_++)u=ae.charCodeAt(_),Math.random()>.5&&(u="x"+u.toString(16)),c+="&#"+u+";";return c}x._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",x.punctuation=h(x.punctuation).replace(/punctuation/g,x._punctuation).getRegex(),x.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,x.escapedEmSt=/\\\*|\\_/g,x._comment=h(k._comment).replace("(?:-->|$)","-->").getRegex(),x.emStrong.lDelim=h(x.emStrong.lDelim).replace(/punct/g,x._punctuation).getRegex(),x.emStrong.rDelimAst=h(x.emStrong.rDelimAst,"g").replace(/punct/g,x._punctuation).getRegex(),x.emStrong.rDelimUnd=h(x.emStrong.rDelimUnd,"g").replace(/punct/g,x._punctuation).getRegex(),x._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,x._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,x._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,x.autolink=h(x.autolink).replace("scheme",x._scheme).replace("email",x._email).getRegex(),x._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,x.tag=h(x.tag).replace("comment",x._comment).replace("attribute",x._attribute).getRegex(),x._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,x._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,x._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,x.link=h(x.link).replace("label",x._label).replace("href",x._href).replace("title",x._title).getRegex(),x.reflink=h(x.reflink).replace("label",x._label).replace("ref",k._label).getRegex(),x.nolink=h(x.nolink).replace("ref",k._label).getRegex(),x.reflinkSearch=h(x.reflinkSearch,"g").replace("reflink",x.reflink).replace("nolink",x.nolink).getRegex(),x.normal=De({},x),x.pedantic=De({},x.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:h(/^!?\[(label)\]\((.*?)\)/).replace("label",x._label).getRegex(),reflink:h(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",x._label).getRegex()}),x.gfm=De({},x.normal,{escape:h(x.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?
`).replace(/\t/g," "),this.blockTokens(_,this.tokens);u=this.inlineQueue.shift();)this.inlineTokens(u.src,u.tokens);return this.tokens}blockTokens(_,u=[]){let c,a,s,o;for(this.options.pedantic&&(_=_.replace(/^ +$/gm,""));_;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(g=>!!(c=g.call({lexer:this},_,u))&&(_=_.substring(c.raw.length),u.push(c),!0))))if(c=this.tokenizer.space(_))_=_.substring(c.raw.length),c.raw.length===1&&u.length>0?u[u.length-1].raw+=`
`:u.push(c);else if(c=this.tokenizer.code(_))_=_.substring(c.raw.length),a=u[u.length-1],!a||a.type!=="paragraph"&&a.type!=="text"?u.push(c):(a.raw+=`
`+c.raw,a.text+=`
`+c.text,this.inlineQueue[this.inlineQueue.length-1].src=a.text);else if(c=this.tokenizer.fences(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.heading(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.hr(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.blockquote(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.list(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.html(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.def(_))_=_.substring(c.raw.length),a=u[u.length-1],!a||a.type!=="paragraph"&&a.type!=="text"?this.tokens.links[c.tag]||(this.tokens.links[c.tag]={href:c.href,title:c.title}):(a.raw+=`
`+c.raw,a.text+=`
`+c.raw,this.inlineQueue[this.inlineQueue.length-1].src=a.text);else if(c=this.tokenizer.table(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.lheading(_))_=_.substring(c.raw.length),u.push(c);else{if(s=_,this.options.extensions&&this.options.extensions.startBlock){let g=1/0;const T=_.slice(1);let I;this.options.extensions.startBlock.forEach(function(L){I=L.call({lexer:this},T),typeof I=="number"&&I>=0&&(g=Math.min(g,I))}),g<1/0&&g>=0&&(s=_.substring(0,g+1))}if(this.state.top&&(c=this.tokenizer.paragraph(s)))a=u[u.length-1],o&&a.type==="paragraph"?(a.raw+=`
`+c.raw,a.text+=`
`+c.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):u.push(c),o=s.length!==_.length,_=_.substring(c.raw.length);else if(c=this.tokenizer.text(_))_=_.substring(c.raw.length),a=u[u.length-1],a&&a.type==="text"?(a.raw+=`
`+c.raw,a.text+=`
`+c.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):u.push(c);else if(_){const g="Infinite loop on byte: "+_.charCodeAt(0);if(this.options.silent){console.error(g);break}throw new Error(g)}}return this.state.top=!0,u}inline(_,u){this.inlineQueue.push({src:_,tokens:u})}inlineTokens(_,u=[]){let c,a,s,o,g,T,I=_;if(this.tokens.links){const L=Object.keys(this.tokens.links);if(L.length>0)for(;(o=this.tokenizer.rules.inline.reflinkSearch.exec(I))!=null;)L.includes(o[0].slice(o[0].lastIndexOf("[")+1,-1))&&(I=I.slice(0,o.index)+"["+Be("a",o[0].length-2)+"]"+I.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(o=this.tokenizer.rules.inline.blockSkip.exec(I))!=null;)I=I.slice(0,o.index)+"["+Be("a",o[0].length-2)+"]"+I.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(o=this.tokenizer.rules.inline.escapedEmSt.exec(I))!=null;)I=I.slice(0,o.index)+"++"+I.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;_;)if(g||(T=""),g=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(L=>!!(c=L.call({lexer:this},_,u))&&(_=_.substring(c.raw.length),u.push(c),!0))))if(c=this.tokenizer.escape(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.tag(_))_=_.substring(c.raw.length),a=u[u.length-1],a&&c.type==="text"&&a.type==="text"?(a.raw+=c.raw,a.text+=c.text):u.push(c);else if(c=this.tokenizer.link(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.reflink(_,this.tokens.links))_=_.substring(c.raw.length),a=u[u.length-1],a&&c.type==="text"&&a.type==="text"?(a.raw+=c.raw,a.text+=c.text):u.push(c);else if(c=this.tokenizer.emStrong(_,I,T))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.codespan(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.br(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.del(_))_=_.substring(c.raw.length),u.push(c);else if(c=this.tokenizer.autolink(_,st))_=_.substring(c.raw.length),u.push(c);else if(this.state.inLink||!(c=this.tokenizer.url(_,st))){if(s=_,this.options.extensions&&this.options.extensions.startInline){let L=1/0;const H=_.slice(1);let P;this.options.extensions.startInline.forEach(function(W){P=W.call({lexer:this},H),typeof P=="number"&&P>=0&&(L=Math.min(L,P))}),L<1/0&&L>=0&&(s=_.substring(0,L+1))}if(c=this.tokenizer.inlineText(s,lt))_=_.substring(c.raw.length),c.raw.slice(-1)!=="_"&&(T=c.raw.slice(-1)),g=!0,a=u[u.length-1],a&&a.type==="text"?(a.raw+=c.raw,a.text+=c.text):u.push(c);else if(_){const L="Infinite loop on byte: "+_.charCodeAt(0);if(this.options.silent){console.error(L);break}throw new Error(L)}}else _=_.substring(c.raw.length),u.push(c);return u}}class nt{constructor(_){this.options=_||d}code(_,u,c){const a=(u||"").match(/\S*/)[0];if(this.options.highlight){const s=this.options.highlight(_,a);s!=null&&s!==_&&(c=!0,_=s)}return _=_.replace(/\n$/,"")+`
`,a?'<pre><code class="'+this.options.langPrefix+j(a,!0)+'">'+(c?_:j(_,!0))+`</code></pre>
`:"<pre><code>"+(c?_:j(_,!0))+`</code></pre>
`}blockquote(_){return`<blockquote>
`+_+`</blockquote>
`}html(_){return _}heading(_,u,c,a){return this.options.headerIds?"<h"+u+' id="'+this.options.headerPrefix+a.slug(c)+'">'+_+"</h"+u+`>
`:"<h"+u+">"+_+"</h"+u+`>
`}hr(){return this.options.xhtml?`<hr/>
`:`<hr>
`}list(_,u,c){const a=u?"ol":"ul";return"<"+a+(u&&c!==1?' start="'+c+'"':"")+`>
`+_+"</"+a+`>
`}listitem(_){return"<li>"+_+`</li>
`}checkbox(_){return"<input "+(_?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "}paragraph(_){return"<p>"+_+`</p>
`}table(_,u){return u&&(u="<tbody>"+u+"</tbody>"),`<table>
<thead>
`+_+`</thead>
`+u+`</table>
`}tablerow(_){return`<tr>
`+_+`</tr>
`}tablecell(_,u){const c=u.header?"th":"td";return(u.align?"<"+c+' align="'+u.align+'">':"<"+c+">")+_+"</"+c+`>
`}strong(_){return"<strong>"+_+"</strong>"}em(_){return"<em>"+_+"</em>"}codespan(_){return"<code>"+_+"</code>"}br(){return this.options.xhtml?"<br/>":"<br>"}del(_){return"<del>"+_+"</del>"}link(_,u,c){if((_=tt(this.options.sanitize,this.options.baseUrl,_))===null)return c;let a='<a href="'+j(_)+'"';return u&&(a+=' title="'+u+'"'),a+=">"+c+"</a>",a}image(_,u,c){if((_=tt(this.options.sanitize,this.options.baseUrl,_))===null)return c;let a='<img src="'+_+'" alt="'+c+'"';return u&&(a+=' title="'+u+'"'),a+=this.options.xhtml?"/>":">",a}text(_){return _}}class ot{strong(_){return _}em(_){return _}codespan(_){return _}del(_){return _}html(_){return _}text(_){return _}link(_,u,c){return""+c}image(_,u,c){return""+c}br(){return""}}class It{constructor(){this.seen={}}serialize(_){return _.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(_,u){let c=_,a=0;if(this.seen.hasOwnProperty(c)){a=this.seen[_];do a++,c=_+"-"+a;while(this.seen.hasOwnProperty(c))}return u||(this.seen[_]=a,this.seen[c]=0),c}slug(_,u={}){const c=this.serialize(_);return this.getNextSafeSlug(c,u.dryrun)}}class at{constructor(_){this.options=_||d,this.options.renderer=this.options.renderer||new nt,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new ot,this.slugger=new It}static parse(_,u){return new at(u).parse(_)}static parseInline(_,u){return new at(u).parseInline(_)}parse(_,u=!0){let c,a,s,o,g,T,I,L,H,P,W,G,Q,le,ce,ue,Te,se,Oe,ge="";const Ae=_.length;for(c=0;c<Ae;c++)if(P=_[c],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[P.type]&&(Oe=this.options.extensions.renderers[P.type].call({parser:this},P),Oe!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(P.type)))ge+=Oe||"";else switch(P.type){case"space":continue;case"hr":ge+=this.renderer.hr();continue;case"heading":ge+=this.renderer.heading(this.parseInline(P.tokens),P.depth,X(this.parseInline(P.tokens,this.textRenderer)),this.slugger);continue;case"code":ge+=this.renderer.code(P.text,P.lang,P.escaped);continue;case"table":for(L="",I="",o=P.header.length,a=0;a<o;a++)I+=this.renderer.tablecell(this.parseInline(P.header[a].tokens),{header:!0,align:P.align[a]});for(L+=this.renderer.tablerow(I),H="",o=P.rows.length,a=0;a<o;a++){for(T=P.rows[a],I="",g=T.length,s=0;s<g;s++)I+=this.renderer.tablecell(this.parseInline(T[s].tokens),{header:!1,align:P.align[s]});H+=this.renderer.tablerow(I)}ge+=this.renderer.table(L,H);continue;case"blockquote":H=this.parse(P.tokens),ge+=this.renderer.blockquote(H);continue;case"list":for(W=P.ordered,G=P.start,Q=P.loose,o=P.items.length,H="",a=0;a<o;a++)ce=P.items[a],ue=ce.checked,Te=ce.task,le="",ce.task&&(se=this.renderer.checkbox(ue),Q?ce.tokens.length>0&&ce.tokens[0].type==="paragraph"?(ce.tokens[0].text=se+" "+ce.tokens[0].text,ce.tokens[0].tokens&&ce.tokens[0].tokens.length>0&&ce.tokens[0].tokens[0].type==="text"&&(ce.tokens[0].tokens[0].text=se+" "+ce.tokens[0].tokens[0].text)):ce.tokens.unshift({type:"text",text:se}):le+=se),le+=this.parse(ce.tokens,Q),H+=this.renderer.listitem(le,Te,ue);ge+=this.renderer.list(H,W,G);continue;case"html":ge+=this.renderer.html(P.text);continue;case"paragraph":ge+=this.renderer.paragraph(this.parseInline(P.tokens));continue;case"text":for(H=P.tokens?this.parseInline(P.tokens):P.text;c+1<Ae&&_[c+1].type==="text";)P=_[++c],H+=`
`+(P.tokens?this.parseInline(P.tokens):P.text);ge+=u?this.renderer.paragraph(H):H;continue;default:{const Ge='Token with "'+P.type+'" type was not found.';if(this.options.silent)return void console.error(Ge);throw new Error(Ge)}}return ge}parseInline(_,u){u=u||this.renderer;let c,a,s,o="";const g=_.length;for(c=0;c<g;c++)if(a=_[c],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[a.type]&&(s=this.options.extensions.renderers[a.type].call({parser:this},a),s!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(a.type)))o+=s||"";else switch(a.type){case"escape":case"text":o+=u.text(a.text);break;case"html":o+=u.html(a.text);break;case"link":o+=u.link(a.href,a.title,this.parseInline(a.tokens,u));break;case"image":o+=u.image(a.href,a.title,a.text);break;case"strong":o+=u.strong(this.parseInline(a.tokens,u));break;case"em":o+=u.em(this.parseInline(a.tokens,u));break;case"codespan":o+=u.codespan(a.text);break;case"br":o+=u.br();break;case"del":o+=u.del(this.parseInline(a.tokens,u));break;default:{const T='Token with "'+a.type+'" type was not found.';if(this.options.silent)return void console.error(T);throw new Error(T)}}return o}}function J(ae,_,u){if(ae==null)throw new Error("marked(): input parameter is undefined or null");if(typeof ae!="string")throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(ae)+", string expected");if(typeof _=="function"&&(u=_,_=null),Ne(_=De({},J.defaults,_||{})),u){const c=_.highlight;let a;try{a=Le.lex(ae,_)}catch(g){return u(g)}const s=function(g){let T;if(!g)try{_.walkTokens&&J.walkTokens(a,_.walkTokens),T=at.parse(a,_)}catch(I){g=I}return _.highlight=c,g?u(g):u(null,T)};if(!c||c.length<3||(delete _.highlight,!a.length))return s();let o=0;return J.walkTokens(a,function(g){g.type==="code"&&(o++,setTimeout(()=>{c(g.text,g.lang,function(T,I){if(T)return s(T);I!=null&&I!==g.text&&(g.text=I,g.escaped=!0),o--,o===0&&s()})},0))}),void(o===0&&s())}try{const c=Le.lex(ae,_);return _.walkTokens&&J.walkTokens(c,_.walkTokens),at.parse(c,_)}catch(c){if(c.message+=`
Please report this to https://github.com/markedjs/marked.`,_.silent)return"<p>An error occurred:</p><pre>"+j(c.message+"",!0)+"</pre>";throw c}}return J.options=J.setOptions=function(ae){var _;return De(J.defaults,ae),_=J.defaults,d=_,J},J.getDefaults=r,J.defaults=d,J.use=function(...ae){const _=De({},...ae),u=J.defaults.extensions||{renderers:{},childTokens:{}};let c;ae.forEach(a=>{if(a.extensions&&(c=!0,a.extensions.forEach(s=>{if(!s.name)throw new Error("extension name required");if(s.renderer){const o=u.renderers?u.renderers[s.name]:null;u.renderers[s.name]=o?function(...g){let T=s.renderer.apply(this,g);return T===!1&&(T=o.apply(this,g)),T}:s.renderer}if(s.tokenizer){if(!s.level||s.level!=="block"&&s.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");u[s.level]?u[s.level].unshift(s.tokenizer):u[s.level]=[s.tokenizer],s.start&&(s.level==="block"?u.startBlock?u.startBlock.push(s.start):u.startBlock=[s.start]:s.level==="inline"&&(u.startInline?u.startInline.push(s.start):u.startInline=[s.start]))}s.childTokens&&(u.childTokens[s.name]=s.childTokens)})),a.renderer){const s=J.defaults.renderer||new nt;for(const o in a.renderer){const g=s[o];s[o]=(...T)=>{let I=a.renderer[o].apply(s,T);return I===!1&&(I=g.apply(s,T)),I}}_.renderer=s}if(a.tokenizer){const s=J.defaults.tokenizer||new z;for(const o in a.tokenizer){const g=s[o];s[o]=(...T)=>{let I=a.tokenizer[o].apply(s,T);return I===!1&&(I=g.apply(s,T)),I}}_.tokenizer=s}if(a.walkTokens){const s=J.defaults.walkTokens;_.walkTokens=function(o){a.walkTokens.call(this,o),s&&s.call(this,o)}}c&&(_.extensions=u),J.setOptions(_)})},J.walkTokens=function(ae,_){for(const u of ae)switch(_.call(J,u),u.type){case"table":for(const c of u.header)J.walkTokens(c.tokens,_);for(const c of u.rows)for(const a of c)J.walkTokens(a.tokens,_);break;case"list":J.walkTokens(u.items,_);break;default:J.defaults.extensions&&J.defaults.extensions.childTokens&&J.defaults.extensions.childTokens[u.type]?J.defaults.extensions.childTokens[u.type].forEach(function(c){J.walkTokens(u[c],_)}):u.tokens&&J.walkTokens(u.tokens,_)}},J.parseInline=function(ae,_){if(ae==null)throw new Error("marked.parseInline(): input parameter is undefined or null");if(typeof ae!="string")throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(ae)+", string expected");Ne(_=De({},J.defaults,_||{}));try{const u=Le.lexInline(ae,_);return _.walkTokens&&J.walkTokens(u,_.walkTokens),at.parseInline(u,_)}catch(u){if(u.message+=`
Please report this to https://github.com/markedjs/marked.`,_.silent)return"<p>An error occurred:</p><pre>"+j(u.message+"",!0)+"</pre>";throw u}},J.Parser=at,J.parser=at.parse,J.Renderer=nt,J.TextRenderer=ot,J.Lexer=Le,J.lexer=Le.lex,J.Tokenizer=z,J.Slugger=It,J.parse=J,()=>{let ae,_,u=null;function c(){if(u&&!u.closed)u.focus();else{if(u=window.open("about:blank","reveal.js - Notes","width=1100,height=700"),u.marked=J,u.document.write(`<!--
NOTE: You need to build the notes plugin after making changes to this file.
-->
<html lang="en">
<head>
<meta charset="utf-8">
<title>reveal.js - Speaker View</title>
<style>
body {
font-family: Helvetica;
font-size: 18px;
}
#current-slide,
#upcoming-slide,
#speaker-controls {
padding: 6px;
box-sizing: border-box;
-moz-box-sizing: border-box;
}
#current-slide iframe,
#upcoming-slide iframe {
width: 100%;
height: 100%;
border: 1px solid #ddd;
}
#current-slide .label,
#upcoming-slide .label {
position: absolute;
top: 10px;
left: 10px;
z-index: 2;
}
#connection-status {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 20;
padding: 30% 20% 20% 20%;
font-size: 18px;
color: #222;
background: #fff;
text-align: center;
box-sizing: border-box;
line-height: 1.4;
}
.overlay-element {
height: 34px;
line-height: 34px;
padding: 0 10px;
text-shadow: none;
background: rgba( 220, 220, 220, 0.8 );
color: #222;
font-size: 14px;
}
.overlay-element.interactive:hover {
background: rgba( 220, 220, 220, 1 );
}
#current-slide {
position: absolute;
width: 60%;
height: 100%;
top: 0;
left: 0;
padding-right: 0;
}
#upcoming-slide {
position: absolute;
width: 40%;
height: 40%;
right: 0;
top: 0;
}
/* Speaker controls */
#speaker-controls {
position: absolute;
top: 40%;
right: 0;
width: 40%;
height: 60%;
overflow: auto;
font-size: 18px;
}
.speaker-controls-time.hidden,
.speaker-controls-notes.hidden {
display: none;
}
.speaker-controls-time .label,
.speaker-controls-pace .label,
.speaker-controls-notes .label {
text-transform: uppercase;
font-weight: normal;
font-size: 0.66em;
color: #666;
margin: 0;
}
.speaker-controls-time, .speaker-controls-pace {
border-bottom: 1px solid rgba( 200, 200, 200, 0.5 );
margin-bottom: 10px;
padding: 10px 16px;
padding-bottom: 20px;
cursor: pointer;
}
.speaker-controls-time .reset-button {
opacity: 0;
float: right;
color: #666;
text-decoration: none;
}
.speaker-controls-time:hover .reset-button {
opacity: 1;
}
.speaker-controls-time .timer,
.speaker-controls-time .clock {
width: 50%;
}
.speaker-controls-time .timer,
.speaker-controls-time .clock,
.speaker-controls-time .pacing .hours-value,
.speaker-controls-time .pacing .minutes-value,
.speaker-controls-time .pacing .seconds-value {
font-size: 1.9em;
}
.speaker-controls-time .timer {
float: left;
}
.speaker-controls-time .clock {
float: right;
text-align: right;
}
.speaker-controls-time span.mute {
opacity: 0.3;
}
.speaker-controls-time .pacing-title {
margin-top: 5px;
}
.speaker-controls-time .pacing.ahead {
color: blue;
}
.speaker-controls-time .pacing.on-track {
color: green;
}
.speaker-controls-time .pacing.behind {
color: red;
}
.speaker-controls-notes {
padding: 10px 16px;
}
.speaker-controls-notes .value {
margin-top: 5px;
line-height: 1.4;
font-size: 1.2em;
}
/* Layout selector\xA0*/
#speaker-layout {
position: absolute;
top: 10px;
right: 10px;
color: #222;
z-index: 10;
}
#speaker-layout select {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
border: 0;
box-shadow: 0;
cursor: pointer;
opacity: 0;
font-size: 1em;
background-color: transparent;
-moz-appearance: none;
-webkit-appearance: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
#speaker-layout select:focus {
outline: none;
box-shadow: none;
}
.clear {
clear: both;
}
/* Speaker layout: Wide */
body[data-speaker-layout="wide"] #current-slide,
body[data-speaker-layout="wide"] #upcoming-slide {
width: 50%;
height: 45%;
padding: 6px;
}
body[data-speaker-layout="wide"] #current-slide {
top: 0;
left: 0;
}
body[data-speaker-layout="wide"] #upcoming-slide {
top: 0;
left: 50%;
}
body[data-speaker-layout="wide"] #speaker-controls {
top: 45%;
left: 0;
width: 100%;
height: 50%;
font-size: 1.25em;
}
/* Speaker layout: Tall */
body[data-speaker-layout="tall"] #current-slide,
body[data-speaker-layout="tall"] #upcoming-slide {
width: 45%;
height: 50%;
padding: 6px;
}
body[data-speaker-layout="tall"] #current-slide {
top: 0;
left: 0;
}
body[data-speaker-layout="tall"] #upcoming-slide {
top: 50%;
left: 0;
}
body[data-speaker-layout="tall"] #speaker-controls {
padding-top: 40px;
top: 0;
left: 45%;
width: 55%;
height: 100%;
font-size: 1.25em;
}
/* Speaker layout: Notes only */
body[data-speaker-layout="notes-only"] #current-slide,
body[data-speaker-layout="notes-only"] #upcoming-slide {
display: none;
}
body[data-speaker-layout="notes-only"] #speaker-controls {
padding-top: 40px;
top: 0;
left: 0;
width: 100%;
height: 100%;
font-size: 1.25em;
}
@media screen and (max-width: 1080px) {
body[data-speaker-layout="default"] #speaker-controls {
font-size: 16px;
}
}
@media screen and (max-width: 900px) {
body[data-speaker-layout="default"] #speaker-controls {
font-size: 14px;
}
}
@media screen and (max-width: 800px) {
body[data-speaker-layout="default"] #speaker-controls {
font-size: 12px;
}
}
</style>
</head>
<body>
<div id="connection-status">Loading speaker view...</div>
<div id="current-slide"></div>
<div id="upcoming-slide"><span class="overlay-element label">Upcoming</span></div>
<div id="speaker-controls">
<div class="speaker-controls-time">
<h4 class="label">Time <span class="reset-button">Click to Reset</span></h4>
<div class="clock">
<span class="clock-value">0:00 AM</span>
</div>
<div class="timer">
<span class="hours-value">00</span><span class="minutes-value">:00</span><span class="seconds-value">:00</span>
</div>
<div class="clear"></div>
<h4 class="label pacing-title" style="display: none">Pacing \u2013 Time to finish current slide</h4>
<div class="pacing" style="display: none">
<span class="hours-value">00</span><span class="minutes-value">:00</span><span class="seconds-value">:00</span>
</div>
</div>
<div class="speaker-controls-notes hidden">
<h4 class="label">Notes</h4>
<div class="value"></div>
</div>
</div>
<div id="speaker-layout" class="overlay-element interactive">
<span class="speaker-layout-label"></span>
<select class="speaker-layout-dropdown"></select>
</div>
<script>
(function() {
var notes,
notesValue,
currentState,
currentSlide,
upcomingSlide,
layoutLabel,
layoutDropdown,
pendingCalls = {},
lastRevealApiCallId = 0,
connected = false
var connectionStatus = document.querySelector( '#connection-status' );
var SPEAKER_LAYOUTS = {
'default': 'Default',
'wide': 'Wide',
'tall': 'Tall',
'notes-only': 'Notes only'
};
setupLayout();
let openerOrigin;
try {
openerOrigin = window.opener.location.origin;
}
catch ( error ) { console.warn( error ) }
// In order to prevent XSS, the speaker view will only run if its
// opener has the same origin as itself
if( window.location.origin !== openerOrigin ) {
connectionStatus.innerHTML = 'Cross origin error.<br>The speaker window can only be opened from the same origin.';
return;
}
var connectionTimeout = setTimeout( function() {
connectionStatus.innerHTML = 'Error connecting to main window.<br>Please try closing and reopening the speaker view.';
}, 5000 );
window.addEventListener( 'message', function( event ) {
clearTimeout( connectionTimeout );
connectionStatus.style.display = 'none';
var data = JSON.parse( event.data );
// The overview mode is only useful to the reveal.js instance
// where navigation occurs so we don't sync it
if( data.state ) delete data.state.overview;
// Messages sent by the notes plugin inside of the main window
if( data && data.namespace === 'reveal-notes' ) {
if( data.type === 'connect' ) {
handleConnectMessage( data );
}
else if( data.type === 'state' ) {
handleStateMessage( data );
}
else if( data.type === 'return' ) {
pendingCalls[data.callId](data.result);
delete pendingCalls[data.callId];
}
}
// Messages sent by the reveal.js inside of the current slide preview
else if( data && data.namespace === 'reveal' ) {
if( /ready/.test( data.eventName ) ) {
// Send a message back to notify that the handshake is complete
window.opener.postMessage( JSON.stringify({ namespace: 'reveal-notes', type: 'connected'} ), '*' );
}
else if( /slidechanged|fragmentshown|fragmenthidden|paused|resumed/.test( data.eventName ) && currentState !== JSON.stringify( data.state ) ) {
dispatchStateToMainWindow( data.state );
}
}
} );
/**
* Updates the presentation in the main window to match the state
* of the presentation in the notes window.
*/
const dispatchStateToMainWindow = debounce(( state ) => {
window.opener.postMessage( JSON.stringify({ method: 'setState', args: [ state ]} ), '*' );
}, 500);
/**
* Asynchronously calls the Reveal.js API of the main frame.
*/
function callRevealApi( methodName, methodArguments, callback ) {
var callId = ++lastRevealApiCallId;
pendingCalls[callId] = callback;
window.opener.postMessage( JSON.stringify( {
namespace: 'reveal-notes',
type: 'call',
callId: callId,
methodName: methodName,
arguments: methodArguments
} ), '*' );
}
/**
* Called when the main window is trying to establish a
* connection.
*/
function handleConnectMessage( data ) {
if( connected === false ) {
connected = true;
setupIframes( data );
setupKeyboard();
setupNotes();
setupTimer();
setupHeartbeat();
}
}
/**
* Called when the main window sends an updated state.
*/
function handleStateMessage( data ) {
// Store the most recently set state to avoid circular loops
// applying the same state
currentState = JSON.stringify( data.state );
// No need for updating the notes in case of fragment changes
if ( data.notes ) {
notes.classList.remove( 'hidden' );
notesValue.style.whiteSpace = data.whitespace;
if( data.markdown ) {
notesValue.innerHTML = marked( data.notes );
}
else {
notesValue.innerHTML = data.notes;
}
}
else {
notes.classList.add( 'hidden' );
}
// Update the note slides
currentSlide.contentWindow.postMessage( JSON.stringify({ method: 'setState', args: [ data.state ] }), '*' );
upcomingSlide.contentWindow.postMessage( JSON.stringify({ method: 'setState', args: [ data.state ] }), '*' );
upcomingSlide.contentWindow.postMessage( JSON.stringify({ method: 'next' }), '*' );
}
// Limit to max one state update per X ms
handleStateMessage = debounce( handleStateMessage, 200 );
/**
* Forward keyboard events to the current slide window.
* This enables keyboard events to work even if focus
* isn't set on the current slide iframe.
*
* Block F5 default handling, it reloads and disconnects
* the speaker notes window.
*/
function setupKeyboard() {
document.addEventListener( 'keydown', function( event ) {
if( event.keyCode === 116 || ( event.metaKey && event.keyCode === 82 ) ) {
event.preventDefault();
return false;
}
currentSlide.contentWindow.postMessage( JSON.stringify({ method: 'triggerKey', args: [ event.keyCode ] }), '*' );
} );
}
/**
* Creates the preview iframes.
*/
function setupIframes( data ) {
var params = [
'receiver',
'progress=false',
'history=false',
'transition=none',
'autoSlide=0',
'backgroundTransition=none'
].join( '&' );
var urlSeparator = /\\?/.test(data.url) ? '&' : '?';
var hash = '#/' + data.state.indexh + '/' + data.state.indexv;
var currentURL = data.url + urlSeparator + params + '&postMessageEvents=true' + hash;
var upcomingURL = data.url + urlSeparator + params + '&controls=false' + hash;
currentSlide = document.createElement( 'iframe' );
currentSlide.setAttribute( 'width', 1280 );
currentSlide.setAttribute( 'height', 1024 );
currentSlide.setAttribute( 'src', currentURL );
document.querySelector( '#current-slide' ).appendChild( currentSlide );
upcomingSlide = document.createElement( 'iframe' );
upcomingSlide.setAttribute( 'width', 640 );
upcomingSlide.setAttribute( 'height', 512 );
upcomingSlide.setAttribute( 'src', upcomingURL );
document.querySelector( '#upcoming-slide' ).appendChild( upcomingSlide );
}
/**
* Setup the notes UI.
*/
function setupNotes() {
notes = document.querySelector( '.speaker-controls-notes' );
notesValue = document.querySelector( '.speaker-controls-notes .value' );
}
/**
* We send out a heartbeat at all times to ensure we can
* reconnect with the main presentation window after reloads.
*/
function setupHeartbeat() {
setInterval( () => {
window.opener.postMessage( JSON.stringify({ namespace: 'reveal-notes', type: 'heartbeat'} ), '*' );
}, 1000 );
}
function getTimings( callback ) {
callRevealApi( 'getSlidesAttributes', [], function ( slideAttributes ) {
callRevealApi( 'getConfig', [], function ( config ) {
var totalTime = config.totalTime;
var minTimePerSlide = config.minimumTimePerSlide || 0;
var defaultTiming = config.defaultTiming;
if ((defaultTiming == null) && (totalTime == null)) {
callback(null);
return;
}
// Setting totalTime overrides defaultTiming
if (totalTime) {
defaultTiming = 0;
}
var timings = [];
for ( var i in slideAttributes ) {
var slide = slideAttributes[ i ];
var timing = defaultTiming;
if( slide.hasOwnProperty( 'data-timing' )) {
var t = slide[ 'data-timing' ];
timing = parseInt(t);
if( isNaN(timing) ) {
console.warn("Could not parse timing '" + t + "' of slide " + i + "; using default of " + defaultTiming);
timing = defaultTiming;
}
}
timings.push(timing);
}
if ( totalTime ) {
// After we've allocated time to individual slides, we summarize it and
// subtract it from the total time
var remainingTime = totalTime - timings.reduce( function(a, b) { return a + b; }, 0 );
// The remaining time is divided by the number of slides that have 0 seconds
// allocated at the moment, giving the average time-per-slide on the remaining slides
var remainingSlides = (timings.filter( function(x) { return x == 0 }) ).length
var timePerSlide = Math.round( remainingTime / remainingSlides, 0 )
// And now we replace every zero-value timing with that average
timings = timings.map( function(x) { return (x==0 ? timePerSlide : x) } );
}
var slidesUnderMinimum = timings.filter( function(x) { return (x < minTimePerSlide) } ).length
if ( slidesUnderMinimum ) {
message = "The pacing time for " + slidesUnderMinimum + " slide(s) is under the configured minimum of " + minTimePerSlide + " seconds. Check the data-timing attribute on individual slides, or consider increasing the totalTime or minimumTimePerSlide configuration options (or removing some slides).";
alert(message);
}
callback( timings );
} );
} );
}
/**
* Return the number of seconds allocated for presenting
* all slides up to and including this one.
*/
function getTimeAllocated( timings, callback ) {
callRevealApi( 'getSlidePastCount', [], function ( currentSlide ) {
var allocated = 0;
for (var i in timings.slice(0, currentSlide + 1)) {
allocated += timings[i];
}
callback( allocated );
} );
}
/**
* Create the timer and clock and start updating them
* at an interval.
*/
function setupTimer() {
var start = new Date(),
timeEl = document.querySelector( '.speaker-controls-time' ),
clockEl = timeEl.querySelector( '.clock-value' ),
hoursEl = timeEl.querySelector( '.hours-value' ),
minutesEl = timeEl.querySelector( '.minutes-value' ),
secondsEl = timeEl.querySelector( '.seconds-value' ),
pacingTitleEl = timeEl.querySelector( '.pacing-title' ),
pacingEl = timeEl.querySelector( '.pacing' ),
pacingHoursEl = pacingEl.querySelector( '.hours-value' ),
pacingMinutesEl = pacingEl.querySelector( '.minutes-value' ),
pacingSecondsEl = pacingEl.querySelector( '.seconds-value' );
var timings = null;
getTimings( function ( _timings ) {
timings = _timings;
if (_timings !== null) {
pacingTitleEl.style.removeProperty('display');
pacingEl.style.removeProperty('display');
}
// Update once directly
_updateTimer();
// Then update every second
setInterval( _updateTimer, 1000 );
} );
function _resetTimer() {
if (timings == null) {
start = new Date();
_updateTimer();
}
else {
// Reset timer to beginning of current slide
getTimeAllocated( timings, function ( slideEndTimingSeconds ) {
var slideEndTiming = slideEndTimingSeconds * 1000;
callRevealApi( 'getSlidePastCount', [], function ( currentSlide ) {
var currentSlideTiming = timings[currentSlide] * 1000;
var previousSlidesTiming = slideEndTiming - currentSlideTiming;
var now = new Date();
start = new Date(now.getTime() - previousSlidesTiming);
_updateTimer();
} );
} );
}
}
timeEl.addEventListener( 'click', function() {
_resetTimer();
return false;
} );
function _displayTime( hrEl, minEl, secEl, time) {
var sign = Math.sign(time) == -1 ? "-" : "";
time = Math.abs(Math.round(time / 1000));
var seconds = time % 60;
var minutes = Math.floor( time / 60 ) % 60 ;
var hours = Math.floor( time / ( 60 * 60 )) ;
hrEl.innerHTML = sign + zeroPadInteger( hours );
if (hours == 0) {
hrEl.classList.add( 'mute' );
}
else {
hrEl.classList.remove( 'mute' );
}
minEl.innerHTML = ':' + zeroPadInteger( minutes );
if (hours == 0 && minutes == 0) {
minEl.classList.add( 'mute' );
}
else {
minEl.classList.remove( 'mute' );
}
secEl.innerHTML = ':' + zeroPadInteger( seconds );
}
function _updateTimer() {
var diff, hours, minutes, seconds,
now = new Date();
diff = now.getTime() - start.getTime();
clockEl.innerHTML = now.toLocaleTimeString( 'en-US', { hour12: true, hour: '2-digit', minute:'2-digit' } );
_displayTime( hoursEl, minutesEl, secondsEl, diff );
if (timings !== null) {
_updatePacing(diff);
}
}
function _updatePacing(diff) {
getTimeAllocated( timings, function ( slideEndTimingSeconds ) {
var slideEndTiming = slideEndTimingSeconds * 1000;
callRevealApi( 'getSlidePastCount', [], function ( currentSlide ) {
var currentSlideTiming = timings[currentSlide] * 1000;
var timeLeftCurrentSlide = slideEndTiming - diff;
if (timeLeftCurrentSlide < 0) {
pacingEl.className = 'pacing behind';
}
else if (timeLeftCurrentSlide < currentSlideTiming) {
pacingEl.className = 'pacing on-track';
}
else {
pacingEl.className = 'pacing ahead';
}
_displayTime( pacingHoursEl, pacingMinutesEl, pacingSecondsEl, timeLeftCurrentSlide );
} );
} );
}
}
/**
* Sets up the speaker view layout and layout selector.
*/
function setupLayout() {
layoutDropdown = document.querySelector( '.speaker-layout-dropdown' );
layoutLabel = document.querySelector( '.speaker-layout-label' );
// Render the list of available layouts
for( var id in SPEAKER_LAYOUTS ) {
var option = document.createElement( 'option' );
option.setAttribute( 'value', id );
option.textContent = SPEAKER_LAYOUTS[ id ];
layoutDropdown.appendChild( option );
}
// Monitor the dropdown for changes
layoutDropdown.addEventListener( 'change', function( event ) {
setLayout( layoutDropdown.value );
}, false );
// Restore any currently persisted layout
setLayout( getLayout() );
}
/**
* Sets a new speaker view layout. The layout is persisted
* in local storage.
*/
function setLayout( value ) {
var title = SPEAKER_LAYOUTS[ value ];
layoutLabel.innerHTML = 'Layout' + ( title ? ( ': ' + title ) : '' );
layoutDropdown.value = value;
document.body.setAttribute( 'data-speaker-layout', value );
// Persist locally
if( supportsLocalStorage() ) {
window.localStorage.setItem( 'reveal-speaker-layout', value );
}
}
/**
* Returns the ID of the most recently set speaker layout
* or our default layout if none has been set.
*/
function getLayout() {
if( supportsLocalStorage() ) {
var layout = window.localStorage.getItem( 'reveal-speaker-layout' );
if( layout ) {
return layout;
}
}
// Default to the first record in the layouts hash
for( var id in SPEAKER_LAYOUTS ) {
return id;
}
}
function supportsLocalStorage() {
try {
localStorage.setItem('test', 'test');
localStorage.removeItem('test');
return true;
}
catch( e ) {
return false;
}
}
function zeroPadInteger( num ) {
var str = '00' + parseInt( num );
return str.substring( str.length - 2 );
}
/**
* Limits the frequency at which a function can be called.
*/
function debounce( fn, ms ) {
var lastTime = 0,
timeout;
return function() {
var args = arguments;
var context = this;
clearTimeout( timeout );
var timeSinceLastCall = Date.now() - lastTime;
if( timeSinceLastCall > ms ) {
fn.apply( context, args );
lastTime = Date.now();
}
else {
timeout = setTimeout( function() {
fn.apply( context, args );
lastTime = Date.now();
}, ms - timeSinceLastCall );
}
}
}
})();
<\/script>
</body>
</html>`),!u)return void alert("Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.");(function(){const g=_.getConfig().url,T=typeof g=="string"?g:window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search;ae=setInterval(function(){u.postMessage(JSON.stringify({namespace:"reveal-notes",type:"connect",state:_.getState(),url:T}),"*")},500),window.addEventListener("message",s)})()}}function a(g){let T=_.getCurrentSlide(),I=T.querySelectorAll("aside.notes"),L=T.querySelector(".current-fragment"),H={namespace:"reveal-notes",type:"state",notes:"",markdown:!1,whitespace:"normal",state:_.getState()};if(T.hasAttribute("data-notes")&&(H.notes=T.getAttribute("data-notes"),H.whitespace="pre-wrap"),L){let P=L.querySelector("aside.notes");P?(H.notes=P.innerHTML,H.markdown=typeof P.getAttribute("data-markdown")=="string",I=null):L.hasAttribute("data-notes")&&(H.notes=L.getAttribute("data-notes"),H.whitespace="pre-wrap",I=null)}I&&(H.notes=Array.from(I).map(P=>P.innerHTML).join(`
`),H.markdown=I[0]&&typeof I[0].getAttribute("data-markdown")=="string"),u.postMessage(JSON.stringify(H),"*")}function s(g){if(function(T){try{return window.location.origin===T.source.location.origin}catch{return!1}}(g)){let T=JSON.parse(g.data);T&&T.namespace==="reveal-notes"&&T.type==="connected"?(clearInterval(ae),o()):T&&T.namespace==="reveal-notes"&&T.type==="call"&&function(I,L,H){let P=_[I].apply(_,L);u.postMessage(JSON.stringify({namespace:"reveal-notes",type:"return",result:P,callId:H}),"*")}(T.methodName,T.arguments,T.callId)}}function o(){_.on("slidechanged",a),_.on("fragmentshown",a),_.on("fragmenthidden",a),_.on("overviewhidden",a),_.on("overviewshown",a),_.on("paused",a),_.on("resumed",a),a()}return{id:"notes",init:function(g){_=g,/receiver/i.test(window.location.search)||(window.location.search.match(/(\?|\&)notes/gi)!==null?c():window.addEventListener("message",T=>{if(!u&&typeof T.data=="string"){let L;try{L=JSON.parse(T.data)}catch{}L&&L.namespace==="reveal-notes"&&L.type==="heartbeat"&&(I=T.source,u&&!u.closed?u.focus():(u=I,window.addEventListener("message",s),o()))}var I}),_.addKeyBinding({keyCode:83,key:"S",description:"Speaker notes view"},function(){c()}))},open:c}}})})(xi);const wl=xi.exports;const xl={app:{name:"WRITE AN ASYNC RUNTIME FOR RUST \u{1F980}"},reveal:{plugins:[Il,Dl,hi.MathJax2,hi.KaTeX,wl],hash:!0,mathjax2:{config:"TeX-AMS_HTML-full",TeX:{Macros:{R:"\\mathbb{R}",set:["\\left\\{#1 \\; ; \\; #2\\right\\}",2]}}}}};new Al({target:document.getElementById("app"),props:xl});